Skip to content
All library documents

Bootstrap Methods for Estimating Drawdown and Ruin Risk

Article Quant Q&A · Author: Joshua Ulrich

Summary

The document discusses estimating the probability that a return series reaches a specified drawdown or ruin threshold. It notes that enumerating permutations of historical returns assumes independence, an assumption that can fail when returns are dependent. A block bootstrap addresses this by resampling contiguous sections of the series, retaining some of its autocorrelation. One suggested way to choose a block length is to compare results across a grid of plausible sizes; another is to examine autocorrelation across lags. The discussion also mentions an automatic block-size selector and maximum entropy bootstrap as alternatives, with the latter presented as preserving the series’ correlation structure.

These are methodological suggestions rather than a demonstrated comparison: the grid-search contributor reports no practical experience, and no performance results are supplied. Bootstrap estimates remain grounded in historical observations and cannot guarantee coverage of extreme outcomes absent from the sample. The document therefore cautions against treating a calculated ruin probability as protection from ruin.

Key ideas

  • Independent resampling can erase serial dependence that matters for drawdown estimates.
  • A block bootstrap resamples contiguous observations to preserve some autocorrelation.
  • Block length can be explored across a grid, though the appropriate choice may depend on the strategy.
  • Autocorrelation diagnostics and automatic selectors are also proposed for choosing block size.
  • Historical resampling methods cannot reliably represent every possible extreme outcome.

Tags

Full text
# How to estimate the probability of drawdown / ruin?


# How to estimate the probability of drawdown / ruin?












A fairly naive approach to estimate the probability of drawdown / ruin is to calculate the probabilities of all the permutations of your sample returns, keeping track of those that hit your drawdown / ruin level (as I've written about). However, that assumes returns are independently distributed, which is unlikely.

In response to my blog post, Brian Peterson suggested a block bootstrap to attempt to preserve any dependence that may exist. (Extra credit: is there a method / heuristic to choose the optimal block size?)

What other methods are there?

## Answer by pteetor (score 11, accepted)

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

I highly recommend the Maximum Entropy Bootstrap for time series, implemented by the meboot package in R. In my work, I've stopped using both the block bootstrap and residuals bootstrap in favor of meboot, and I am pleased with the results.

Hrishikesh Vinod, the researcher behind meboot, described it in his talk at UseR/2010 last year. The algorithm is quite clever and preserves the correlation structure of the original time series while creating bootstrap replications consistent with that structure. The algorithm is outlined in the package documentation.

The package does the heavy lifting for you, creating all the bootstrap replications of your time series. It does not take the final step of calculating the estimated confidence intervals based on the replications, unfortunately. Read the vignette for how you can calculate the CIs from the replications. (In contrast, the boot package supplies the boot.ci function which performs that final step.)

A final note: I trust statistical methods to estimate reasonable outcomes based on historical data. I have absolutely no faith they can predict the full range of possible outcomes, however. Please remember the false sense of security induced by VaR analysis... right up to the great financial meltdown. Now, how will you protect yourself from ruin?

## Answer by Patrick Burns (score 7)

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

A block bootstrap makes sense to me. (If the term doesn't make sense to you, I explain it at the end.)

In order to pick the block size, I would essentially do a grid search:

- pick the largest feasible block size

- pick a smallest reasonable block size

- pick how many block sizes you feel like testing

I'd run the selected bootstraps and see if there was a pattern, and if so, what might it mean. Once that was done, then hopefully you could feel comfortable with just one block size for subsequent use.

I would think that the best block size would be strategy dependent. But of course I could be wrong. I haven't done this in practice -- I'd be interested to hear of real experiences.

What is a block bootstrap?

Suppose you have N observations. A regular bootstrap repeatedly samples the N observations N times with replacement and performs the statistic on each resampled set of data. The two key things are that the sample size remains the same and the sampling is done independently.

The regular bootstrap is good for when the data are independent. But if there is autocorrelation in the data, then the regular bootstrap completely destroys that. In the case of drawdown, autocorrelation is of significant interest.

The block bootstrap keeps a lot of the autocorrelation of the original data by taking continuous blocks of data instead of individual datapoints. For example if we had 1000 (ordered) observations, then we could sample 10 blocks of length 100, or 100 blocks of length 10, or 50 blocks of length 20, ...

## Answer by babelproofreader (score 4)

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

You could try measuring autocorrelation at varying lags, as described here, and then choose your optimal block size according to the results of this test, i.e. if there is significant autocorrelation up to and including lag 5, your block size should be no larger than 5.

## Answer by ProbablePattern (score 2)

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

I like the function b.star in the np package for R to select the block size and pass it to tsboot although I don't have the math background to determine whether this is the best method.

## Answer by SBF (score 0)

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

Recently I faced some results in calculations of such probabilities in a very nice and accurate way for Markov models. If you are interested, I will be happy to tell you where you can find it.

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.