So I'm trying to simulate currency movements for several currencies with a given correlation matrix. I have the initial price, drift and volatility for each of the separate currencies, and I want to simulate their prices against USD with correlations following the matrix. I'm doing this in Excel. I read somewhere that multiplying a vector of independent GBMs with the Cholesky decomposition of the correlation matrix gives the required result, but doesn't work.

Any help?


1 Answer 1


Yes, you need Cholesky factorization.

You can find the general idea here:

Plus the implementation in MATLAB here:

The code in general should be easily translatable. The only difficulty is the Cholesky factorization where VBA code can be found here:

  • 3
    $\begingroup$ Cholesky is often used because it's easy to implement - it can suffer from instability though - you'd do better to used svd. You also have the problem of your matrices not being positive definite, which is a problem for cholesky but not svd. $\endgroup$
    – will
    Commented May 28, 2016 at 10:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.