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

Bootstrapping: simulating from the data you have

Bootstrapping treats the observed sample as the population and draws from it at random, with replacement, so each observation has a 1/n chance on every draw. It needs no assumed distribution and gives standard errors and confidence intervals, but it cannot produce an outcome outside the observed data.

5 min cram, 26 min full read. Based on the 2027 CFA® Program Level I curriculum, Quantitative Methods, Learning Module 9. Sitting in November 2026? The 2026 version of this lesson is still available.

Tailor this to you: take the self-assessment

Before this: Historical simulation and historical value at risk

On the exam

  • Describe bootstrap resampling, and explain how it can be used in investment applications

Describe bootstrap resampling and explain its uses. Expect the contrast with historical simulation (with versus without replacement; sample as population versus past as population), the probability of a draw (count ÷ n, whatever came before), its strengths and weaknesses, and its use for standard errors and confidence intervals.

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. Each data point has the same chance, 1/n, of being picked on every draw, because it goes back into the pool each time.

Monte Carlo asks you to choose a distribution. Bootstrapping skips that choice: the empirical distribution , the pattern of values actually observed, is the distribution.

Historical simulation also uses past data, but differently: it replays each date once, as it happened (lesson 2). Bootstrapping redraws the data at random, so the same observation can appear twice and others not at all.

InteractiveBootstrap: build a path from the months you have

Try this 0 of 3

  • Draw until a tile repeats in one path.
  • Leave out the crash month and compare the share of 12-month paths that lose more than 20%.
  • Build the volatility interval, then leave out the crash month.

1,000 bootstrapped 6-month returns drawn with replacement from 24 observed monthly log returns, each path the sum of its draws: mean +2.40%, standard deviation 10.14%, skewness −0.70. 3.1% of paths are worse than −20%, against 1.4% under a normal curve. Nothing in the simulation is worse than the history allows.

Observed sample: 24 monthly log 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: 6 of 6 draws

  • +3.2%M4 again
  • +1.1%M11
  • +3.2%M4 again
  • −4.6%M20
  • −2.3%M9
  • +1.7%M16

Path log return: +2.30% (log returns add). A share at 80.00 ends at 81.86, a +2.33% return. A month appears twice: draws are with replacement.

1,000 simulated 6-month returns

−40%−20%0%20%6-month return, e^(sum of draws) − 1−20%
  • Bootstrap paths
  • Normal, same mean and σ
  • Worse than −20%
Paths simulated1,000
Mean 6-month return+2.40%
Worse than −20%: bootstrap / normal3.1% / 1.4%
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 (each month has a 1/n chance on every draw); repeat for each month of the path.

Log returns add: the path's log return is the sum of its draws, and the end price is P₀ × e^(sum).

1,000 paths of 6 months: mean +2.40%, standard deviation 10.14%, skewness −0.70 (the sample's −2.48 is diluted as months are added together, but the left tail survives).

Paths worse than −20%: 3.1% in the bootstrap against 1.4% under the normal curve.

Worst simulated path: −34.5%. It can only be built from months in the pool; the worst month there is −16.5%.

This path: 3.2 + 1.1 + 3.2 − 4.6 − 2.3 + 1.7 = 2.3%. End price 80.00 × e^0.023 = 81.86.

A call with a strike of 80.00 expiring at the end of this path pays max(81.86 − 80.00, 0) = 1.86. Average such payoffs over thousands of paths for an estimate, but not a fair price: the draws carry the past drift, not the risk-free rate.

This path's end price on your calculator
  1. 3.2+1.1+3.2+4.6+|-+2.3+|-+1.7=2.3
  2. ÷100=2NDe^x×80=81.86

+|- change sign · 2ND second function (the shifted label above a key) · e^x e to the power x

  1. 3.2ENTER1.1+3.2+4.6CHS+2.3CHS+1.7+2.3
  2. 100÷ge^x80×81.86

ENTER enter (on the HP, puts the number on the stack) · CHS change sign · g blue shift key · e^x e to the power x

Display: 81.86

Bootstrapping reuses the data you have: it keeps their quirks and can't invent anything new.

Draw months to build a path, then run a thousand paths and compare the bootstrap histogram with the normal curve. The bootstrap keeps whatever skew the data had. On the second tab, run 2,000 resamples to see how uncertain a volatility estimate from 24 months really is.

How does it work?

Memorize

Bootstrap simulation runs the four steps of every simulation. Only step 2 is special: draw one observation at random, record it, put it back, and repeat.

Bootstrap simulation in the four steps
Bootstrap simulationresample the data you have
  • 1. Setup collect the sample; define the output and its formula
  • 2. Scenario generation
    • Draw a random position from 1 to n Memorize RANDBETWEEN in a spreadsheet
    • Look up that observation
    • Put it back Memorize with replacement, probability 1/n every draw
    • Repeat for every step of the path
  • 3. Scenario evaluation sum the log returns, price, payoff or statistic
  • 4. Results thousands of paths, then mean, spread, percentiles

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. Drawing a new sample from the one you hold in this way is resampling : in a resample the same size as the original, some items appear several times and others not at all.

Because every draw faces the same n observations, each one has the same selection probability 1/n on every draw, whatever was drawn before. Take 50 returns, 10 of them above +3%. The chance that a draw is above +3% is 10 ÷ 50 = 20%, even if the last three draws were all above +3%. Taking the earlier draws out of the count (7 ÷ 47 = 14.89%) is the without-replacement trap.

To simulate a path, number the observed returns, draw a position at random, copy that return into the path, put it back, and repeat once per step. A path’s log return is the sum of its draws, and the end price is the start price times e raised to that sum.

End price of a bootstrap path Use it
PT=P0 e∑i=1kr~iP_T = P_0\, e^{\sum_{i=1}^{k} \tilde r_i}

That average is not a fair price for the option. The draws carry whatever drift the share had in the past, while option pricing grows the share at the risk-free rate (lesson 4). With a strong past uptrend, the bootstrapped value comes out well above the closed-form value.

The simulated end prices spread fairly symmetrically, but the payoffs are heavily skewed: many paths pay zero and a few pay a lot, because the payoff is not linear in the price.

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.

How does bootstrapping estimate a standard error or a confidence interval?

Draw a resample of the same size as the data, with replacement. Compute the statistic you care about (a mean, a median, a volatility, a correlation). Repeat thousands of times. The standard deviation of those statistics is the bootstrap standard error . The 2.5th and 97.5th percentiles of them give a 95% interval, a bootstrap percentile confidence interval .

In a spreadsheet, =INDEX(B:B, RANDBETWEEN(2, N)) makes one draw, STDEV() gives each resample’s volatility, SMALL() and LARGE() read the percentiles, and CONFIDENCE.NORM() gives a normal-theory margin. Confidence intervals built from a formula are in Learning Module 7.

Strengths and weaknesses

A bootstrap path is built only from what has been seen. With log returns between −8% and +15%, a three-draw path can fall at most 3 × 8% = 24% in log terms (the price ends at e^−0.24 = 78.7% of its start) and rise at most 45% (e^0.45 = 156.8%). No bootstrap path can leave that range, however many are run.

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.

Bootstrapping: for and against
Bootstrappingredraw the observed data
  • Strengths Memorize
    • Minimal assumptions no distribution needed
    • Works with small samples reliable variability estimates from limited data
    • Simple no analytical solution needed
    • Standard errors and confidence intervals for almost any statistic
    • Dilutes outliers compared with historical simulation, an extreme point is drawn only now and then
    • No large external data set works from the sample at hand
  • Weaknesses Memorize
    • Computationally intensive thousands of resamples
    • Sensitive to sample quality a biased sample gives biased results
    • Breaks time links not ideal for autocorrelated data
    • Limited extrapolation nothing beyond the observed range
    • No analytical insight estimates, not explanations
HistoricalBootstrapMonte Carlo
Source of drawsthe past data as it happenedthe observed samplea distribution you specify
Replacementnoyesnot applicable
Assumespast = futuresample = populationprocess can be modeled
Unseen extremesnonoyes
Typical userisk management, stress testsstandard errors, confidence intervalscomplex securities, what-if analysis
Main riskwindow not representativesample not representativewrong model
Where the draws come from
Where the draws come fromsame four steps, different source of scenarios
  • Historical each past date once, no replacement
  • Bootstrap Memorize observed data, with replacement
  • Monte Carlo an assumed distribution

Like Monte Carlo, bootstrapping gives statistical estimates rather than exact results and complements analytical methods.

Exam tip Draws from a specified distribution: Monte Carlo. Draws from observed data, with replacement: bootstrap.

Go deeper Why plain bootstrapping breaks time patterns

Each draw is independent, so any link between one observation and the next (autocorrelation, volatility clustering) is lost. Specialized versions resample whole blocks of consecutive observations; they are not examined at this level.

Memorize this

MemorizeBootstrap versus its neighbors

HistoricalBootstrapMonte Carlo
Drawseach date oncerandom, with replacementrandom, from a distribution
Assumespast = futuresample = populationprocess can be modeled
Draw probabilitynot random1/n every drawfrom the distribution
Beyond the data?nonoyes
Typical userisk managementstandard errors, confidence intervalscomplex securities

Memory hook Bootstrap = pull yourself up by your own data. Nothing new goes in, so nothing new comes out.

Know it cold Each draw: probability 1/n, whatever was drawn before. Path log return = sum of the draws; price = P0e∑r~P_0 e^{\sum \tilde r}.

Bootstrap simulation in the four steps
Bootstrap simulationresample the data you have
  • 1. Setup collect the sample; define the output and its formula
  • 2. Scenario generation
    • Draw a random position from 1 to n Memorize RANDBETWEEN in a spreadsheet
    • Look up that observation
    • Put it back Memorize with replacement, probability 1/n every draw
    • Repeat for every step of the path
  • 3. Scenario evaluation sum the log returns, price, payoff or statistic
  • 4. Results thousands of paths, then mean, spread, percentiles
Where the draws come from
Where the draws come fromsame four steps, different source of scenarios
  • Historical each past date once, no replacement
  • Bootstrap Memorize observed data, with replacement
  • Monte Carlo an assumed distribution
Bootstrapping: for and against
Bootstrappingredraw the observed data
  • Strengths Memorize
    • Minimal assumptions no distribution needed
    • Works with small samples reliable variability estimates from limited data
    • Simple no analytical solution needed
    • Standard errors and confidence intervals for almost any statistic
    • Dilutes outliers compared with historical simulation, an extreme point is drawn only now and then
    • No large external data set works from the sample at hand
  • Weaknesses Memorize
    • Computationally intensive thousands of resamples
    • Sensitive to sample quality a biased sample gives biased results
    • Breaks time links not ideal for autocorrelated data
    • Limited extrapolation nothing beyond the observed range
    • No analytical insight estimates, not explanations
End price of a bootstrap path Use it
PT=P0 e∑i=1kr~iP_T = P_0\, e^{\sum_{i=1}^{k} \tilde r_i}
Quick example

Start at 45.00; three draws of log returns 0.9%, −1.5% and 2.2% sum to 1.6%. 45×e0.01645 \times e^{0.016} = 45.73.

On your calculator
  1. 0.9+1.5+|-+2.2=÷100=2NDe^x×45= 45.73

+|- change sign · 2ND second function (the shifted label above a key) · e^x e to the power x

  1. 0.9ENTER1.5CHS+2.2+100÷ge^x45× 45.73

ENTER enter (on the HP, puts the number on the stack) · CHS change sign · g blue shift key · e^x e to the power x

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. Bootstrap or historical?

    Which method resamples with replacement?

    Bootstrap. Historical simulation uses each date once.

  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. Probability of a draw

    50 returns, 10 above +3%; the first three draws were all above +3%. Chance the fourth is too?

    10 ÷ 50 = 20%. Earlier draws do not matter with replacement; 7 ÷ 47 is the trap.

  5. Implicit assumption

    Bootstrapping implicitly assumes…

    The sample represents the population.

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, fill in missing data or correct a biased sample. It only recombines what is there.
  • Treating a bootstrap from a short or calm sample as a full picture of risk.
  • Removing earlier draws when computing a draw probability. With replacement, every draw has the same n observations to choose from.
  • Calling a bootstrapped option value a fair price. It carries the sample's historical drift, not the risk-free rate.

Checkpoint

7 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. 4In a bootstrap, each resample drawn from an original sample of 60 observations contains:

  5. 5An analyst bootstraps from 60 observed weekly returns, 9 of which are below −2%. In one simulated path, the first two draws were both below −2%. The probability that the third draw is also below −2% is closest to:

  6. 6A share is priced at 120.00. A bootstrap path draws four weekly log returns: 1.8%, −0.6%, 2.4% and 1.8%. The share's price at the end of the path is closest to:

  7. 7An analyst bootstraps a new fund's 30 monthly returns to build a 95% confidence interval for its volatility. The interval is most likely to mislead if:

Key takeaways

  • Bootstrap: draw from the observed sample at random, with replacement; each draw has probability 1/n.
  • No distribution assumed, so the sample's skew and fat tails are kept; nothing beyond the sample can appear.
  • The spread of a statistic across resamples is its standard error; its 2.5th and 97.5th percentiles give a 95% interval.
  • It differs from historical simulation in the replacement and from Monte Carlo in the source of the draws.
End price of a bootstrap path Use it
PT=P0 e∑i=1kr~iP_T = P_0\, e^{\sum_{i=1}^{k} \tilde r_i}
Quick example

Start at 45.00; three draws of log returns 0.9%, −1.5% and 2.2% sum to 1.6%. 45×e0.01645 \times e^{0.016} = 45.73.

On your calculator
  1. 0.9+1.5+|-+2.2=÷100=2NDe^x×45= 45.73

+|- change sign · 2ND second function (the shifted label above a key) · e^x e to the power x

  1. 0.9ENTER1.5CHS+2.2+100÷ge^x45× 45.73

ENTER enter (on the HP, puts the number on the stack) · CHS change sign · g blue shift key · e^x e to the power x

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 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 bootstrapping and historical simulation?

Both use past data and assume no distribution. Historical simulation replays each date once, in order. Bootstrapping draws at random with replacement, building many new combinations. Historical simulation is easier to explain; bootstrapping is the tool for standard errors and confidence intervals.

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.

How do you get a confidence interval by bootstrapping?

Resample the data with replacement, compute the statistic each time, and read the 2.5th and 97.5th percentiles of the results. For 24 monthly returns, the volatility interval came out at about 1.64% to 6.61%.

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