RATS 11.1
RATS 11.1

The simplest forms of bootstrapping, which randomize entire observations, can only be applied if the observations are reasonably assumed to be independent. In time series analysis, such an assumption is rarely justified. Whether it's with autoregressions, ARMA models, vector autoregressions or GARCH models, the entire point of the analysis is that data at \(t\) are related in some important way to data at \(t-1\).

 

There are two principal techniques used to apply the principles of bootstrapping to dependent data:

1.Block bootstrapping

2.Parametric bootstrapping

Block bootstrapping can only be applied when the period-to-period connection is relatively weak—it samples in blocks to try to maintain much of the dynamic connection.

 

Parametric bootstrapping (or residual bootstrapping) can be applied more broadly, as long as you have a model which can be used to transform the raw data into something else which more reasonably can be assumed to be close to independent. These would typically be the residuals in some form. Once you have the residuals, you shuffle those and build a new bootstrapped data set using the parametric model.

 

The most straightforward example of this is BOOTARMODEL.RPF which bootstraps a univariate AR model. An AR model is relatively simple because it's not unreasonable to assume that the residuals are roughly i.i.d. (with an unknown distribution) since a properly chosen AR model should be eliminating the serial correlation in the residuals. Bootstrapped data can be created using FORECAST with the PATHS option to feed in reshuffled residuals.

 

A step up in complexity is a VAR, an example of which is in BOOTVAR.RPF. This is similar to the autoregression, but now the whole vector of residuals at a given entry need to be sampled together to keep the covariance among them intact. The bookkeeping for this is quite a bit more complicated, so we provided a procedure @VARBootSetup (which pulls in the working procedure @VARBootDraw) to take care of most of it.

 

GARCH models are more complicated because the residuals can no longer be assumed to be independent. If the mean model is correct, they should be serially uncorrelated, but they have second-moment dependence. You can't sample a residual from a high variance stretch of data and drop it into another part of the sample. Instead, what you need to bootstrap are the standardized residuals, which are the residuals divided through by their conditional standard deviation. These are (theoretically) a mean zero, variance one, serially uncorrelated process. When you rebuild the bootstrapped data, you then have to rescale those by the bootstrapped model's conditional standard deviation to give the bootstrapped residual. Examples are GARCHBOOT.RPF for a standard univariate GARCH model and EGARCHBOOTSTRAP.RPF for an EGARCH model.

 

A multivariate GARCH model is much more complicated. It's not a combination of the VAR and univariate GARCH model because, with the exception of the CC model, conditional correlations change, not just the variances. Instead, you need to convert a set of GARCH residuals at time \(t\) into a set with covariance equal to the identity matrix by pre-multiplying by the inverse of a factor of the \(\bf{H}_t\) matrix. To generate bootstrapped data, those are sampled and are converted into a bootstrapped vector of residuals by pre-multiplying by the factor of the bootstrapped conditional covariance matrix. For an example, see GARCHMVBOOTSTRAP.RPF.

 

 

  

 

 

 

 

 

 


Copyright © 2026 Thomas A. Doan