Skip to content
All option guides
Measure strategy uncertainty while preserving time order9 min read

Block Bootstrap for Trading Strategy Returns: Confidence Intervals Under Dependence

Learn how moving and stationary block bootstraps preserve return dependence when estimating uncertainty in a trading strategy’s average return or Sharpe ratio.

In this guideWhat question does the block bootstrap answer?

Short summary

A block bootstrap estimates how uncertain a strategy statistic may be when returns are ordered and dependent over time. It resamples runs of consecutive observations, recalculates the same statistic on each reconstructed series, and uses the resulting distribution to form an interval. This can preserve short-run dependence that an ordinary row-by-row bootstrap would erase. It cannot make a strategy profitable, correct a search across many backtests, or guarantee that future returns will fall inside the interval.

What question does the block bootstrap answer?

A backtest may report one average return or one Sharpe ratio. That number summarizes the observed sample; it does not show how much it might vary across samples generated by a similar return process. A confidence interval adds an estimate of that sampling uncertainty under a stated statistical design.

For a strategy, first define the observation being resampled. It might be a daily or weekly portfolio return after the fees, spread, and slippage relevant to the question. Keep the frequency, sample dates, cash treatment, and cost assumptions consistent. A confidence interval for the mean or Sharpe ratio is not a forecast range for next month’s profit and is not a loss limit.

The block bootstrap is useful when the target statistic depends on a time series whose neighboring observations may be related. Künsch’s work extends resampling ideas to stationary dependent observations by drawing consecutive blocks rather than pretending each observation is independent. Künsch’s paper on the bootstrap for stationary observations develops the underlying blockwise approach.

Why can an ordinary bootstrap misread returns?

The ordinary, or i.i.d., bootstrap samples individual observations with replacement. It keeps the observed distribution of single-period returns roughly represented, but it changes their order. A run of quiet returns, a volatility cluster, or a sequence of gains and losses can be scattered into unrelated positions.

That matters when dependence affects the uncertainty of the statistic. If returns are autocorrelated, or if large absolute returns tend to arrive near one another, the order contains information about the observed process. Shuffling rows destroys that structure. A block method instead keeps short stretches intact, while still creating alternative sequences from the historical sample.

This does not mean every strategy needs a block bootstrap. If the sampling assumptions and question support an independent-observation method, that may be appropriate. The point is to choose the resampling unit from the data and design, not from a generic instruction to “bootstrap the backtest.”

How does the moving-block bootstrap work?

The moving-block bootstrap (MBB) uses overlapping windows of a fixed length. Given weekly returns r1 through r4 and a block length of two, its available blocks are (r1, r2), (r2, r3), and (r3, r4). Draw blocks with replacement and concatenate them until the reconstructed series has the original length. Then calculate the statistic again.

For example, drawing (r1, r2) followed by (r2, r3) creates one four-observation resample. The repeated r2 at the join is permitted: observations are drawn through blocks with replacement. The two observations within each block stay consecutive, so their local ordering is preserved. The chosen block length of two is only a teaching example, not a recommendation for weekly trading data.

The procedure repeats many times. Each resample is an alternative path built from observed blocks, not a new market history. Künsch’s asymptotic results require the block length to grow with the sample while remaining small relative to it; a finite sample still needs a defensible practical choice and sensitivity checks.

A time series of weekly returns is divided into consecutive blocks, then joined into a new path while keeping the order within each block.
Block resampling preserves local order inside sampled stretches; the joins between blocks are artificial.

What changes in the stationary bootstrap?

The stationary bootstrap also joins consecutive observations, but block lengths are random rather than fixed. Politis and Romano’s method draws block lengths from a geometric distribution; the user-selected expected block length controls how often a new block begins. This random-length construction was designed to produce a stationary resampled series conditional on the observed data under the paper’s setting. See Politis and Romano’s original stationary-bootstrap paper.

Both methods preserve dependence within sampled stretches and break continuity at joins. MBB makes each block the same size, while the stationary bootstrap varies the size. Neither removes the need to choose and report a block-length parameter. The random version is not automatically more accurate for every statistic or sample.

Recalculate the same statistic on every resample

Decide the statistic before running the resampling. For an average excess return, calculate the same mean on every reconstructed path. For a Sharpe ratio, keep the return frequency, excess-return definition, and denominator consistent across replicates. Do not switch from net to gross returns partway through the analysis.

A basic percentile interval takes the selected lower and upper quantiles of the bootstrap statistic values; for example, the 2.5th and 97.5th percentiles form a nominal 95% percentile interval. That is one construction, not a guarantee of correct coverage in every finite sample. The interval’s behavior depends on the statistic, the resampling scheme, the block length, and whether the model assumptions fit the data.

For a Sharpe-ratio comparison, a bootstrap can estimate uncertainty in the difference between two strategies. Ledoit and Wolf propose a studentized time-series bootstrap confidence interval for that difference, motivated by fat-tailed or serially dependent returns. Their paper also shows why a simple test developed for more restrictive conditions need not be reliable in those settings. Read Ledoit and Wolf’s Sharpe-ratio study.

Compare Sharpe ratios as paired return series

If two strategies trade over the same dates, retain their paired observations. In each bootstrap replicate, use the same sampled time blocks for both strategies, then calculate the Sharpe difference. Sampling different dates for each strategy would discard contemporaneous relationships and could misstate the uncertainty of their difference.

Suppose the estimated difference is positive, but its chosen confidence interval includes zero. The sample has not resolved the sign of the difference at that interval’s nominal level under the selected method. This is not proof that the strategies are equal, and it does not establish that either one will outperform in the future. If the interval excludes zero, the inference still depends on how the strategies, sample period, statistic, and block length were chosen.

For an individual strategy rather than a comparison, preserve the strategy’s own chronology. For paired strategies, preserve the shared calendar blocks. Explain which of these questions the interval addresses so a reader does not confuse a paired comparison with two separate intervals.

Choose a block length and test its sensitivity

A block that is too short can break the dependence the method is meant to retain. A block that is too long leaves fewer distinct blocks to recombine and can make estimates noisy. The right scale depends on the return frequency, dependence pattern, sample size, holding horizon, and statistic; there is no single block length that suits every strategy.

Choose a documented selection rule or justify a small range of plausible lengths before interpreting results. Recalculate the interval across that range. If the conclusion changes sharply with a modest block-length adjustment, report that instability instead of selecting the one result that looks favorable. Also report the bootstrap variant, resample count, random seed when reproducibility matters, statistic, confidence level, and return frequency.

When positions overlap, returns are recorded at a higher frequency than the strategy’s holding horizon, or volatility clusters for long stretches, those features matter when choosing blocks. If the strategy is only evaluated after costs, the return series used for the interval should include the relevant costs. An interval on gross returns answers a different question from one on net returns.

Know what the interval leaves out

The classical block procedures are built for stationary, weakly dependent observations under technical conditions. A market regime change can make one historical sample a poor stand-in for another. Resampling blocks cannot create a crash regime absent from the data, repair survivorship bias, or turn a nonstationary sequence into a stationary one. Inspect the sample for breaks and explain what historical process the analysis is intended to represent.

Resampling a selected strategy also does not account automatically for searching across hundreds of strategies and reporting only the winner. Selection can make an apparently strong statistic look more convincing than it is. Use a design that addresses that search, such as an appropriate untouched evaluation set or a multiple-testing correction. Purged cross-validation and embargo address leakage between overlapping outcome intervals in a different task; they do not replace a confidence interval for the observed return series. Multiple testing and false discovery covers the separate selection problem.

A bootstrap interval measures uncertainty conditional on the observed returns, the specified statistic, and the resampling assumptions. It does not describe all model uncertainty, future structural changes, execution failures, financing changes, or tail losses. Treat it as one diagnostic alongside out-of-sample evidence, costs, drawdowns, and risk controls—not as a promise about future performance.

Make the analysis reproducible

Before reporting a block-bootstrap result, record the return series and dates, the statistic, the bootstrap variant, the block-length rule, the number of replications, and how any strategy selection was handled. For comparisons, say whether the same time blocks were drawn jointly. Include transaction costs that match the stated performance question and show how the interval responds to reasonable block-length alternatives.

A reader should be able to reconstruct the question without guessing which series was resampled or whether the sample was shuffled one row at a time. If the data show strong regime shifts or the result depends on a narrow block choice, state that limitation next to the interval. A precise endpoint does not remove uncertainty about whether the assumptions describe the market process.

More resamples do not create more market data

A bootstrap run might use 2,000 or 10,000 replicates. Repeating the same algorithm more often can make estimated tail quantiles less sensitive to the random seed and reduce Monte Carlo error. It does not add dates, market regimes, or independent observations to the original return series. An interval built from 10,000 resamples of a short or strategy-selected sample still reflects that same limited history and design.

When comparing replicate counts, keep the return series, statistic, bootstrap variant, and block-length rule fixed. Record the count and seed. If the interval endpoints move materially as the count rises, the numerical approximation may still be noisy. If they stabilize, that only suggests the simulation is precise for the chosen data and assumptions; it does not resolve sample limitations, structural change, or strategy-search bias.

Common questions

Q1What does a block-bootstrap confidence interval tell a trader?

It estimates how a chosen statistic, such as average return or a Sharpe-ratio difference, may vary under repeated samples from a specified dependent return process. It is not a forecast range for the next trade or a limit on possible losses.

Q2How should I choose the block length?

Use a documented rule or justify a range in light of the return frequency, dependence, sample size, and statistic. Compare results across plausible lengths and report material sensitivity; there is no universal setting for every strategy.

Q3Does block bootstrapping remove backtest overfitting?

No. It estimates uncertainty for the return series and strategy definition supplied to it. If the strategy was selected after trying many alternatives, address that selection process separately with an evaluation design or multiple-testing method. Primary research - Künsch, “The Jackknife and the Bootstrap for General Stationary Observations” (1989) - Politis and Romano, “The Stationary Bootstrap” (1994) - Ledoit and Wolf, “Robust Performance Hypothesis Testing with the Sharpe Ratio” (2008)

Sources and further reading

Report an issue

We’ll prepare an email with this article link. Mark receives the report only after you send it

Quick check

Read the guide? Check yourself with 3 questions

Question 1 / 3

Question 01

Why does a block bootstrap keep nearby return observations together?

Choose an answer to see the explanation

Options glossary