Historical, bootstrap or Monte Carlo: the four-step engine
Every simulation runs four steps: set up the model, generate scenarios, evaluate each one, and compile the results into a distribution. The three methods differ only in where scenarios come from: actual past changes (historical), random redraws of the observed data (bootstrap), or random draws from assumed distributions (Monte Carlo).
Before this: Why asset prices are log-normal, Value at risk from the normal distribution
On the exam
- Describe historical simulation and explain how it can be used in investment applications
- Describe bootstrap resampling, and explain how it can be used in investment applications
- Describe Monte Carlo simulation and explain how it can be used in investment applications
Describe historical simulation, bootstrapping and Monte Carlo simulation and explain their uses. Expect "which method…" items (uses replacement, needs a distribution, easiest to explain, can create unseen extremes), each method's implicit assumption, and which of the four steps does a given job.
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.
What is a simulation?
A simulation estimates the range of possible outcomes of a calculation by running it over many scenarios instead of one forecast. Each scenario is a set of input values. The outputs, taken together, form a distribution you can read probabilities from.
Analysts use simulations to measure risk and return, to optimize portfolios, to model cash flows and liquidity, and to value securities that have no formula.
What are the four steps?
Memorize
Every simulation, whatever its method, runs the same four steps.
- 1. Setup and parameterization Memorize define the goal and output, choose inputs, write the calculations linking them
- 2. Scenario generation Memorize produce the input sets, often thousands
- 3. Scenario evaluation Memorize the calculation engine runs the formulas from step 1 on each scenario
- 4. Result compilation and analysis Memorize collect the outputs into a distribution and conclude
In setup and parameterization you define the goal and the output you want, choose the inputs and their parameters, and write the calculations that link inputs to output. Scenario generation produces the sets of input values, often thousands of them. In scenario evaluation (calculation engine) the formulas from the setup run on every scenario and produce one output each. Result compilation and analysis collects those outputs into a distribution and reads the average, the spread and the tails.
The calculation in that example is the weighted portfolio return from Learning Module 8, applied to one scenario.
Where do the three methods differ?
In step 2. Historical simulation uses the changes that actually happened, each date once. Bootstrap simulation redraws the observed data at random, with replacement, so a date can appear twice and others not at all. Monte Carlo simulation draws from probability distributions you choose.
- Historical simulation Memorize actual past changes, each date once, no replacement
- Bootstrap simulation Memorize random draws from the observed sample, with replacement
- Monte Carlo simulation Memorize random draws from assumed distributions
| Historical | Bootstrap | Monte Carlo | |
|---|---|---|---|
| Source of scenarios | the historical data set | the observed sample | an assumed (modeled) distribution |
| How it samples | uses past data as it happened, no replacement | resamples with replacement | random draws from the distribution |
| Implicit assumption | the past is a fair guide to the future | the sample represents the population | the process can be modeled statistically |
| Typical uses | risk management, stress tests | standard errors, confidence intervals | complex securities, long-term outcomes |
| Flexibility | limited to what happened | limited by the sample | high: any scenario you can specify |
| Uncertainty captured | only what history showed | variation from resampling | hypothetical, from the model’s inputs |
| Computing load | low to moderate | moderate | high |
Historical simulation and bootstrapping are both built from past data and assume no distribution, so both keep fat tails and skew that really occurred, and neither can produce an outcome beyond the observed range. Only Monte Carlo can, if its distribution allows it.
Which method fits which job?
- Choose historical simulation when results must be explained and tied to real dates (“we would lose EUR 2 million if markets moved as they did on a given day”). It is the workhorse of bank risk management, and regulators often require large banks to use it.
- Choose bootstrapping when the data are few or no distribution fits, and you want the variability of a statistic: a standard error or a confidence interval for a mean, a volatility or a correlation.
- Choose Monte Carlo when no closed-form formula exists (a payoff that depends on the price path, an embedded option), when you want scenarios history never produced, or when you want to test how results change with your assumptions, including correlations you set yourself.
Exam tip A well-built simulation engine accepts scenarios from any of the three sources. Change step 2 and the rest stays the same.
How are they built in a spreadsheet?
Know the idea
The curriculum shows the logic with spreadsheet simulation functions in Excel and Google Sheets. Learn which function does which job and which method uses it. You will not need to type the formulas.
| Job | Excel | Google Sheets | Used in |
|---|---|---|---|
| Uniform random number between 0 and 1 | RAND() | RAND() | Monte Carlo, bootstrap |
| Random whole number in a range | RANDBETWEEN() | RANDBETWEEN() | bootstrap draws, discrete events |
| Turn a probability into a normal value | NORM.INV() | NORMINV() | Monte Carlo |
| Turn a probability into a log-normal value | LOGNORM.INV() | LOGNORMINV() | Monte Carlo prices |
| Value in a given row of a range | INDEX() | INDEX() | historical, bootstrap |
| Position of a value in a range | MATCH() | MATCH() | bootstrap lookups |
| Sort a range | SORT() | SORT() | historical ranking |
| Percentile | PERCENTILE.INC(), PERCENTILE.EXC() | same | historical value at risk (VaR) |
| kth smallest or largest value | SMALL(), LARGE() | same | worst and best outcomes |
| Count cells meeting a condition | COUNTIF() | COUNTIF() | bootstrap counts |
| Margin of a normal confidence interval | CONFIDENCE.NORM() | CONFIDENCE() | Monte Carlo, bootstrap |
| Totals, means, volatility | SUM(), AVERAGE(), STDEV() | same | all three |
| Logic and error handling | IF(), IFERROR() | same | all three |
Three recipes show how the functions fit together.
- Historical: prices in column A, returns in column B. Sort with
=SORT(B:B, 1, TRUE). Read the 5% tail with=PERCENTILE.INC(B:B, 0.05)or=PERCENTILE.EXC(B:B, 0.05), or the kth worst with=SMALL(B:B, k). - Bootstrap: returns in column B (rows 2 to N). One draw is
=INDEX(B:B, RANDBETWEEN(2, N)). Copy it across rows and columns for many paths, summarize each path withSUM(),AVERAGE()orSTDEV(), and read percentiles withSMALL()andLARGE(). - Monte Carlo: a standard normal draw is
=NORM.INV(RAND(), 0, 1). One price step is=P*EXP((r-0.5*sigma^2)*dt+sigma*SQRT(dt)*NORM.INV(RAND(),0,1)). Copy it for many steps and paths, and summarize withAVERAGE(),STDEV()andCONFIDENCE.NORM().
PERCENTILE.INC and PERCENTILE.EXC place a percentile slightly differently, so the same 5% tail can give slightly different numbers, and both can differ a little from counting ranks by hand (lesson 2). Professional systems usually run simulations in a programming language or purpose-built software; the spreadsheet shows the logic.
Parametric VaR, the formula version of the same risk question, is in Learning Module 7.
Memorize this
MemorizeThree ways to generate scenarios
| Historical | Bootstrap | Monte Carlo | |
|---|---|---|---|
| Source | past data as it happened | the observed sample | an assumed distribution |
| Replacement | no | yes | not applicable |
| Assumes | past = guide to future | sample = population | process can be modeled |
| Unseen extremes | no | no | yes |
| Best known for | explainability, risk management | standard errors, confidence intervals | complex securities, what-if analysis |
| Computing load | low to moderate | moderate | high |
Memory hook Steps: Set up, Generate, Evaluate, Compile. The methods differ only at G.
Know it cold Replacement means bootstrap. A chosen distribution means Monte Carlo. Each past date once, as it happened, means historical.
- 1. Setup and parameterization Memorize define the goal and output, choose inputs, write the calculations linking them
- 2. Scenario generation Memorize produce the input sets, often thousands
- 3. Scenario evaluation Memorize the calculation engine runs the formulas from step 1 on each scenario
- 4. Result compilation and analysis Memorize collect the outputs into a distribution and conclude
- Historical simulation Memorize actual past changes, each date once, no replacement
- Bootstrap simulation Memorize random draws from the observed sample, with replacement
- Monte Carlo simulation Memorize random draws from assumed distributions
Quick example
Weights 70% shares and 30% bonds; a scenario has shares +1.5% and bonds −0.5%. = 0.90%.
- 0.7×1.5=STO1
- 0.3×0.5+|-+RCL1= 0.9
STO store · +|- change sign · RCL recall a stored number
- 0.7ENTER1.5×0.3ENTER0.5CHS×+ 0.9
ENTER enter (on the HP, puts the number on the stack) · CHS change sign
How it is asked
-
Which method uses replacement?
Which method can put the same past day into one simulated path twice?
Bootstrap. Historical simulation uses each date once; Monte Carlo draws from a distribution.
-
Which method needs a distribution?
Which method needs the analyst to pick a probability distribution for each input?
Monte Carlo. The other two use the data as observed.
-
Which step?
The team turns each of 10,000 simulated return pairs into a profit or loss. Which step is that?
Scenario evaluation (the calculation engine). Not scenario generation, not result compilation.
-
Implicit assumption
Which assumption belongs to bootstrapping?
The sample represents the population. "Past reflects future" is historical; "distribution known" is Monte Carlo.
Exam traps
- Saying historical simulation samples with replacement. It uses each past date once; replacement belongs to bootstrapping.
- Thinking the methods differ in every step. They differ in scenario generation; setup, evaluation and compilation work the same way.
- Putting "apply the formulas to each scenario" in scenario generation. Generation produces the inputs; evaluation runs the formulas.
- Believing bootstrapping or historical simulation can produce a loss larger than any in the data. Only Monte Carlo can.
Checkpoint
3 exam-style questions. About 90 seconds each.
1A pension fund simulates its funding surplus. The team has already chosen the inputs and produced 5,000 sets of asset returns and interest rates. Its next task, turning each set into a surplus figure with the formulas chosen at the start, belongs to which step?
2A risk team wants every simulated year built only from trading days that actually happened, but combined in new random orders, with the same day allowed to appear more than once. The approach that fits is:
3A pension fund's board wants every simulated loss linked to a real past market day so that it can follow the reasoning. The method that best meets this need is:
Key takeaways
- Every simulation: set up, generate scenarios, evaluate each, compile the results.
- The methods differ in step 2: past data as it happened, past data redrawn with replacement, or draws from an assumed distribution.
- Historical and bootstrap keep real fat tails but cannot go beyond the data; Monte Carlo can, if its assumptions allow.
- Historical is easiest to explain, bootstrap gives standard errors and confidence intervals, Monte Carlo handles what no formula covers.
Quick example
Weights 70% shares and 30% bonds; a scenario has shares +1.5% and bonds −0.5%. = 0.90%.
- 0.7×1.5=STO1
- 0.3×0.5+|-+RCL1= 0.9
STO store · +|- change sign · RCL recall a stored number
- 0.7ENTER1.5×0.3ENTER0.5CHS×+ 0.9
ENTER enter (on the HP, puts the number on the stack) · CHS change sign
All Quantitative Methods formulas, every lesson
Practice exam-style questions on Simulating Prices and Returns
Questions about this lesson?
Where this comes back
- Historical simulation and historical value at risk Simulating Prices and Returns
- Measuring risk: probability, VaR, CVaR and sensitivities Introduction to Risk Management
Questions candidates ask
What are the steps of a simulation?
Four: set up the model (goal, inputs and the calculations linking them), generate scenarios, evaluate each scenario with those calculations, and compile the outputs into a distribution. Historical, bootstrap and Monte Carlo simulation all follow these steps and differ only in how scenarios are generated.
What is the difference between historical simulation, bootstrapping and Monte Carlo?
Historical simulation replays actual past changes, each date once. Bootstrapping redraws the observed data at random with replacement. Monte Carlo draws from probability distributions you assume. Only Monte Carlo can create outcomes beyond what was observed.
Which simulation method is easiest to explain?
Historical simulation, because every result is tied to a real date: the portfolio would gain or lose a given amount if markets moved as they did on that day.
Spotted an error? Tell us and we will fix it.