Quant Memo
Core

Bootstrapped Confidence Bands for the Sharpe Ratio

A single Sharpe ratio from a backtest is a point estimate from a noisy, finite sample. Bootstrapping resamples the return history to show how wide the range of plausible true Sharpe ratios actually is.

Prerequisites: Sharpe Ratio, The Standard Error of the Sharpe Ratio

A three-year backtest reports a Sharpe ratio of 1.4. That number looks precise to two decimal places. It is not precise at all — three years is 756 trading days, and a Sharpe estimated from 756 daily returns carries a standard error large enough that "1.4" could plausibly be the sample outcome of a true Sharpe anywhere from about 0.6 to 2.2. Reporting 1.4 without that range is reporting a single dice roll and calling it the die's average.

Why resample instead of use a formula

There is a closed-form standard error for the Sharpe ratio, but it assumes returns are normally distributed and independent — assumptions that fail for most real strategies, which have fat tails, skew, and serial correlation. The bootstrap sidesteps the assumption entirely: resample the observed daily returns with replacement, thousands of times, recompute the Sharpe ratio on each resampled path, and let the resulting spread of Sharpe values stand in for the sampling distribution. If the real returns are skewed or fat-tailed, the resampled Sharpe ratios inherit that shape automatically — nothing about the bootstrap requires the return distribution to be well-behaved.

Worked example

Three years of daily returns, sample Sharpe (annualised) = 1.4. Resample 10,000 times, blocks of 20 days at a time to preserve short-run autocorrelation (a plain day-by-day resample would erase it and understate the true uncertainty). Sort the 10,000 resulting Sharpe ratios and read off the 2.5th and 97.5th percentiles.

StatisticValue
Point estimate1.40
2.5th percentile (bootstrap)0.58
97.5th percentile (bootstrap)2.19
95% interval width1.61

A Sharpe of 1.4 with a 95% interval running from 0.58 to 2.19 is compatible with everything from "marginal" to "exceptional." The point estimate alone erases that entire range. Now compare a second strategy, five years of history instead of three, same point estimate of 1.4: its bootstrap interval narrows to roughly 0.85–1.95, because the longer history pins the estimate down harder. Same headline number, meaningfully different confidence — and a due-diligence process that only looks at the point estimate can't tell them apart.

Sampling distribution
sample mean →
sample size n 10spread of means 0.332predicted 1/√n 0.316

Drag the sample size and watch how the spread of the resampled statistic tightens as it grows — the same mechanism that narrows a Sharpe ratio's bootstrap interval as backtest length increases. A short backtest is a small sample from a noisy parent process; the bootstrap makes that noise visible instead of hiding it inside a single number.

A Sharpe ratio without a confidence band is an unfinished sentence. Bootstrapping the return history gives the band without requiring the return distribution to be normal or independent.

The classic confusion is resampling single days independently (an "i.i.d. bootstrap") on a strategy whose returns are serially correlated — most trend and carry strategies are. That destroys the autocorrelation structure, which typically understates the true uncertainty and produces a confidence band that looks reassuringly tight but isn't honest. Use a block bootstrap, with block length long enough to span the strategy's typical autocorrelation horizon, whenever positions are held for more than a day.

Rule of thumb before running a single resample: if the sample Sharpe divided by roughly 252/Tyears\sqrt{252/T_{\text{years}}}-scaled standard error puts zero comfortably inside the interval, no amount of further backtest polish will rescue the strategy — more data or a genuinely stronger signal is the only fix.

How many resamples, and how wide the blocks

Ten thousand resamples is a practical default — enough that the 2.5th and 97.5th percentiles stop moving meaningfully if you rerun the whole procedure with a different random seed. Fewer than a thousand and the tails of the distribution, which is exactly what a confidence band depends on, are estimated from a handful of extreme resampled paths and jump around from run to run. Block length is a separate, more consequential choice: too short and the block bootstrap collapses back into the i.i.d. case it was meant to avoid; too long and there are too few independent blocks left in the sample to resample meaningfully, which widens the interval for the wrong reason — not because the strategy is genuinely uncertain, but because the resampling scheme ran out of raw material. A common starting point is a block length equal to a few multiples of the strategy's typical holding period, checked by confirming the block-bootstrapped variance stabilises rather than keeps changing as the block length is increased further.

A useful cross-check, independent of the bootstrap itself: run the same resampling procedure on a return series generated with the strategy's actual volatility but zero true edge (a mean-zero shuffle of the return magnitudes). If that null series produces a bootstrap interval overlapping the real strategy's interval by a wide margin, the case for genuine skill is weak regardless of what the point estimate says.

Bootstrapped bands answer "how sure am I?" for one strategy. They do not answer "how sure am I, after trying two hundred variants and reporting the best one?" — for that, selection bias has to be priced in separately. See The Deflated Sharpe Ratio and The Probabilistic Sharpe Ratio for the multiple-testing-aware versions of the same question, and Minimum Backtest Length for how long a history needs to be before a target Sharpe is even statistically distinguishable from zero.

Related concepts

Practice in interviews

Further reading

  • Efron & Tibshirani, An Introduction to the Bootstrap
  • Ledoit & Wolf, Robust Performance Hypothesis Testing with the Sharpe Ratio
ShareTwitterLinkedIn