Skip to content
All library documents

Equalizing Stock Risk Contributions with Portfolio Covariances

Article Quant Q&A · Author: Denis

Summary

The document explains how to choose portfolio weights so each stock contributes equally to total portfolio variance. It defines each asset’s contribution using its weighted variance plus its covariance interactions with other holdings, divided by total portfolio variance. Equal contributions therefore require solving a system of nonlinear equations, with one weight fixed as a normalization reference.

When asset covariances are ignored, inverse-volatility-style weights based on the square root of relative variances provide a simple starting point for numerical optimization. The discussion emphasizes that the result depends on how the covariance matrix is estimated. Conditional covariances can change over time, alternative loss functions may be appropriate, and higher moments can matter outside a Gaussian setting. The proposed allocation is consequently model-dependent; it does not establish that equal variance contributions are optimal or stable out of sample.

Key ideas

  • An asset’s portfolio variance contribution includes both its own variance and covariance effects with other assets.
  • Equal variance contributions can be expressed as a system of nonlinear equations in the portfolio weights.
  • Fixing one weight provides a normalization for solving the relative weights.
  • Weights based on relative variances offer a starting point when covariances are omitted.
  • Risk contribution estimates depend on covariance modeling, changing market conditions, and distributional assumptions.

Tags

Full text
# How would you equally distribute the risk of each stock in a portfolio?


# How would you equally distribute the risk of each stock in a portfolio?












Suppose you have in-sample (IS) and out-of-sample (OOS) daily returns of N stocks (IS and OOS dates are the same for each stock). Suppose you want to calculate return captured each day as x * ret.

How would you scale x (or put it another way, normalize return) for each stock so that each stock’s risk (or put it another way, std dev of x * ret) is more or less equal? Suppose you’re first looking at your IS results (you can use out-of sample data also but only using the past i.e. oos date < is date to prevent lookahead)

I had tried:

- calculating a rolling sd(ret) [realized vol] of all-sample ret and on each day scaling x by that but the problem with this method is that if somewhere in OOS there is a big move that stock will either dominate or diminish its representation in the portfolio so this doesn’t work.

## Answer by Stéphane (score 1)

https://quant.stackexchange.com/a/51686

We're going to assume that we have $N$ assets in our portfolio with weights $w$ and prices $x$. The variance of your portfolio is given by: \begin{equation} V\left( w'x \right) = w' E\left((x-E(X))(x-E(x))'\right) w = \sum_{i,j=1}^N w_i w_j Cov(x_i, x_j). \end{equation} So, the contribution of one asset is given by: \begin{equation} s_i := \frac{w_i^2 V(x_i) + \sum_{j=1, j \neq i}^N w_iw_j Cov(x_i,x_j) }{\sum_{i,j=1}^N w_i w_j Cov(x_i, x_j)}. \end{equation}

So, your problem of equalizing the variance contribution is to find a weight vector so that all the $(s_i)_{i=1}^N$ are equal which implies \begin{align} &w_i^2 V(x_i) + \sum_{k=1, k \neq i}^N w_i w_k Cov(x_i,x_k) = w_j^2 V(x_j) + \sum_{k=1, k \neq j}^N w_j w_k Cov(x_j, x_k) \end{align}

Now, this is a system of nonlinear equations. To solve it, you need to choose a normalization. Say, $w_1 = 1$ and then you just have to remember that all other weights are expressed as $w_i^* = w_i/w_1$, i.e. in units of $w_1$. Of course, without the covariances, the solution would be simple: \begin{equation} w_i = \sqrt{\frac{V(x_1)}{V(x_i)}} w_1 \end{equation} so you could use this as a starting value for a numerical solution algorithm.

Once you have code to do this, it becomes a matter of how do you estimate the covariance matrix. Several problems emerge: (1) depending on the reasons behind your equalizing strategy, you might want to use something else than the square loss of maximum likelihood and the like; (2) the conditional covariance matrix might evolve through time; (3) outside of a Gaussian world, higher moments do matter and the intuition you have about volatility (that variance is subadditive) doesn't apply; (4) even if you tweak your problem to take all of this explicitly into account, you will have to remember you are working from models and not from the data generating process.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.