Bootstrap and Resampling
Estimating the sampling distribution of any statistic by resampling the data itself, the plug-in principle, why it works, the block bootstrap that preserves time-series dependence, and how to build confidence intervals for things with no formula.
Prerequisites: Bias, Variance, and the Quality of Estimators, Confidence Intervals
The bootstrap answers a question that has no analytic answer for most interesting statistics: how uncertain is this estimate? Classical standard errors exist for a sample mean or an OLS slope, but not for a Sharpe ratio, a maximum drawdown, the ratio of two correlations, or a median, and finance is full of exactly those awkward, formula-less quantities. The bootstrap's radical idea is to treat the sample itself as a stand-in for the population and resample from it, generating the sampling distribution by brute computation instead of algebra.
The plug-in principle
We want the sampling distribution of a statistic , how it would vary across repeated samples from the true distribution . We cannot draw new samples from ; we have only one. The bootstrap replaces the unknown with the empirical distribution , which places mass on each observed data point. Because (Glivenko–Cantelli), sampling from approximates sampling from . Concretely:
- Draw a bootstrap sample by sampling times with replacement from the observed data.
- Recompute the statistic on it: .
- Repeat times (say ) to get .
The spread of these values approximates the sampling distribution of . Its standard deviation is the bootstrap standard error:
No formula for the variance of is ever needed, you get the standard error of anything you can compute.
Why it works
The logic is a double approximation. The true object is the distribution of under . The bootstrap uses the distribution of under , computable by simulation. It works because (i) is close to for large , and (ii) the map from a distribution to the sampling law of the statistic is smooth for "nice" (asymptotically normal, differentiable) statistics. When those conditions hold the bootstrap is consistent and often higher-order accurate, for pivotal statistics its coverage error shrinks faster than the normal approximation's, so it can beat the textbook interval. It fails for non-smooth functionals (the sample maximum, parameters on a boundary) where 's discreteness matters.
Building confidence intervals
Several constructions, in increasing sophistication:
- Percentile interval, take the and empirical quantiles of the . Simple, but biased if the statistic's distribution is skewed or shifted.
- Basic / pivotal interval, reflect the percentiles around the estimate: , correcting for bias in the estimate's location.
- BCa (bias-corrected and accelerated), adjusts for both bias and skewness (acceleration); the recommended general-purpose interval, with better coverage than the plain percentile method.
The time-series problem and the block bootstrap
Here is the failure that matters most in finance: the ordinary bootstrap resamples observations independently, which destroys any serial dependence in the data. Bootstrap i.i.d.-style from autocorrelated returns and you manufacture a series with no autocorrelation, your bootstrapped standard errors will be too small for exactly the same reason naive OLS standard errors are (see Autocorrelation and Serial Correlation). The fix is to resample blocks of consecutive observations so dependence within a block survives:
- Moving-block bootstrap, draw overlapping blocks of length and concatenate them to length . The block length must grow with (roughly ) to capture the dependence range.
- Stationary bootstrap (Politis–Romano), use random block lengths (geometric), which guarantees the resampled series is itself stationary and removes the sensitivity to a fixed .
For regressions with fitted models, the residual bootstrap (resample residuals, add back to fitted values) and the wild bootstrap (multiply residuals by random signs, robust to heteroskedasticity) are the model-based analogues.
Worked example: confidence interval for a Sharpe ratio
You have 60 monthly returns and a point Sharpe . There is an analytic standard error under i.i.d. normality, but returns are autocorrelated and fat-tailed, so you distrust it. Block bootstrap: resample blocks of, say, 6 months with replacement to length 60, recompute the Sharpe, repeat 10,000 times. The resulting histogram of bootstrapped Sharpes is left-skewed (Sharpe is bounded oddly and sensitive to tail months); the BCa 95% interval comes out to roughly , wider and more asymmetric than the naive normal interval, honestly reflecting that 5 years of monthly data barely pin the Sharpe down. This is the everyday use: uncertainty bands on performance statistics that have no clean formula. See Confidence Intervals.
Failure modes in financial data
- Ignoring dependence. The single most common error, i.i.d. bootstrapping autocorrelated or volatility-clustered returns understates every standard error. Use a block or stationary bootstrap.
- Block length sensitivity. Too-short blocks under-capture dependence (SEs too small); too-long blocks leave too few distinct blocks (SEs noisy). The stationary bootstrap mitigates this.
- Non-smooth statistics. Maxima, minima, and drawdown extremes are dominated by a single observation; the bootstrap distribution is degenerate and its intervals are unreliable.
- Non-stationarity and regime shifts. The bootstrap assumes the resampled data are exchangeable draws from one distribution; across a regime break they are not, and the intervals cover a blend of regimes. It also cannot conjure tail events absent from the sample, you can only resample the crashes you actually observed.
In interviews
Explain the core idea in one breath: replace the unknown population with the empirical distribution and resample with replacement to simulate the sampling distribution of any statistic, no formula required. Be ready to say why it works (empirical distribution converges to the true one) and to give the recipe (resample, recompute, repeat times; the spread is the standard error). The finance-specific point that separates strong candidates: the plain bootstrap assumes independence and therefore fails on time series, so you use a block or stationary bootstrap to preserve autocorrelation and volatility clustering. A great worked answer is bootstrapping a confidence interval for a Sharpe ratio and noting the interval is wide and skewed, the same humility about performance statistics that shows up throughout this track.
Related concepts
Practice in interviews
Further reading
- Efron & Tibshirani, An Introduction to the Bootstrap
- Politis & Romano (1994), The Stationary Bootstrap
- Wasserman, All of Statistics (Ch. 8)