Analyst Dojo
Lesson 3 of 3 6–9% of the exam

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.

6 min cram, 28 min full read. Based on the 2026 CFA® Program Level I curriculum, Quantitative Methods, Learning Module 6. This is the 2026 version of the lesson. Sitting in February 2027 or later? Read the updated 2027 version.

Tailor this to you: take the self-assessment

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.

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

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.

InteractiveBootstrap: build a year from the months you have

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

−60%−40%−20%0%20%40%60%12-month return−20%
  • Bootstrap paths
  • Normal, same mean and σ
  • Worse than −20%
Paths simulated1,000
Mean 12-month return+3.24%
Worse than −20%: bootstrap / normal8.0% / 6.9%
Worst month in the pool−16.5%
Months in each path
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%.

This path's return on your calculator
  1. 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
  2. −1=0.2895, so +28.95%
  1. 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
  2. 1−0.2895, so +28.95%

ENTER enter (on the HP, puts the number on the stack)

Display: 0.2895

Bootstrapping reuses history; it can't invent a crash that isn't in the data.

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.

Bootstrap simulation, step by step
Bootstrap simulationresample the data you have
  • 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.

Return of a simulated path Use it
Rpath=(1+r1)(1+r2)⋯(1+rk)−1R_{path} = (1 + r_1)(1 + r_2)\cdots(1 + r_k) - 1

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.

Most extreme bootstrap path Use it
Rworst=(1+rmin)k−1,Rbest=(1+rmax)k−1R_{worst} = (1 + r_{min})^{k} - 1, \qquad R_{best} = (1 + r_{max})^{k} - 1
Rearrange itMost extreme bootstrap path: solve for any one
The question asks for
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%

On your calculator
  1. 0.92y^x3=−1=

y^x power

  1. 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 CarloBootstrap
Source of drawsa distribution you specifythe observed data
Distribution assumptionyesnone
Captures real fat tails and skewonly if you model themyes, as in the sample
Can produce unseen extremesyesno
Main riskwrong distributionsample not representative of the future
Where the random draws come from
Simulationsame steps, different source of randomness
  • 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 CarloBootstrap
Source of drawsa distribution you specifythe observed data
Distribution assumedyesnone
Real fat tails and skewonly if modeledkept, as in the sample
Unseen extremespossiblenot possible
Main riskwrong distributionsample 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.

Bootstrap simulation, step by step
Bootstrap simulationresample the data you have
  • 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
Where the random draws come from
Simulationsame steps, different source of randomness
  • 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
Return of a simulated path Use it
Rpath=(1+r1)(1+r2)⋯(1+rk)−1R_{path} = (1 + r_1)(1 + r_2)\cdots(1 + r_k) - 1
Quick example

A bootstrap draws monthly returns of 2%, −1% and 3%. 1.02×0.99×1.03−11.02 \times 0.99 \times 1.03 - 1 = 4.01%.

On your calculator
  1. 1.02×0.99×1.03−1= 0.0401
  1. 1.02ENTER0.99×1.03×1− 0.0401

ENTER enter (on the HP, puts the number on the stack)

Most extreme bootstrap path Use it
Rworst=(1+rmin)k−1,Rbest=(1+rmax)k−1R_{worst} = (1 + r_{min})^{k} - 1, \qquad R_{best} = (1 + r_{max})^{k} - 1
Quick example

Sample returns range from −8% to +15%. Five draws can lose at most 0.925−10.92^5 - 1 = −34.09% and gain at most 1.155−11.15^5 - 1 = 101.14%.

On your calculator
  1. 0.92y^x5=−1= −0.3409

y^x power

  1. 0.92ENTER5y^x1− −0.3409

ENTER enter (on the HP, puts the number on the stack) · y^x power

How it is asked

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

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

  3. Weakness of a calm sample

    A bootstrap uses ten calm years. The most likely weakness?

    Understates extreme losses, since none are in the data.

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

  1. 1In a bootstrap simulation, each simulated return is drawn:

  2. 2Compared with Monte Carlo simulation, bootstrapping's main advantage is that it:

  3. 3A risk manager's bootstrap uses ten years of calm market returns. The most likely weakness of the results is that they:

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

  5. 5The worst annual return in a sample is −8%. In a bootstrap of four-year paths, the lowest possible cumulative return is closest to:

  6. 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.
Return of a simulated path Use it
Rpath=(1+r1)(1+r2)⋯(1+rk)−1R_{path} = (1 + r_1)(1 + r_2)\cdots(1 + r_k) - 1
Quick example

A bootstrap draws monthly returns of 2%, −1% and 3%. 1.02×0.99×1.03−11.02 \times 0.99 \times 1.03 - 1 = 4.01%.

On your calculator
  1. 1.02×0.99×1.03−1= 0.0401
  1. 1.02ENTER0.99×1.03×1− 0.0401

ENTER enter (on the HP, puts the number on the stack)

Most extreme bootstrap path Use it
Rworst=(1+rmin)k−1,Rbest=(1+rmax)k−1R_{worst} = (1 + r_{min})^{k} - 1, \qquad R_{best} = (1 + r_{max})^{k} - 1
Quick example

Sample returns range from −8% to +15%. Five draws can lose at most 0.925−10.92^5 - 1 = −34.09% and gain at most 1.155−11.15^5 - 1 = 101.14%.

On your calculator
  1. 0.92y^x5=−1= −0.3409

y^x power

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

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.

  1. Why asset prices are lognormal
  2. Monte Carlo simulation
  3. Bootstrapping: simulating from the data you have

Ask Sensei Listen instead

Questions on Bootstrapping: simulating from the data you have

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