Covariance Matrices, Cholesky Factors, and Market Price of Risk
Summary
The document considers how to estimate joint risk for multiple stocks from historical log returns. The proposed workflow computes the variance-covariance matrix, annualizes it, and applies a Cholesky decomposition. The resulting factor can be used to represent correlated risk in calculations involving expected returns and a risk-free rate, including a market price of risk vector used in state-price density simulation.
The replies distinguish individual volatility from the full covariance structure: taking the diagonal and square roots gives each asset’s standard deviation, while the covariance matrix retains cross-asset relationships. One response cautions that calling a Cholesky factor a volatility matrix is imprecise, describing the decomposition instead as a tool for handling matrix problems connected to mean-variance portfolio reasoning. The exchange offers limited explanation and does not establish implementation details such as data frequency, return estimation choices, or matrix orientation conventions.
Key ideas
- A covariance matrix of asset log returns captures both individual variances and cross-asset covariances.
- Annualizing a monthly covariance estimate scales the matrix by the number of months in a year.
- The square roots of the covariance matrix diagonal entries give individual asset standard deviations.
- A Cholesky factor represents the covariance structure, but calling it a volatility matrix can be imprecise.
- The proposed risk-price calculation is tied to portfolio and state-price density applications.
Tags
Full text
# How to calculate the volatility matrix with multiple stocks # How to calculate the volatility matrix with multiple stocks calculating the volatility for a single stock is straightforward. However, I'm not sure whether my approach for calculating the volatility matrix for multiple stocks is correct: I assume a log-normal distribution of the stock prices. Therefore I calculate the log returns, calculate the variance-covariance matrix of the log returns and perform the cholesky decomposition of the variance-covariance matrix. The result from the last step is, as far as I am aware of, the volatility matrix. Let ln_sec be a m x n matrix with the log returns of n securities over a period of m months, then my matlab code is as follows: ``` vcm = cov(ln_sec) %var-cov matrix vcm = vcm * 12 %annualize var-cov matrix vm = chol(vcm) %volatility matrix ``` Would you agree on my approach? Thank you. Edit: I forgot to mention the application in order to discuss a suitable solution. The volatility matrix is used to calculate a market price of risk vector as follows ``` (drift - risk-free-rate*1)/vm ``` where drift is a n x 1 vector with the mean drift rates of n assets and 1 is a n x 1 vector with 1's. The market price of risk vector is then used to simulate a state-price density (pricing kernel). ## Answer by Taran (score 1) https://quant.stackexchange.com/a/14344 You can just take the diagonal of the var-cov matrix. This should give you the variance of each stock and then take sqrt of that for std. deviation. ``` sd = sqrt(diag(vcm)) ``` ## Answer by rhaskett (score 1) https://quant.stackexchange.com/a/15367 I think your approach based perhaps on The Complex Unit's forum post is correct. However, you may be making this more confusing for yourself with the notation and vocabulary. The phrase volatility matrix is not really correct though I can see how someone might get there because the market price of risk formula looks like and is related to the Sharpe Ratio formula. A Cholesky Decomposition is mainly a tool for solving inverse matrix problems. In this case the inverse problem is what would the market price need to be to justify holding this return stream as mean-variance optimized portfolio. Does that help clarify?
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.