Skip to content
All library documents

Using Stationary Bootstrap for Financial Return Time Series

Article Quant Q&A · Author: user14334602

Summary

The document addresses resampling stock-return data to create synthetic time series while preserving dependence across observations. In response to a question about replacing a circular block bootstrap, it recommends the stationary bootstrap implementation available in the Python arch package. The method is attributed to Politis and Romano and is presented as an approach that maintains stationarity while retaining time-series dependence.

The answer also points to an example applying this bootstrap to confidence intervals for Sharpe ratios and mentions methods for choosing block length, including theoretical work by Politis and White. It does not provide implementation steps, compare the stationary procedure directly with an ordinary non-circular block bootstrap, or show evidence that it is suitable for every return series. The recommendation therefore offers a practical direction for dependent-data resampling, while leaving parameter choices and suitability checks to the researcher.

Key ideas

  • The stationary bootstrap resamples time series while aiming to preserve dependence and stationarity.
  • The answer recommends an implementation in the Python arch package.
  • Bootstrap resampling can be used to construct confidence intervals for Sharpe ratios.
  • Block-length selection affects the procedure and is identified as a separate methodological issue.
  • The document does not give a direct comparison with ordinary block bootstrap or assess suitability for particular data.

Tags

Full text
# Simple Blockbootstrap instead of CircularBlockBootstrap


# Simple Blockbootstrap instead of CircularBlockBootstrap












I am currently trying to Block-Bootstrap my Stock-return data in Python. I am doing that to generate synthetic data. I came across the CircularBlockBootstrap but found in a few discussions here that it isn't recommended for such data. Now I am trying to find a simple BlockBootstrap Library in Python unfortunately I can't find any such library. Currently this is my code:

```
def WBB(s, blocksize, N_paths):
    simulated_returns = []
    
bs = CircularBlockBootstrap(blocksize,s)
for i, data in enumerate(bs.bootstrap(N_paths)):
    tmp = data[0][0].reset_index(drop=True)
    simulated_returns.append(tmp)
simulations = pd.concat(simulated_returns, axis=1, ignore_index=True)
return simulations
```

Can someone maybe explain to me how I can change my currently CircularBlockBootstrap to a simple BlockBootstrap?

## Answer by Pleb (score 1, accepted)

https://quant.stackexchange.com/a/65534

#### The arch package have time-series bootstrap methods:

The arch package in `Python` have implemented the stationary (block) bootstrap (among others, see this link) of Politis and Romano (1994), that keep the bootstrap re-samples stationary and avoid breaking the dependence structure in the data. This method is commonly used when bootstrapping time-series data.

In this example the author describes how to use the stationary bootstrap approach to construct confidence intervals for Sharpe ratios. Furthermore, he illustrates how to find the optimal block-length for the bootstrap procedure, which is also theoretically described in Politis & White (2004).

This bootstrap method should solve your problem. I hope this helps.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.