← All lessons

Bootstrap of returns

Resample history with replacement to see how uncertain it is. · 7 min

ProOpen to everyone while Pro is in preview.

A reshuffle keeps every trade exactly once. A bootstrap draws with replacement: some results appear twice, some not at all. Each draw is a history that could have happened, so the spread of the draws shows how uncertain the original numbers are.

Predict first

A strategy returned +12% a year over three years. Bootstrapping a year from those daily returns, roughly how wide is the 90% range of the next year?

Bootstrap the next year

Three years of daily returns from a 20/100 moving-average rule, resampled with replacement into 1,000 possible next years.

Running the numbers…

Can you see an edge by eye?

Four traders, 150 trades each. One has a real edge of +0.2R a trade; three have none. On the default seed the best-looking curve belongs to trader B, up 39%, who has no edge; the real edge, trader C, is up 29%. The bootstrap intervals of the average trade all touch or cross zero: 150 trades cannot separate them.

Blind test: which trader has the edge?

Four traders, 150 trades each at about 2R a win. Three have no edge; one wins 40% of the time, worth +0.2R a trade. Pick one, then reveal.

Running the numbers…

Reshuffle or bootstrap?

  • Reshuffle: the same results in another order. Answers “how bad could the road have been with these exact trades?”
  • Bootstrap: a new mix of results. Answers “how much could the outcome itself vary?” and gives intervals for any statistic: the mean, the Sharpe, the win rate.
  • Block bootstrap: draws runs of neighbouring days, so calm and stormy stretches stay together. Use it when returns cluster, which market returns do.

Worked example

Five daily returns: +1%, −2%, +0.5%, +1.5%, −0.5%. One bootstrap draw of five:

  • Draw positions 3, 1, 3, 5, 2: +0.5%, +1%, +0.5%, −0.5%, −2%.
  • Its mean: (0.5 + 1 + 0.5 − 0.5 − 2) ÷ 5 = −0.1%; the original mean was +0.1%.
  • A thousand draws give a thousand means; their 5th and 95th percentiles are the 90% interval.

Common mistake

Treating the bootstrap as a forecast. It assumes the future is drawn from the same distribution as the past. Regimes change, edges decay, and a market that was calm in the sample will not stay calm. The bootstrap measures the uncertainty you already have, not the new kind.

Which method gives an interval for a strategy’s average daily return?
Why use blocks of days instead of single days?

Closing round

Size it from the fan

A strategy’s next 100 trades at 1% risk, 600 times.

Building a fresh case…

Further reading: Davey, Building Winning Algorithmic Trading Systems; Aronson, Evidence-Based Technical Analysis, chapter 5 (bootstrap).