A Simple Test for Structural Breaks in Variance


Though many standard econometric models assume that variance is constant, structural breaks in variance are well-documented, particularly in economic and finance data. If these changes are not accurately accounted for, they can hinder forecast inference measures, such as forecast variances and intervals.

In this blog, we consider a tool that can be used to help locate structural breaks in variance -- the iterative cumulative sum of squares algorithm (ICSS) (Inclan and Tiao, 1994).

Centered Cumulative Sum of Squares

The first step of the algorithm is to find the cumulative sum of squares test statistic. This statistic can be found in four easy steps:

  1. Using the model error terms find the cumulative sum of squares (CSS) for all potential breakpoints observations 1 through k : $$C_1 = \sum_{t=1}^1 a_t^2 \\ C_2 = \sum_{t=1}^2 a_t^2 \\ \vdots \\ C_k = \sum_{t=1}^k a_t^2 \\ C_T = \sum_{t=1}^T a_t^2$$   $$ a = \begin{bmatrix} 0.1 \\ 0.3 \\ 0.5 \\ 0.7 \\ 0.2 \end{bmatrix} \rightarrow C_{k=1,2,..T} = \begin{bmatrix} 0.01 \\ 0.1 \\ 0.35 \\ 0.84 \\ 0.88 \end{bmatrix} $$  
  2. Normalize and center the cumulative sum of squares, using the partial series CSS , $C_k$, and the full series CSS, $C_T$ : $$D_k = \frac{C_k}{C_T} - \frac{k}{T}\\$$   $$D_{k=1,2,..T} = \begin{bmatrix} 0.01/0.88 \\ 0.1/0.88 \\ 0.35/0.88 \\ 0.84/0.88 \\ 0.88/0.88 \end{bmatrix} - \begin{bmatrix} 1/5 \\ 2/5 \\ 3/5 \\ 4/5 \\ 5/5 \end{bmatrix} = \begin{bmatrix} -0.189\\ -0.286 \\ -0.202\\ 0.155 \\ 0.000 \end{bmatrix} $$  
  3. Find the maximum centered cumulative sum of squares. The potential breakpoint, k*, is the location in the series of the maximum absolute value of the centered cumulative sum of squares, $D_{k^{*}}$ : $$D_{k^{*}} = \max\limits_{k} | D_k |\\$$   $$ \begin{bmatrix} abs(-0.189)\\ abs(-0.286) \\ abs(-0.202)\\ abs(0.155)\\ abs(0.000) \end{bmatrix} \rightarrow D_{k^{*}} = 0.286, k^{*} = 2 $$  
  4. Finally, if $IT = \sqrt{T/2}D_{k^{*}}$ exceeds the critical value of the limiting distribution, then $k^*$ represents a statistically significant breakpoint.

Iterative Cumulative Sum of Squares Algorithm

Finding $k^*$ would be sufficient if we were certain that there was only one break point in the variance. However, how can we definitively know that this is the case?

Because we cannot eliminate the possibility that there are multiple breaks in the variance, we must iteratively search for all potential additional breakpoints.

The ICSS algorithm searches for breakpoints in each of the sections created by newly found breakpoints. Once new breakpoints are no longer found, the search stops.

Considering our hypothetical example, our first potential break was located at $k^{*} = 2$, therefore, our iterative search for breakpoints would begin again in the section of data bounded by $t = 3$ and $t = 5$.

Using the ICSS algorithm in GAUSS

Sanso, Arago, and Carrion-i-Silvestre provide downloadable code which includes a function for computing variance breaks using the ICSS.

Because the function also provides options to perform the modifications discussed in their paper the Sanso, Arago and Carrion-i-Silvestre the icss function requires the following three inputs:

Vector, the stochastic series to be tested.
Scalar, an indicator of which test to run, should always be set to zero to run the standard ICSS test.
Vector, 3x1, sets the bandwidth for the modification models. This is irrelevant to the standard ICSS and can be set to any 3x1 vector.

{ cp, nbre } = icss(e, test, cri);

Empirical Example

ICSS structural break test.

We can demonstrate the use of this function using the S&P 500 data provided by Sanso, Arago, and Carrion-i-Silvestre, 2004.

// Load S&P data
x = loadd("sp.dat");

// Demean data
e = x - meanc(x);

// Run
{ cp, nbre } = icss(e, 0, 0|0|0);

The function returns two outputs:

  1. A vector containing the change points (cp).
  2. A scalar containing the number of break points (nbre).


Identifying structural breaks in the variance of data is an important step in modeling time series data. In this tutorial we've covered:

  • What the ICSS algorithm is.
  • How to use the ICSS algorithm in GAUSS.

Code and data from this blog can be found here.


Inclan, C., & Tiao, G. C. (1994). Use of cumulative sums of squares for retrospective detection of changes of variance. Journal of the American Statistical Association, 89(427), 913-923.

Sansó, A., Aragó, V., & Carrion, J. L. (2004). Testing for changes in the unconditional variance of financial time series. Revista de Economía financiera, 4(1), 32-53.

Was this post helpful?
Leave a Reply

Have a Specific Question?

Get a real answer from a real person

Need Support?

Get help from our friendly experts.

Try GAUSS for 30 days for FREE

See what GAUSS can do for your data

© Aptech Systems, Inc. All rights reserved.

Privacy Policy | Sitemap