Can we interchangeably use Cholesky decomposition of covariance and correlation matrix to generate simulations? If not, in which situations do we use one or the other and why? Thanks in advance.
-
$\begingroup$ The usual approach is to decompose the correlation matrix. See e.g. here sitmo.com/article/generating-correlated-random-numbers Given the relationship between correlation and covariance $\rho_{XY}=\frac{cov(X,Y)}{\sigma_X \sigma_Y}$ you can always turn a covariance matrix into the correlation one. $\endgroup$– ProbilitatorMar 23, 2014 at 9:25
2 Answers
You can use the either, as both necessarily are symmetric positive definite; covariance is a personal preference. It's really just a matter of scaling, as $\mathcal{N}(0,\Sigma)$ is distributionally $\sqrt{\Sigma} \mathcal{N}(0,1) $.
Correlation would require additional scaling (i.e. multiplication of every $\mathcal{N}(0,\rho)$ element by its respective volatility, and therefore requires more operations).
Glasserman (p. 72-74) also uses the covariance matrix for his introduction to Cholesky factorization, so I suspect it is not unusual, however I have also seen correlation (e.g. example of @Probilitator).
-
$\begingroup$ Yes, ideally, we should be able to use either of those to generate the random samples. But are there any practical implications? Like while I was discussing the same thing with someone who works as a market risk consultant, he told me that some of the implementations only calculate correlation matrix once a month and calculate daily covariance matrix based on daily variances and the correlation matrix. I guess this approach would save some computation time but is this a correct approach? $\endgroup$ Mar 27, 2014 at 7:20
I think Cholesky on correlation matrix is better because it makes code apply more generally in case we don't have full rank.
For example, suppose we want to simulate three correlated normals with covariance matrix [[a^2,0,0], [0,b^2,0], [0,0,c^2]]
i.e. variables are uncorrelated and have vols a, b, and c. Because this is positive definite, we can do Cholesky no problem, with result also [[a,0,0], [0,b,0], [0,0,c]]
However, if we get new data in telling us that b = c = 0, the Cholesky decomposition will fail because of non positive definiteness. Hence we'd need to modify our code to handle this case.
If however we'd done our coding in terms of a [diagonal] matrix S of volatilities and a correlation matrix K, we would perform Cholesky on K (to get matrix A say) and it would run fine even in zero volatility cases. The covariance matrix is the given by (SA)^2.
The underlying reason is that a correlation matrix is positive definite whenever the covariance matrix is, but the converse is false.