Lesson 1 of 8 · All lessons in this module
- The simulation framework: four steps, three sources of scenarios
- Historical simulation and historical VaR
- Historical simulation in practice: forecasts, data gaps and bonds
- Bootstrap resampling
- Bootstrapping in practice: price paths, confidence intervals and limits
- Monte Carlo simulation: what it is and what it is for
- Monte Carlo valuation with log returns: European and Asian options
- Correlated scenarios: Cholesky and multivariate Monte Carlo
This lesson is part of the 2026 and 2027 curriculum. You are following the 2026 curriculum, where it is not taught in this form. Switch if you are sitting the exam under the 2026 and 2027 curriculum.
Free lesson: the first lesson of every module is open to everyone.
Lesson 1 of 8 · 12 min
The simulation framework: four steps, three sources of scenarios
Every simulation runs the same four steps; historical simulation, bootstrapping and Monte Carlo differ mainly in step 2, where the scenarios come from.
In short
- A simulation has four steps: setup/parameterize, scenario generation, scenario evaluation (the calculation engine) and result compilation/analysis.
- Historical simulation replays actual past changes in the risk factors. Bootstrapping resamples past observations with replacement. Monte Carlo draws random values from assumed probability distributions.
- The three approaches differ mostly in step 2. A good simulation engine accepts scenarios from any of the three sources.
- Trade-off: historical simulation is simple and easy to explain but tied to the past; Monte Carlo is the most flexible but the most model-dependent and computationally demanding; bootstrapping sits in between.
- Simulation is the natural tool for non-linear exposures and path-dependent payoffs, where simple formulas break down.
Why simulate, and the four steps
A simulation starts from assumptions about how some input variables can move, generates many possible scenarios for them, and measures what each scenario does to an output you care about: a portfolio's profit and loss, a security's value, a fund's volatility.
Step 1, setup/parameterize. Define the goal and the output variable (a price, a return, a value), choose the input variables (risk factors such as share returns or yield changes), and decide the calculations that turn inputs into outputs.
Step 2, scenario generation. Produce the input scenarios. They range from a few user-defined cases to thousands of machine-generated vectors, one vector per scenario.
Step 3, scenario evaluation (calculation engine). Apply the calculations from step 1 to every scenario, for example asset returns, then portfolio returns from the weights, then risk measures. Step 4, result compilation/analysis. Gather all outputs into a distribution and draw conclusions: expected value, dispersion, downside tail, value at risk.
Three ways to generate scenarios
Historical simulation uses the changes in the risk factors that actually happened, for example each trading day of the past year, and applies them to today's positions. No randomness is added: the past *is* the set of scenarios.
Bootstrapping also starts from historical data but adds randomness: it draws observations from the sample with replacement, so the same day can be used several times and another not at all. That creates many synthetic datasets with the same empirical distribution as the original.
Monte Carlo simulation makes distributional assumptions (for example, normal returns with a chosen mean, standard deviation and correlation) and draws random numbers from those distributions. History may be used to estimate the parameters, but the scenarios themselves are generated by the model.
Because the differences sit almost entirely in step 2, a well-designed system has one central engine that can process scenarios from any source, in large enough numbers to give precise estimates.
| Feature | Historical simulation | Bootstrapping | Monte Carlo |
|---|---|---|---|
| Source of scenarios | Historical dataset, used as observed | Observed sample, resampled with replacement | Assumed or modelled distributions |
| Key assumption | Past changes reflect future changes | The sample represents the population | The process generating outcomes can be modelled statistically |
| Typical uses | Risk management, VaR, stress tests | Confidence intervals, standard errors | Complex securities, long-horizon outcomes |
| Flexibility | Limited to historical patterns | Limited by the sample size and range | Highly flexible; any scenario can be modelled |
| Uncertainty captured | Only what history showed | Resampling variability of history | Hypothetical uncertainty from the model inputs |
| Computing cost | Low to moderate | Moderate | High, depending on the model |
When simulation beats a formula
Simple parametric shortcuts (such as a normal-distribution VaR) work well for linear positions and well-behaved returns. Simulation earns its cost when the output is a non-linear function of the inputs, such as an option, or when the payoff depends on the whole path of prices, such as an option on the average price or a callable mortgage.
The quality of any simulation depends on its assumptions, explicit or implicit. Historical simulation implicitly assumes the past repeats; bootstrapping assumes the sample is representative; Monte Carlo explicitly assumes a model. The output is only as realistic as that assumption.
One engine, three fuels: replayed history, reshuffled history or model-made randomness. Ask first where you trust the scenarios to come from, then pick the method.
Building it in a spreadsheet
All three methods can be prototyped in Excel or Google Sheets, although production systems usually run in Python, MATLAB or purpose-built software. The building blocks are a handful of functions.
For Monte Carlo, RAND() returns a uniform number between 0 and 1 and NORM.INV(RAND(), 0, 1) turns it into a standard normal draw (LOGNORM.INV gives a lognormal one). For bootstrapping, INDEX(B:B, RANDBETWEEN(2, N)) picks a random historical row, with replacement. For historical simulation, SORT and PERCENTILE.INC/PERCENTILE.EXC (or SMALL) rank the outcomes and read off the tail.
| Job | Function | Used mainly in |
|---|---|---|
| Uniform random number | RAND() | Monte Carlo, bootstrapping |
| Uniform → standard normal draw | NORM.INV(RAND(), 0, 1) | Monte Carlo |
| Random row of historical data | INDEX(range, RANDBETWEEN(…)) | Bootstrapping |
| Rank outcomes, read the tail | SORT, SMALL, LARGE, PERCENTILE.INC/EXC | Historical simulation (VaR) |
| Summarise the output | AVERAGE, STDEV, CONFIDENCE.NORM | All three |
Formula
- Standard normal draw from a uniform number
The spreadsheet version is NORM.INV(RAND(), 0, 1). A draw with mean μ and standard deviation σ is then .
Worked examples
Example 1 Which step is it?
A risk team simulates a CAD portfolio. Tasks: (a) choose the one-year risk-adjusted return as the output and share returns and credit spread changes as inputs; (b) produce 20,000 vectors of input changes; (c) compute portfolio returns and Sharpe ratios for each vector; (d) build the distribution and report the 5th percentile. Match each task to its step.
Example 2 Turning a uniform number into a return
A spreadsheet's RAND() returns 0.95. Daily returns are modelled as normal with mean 0 and standard deviation 2%. What simulated daily return does NORM.INV produce?
Example 3 Picking the method
Which approach fits each need? (a) A bank must show regulators how today's book would have fared on each day of the last two years, in plain language. (b) An analyst has only 30 monthly returns for a new fund and wants a confidence interval for its volatility. (c) A desk wants to test a crash twice as severe as any on record.
On the exam
Expect questions that match a description to one of the four steps (often the calculation engine), name the method that uses replacement or assumed distributions, or compare the methods on assumptions, flexibility and computing cost.
- The calculations are defined in setup but applied in scenario evaluation (step 3).
- Bootstrapping draws with replacement; historical simulation uses each past observation as it happened.
- Monte Carlo can use history to estimate its parameters, but its scenarios come from the assumed distribution, not from history.
Check yourself
Q1In which step of a simulation are the calculations defined during setup applied to each input scenario to produce the outputs?
Q2Which simulation approach is most likely associated with the explicit choice of a probability distribution for the inputs?
Q3The three main simulation approaches differ most in:
Q4Daily returns are modelled as normal with mean 0 and standard deviation 2%. A uniform draw of 0.95 is converted with NORM.INV. The simulated return is closest to:
Q5Compared with the other two approaches, Monte Carlo simulation is most likely to have the:
Answer the 5 questions: +10 XP for each one you get right first time.
Liked this lesson? Get the rest free for 7 days
Create a free account to open the other 7 lessons in this module, with videos, flashcards that come back before you forget them, the question bank and full mocks. No card needed.