Quant Memo
Core

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 θ^=s(X1,,Xn)\hat\theta = s(X_1, \dots, X_n), how it would vary across repeated samples from the true distribution FF. We cannot draw new samples from FF; we have only one. The bootstrap replaces the unknown FF with the empirical distribution F^n\hat F_n, which places mass 1/n1/n on each observed data point. Because F^nF\hat F_n \to F (Glivenko–Cantelli), sampling from F^n\hat F_n approximates sampling from FF. Concretely:

  1. Draw a bootstrap sample X1,,XnX_1^*, \dots, X_n^* by sampling nn times with replacement from the observed data.
  2. Recompute the statistic on it: θ^=s(X1,,Xn)\hat\theta^* = s(X_1^*, \dots, X_n^*).
  3. Repeat BB times (say B=10,000B = 10{,}000) to get θ^(1),,θ^(B)\hat\theta^{*(1)}, \dots, \hat\theta^{*(B)}.

The spread of these BB values approximates the sampling distribution of θ^\hat\theta. Its standard deviation is the bootstrap standard error:

se^boot=1B1b=1B(θ^(b)θ^ˉ)2.\widehat{\operatorname{se}}_{\text{boot}} = \sqrt{\frac{1}{B-1}\sum_{b=1}^B\big(\hat\theta^{*(b)} - \bar{\hat\theta^*}\big)^2}.

No formula for the variance of ss 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 θ^θ\hat\theta - \theta under FF. The bootstrap uses the distribution of θ^θ^\hat\theta^* - \hat\theta under F^n\hat F_n, computable by simulation. It works because (i) F^n\hat F_n is close to FF for large nn, 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 F^n\hat F_n's discreteness matters.

Building confidence intervals

Several constructions, in increasing sophistication:

  • Percentile interval, take the α/2\alpha/2 and 1α/21-\alpha/2 empirical quantiles of the θ^(b)\hat\theta^{*(b)}. Simple, but biased if the statistic's distribution is skewed or shifted.
  • Basic / pivotal interval, reflect the percentiles around the estimate: [2θ^θ^1α/2, 2θ^θ^α/2][\,2\hat\theta - \hat\theta^*_{1-\alpha/2},\ 2\hat\theta - \hat\theta^*_{\alpha/2}\,], 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 \ell and concatenate them to length nn. The block length \ell must grow with nn (roughly n1/3\ell \sim n^{1/3}) 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 \ell.

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 SR^=0.9\widehat{\text{SR}} = 0.9. 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 [0.3,1.4][0.3, 1.4], 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 BB 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)
ShareTwitterLinkedIn