Simulating Correlated Geometric Brownian Motion for Multiple Assets
Summary
The document addresses simulating several currency prices with specified individual drifts and volatilities and a target correlation matrix. The question proposes multiplying independent geometric Brownian motions by a Cholesky factor, but the accepted answer confirms the need for Cholesky factorization and points to general Monte Carlo path-generation and implementation references.
The key modeling step is to correlate the independent random shocks using a factorization of the correlation matrix, then use those correlated shocks in each asset’s GBM dynamics. The answer itself is brief and provides references rather than a worked derivation or Excel-specific instructions. It does not explain practical checks such as validating the matrix, distinguishing correlated Brownian increments from multiplying completed price paths, or confirming the resulting simulated correlations, so those details must be established in an implementation.
Key ideas
- Cholesky factorization can transform independent random shocks into correlated shocks.
- Apply the correlation structure to Brownian increments in the asset dynamics rather than directly multiplying completed GBM price paths.
- Each asset retains its own drift and volatility while sharing correlated random innovations.
- The brief answer points to external implementation references and does not provide a complete spreadsheet procedure.
Tags
Full text
# How to simulate correlated Geometric brownian motion for n assets? # 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? ## Answer by vonjd (score 14, accepted) https://quant.stackexchange.com/a/7821 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
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.