rolling

Purpose

Performs rolling OLS regressions for a provided vector of dependent data and matrix of independent regressors.

Format

{ coef, res, w } = rolling(yt, xt, window, add, graph)
Parameters:
  • yt (Tx1 numerical vector) – panel series data.

  • xt (TxK numerical matrix) – estimation regressors.

  • window (scalar) – Optional input, a positive integer specifying a fixed window size of K< window <T. A window size of less than zero results in an expanding window. Default = 0.

  • add (scalar) – Optional input, specifying the initial observation for the forward expanding window. Negative values indicate a backward window expansion, beginning with the last add number of observations. The add input is valid only if a negative window size is provided. Default = 0.

  • graph (scalar) – Optional input, any number greater than zero will graph the rolling values of all coefficient estimates, including the constant. Default = 1.

Returns:
  • coef (matrix) – rolling coefficient estimates.

  • res (matrix) – one-step ahead rolling residuals.

  • w (matrix) – standardized one-step ahead rolling residuals.

Example

new;
cls;
library tsmt;
rndseed 23563425;

/********************************************/
// This generates 400 observations of an
// linear time series with a break in the constant
// at observations 120

b1 = { 1.2, -2, 0.75 };
b2 = { 5, -2, 0.75 };

n1 = 120;
n_tot = 400;
xt = ones( n_tot, 1 )~rndn( n_tot, 2 );
et = rndn( n_tot, 1 );

// Create series with break
y1 = xt[1:n1, .]*b1 + et[1:n1, .];
y2 = xt[n1+1:n_tot, .]*b2 + et[n1+1:n_tot, .];
yt_break = y1|y2;

/********************************************/
// Set parameters to run a rolling window regression
// Positive window sets fixed window
wind = 15;

//Fixed window regression
{ beta, res, w } = rolling( yt_break, xt, wind );

/********************************************/
// Next set parameters to run an forward expanding window regression
// Set-up expanding window size
// Negative window results in expanding window size
wind = -15;

// Add specifies increment to increase window size by
// and is irrelevant for rolling window regression
add = 15;

// Draw plot from second call to 'rolling' in new window
plotOpenWindow( );

// Expanding window estimation
{ beta_fwd, res_fwd, w_fwd } = rolling( yt_break, xt, wind, add );

Remarks

The GAUSS rolling procedure performs rolling OLS regressions for a provided vector of dependent data and matrix of independent regressors.

Reference

Zivot, E., and Wang, J. (2002). Modeling Financial Time Series with S-PLUS. Springer-Verlag, New York.

Library

tsmt

Source

rolling.src