Why Covariance Scaling Does Not Change GMV Weights
Summary
The document explains why multiplying a covariance matrix by a nonzero constant should leave global minimum variance portfolio weights unchanged. In the standard solution, the inverse covariance matrix is multiplied by a vector of ones, then the resulting vector is normalized so its weights sum to one. Scaling the covariance matrix scales the unnormalized vector but cancels during normalization; expected returns are not part of this calculation.
It also explains when annualizing daily covariance is appropriate: for independent daily log returns, the covariance of their yearly sum is the daily covariance multiplied by the number of trading days. If reported weights change, likely causes include numerical sensitivity or rounding, a different optimization setup, or an objective that combines risk with another term such as transaction costs. Such terms can make covariance scaling affect the risk tradeoff. The explanation assumes the conventional GMV formulation and independence for the annualization relationship.
Key ideas
- Scaling the covariance matrix by a nonzero constant does not change normalized GMV weights under the standard formula.
- The GMV solution uses the covariance matrix but not expected returns.
- Annual covariance scales with the number of periods when returns are independent and aggregated by summation.
- A risk objective combined with transaction costs can respond to covariance scaling because the relative penalty changes.
- Small weight differences may reflect rounding or numerical sensitivity.
Tags
Full text
# Why annualizing sampled covariance matrix changes stock weight vector?
# Why annualizing sampled covariance matrix changes stock weight vector?
### Question
- While optimizing a portfolio using 'Global Minimum Variance' (GMV) method, I found that annualizing a sampled covariance matrix makes a difference in stock weight vector.
- Q1. Why annualizing (multiplying by 252) a covariance matrix makes a difference in weight vectors?
- Q2. Is it correct to annualize a variance and covariance by multiplying them by 252?
### Information in detail
- I check the portfolio optimization result by using the python library PyPortfolioOpt.
- In this library, the input for the math formula of optimization is a daily returns of assets.
- The library "annualize" the variance-covariance matrix by multiplying by 252. You can check the code here. The excerpt of the code is as follows :
```
def sample_cov(prices, frequency=252):
...
return daily_returns.cov() * frequency
```
- To annualize a sharpe ratio cacluated from the daily returns, we multiply them by square root of 252, which is almost equal to 15.87. But to annualize a covarinace, we multiply them just 252? It does not make sense to me.
- Furthermoe, multiplying a covariance by a constant number such as 252, does not change a rankings of covariances between variables. For example, let's suppose that we have 3 random variables A,B, and C and cov(A,B) = 0.4, cov(A,C) = -0.4, cov(B,c) = -0.7. Then if we still multiply them by 252, the relative co-movement is still the same.
- So I cannot understand why the annualizing (multiplying by 252) the variancce-covariance matrix change the portfolio optimization result.
## Answer by Alex C (score 4, accepted)
https://quant.stackexchange.com/a/48748
Q1. Calculating the GMVP involves three operations:
- Inverting the covariance matrix $\Sigma$
- Multiplying the inverse by a column vector of 1's on the right: $x=\Sigma^{-1} \mathbf{1}$
- Normalizing this vector so the elements sum to 1: $w= \frac{x}{1^T x}$
Note that the expected returns $\mu$ are nowhere used in this calculation.
If you multiply the covariance by 252, the inverse and x will be multiplied by $\frac{1}{252}$, but $w$ will be the same, since it is normalized.
Therefore multiplying the covariance matrix by any number whatsoever (other than 0) does not change the weights of the GMVP portfolio. So you must be doing something wrong or different from what I said above.
Q2. If you are using logarithmic returns, the return for 1 year is the sum of 252 daily returns. If the returns are independent it is true that the covariance matrix for yearly returns is 252 times the covariance matrix of daily returns. That is a property of the covariance of sums of independent variables.
## Answer by J-F (score 1)
https://quant.stackexchange.com/a/48746
For Q1, it shouldn't. You're simply multiplying the covariance matrix by a constant. However, the optimal GMV portfolio is very sensitive to inputs. The difference could simply be due to rounding (I'm assuming the differences are quite small).
Another way annualizing could change your outputs is if you're using transaction cost (of any other trade-off with risk). For example, if your objective function looks like this,
$\max\limits_x \left\{-\lambda x'\Sigma x-\gamma\text{Transaction Cost}\right\}$,
then annualizing effectively boosts your aversion parameter $\lambda$, which penalizes risk more relative to transaction cost. In this specific case, it's akin to forcing turnover (emphasize risk reduction at the expense of transaction cost).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.