*! version 1.0.0 07jul2026 Merwan Roudane

Title

boundeduroot breaks -- Bounded unit-root tests with structural breaks (CSG 2016)

Syntax

boundeduroot breaks varname [if] [in],
lbound(#) ubound(#)
[options]

lbound(#) lower bound b (required)

ubound(#) upper bound b-bar (required)

breaks(spec) which configuration(s) to report: 0, 1, 2 or all (default)

method(type) long-run variance: np (non-parametric QS, default) or ar (parametric SAR)

iter(#) Monte Carlo draws for the simulated critical values; default 1000

maxlag(#) maximum lag; default round(4*(T/100)^.25)

seed(#) RNG seed; default 16384

level(#) significance level of the reported critical value; default c(level)

nograph suppress the diagnostic figure

gname(string) name stub for the produced graph

Description

boundeduroot breaks tests the bounded unit-root null while allowing 0, 1 or 2 breaks in
the mean, following Carrion-i-Silvestre & Gadea (2016). Break dates are estimated by minimising
the sum of squared residuals of the first-differenced model (equivalently, by locating the
largest mean shifts), and the number of breaks is suggested by an SBIC over that model. For each
configuration the command reports five statistics - MSB, MZ{&alpha}, MZt,
the variance ratio (VR) and the ADF-MAIC statistic - together with critical values
simulated from a piecewise regulated Brownian motion in which each segment between breaks
is folded into its own bounds (the segment mean shifts by the estimated jumps, so the standardised
bounds shift with it). All five statistics reject the null in the left tail.

Options

lbound(#), ubound(#) give the (known, constant) bounds.

breaks(spec) restricts the printed rows to a given number of breaks; all
(default) prints the no-break, one-break and two-break rows.

method(type) chooses the long-run variance estimator; the paper's baseline is the
non-parametric QS estimator.

iter(#), maxlag(#), seed(#), level(#) control the simulation and
reporting exactly as in mtests.

Stored results

Scalars

r(N) number of observations

r(nbreaks) SBIC-recommended number of breaks

r(tb1) estimated single-break position

r(tb2_1) r(tb2_2) estimated two-break positions

r(x0) r(lbound) r(ubound) first obs and bounds

Matrices

r(stats) 3×5 statistics (rows 0/1/2 breaks; cols MSB MZa MZt VR ADF)

r(cv5) 3×5 bound-specific critical values

Examples

. tsset time

. boundeduroot breaks urate, lbound(0) ubound(100)

. boundeduroot breaks urate, lbound(0) ubound(100) breaks(1) method(ar)

References

Carrion-i-Silvestre, J. L., and M. D. Gadea. 2016. Bounds, breaks and unit root tests.
Journal of Time Series Analysis 37(2): 165-181.
doi:10.1111/jtsa.12144.

Author

Dr Merwan Roudane -- merwanroudane920@gmail.com -- github.com/merwanroudane