Simulating two correlated assets: the Cholesky step
Draw two independent standard normals, Z₁ and Z₂. Set X₁ = σ₁Z₁ and X₂ = σ₂(ρZ₁ + √(1 − ρ²)Z₂). X₂ borrows part of Z₁, so the pair has the chosen standard deviations and correlation ρ. This is the two-asset case of the Cholesky decomposition.
Before this: Monte Carlo simulation, Covariance and correlation
On the exam
- Describe Monte Carlo simulation and explain how it can be used in investment applications
Describe multivariate Monte Carlo simulation. Expect to compute X₂ from σ₂, ρ, Z₁ and Z₂ (traps: σ₂Z₂ alone, or 1 − ρ in place of √(1 − ρ²)), to pick the right equation for the second asset, and to say what the Cholesky decomposition produces: correlated normal draws.
How deeply to learn each part
- Know the idea
- Understand it in general. It frames other topics, but you will not calculate with it.
- Use it
- Understand it well enough to solve a question with it. Recognize when it applies.
- Memorize
- Learn it by heart. The exam will not give it to you.
You know this one. The full lesson is folded away. The takeaways, formulas and checkpoint below are your quick refresher, and the checkpoint is a fair test of whether you still do.
You tested strong here. The full lesson is folded away. The takeaways, formulas and checkpoint below are your quick refresher, and the checkpoint is a fair test of whether you still know it.
Why simulate assets together?
A portfolio’s risk depends on how its assets move together. Simulating each asset on its own, with independent draws, would treat them as unrelated and misstate the risk, badly so for a hedged position. Multivariate Monte Carlo simulation draws all the assets in each scenario jointly, with the correlation you specify.
Typical uses are portfolio risk across many assets, options on more than one underlying, and hedges. A long–short position holds one asset and sells another short. Correlation handling is one of Monte Carlo’s strengths (lesson 4).
How does the Cholesky step build correlated draws?
Memorize
Start from two independent standard normal draws, Z₁ and Z₂ (independent standard normal draws : mean 0, standard deviation 1, no link between them). Build the pair in three moves.
- 1. Draw Z₁ and Z₂ independent, standard normal: mean 0, standard deviation 1
- 2. Set X₁ = σ₁Z₁ the first variable uses Z₁ only
- 3. Set X₂ = σ₂(ρZ₁ + √(1 − ρ²)Z₂) a share ρ of Z₁ plus a fresh part
The common part ρZ₁ makes X₂ move with X₁. The fresh part √(1 − ρ²)Z₂ keeps it from moving in lockstep. The weights are chosen so the total variance stays σ₂²: ρ² + (1 − ρ²) = 1.
Three special cases show the logic:
- ρ = 0 gives X₂ = σ₂Z₂: independent.
- ρ = 1 gives X₂ = σ₂Z₁: moves in lockstep with X₁.
- ρ = −1 gives X₂ = −σ₂Z₁: an exact mirror.
The Cholesky decomposition factorizes a covariance or correlation matrix so that independent normal draws can be turned into correlated ones. With two variables it reduces to the two equations above. With more, the same idea runs through a matrix, which is not examined at this level. The result is a set of correlated draws .
Why does it work?
Know the idea
The pair follows a joint normal distribution with the properties you asked for.
- Means: E[X₁] = σ₁E[Z₁] = 0 and E[X₂] = 0.
- Variances: Var(X₂) = σ₂²(ρ² + (1 − ρ²)) = σ₂².
- Covariance: E[X₁X₂] = σ₁σ₂(ρE[Z₁²] + √(1 − ρ²)E[Z₁Z₂]) = σ₁σ₂(ρ × 1 + 0) = ρσ₁σ₂, because Z₁ and Z₂ are independent.
The draws are joint normal: thin tails, no excess kurtosis. If real returns have fat tails, the Cholesky step alone will not add them.
Worked example: a long–short position
A Monte Carlo simulation uses the Cholesky decomposition for two zero-mean returns. The second has a standard deviation of 1.00% and the correlation is 0.75. One scenario draws independent standard normals Z₁ = 0.6 and Z₂ = -1.5. The second return, X₂, is closest to:
1% × (0.75 × 0.6 + √(1 − 0.75²) × -1.5) = -0.54%
Second simulated return, X₂-0.54%
- 1−0.75x²=√x×1.5+|-=STO1
- 0.75×0.6+RCL1=×1=
x² square · √x square root · +|- change sign · STO store · RCL recall a stored number
- 1ENTER0.75ENTER×−g√x1.5CHS×0.75ENTER0.6×+1×
ENTER enter (on the HP, puts the number on the stack) · g blue shift key · √x square root · CHS change sign
Try this 0 of 3
- Set ρ to 0.
- Push ρ to 0.95.
- Raise the draws to 2,000.
Cholesky step with σ₁ 1.2%, σ₂ 1.0%, ρ +0.75: the highlighted draw Z₁ +0.60, Z₂ −1.50 gives X₁ +0.72% and X₂ −0.5422%. 250 draws have a sample correlation of 0.746; the long–short position's simulated standard deviation is GBP 62,306 against a model GBP 64,000 (GBP 124,964 if the correlation were ignored).
Independent draws (Z₁, Z₂)
- A draw
- Highlighted draw
Correlated draws (X₁, X₂)
- A correlated pair
- slope ρσ₂/σ₁
Long–short position over 250 simulated days
| Simulated (250 draws) | Model | |
|---|---|---|
| Mean profit or loss | −GBP 3,595 | GBP 0 |
| Standard deviation | GBP 62,306 | GBP 64,000 |
| Standard deviation if ρ were 0 | GBP 124,964 |
Model standard deviation: 8,000,000 × √(σ₁² + σ₂² − 2ρσ₁σ₂), a linear approximation. Ignoring a positive correlation overstates the risk of a hedge.
Show working
Draw two independent standard normals: Z₁ = 0.60, Z₂ = −1.50.
X₁ = σ₁Z₁ = 1.2% × 0.6 = 0.7200%.
√(1 − ρ²) = √(1 − 0.5625) = √0.4375 = 0.6614.
X₂ = σ₂(ρZ₁ + √(1 − ρ²)Z₂) = 1.0% × (0.75 × 0.6 + 0.6614 × (−1.50)) = 1.0% × (0.4500 − 0.9922) = −0.5422%.
Long–short profit or loss (P/L) for this draw: 8,000,000 × (e^0.007200 − 1) = +GBP 57,808 on the long side; −8,000,000 × (e^−0.005422 − 1) = +GBP 43,259 on the short side; total +GBP 101,066.
Across 250 draws: sample correlation 0.746 against ρ = 0.75; P/L mean −GBP 3,595 and standard deviation GBP 62,306, against the model's 0 and GBP 64,000. More draws bring both closer to the model.
- 1−0.75x²=√x×1.5+|-=STO1−0.9922
- 0.75×0.6+RCL1=−0.5422
x² square · √x square root · +|- change sign · STO store · RCL recall a stored number
- 1ENTER0.75ENTER×−g√x1.5CHS×0.75ENTER0.6×+−0.5422
ENTER enter (on the HP, puts the number on the stack) · g blue shift key · √x square root · CHS change sign
Display: −0.5422
What should thousands of draws show? A mean P/L of zero and a standard deviation of about 8,000,000 × √(1.2%² + 1.0%² − 2 × 0.75 × 1.2% × 1.0%) = 8,000,000 × 0.8% = GBP 64,000. This is the same algebra as Learning Module 8, with a short position and a linear approximation. Drawing the two funds independently (ρ = 0) would give 8,000,000 × √(1.2%² + 1.0%²) = GBP 124,964, nearly double: ignoring correlation badly overstates the risk of a hedge.
Too few trials leave noise. Our run of 250 draws gave a mean P/L of about −GBP 3,600 and a standard deviation of GBP 62,306. With 2,000 draws it gave −GBP 2,700 and GBP 63,364. The true mean is zero: small runs leave visible noise, and more trials bring the results toward the model.
Memorize this
MemorizeThe Cholesky step for two assets
| Move | Formula |
|---|---|
| Draw | independent standard normal |
| First variable | |
| Second variable | |
| Result | means 0, standard deviations , covariance |
Memory hook ρ of the old draw, root one minus ρ squared of the new.
Know it cold Check the answer options for (forgot the correlation) and (forgot the square root).
- 1. Draw Z₁ and Z₂ independent, standard normal: mean 0, standard deviation 1
- 2. Set X₁ = σ₁Z₁ the first variable uses Z₁ only
- 3. Set X₂ = σ₂(ρZ₁ + √(1 − ρ²)Z₂) a share ρ of Z₁ plus a fresh part
Quick example
σ₁ = 2%, Z₁ = 1.0: = 2.0%.
Quick example
σ₂ = 3%, ρ = 0.28, Z₁ = 1.0, Z₂ = 0.5. ; = 2.28%.
- 1−0.28x²=√x×0.5+0.28=×3= 2.28
x² square · √x square root
- 1ENTER0.28ENTER×−g√x0.5×0.28+3× 2.28
ENTER enter (on the HP, puts the number on the stack) · g blue shift key · √x square root
Quick example
σ₁ = 2%, σ₂ = 3%, ρ = 0.28: covariance = 0.28 × 2 × 3 = 1.68 (%²), that is 0.000168.
How it is asked
-
Compute X₂
σ₂ = 2.2%, ρ = 0.3, Z₁ = −0.8, Z₂ = 1.1
2.2% × (−0.24 + 0.9539 × 1.1) = 1.78%. Traps 2.42% (σ₂Z₂), 1.17% (1 − ρ).
-
Pick the equation
σ₂ = 4.0%, ρ = 0.96: X₂ = ?
3.84%Z₁ + 1.12%Z₂. 4.0%Z₂ ignores ρ; 3.84%Z₁ + 0.16%Z₂ uses 1 − ρ.
-
What it produces
What comes out of the Cholesky step?
Correlated normal draws from independent ones. Not fat tails, not noise removal.
Exam traps
- Using X₂ = σ₂Z₂. That is the uncorrelated case; the correlation enters through ρZ₁.
- Writing (1 − ρ) instead of √(1 − ρ²) for the weight on Z₂.
- Thinking the Cholesky step adds fat tails or excess kurtosis. The output is joint normal.
- Starting from draws that are already correlated. Z₁ and Z₂ must be independent.
Checkpoint
3 exam-style questions. About 90 seconds each.
1A Monte Carlo simulation models two zero-mean daily returns with standard deviations of 2.0% and 1.6% and a correlation of 0.40, using the Cholesky decomposition. One scenario draws independent standard normals Z₁ = −0.5 and Z₂ = 1.3. The second return, X₂, is closest to:
2A risk model simulates the daily returns of two share indexes with the Cholesky step, from independent standard normal draws Z₁ and Z₂. The first index (volatility 1.5%) is simulated as X₁ = 1.5% × Z₁. The second has a volatility of 2.5%, and the two have a correlation of 0.8. The second index's simulated return is:
3A risk manager draws independent standard normal numbers for two currencies and passes them through the Cholesky step. Compared with the inputs, the outputs are best described as:
Key takeaways
- Draw independent standard normals Z₁ and Z₂; set X₁ = σ₁Z₁ and X₂ = σ₂(ρZ₁ + √(1 − ρ²)Z₂).
- The result has means zero, the chosen standard deviations and covariance ρσ₁σ₂.
- The draws stay joint normal: correlation, yes; fat tails, no.
- Getting the correlation right matters most for hedged and long–short positions.
Quick example
σ₁ = 2%, Z₁ = 1.0: = 2.0%.
Quick example
σ₂ = 3%, ρ = 0.28, Z₁ = 1.0, Z₂ = 0.5. ; = 2.28%.
- 1−0.28x²=√x×0.5+0.28=×3= 2.28
x² square · √x square root
- 1ENTER0.28ENTER×−g√x0.5×0.28+3× 2.28
ENTER enter (on the HP, puts the number on the stack) · g blue shift key · √x square root
Quick example
σ₁ = 2%, σ₂ = 3%, ρ = 0.28: covariance = 0.28 × 2 × 3 = 1.68 (%²), that is 0.000168.
All Quantitative Methods formulas, every lesson
Practice exam-style questions on Simulating Prices and Returns
Questions about this lesson?
Where this comes back
- Portfolio expected return, variance and the role of correlation Portfolio Return and Risk
- Measuring risk: probability, VaR, CVaR and sensitivities Introduction to Risk Management
Questions candidates ask
What is the Cholesky decomposition used for in Monte Carlo simulation?
To turn independent standard normal draws into correlated ones, so that simulated assets move together as much as their correlation says. For two assets: X₁ = σ₁Z₁ and X₂ = σ₂(ρZ₁ + √(1 − ρ²)Z₂).
How do you simulate two correlated returns?
Draw two independent standard normals. Multiply the first by σ₁ for asset one. For asset two take ρ times the first draw plus √(1 − ρ²) times the second, and multiply by σ₂. With σ₂ = 1.0%, ρ = 0.75, Z₁ = 0.6 and Z₂ = −1.5, X₂ = −0.54%.
Why does correlation matter in a simulation?
Portfolio risk depends on how assets move together. A long–short position in two funds with a correlation of 0.75 has a daily risk of about GBP 64,000 in our example; simulating the funds independently would nearly double it to GBP 125,000.
Spotted an error? Tell us and we will fix it.