# How can I use a more efficient volatility estimator to improve the co-variance matrix?

Using mean-variance, I need to estimate a co-variance matrix $\Sigma$ to obtain the best weights in my portfolio.

However, there are other ways to compute the volatility $\sigma$ than historical standard deviation, for instance using Yang and Zhang estimator.

I don't understand however the link between the vol. estimation and the co-variance matrix. I know that on the diagonals you'll find the volatility, but how do you re-calculate the co-variance matrix after you have obtained more efficient volatility estimates?

• Is there a link to the paper for the more efficient volatility estimates? May 9, 2017 at 13:10
• This paper reviews the main alternatives and conclude Yang Zhang is best dynamiproject.files.wordpress.com/2016/01/… May 9, 2017 at 13:13
• Good reference. Any thoughts on how to use it in the Cov estimation?
– WJA
May 9, 2017 at 13:28
• The only paper I know on covariance/correlation is Rogers and Zhou . arxiv.org/pdf/0804.0162.pdf . But I have never seen it applied to large matrixes. May 9, 2017 at 14:52
• @MatthewGunn In practice, imprecise expected returns are a bigger issue than imprecise covariances.
– John
May 11, 2017 at 19:27

Let $s$ be a $N\times1$ vector of standard deviations and $C$ be an $N\times N$ correlation matrix. The covariance matrix is equal to

$$\Sigma=\text{diag}(s) \ C \ \text{diag}(s)$$

where $\text{diag}(x)$ is a function that takes an $N\times1$ vector and puts it on the diagonal of a $N\times N$ matrix.

If you get some better standard deviation estimates, you can update the covariance matrix with the above formula.

It is also possible to normalize the data using your new volatility estimates in the denominator. For instance, if you decide to use a rolling N-day standard deviation estimate, then adjust each period's return by first subtracting the long-run mean and then divide by the standard deviation estimate appropriate for that day.

You can use this normalized series to estimate the correlation matrix.

• So basically I overwrite the doagnols with my estimates? Doesnt that hurt the other covariations? Ie should there be a way to update them as well?
– WJA
May 11, 2017 at 19:42
• @JohnAndrews The above formula is for matrix multiplication (SCS, where S is the diagonal matrix). It's for calculating a new covariance matrix, given standard deviations and correlations. Don't over-write diagonals of a sample covariance matrix or anything like that. That is not correct! However, as I said in my answer, it is possible to take into account your standard deviation estimates when calculating the correlation matrix.
– John
May 11, 2017 at 20:13
• This takes a correlation matrix as given and scales it up a correlation matrix so that it's a covariance matrix with standard deviation $\mathbf{s}$. I completely agree. (+1) It's a bit unclear to me if the question is simply about scaling a correlation matrix? May 12, 2017 at 5:17
• @MatthewGunn As far as I can tell that's what he was asking. He wanted to know how to update the covariance matrix given some other estimates for the volatility. He hasn't accepted it as the answer, so perhaps I'm missing something...
– John
May 12, 2017 at 11:41
• I thought question was how to use additional inputs, such as High and Low in addition to Close, to improve off-diagonal elements of Covar matrix. May 12, 2017 at 13:00