# How to simulate correlated Geometric brownian motion for n assets?

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?

-
Very warm welcome to quant.stackexchange :-) If you found the answer useful you can accept it - Thank you – vonjd Apr 29 '13 at 9:19

## 1 Answer

Yes, you need Cholesky factorization.

You can find the general idea here:
http://www.goddardconsulting.ca/option-pricing-monte-carlo-basket.html

Plus the implementation in MATLAB here:
http://www.goddardconsulting.ca/matlab-monte-carlo-assetpaths-corr.html

The code in general should be easily translatable. The only difficulty is the Cholesky factorization where VBA code can be found here:
http://vbadeveloper.net/numericalmethodsvbacholeskydecomposition.pdf

-
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. – will May 28 at 10:57