*! version 1.0.1 21aug2026

Title

gvar stability -- structural stability battery with bootstrap critical values

Syntax

gvar stability [, options]

options

ccut(#) trimming fraction at each end of the sequential Chow. Default 0.15.

tests(list) which statistics to display.

reps(#) bootstrap replications for the critical values.

shuffle resample whole date columns rather than orthogonalised scalars.

shrinkdraw shrink the covariance used to generate the draws.

lamdraw(#) set that shrinkage intensity by hand.

vcov(string) sample, blockdiag or blockdiag unit.

shrink shrink the covariance used for the point estimate.

lambda(#) set that intensity by hand.

detail also print the robust sequential Chow statistics.

nosummary suppress the table.

saving(name) savecv(name) save the statistics and the critical values.

Description

gvar stability runs the Toolbox's battery on every country-model
equation: the Ploberger-Kramer maximal OLS-CUSUM and its mean-square variant,
the Nyblom LM test and its heteroskedasticity-robust form, and the Quandt
sup-F, mean-F and Andrews-Ploberger exp-F, each with a robust version. The
break date is the observation at which the sup-F is attained.

These statistics have non-standard distributions and cannot be read against a
chi-squared or F table. With reps() the command bootstraps their
critical values as the Toolbox does.

Options

tests(spec) which of the battery to run, and all runs everything.
The set covers the Ploberger-Kramer-Kontrus and Nyblom statistics, the sequential
and mean Wald tests, and the QLR.

efp(spec) and hfrac(#) add the empirical fluctuation process family
from strucchange -- OLS-CUSUM, recursive CUSUM, MOSUM and the rest --
hfrac() being the bandwidth for the moving-sum variants. Default 0.15.

ccut(#) the trimming fraction at each end of the sample. Default 0.15. A
break cannot be detected in the first or last ccut of the observations, so
this is a statement about where you are willing to look, not a nuisance
parameter.

reps(#) bootstrap replications for the critical values.

Use them. The asymptotic critical values for this family are derived for a
single equation with fixed regressors; a GVAR country model has estimated
cointegrating vectors and weakly exogenous regressors, and the asymptotic values
are correspondingly optimistic.

shuffle, shrinkdraw and lamdraw(#) govern the bootstrap;
vcov(spec), shrink and lambda(#) the covariance, as in
gvar irf.

equations(spec) restricts which equations are tested and top(#) how
many are listed. Default 6.

detail prints per-equation results, graph and name() plot the
paths, saving() and savecv(name) write the statistics and the
bootstrap critical values. nosummary suppresses the report.

Remarks

Use at least 200 replications. A 95th percentile from B draws is the
0.95B-th order statistic, and these statistics are strongly right-skewed,
so a small B under-samples the upper tail, biases the critical value
down and inflates the rejection rate. The command warns below 200.

What the demo shows. Rejection rates settle at about 32 per cent overall
and are stable from B = 60 to 250, so they are a property of the country
models rather than a small-sample artefact. The pattern - Ploberger-Kramer
near nominal, Nyblom moderate, sup-type far higher - is what Dees, di Mauro,
Pesaran and Smith report; their reading is that the sup-type tests respond to
breaks in the error variances rather than in the coefficients.

On shuffle. For a model with more variables than periods, resampling
whole date columns is the better choice: it needs no Cholesky factor and
preserves the empirical cross-section correlation. See
gvar methods.

Examples

. gvar stability
. gvar stability, reps(250) shuffle
. gvar stability, reps(250) shuffle savecv(CV) detail

Stored results

gvar stability stores the following in r():

r(stability) the statistics, one row per equation

r(cv) the 90, 95 and 99 per cent critical values

r(ccut) the trimming fraction

r(nrej) rejections at 5 per cent

r(ntest) tests compared against a critical value

r(reps) replications that converged

r(discarded) draws discarded as unstable

Source

Toolbox structural_stability_tests.m, kraplob.m, nyblom.m,
schow.m; critical values from bootstrap_GVAR_ss.m.

Author

Dr Merwan Roudane

merwanroudane920@gmail.com

https://github.com/merwanroudane