Analyst Dojo
Lesson 5 of 5 11–14% of the exam

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.

4 min cram, 20 min full read. Based on the 2027 CFA® Program Level I curriculum, Quantitative Methods, Learning Module 9.

Tailor this to you: take the self-assessment

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.

Cram mode: the one-screen version of this lesson. Switch to Full for the explanations, worked examples and interactives.

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.

Two correlated draws in three moves
Cholesky step for two variablesjoint normal, means zero
  • 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
First simulated variable Memorize
X1=σ1Z1X_1 = \sigma_1 Z_1
Second, correlated variable (Cholesky) Memorize
X2=σ2(ρZ1+1−ρ2 Z2)X_2 = \sigma_2\left(\rho Z_1 + \sqrt{1 - \rho^2}\,Z_2\right)

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.
Covariance of the simulated pair Know the idea
Cov⁡(X1,X2)=ρ σ1σ2\operatorname{Cov}(X_1, X_2) = \rho\,\sigma_1\sigma_2

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

Rearrange itCholesky draw for the second asset: solve for X₂ or Z₂
The question asks for
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%

On your calculator
  1. 1−0.75x²=√x×1.5+|-=STO1
  2. 0.75×0.6+RCL1=×1=

x² square · √x square root · +|- change sign · STO store · RCL recall a stored number

  1. 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

InteractiveThe Cholesky step: from independent draws to correlated returns

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₂)

−3−2−10+1+2+3Z₂−3−2−10+1+2+3Z₁
  • A draw
  • Highlighted draw

Correlated draws (X₁, X₂)

−4%−2%0%+2%+4%X₂, fund B (%)−4%−2%0%+2%+4%X₁, fund A (%)slope ρσ₂/σ₁
  • A correlated pair
  • slope ρσ₂/σ₁

Long–short position over 250 simulated days

Simulated (250 draws)Model
Mean profit or loss−GBP 3,595GBP 0
Standard deviationGBP 62,306GBP 64,000
Standard deviation if ρ were 0GBP 124,964

Model standard deviation: 8,000,000 × √(σ₁² + σ₂² − 2ρσ₁σ₂), a linear approximation. Ignoring a positive correlation overstates the risk of a hedge.

X₁ = σ₁Z₁+0.72%
X₂ = σ₂(ρZ₁ + √(1 − ρ²)Z₂)−0.5422%
Sample correlation of 250 pairs (target ρ +0.75)+0.746
Sample mean of X₁ (model 0)−0.122%
Trap: σ₂Z₂ only−1.50%
Trap: 1 − ρ instead of √(1 − ρ²)+0.075%
The model
Draws
The highlighted draw
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.

X₂ on your calculator
  1. 1−0.75x²=√x×1.5+|-=STO1−0.9922
  2. 0.75×0.6+RCL1=−0.5422

x² square · √x square root · +|- change sign · STO store · RCL recall a stored number

  1. 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

Mix a share of the first draw into the second and the pair moves together, exactly as much as ρ says.

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

MoveFormula
DrawZ1,Z2Z_1, Z_2 independent standard normal
First variableX1=σ1Z1X_1 = \sigma_1 Z_1
Second variableX2=σ2(ρZ1+1−ρ2 Z2)X_2 = \sigma_2(\rho Z_1 + \sqrt{1 - \rho^2}\,Z_2)
Resultmeans 0, standard deviations σ1,σ2\sigma_1, \sigma_2, covariance ρσ1σ2\rho\sigma_1\sigma_2

Memory hook ρ of the old draw, root one minus ρ squared of the new.

Know it cold Check the answer options for σ2Z2\sigma_2 Z_2 (forgot the correlation) and (1−ρ)(1 - \rho) (forgot the square root).

Two correlated draws in three moves
Cholesky step for two variablesjoint normal, means zero
  • 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
First simulated variable Memorize
X1=σ1Z1X_1 = \sigma_1 Z_1
Quick example

σ₁ = 2%, Z₁ = 1.0: X1X_1 = 2.0%.

Second, correlated variable (Cholesky) Memorize
X2=σ2(ρZ1+1−ρ2 Z2)X_2 = \sigma_2\left(\rho Z_1 + \sqrt{1 - \rho^2}\,Z_2\right)
Quick example

σ₂ = 3%, ρ = 0.28, Z₁ = 1.0, Z₂ = 0.5. 1−0.0784=0.96\sqrt{1 - 0.0784} = 0.96; X2=3%×(0.28+0.96×0.5)X_2 = 3\% \times (0.28 + 0.96 \times 0.5) = 2.28%.

On your calculator
  1. 1−0.28x²=√x×0.5+0.28=×3= 2.28

x² square · √x square root

  1. 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

Covariance of the simulated pair Know the idea
Cov⁡(X1,X2)=ρ σ1σ2\operatorname{Cov}(X_1, X_2) = \rho\,\sigma_1\sigma_2
Quick example

σ₁ = 2%, σ₂ = 3%, ρ = 0.28: covariance = 0.28 × 2 × 3 = 1.68 (%²), that is 0.000168.

How it is asked

  1. 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 − ρ).

  2. 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 − ρ.

  3. 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.

  1. 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:

  2. 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:

  3. 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.
First simulated variable Memorize
X1=σ1Z1X_1 = \sigma_1 Z_1
Quick example

σ₁ = 2%, Z₁ = 1.0: X1X_1 = 2.0%.

Second, correlated variable (Cholesky) Memorize
X2=σ2(ρZ1+1−ρ2 Z2)X_2 = \sigma_2\left(\rho Z_1 + \sqrt{1 - \rho^2}\,Z_2\right)
Quick example

σ₂ = 3%, ρ = 0.28, Z₁ = 1.0, Z₂ = 0.5. 1−0.0784=0.96\sqrt{1 - 0.0784} = 0.96; X2=3%×(0.28+0.96×0.5)X_2 = 3\% \times (0.28 + 0.96 \times 0.5) = 2.28%.

On your calculator
  1. 1−0.28x²=√x×0.5+0.28=×3= 2.28

x² square · √x square root

  1. 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

Covariance of the simulated pair Know the idea
Cov⁡(X1,X2)=ρ σ1σ2\operatorname{Cov}(X_1, X_2) = \rho\,\sigma_1\sigma_2
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

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.

  1. Historical, bootstrap or Monte Carlo: the four-step engine
  2. Historical simulation and historical value at risk
  3. Bootstrapping: simulating from the data you have
  4. Monte Carlo simulation
  5. Simulating two correlated assets: the Cholesky step

Ask Sensei Listen instead

Questions on Simulating two correlated assets: the Cholesky step

Learn with Sensei, out loud The voice tutor, in early access

Sensei teaches the lesson aloud and stops when you interrupt: "wait, why is the geometric mean lower?" It answers with the lesson's own example, then quizzes you by voice. Every account can try Sensei on one module, with one voice question.

USD 149 a month founding price (regular USD 199), kept for as long as you stay subscribed. Everything in Plus included.

In active development and improving every day. Send feedback · Plans and pricing

Analyst Dojo Plus

Your free review list holds 10 items.

Plus keeps everything you save, for USD 19 a month. To make room on the free plan, remove something from your review list.

See Plus

Lessons, checkpoints and the lesson questions in practice stay free. Compare plans