# 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? – Gordon May 9 '17 at 13:10
• This paper reviews the main alternatives and conclude Yang Zhang is best dynamiproject.files.wordpress.com/2016/01/… – noob2 May 9 '17 at 13:13
• Good reference. Any thoughts on how to use it in the Cov estimation? – JohnAndrews May 9 '17 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. – noob2 May 9 '17 at 14:52
• @MatthewGunn In practice, imprecise expected returns are a bigger issue than imprecise covariances. – John May 11 '17 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? – JohnAndrews May 11 '17 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 '17 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? – Matthew Gunn May 12 '17 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 '17 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. – noob2 May 12 '17 at 13:00