Skip to content

Research notes

Crypto portfolio risk contributions: a worked example

A small position can carry a large share of modeled volatility. Separate marginal, component and relative risk with an explicit covariance matrix.

Ivory ceramic canopy on curved supports, with a lime loop around the right support on a black background.
Illustration for research notes; examples in this article are educational.

Crypto portfolio risk contribution measures how much each holding adds to a chosen portfolio risk statistic. For volatility, multiply each asset’s weight by its marginal effect on portfolio volatility, using the full covariance matrix. These component contributions add to total portfolio volatility; their shares can differ sharply from capital weights because assets move together differently.

A position that holds 20% of the money can account for roughly a third of modeled volatility. A capital allocation chart cannot reveal that difference. The calculation below makes the inputs visible and then tests what happens when a trade moves money between holdings.

Define the risk measure before dividing it

Here, risk means the standard deviation of one-period portfolio returns. It measures variability, including upward and downward movements. It does not describe a maximum loss, a liquidation price or the probability that an exchange becomes unavailable.

Keep three questions separate:

QuestionMeasureMain inputs
Where is the capital?Capital weightCurrent holding values and total equity
What produced the measured gain or loss?Return contributionStarting weights and realized returns
What contributes to modeled variability?Component volatilityWeights and the return covariance matrix

The portfolio return-contribution guide handles the second question. Multiplying a weight by an asset’s realized return cannot answer the third. Similarly, a concentration score calculated from weights alone cannot distinguish two portfolios with identical weights but different co-movement.

Define the account boundary and reporting currency first. This example uses unleveraged spot holdings valued in USD, with unchanged holdings over one modeled daily return interval. Costs, taxes and external cash flows are excluded to isolate the arithmetic. Futures margin balances are not interchangeable with spot portfolio weights.

Calculate marginal, component and relative contributions

Let w be the vector of capital weights and Σ the covariance matrix of asset returns. A diagonal entry is an asset’s return variance. An off-diagonal entry measures covariance between two assets. From individual volatilities and correlations:

Σ(i,j) = volatility(i) × volatility(j) × correlation(i,j)

Calculate a helper vector g = Σw. Each entry g(i) is the covariance between asset i and the portfolio return. Then:

portfolio variance = wᵀΣw = sum of w(i) × g(i)

portfolio volatility σp = sqrt(wᵀΣw)

marginal volatility MRC(i) = g(i) / σp

component volatility RC(i) = w(i) × MRC(i)

relative contribution RRC(i) = RC(i) / σp

These are the volatility-contribution definitions in Palomar’s Portfolio Optimization textbook. The formulas require positive portfolio volatility; division by zero does not produce usable contributions.

MRC is a local sensitivity to changing one weight while holding the other exposures fixed. RC assigns part of the current portfolio volatility to a holding. RRC expresses that assignment as a share of the total. They answer different questions despite similar names.

The component values add to portfolio volatility through Euler’s allocation rule. MOSEK’s risk-budgeting methodology describes that rule for risk measures that scale proportionally with exposure. Do not add stand-alone asset volatilities or apply the same decomposition mechanically to a different risk measure.

Work through a complete three-asset matrix

All figures in this example are hypothetical assumptions, not current market estimates or suggested allocations. Token C is fictional. The portfolio has 50% BTC, 30% ETH and 20% Token C. Assume daily volatilities of 3%, 4% and 8%, respectively, and correlations of 0.80 for BTC/ETH, 0.40 for BTC/C and 0.50 for ETH/C.

Use decimal returns throughout: 3% is 0.03. The resulting covariance matrix is symmetric, with entries in squared decimal-return units:

CovarianceBTCETHToken C
BTC0.0009000.0009600.000960
ETH0.0009600.0016000.001600
Token C0.0009600.0016000.006400

For example, BTC/ETH covariance is 0.03 × 0.04 × 0.80 = 0.000960. Token C’s variance is 0.08² = 0.006400. A correlation matrix alone would omit this difference in move size.

Multiplying the matrix by the weights gives:

g = (0.000930, 0.001280, 0.002240)

variance = 0.50 × 0.000930 + 0.30 × 0.001280 + 0.20 × 0.002240 = 0.001297

σp = sqrt(0.001297) = 0.036013886, or about 3.6014% daily volatility.

Token C’s component is 0.20 × 0.002240 / 0.036013886 = 0.012439646. That is about 1.244 percentage points of portfolio daily volatility, rather than a forecast daily loss of 1.244%.

HoldingCapital weightStand-alone daily volatilityComponent daily volatilityShare of total volatility
BTC50%3%1.291 pp35.85%
ETH30%4%1.066 pp29.61%
Token C20%8%1.244 pp34.54%
Portfolio100%—3.601 pp100.00%

“pp” means percentage points. Unrounded components sum to 0.036013886, exactly matching the calculated portfolio volatility within numerical precision. Round only the displayed results.

Token C has two-fifths of BTC’s capital weight but nearly as much component volatility. Its higher stand-alone variability and covariance with the rest explain the result. That observation identifies a model exposure to investigate; it does not establish that either holding should be bought or sold.

Fund a proposed change explicitly

The marginal numbers for BTC and Token C are approximately 0.025823 and 0.062198. Increasing Token C without naming a funding source leaves the proposed portfolio incomplete.

Suppose a hypothetical rebalance transfers five percentage points from BTC to Token C, leaving ETH unchanged. The new weights are 45%, 30% and 25%. Because one weight falls as the other rises, the local estimate uses their marginal difference:

estimated volatility change ≈ 0.05 × [MRC(C) − MRC(BTC)]

≈ 0.05 × (0.062198 − 0.025823) = 0.001819

That estimates an increase of about 0.1819 percentage points in daily volatility. Using Token C’s marginal number alone would ignore the exposure removed from BTC.

Recomputing the entire quadratic form at the proposed weights gives variance 0.00144145 and daily volatility 3.7966%. The actual modeled increase is about 0.1953 percentage points. The difference arises because the derivative is a local approximation and the portfolio’s marginal sensitivities change during a finite rebalance.

Always recalculate the full result for the intended trade size. Include execution costs separately when deciding whether a rebalance is feasible; this covariance worksheet does not estimate them.

Interpret cash and negative components carefully

For a separate hypothetical case, scale every original risky weight by 0.80 and put the remaining 20% in idealized USD cash with exactly zero return variance and covariance. The risky weights become 40%, 24% and 16%.

Portfolio volatility falls to 0.80 × 3.6014%, approximately 2.8811% daily. Cash’s direct component is zero, and each risky component is 80% of its previous value. The risky holdings’ relative shares remain 35.85%, 29.61% and 34.54%. A cash balance can therefore reduce total modeled volatility without changing how the risky assets divide it.

This assumption says nothing about the return sacrificed or earned by holding cash. That comparison needs the explicit alternative in the cash-drag benchmark guide. A stablecoin also needs its own USD return behavior; its name does not justify assigning a zero covariance row.

A component can be negative when a position’s weighted covariance with the portfolio is negative. Other components can then exceed 100% in relative terms while the net shares still sum to 100%. A negative component indicates an offset in the specified model. It does not guarantee a hedge will work during a selloff or that its venue and collateral risks disappear.

For behavior conditional on adverse market periods, use a separate measure such as downside beta. Full-sample volatility contributions do not isolate losses during those periods.

Build a worksheet another reader can reproduce

Use a saved table or spreadsheet with these fields and checks before interpreting the largest contribution:

Worksheet fieldWhat to record or verify
Exposure snapshotAsset identifier, quantity, USD value, valuation time and portfolio weight
Return seriesPrice source, instrument, quote currency, daily boundary and simple-return convention
Estimation sampleStart/end dates, observation count, missing-data policy and covariance estimator
Matrix checksSymmetry, diagonal variances and positive semidefiniteness
CalculationΣw, portfolio variance, volatility, MRC, RC and RRC
ReconciliationSum of RC equals volatility; sum of RRC equals one before rounding
Proposed actionFunding asset, full revised weights, recalculated contributions and modeled costs
Sensitivity recordResults under another declared sample or explicit stress assumptions

Use matched timestamps and the same return frequency for all assets. Mixing daily volatility with weekly correlation does not produce a coherent daily covariance estimate. Use simple returns here: a weighted sum of asset log returns is not the exact simple return of the spot portfolio. Missing prices and stale marks require investigation; inserting zero returns to fill gaps can distort contributions.

Positive semidefiniteness means the matrix cannot imply negative variance for a portfolio. Pairwise estimates taken from different observation sets can fail that check. An invalid matrix needs investigation before the contribution table is useful. In the worked example, the correlation matrix’s leading principal minors are 1, 0.36 and 0.27, all positive, confirming a valid positive-definite matrix.

Repeat the calculation with another declared observation window or a coherent stressed covariance matrix. Preserve disagreements instead of choosing whichever estimate makes a preferred holding look least risky. The portfolio correlation-risk guide adds a separate combined-loss scenario that a volatility decomposition cannot replace.

Risk budgeting goes one step beyond attribution by setting target contribution shares; equal shares are the risk-parity special case in the linked MOSEK methodology. A descriptive contribution table supplies no universal target. Save the full matrix, weights and funded trade comparison beside the result so the next review can distinguish a change in holdings from a change in estimated relationships.

Keep the context with the example.

Each worked example is illustrative, with its sources and assumptions in the article. Read our editorial standards for authorship, verification and corrections.