You are reading the 2026 curriculum (exams up to November 2026). Sitting in February 2027 or later? Go to the 2027 Quantitative Methods guide.
Bootstrapping: simulating from the data you have
Bootstrapping treats the observed sample as if it were the population and draws from it at random, with replacement, to build simulated scenarios. It needs no assumed distribution, so it keeps the real data's fat tails and skew, but it can never produce an outcome more extreme than the history it draws from.
Before this: Monte Carlo simulation
On the exam
- Describe the use of bootstrap resampling in conducting a simulation based on observed data in investment applications
Describe how bootstrap resampling runs a simulation from observed data, and its investment uses. Expect to contrast it with Monte Carlo: draws come from the observed data, with replacement, with no assumed distribution.
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.
How can you simulate without assuming a distribution?
Use the data you already have. Bootstrap resampling pretends the sample you hold is the whole population and draws from it at random. You never see the true population, but a random sample should resemble it, so repeated draws from the sample play the part of repeated draws from the population.
Monte Carlo asks you to choose a distribution. Bootstrapping skips that choice: the empirical distribution , the pattern of values actually observed, is the distribution.
Try this 0 of 3
- Draw months until the same month lands in your path twice.
- Leave out the crash month and compare the share of paths that lose more than 20% in a year.
- Set each path to 1 month and compare the histogram's left edge with the normal curve.
1,000 bootstrapped 12-month returns drawn with replacement from 24 observed months: mean +3.24%, standard deviation 15.66%, skewness −0.34. 8.0% of paths are worse than −20%, against 6.9% under a normal curve. Nothing in the simulation is worse than the history allows.
Observed sample: 24 monthly returns
- +2.1%M1
- +1.4%M2
- −0.8%M3
- +3.2%M4
- +0.6%M5
- −16.5%M6
- +3.4%M7
- +1.9%M8
- −2.3%M9
- +2.7%M10
- +1.1%M11
- +3.6%M12
- −8.2%M13
- +2.4%M14
- +0.9%M15
- +1.7%M16
- −1.2%M17
- +3.0%M18
- +2.2%M19
- −4.6%M20
- +1.5%M21
- +4.1%M22
- +0.3%M23
- +2.6%M24
Mean +0.21%, standard deviation 4.52%, skewness −2.48 (a long left tail). The tile just drawn is outlined; it stays in the pool.
This path: 12 of 12 draws
- +3.0%M18
- +2.1%M1
- +1.1%M11
- +1.4%M2
- +2.2%M19
- +3.6%M12 again
- +3.6%M12 again
- +3.2%M4
- +3.4%M7
- +2.4%M14
- +0.6%M5
- −0.8%M3
Path return: +28.95%. A month appears twice: draws are with replacement.
1,000 simulated 12-month returns
- Bootstrap paths
- Normal, same mean and σ
- Worse than −20%
Show working
Bootstrap: treat the 24 observed months as the population. Draw a month at random, record it, put it back; repeat for each month of the path.
1,000 paths of 12 months: mean +3.24%, standard deviation 15.66%, skewness −0.34 (the sample's −2.48 is diluted as months are compounded together, but the left tail survives).
Paths worse than −20%: 8.0% in the bootstrap against 6.9% under the normal curve.
Worst simulated path: −45.8%. It can only be built from months in the pool; the worst month there is −16.5%.
This path: 1.03 × 1.021 × 1.011 × 1.014 × 1.022 × 1.036 × 1.036 × 1.032 × 1.034 × 1.024 × 1.006 × 0.992 − 1 = +28.95%.
- 1.03×1.021×1.011×1.014×1.022×1.036×1.036×1.032×1.034×1.024×1.006×0.992=1.2895
- −1=0.2895, so +28.95%
- 1.03ENTER1.021×1.011×1.014×1.022×1.036×1.036×1.032×1.034×1.024×1.006×0.992×1.2895
- 1−0.2895, so +28.95%
ENTER enter (on the HP, puts the number on the stack)
Display: 0.2895
Run a thousand paths and compare the bootstrap histogram with the normal curve. The bootstrap keeps whatever skew the data had.
How does it work?
Memorize
Draw one observation, record it, put it back, and repeat.
- Set up
- Collect the sample Memorize observed returns, for example 240 months
- Match the time grid steps as long as the data periods
-
- Draw
- Pick one observation at random Memorize record it
- Put it back Memorize with replacement, so it can be drawn again
- Repeat to build a path for example 12 draws for a year
-
- Run
- Compute the outcome of the path
- Repeat thousands of times, then summarize same as Monte Carlo
-
The rule that matters is sampling with replacement : each item drawn goes back into the pool before the next draw, so it can be drawn again. In a resampling of the same size as the original, some items appear several times and others not at all.
Take five past annual returns: 12%, −8%, 5%, 15% and 2%. One three-year bootstrap path might be 5%, 5%, −8%. The 5% appears twice because it was replaced after the first draw.
The time grid must match the data. Monthly observations feed monthly steps, so a year of simulated returns needs 12 draws. Everything after the draws is identical to Monte Carlo: compute the outcome on each path, repeat thousands of times, then summarize. Only the source of the random numbers differs.
Bootstrapping is also a tool for statistics. Draw many resamples of the same size as the data, compute the statistic in each (a mean, variance, skewness, kurtosis) and look at how it varies. That gives the sampling distribution of a statistic without an analytical formula.
What are its limits?
A bootstrap path is built only from what has been seen. The best and worst outcomes it can produce are the sample’s best and worst draws, compounded.
The most extreme one-period return in a sample is -8.00%. The most extreme cumulative return a bootstrap path of 3 draws can produce is closest to:
(1 + -0.08)^3 − 1 = -22.13%
Cumulative return of that path-22.13%
- 0.92y^x3=−1=
y^x power
- 0.92ENTER3y^x1−
ENTER enter (on the HP, puts the number on the stack) · y^x power
So a calm sample gives calm results. Ten quiet years contain no crash, and a bootstrap from them cannot invent one. Monte Carlo can, if its distribution allows it.
| Monte Carlo | Bootstrap | |
|---|---|---|
| Source of draws | a distribution you specify | the observed data |
| Distribution assumption | yes | none |
| Captures real fat tails and skew | only if you model them | yes, as in the sample |
| Can produce unseen extremes | yes | no |
| Main risk | wrong distribution | sample not representative of the future |
- Monte Carlo Memorize draws from a distribution you specify
- Can produce unseen extremes
- Risk: the wrong distribution
-
- Bootstrap Memorize draws from the observed data, with replacement
- Keeps the real skew and fat tails
- Cannot go beyond the sample range
- Risk: the past is not the future
-
Like Monte Carlo, bootstrapping gives statistical estimates rather than exact results and complements analytical methods. Its strengths are that it is simple to perform and represents the sample’s features well.
Exam tip Draws from a specified distribution: Monte Carlo. Draws from observed data, with replacement: bootstrap.
Go deeper Historical simulation and block resampling
Historical simulation is a close relative. It replays the changes that actually happened, in the order they happened, to see what a portfolio would have done. The bootstrap instead redraws past observations at random, which produces many new orderings from the same history. Both are limited to the past they use.
Plain bootstrapping also breaks any link between one observation and the next, because each draw is independent. For data with autocorrelation, such as volatility that clusters, analysts resample whole blocks of consecutive observations to keep that link. That variation is not examined at this level.
Go deeper Bootstrapping standard errors
For a sample mean, the standard error has a formula (standard deviation divided by the square root of the sample size). For statistics with no easy formula, such as a median or a skewness figure, you can resample, compute the statistic in each resample and take the standard deviation of those values. The next module builds on this idea.
Memorize this
MemorizeMonte Carlo versus bootstrap
| Monte Carlo | Bootstrap | |
|---|---|---|
| Source of draws | a distribution you specify | the observed data |
| Distribution assumed | yes | none |
| Real fat tails and skew | only if modeled | kept, as in the sample |
| Unseen extremes | possible | not possible |
| Main risk | wrong distribution | sample not representative |
Memory hook Bootstrap = pull yourself up by your own data. Nothing new goes in, so nothing new comes out.
Know it cold Draw at random from the observed sample, with replacement. To estimate a statistic, each resample has the same size as the sample; to simulate a path, draw one observation per step.
- Set up
- Collect the sample Memorize observed returns, for example 240 months
- Match the time grid steps as long as the data periods
-
- Draw
- Pick one observation at random Memorize record it
- Put it back Memorize with replacement, so it can be drawn again
- Repeat to build a path for example 12 draws for a year
-
- Run
- Compute the outcome of the path
- Repeat thousands of times, then summarize same as Monte Carlo
-
- Monte Carlo Memorize draws from a distribution you specify
- Can produce unseen extremes
- Risk: the wrong distribution
-
- Bootstrap Memorize draws from the observed data, with replacement
- Keeps the real skew and fat tails
- Cannot go beyond the sample range
- Risk: the past is not the future
-
Quick example
A bootstrap draws monthly returns of 2%, −1% and 3%. = 4.01%.
- 1.02×0.99×1.03−1= 0.0401
- 1.02ENTER0.99×1.03×1− 0.0401
ENTER enter (on the HP, puts the number on the stack)
Quick example
Sample returns range from −8% to +15%. Five draws can lose at most = −34.09% and gain at most = 101.14%.
- 0.92y^x5=−1= −0.3409
y^x power
- 0.92ENTER5y^x1− −0.3409
ENTER enter (on the HP, puts the number on the stack) · y^x power
How it is asked
-
How is each draw made?
In a bootstrap simulation, each simulated return is drawn…
At random from the observed data, with replacement. Without replacement and from a fitted normal are the traps.
-
Advantage over Monte Carlo
Compared with Monte Carlo, bootstrapping’s main advantage is…
No assumed probability distribution is needed. Creating unseen extremes is the trap.
-
Weakness of a calm sample
A bootstrap uses ten calm years. The most likely weakness?
Understates extreme losses, since none are in the data.
-
Most extreme path
Worst sample return −8%. Worst 4-draw path?
0.92⁴ − 1 = −28.36%. Adding (−32%) is the trap.
Exam traps
- Saying bootstrapping draws without replacement. Each draw is put back, so a value can appear more than once.
- Saying bootstrapping needs a normal (or any) distribution. It uses the observed data directly.
- Thinking bootstrapping can generate returns outside the observed range. It cannot.
- Treating a bootstrap from a short or calm sample as a full picture of risk.
Checkpoint
6 exam-style questions. About 90 seconds each.
1In a bootstrap simulation, each simulated return is drawn:
2Compared with Monte Carlo simulation, bootstrapping's main advantage is that it:
3A risk manager's bootstrap uses ten years of calm market returns. The most likely weakness of the results is that they:
4A bootstrap path of three annual draws from a sample of returns gives 5%, 5% and −8%. The path's cumulative return is closest to:
5The worst annual return in a sample is −8%. In a bootstrap of four-year paths, the lowest possible cumulative return is closest to:
6In a bootstrap, each resample drawn from an original sample of 60 observations contains:
Key takeaways
- Bootstrap: resample the data you have, at random, with replacement.
- No distribution assumption, so real skew and fat tails are kept.
- It cannot produce anything outside the historical range.
- It differs from Monte Carlo only in the source of the draws: observed data instead of a specified distribution.
Quick example
A bootstrap draws monthly returns of 2%, −1% and 3%. = 4.01%.
- 1.02×0.99×1.03−1= 0.0401
- 1.02ENTER0.99×1.03×1− 0.0401
ENTER enter (on the HP, puts the number on the stack)
Quick example
Sample returns range from −8% to +15%. Five draws can lose at most = −34.09% and gain at most = 101.14%.
- 0.92y^x5=−1= −0.3409
y^x power
- 0.92ENTER5y^x1− −0.3409
ENTER enter (on the HP, puts the number on the stack) · y^x power
Questions about this lesson?
Where this comes back
- Estimation and Inference Quantitative Methods
- Introduction to Risk Management Portfolio Construction
Questions candidates ask
What is bootstrapping in finance?
Bootstrapping treats an observed sample as if it were the population and repeatedly draws from it at random, with replacement. Each draw feeds a simulated outcome, such as a year of returns. It needs no assumed distribution and keeps the data's real skew and fat tails.
What is the difference between Monte Carlo simulation and bootstrapping?
Both repeat random draws thousands of times. Monte Carlo draws from a probability distribution you specify. Bootstrapping draws from the observed data. So Monte Carlo can create unseen extremes but may use a wrong distribution, while bootstrapping cannot exceed the historical range.
Why is bootstrapping done with replacement?
Replacing each draw keeps the pool unchanged, so every draw has the same chances and an observation can be drawn again. This mimics repeated sampling from a population. Without replacement, a resample the size of the sample would only reorder it.
Spotted an error? Tell us and we will fix it.