*! version 1.0.0 14feb2026

Title

xtcadfcoint -- Panel CADF cointegration test with structural breaks and cross-section dependence

Syntax

xtcadfcoint
depvar
indepvars
[if] [in]
[, options]

Model Specification
model(#) deterministic specification; 0-5; default is model(1)

breaks(#) number of structural breaks; 0, 1, or 2; default is breaks(0)

trimming(#) trimming fraction for break search; default is trimming(0.15)

Common Factors and Cross-Section Dependence
nfactors(#) number of common factors; default is nfactors(1)

nocce do not use CCE procedure (assumes cross-section independence)

Structural Break Effects
brkslope allow breaks to change the cointegrating vector across regimes

brkloadings allow breaks to change factor loadings across regimes

Lag Augmentation
maxlags(#) maximum lag order for ADF/CADF augmentation; default is maxlags(4)

lagselect(method) lag selection criterion: aic, bic,
maic, mbic, or fixed; default is bic

Critical Values
simulate(#) number of Monte Carlo replications for bootstrap critical values; default is 0 (skip)

Reporting
level(#) set confidence level; default is level(95)

A panel variable and a time variable must be set; use xtset.

The panel must be balanced (no gaps in time series for any unit).

Description

xtcadfcoint tests the null hypothesis of no cointegration in a panel data
setting, allowing for cross-section dependence (via common correlated effects),
multiple structural breaks (0, 1, or 2), and heterogeneity in break dates and
parameters across panel units.

The test is based on the panel CIPS (Cross-sectionally Augmented IPS) statistic,
which averages the individual CADF (Cross-sectionally Augmented Dickey-Fuller)
cointegration test statistics across all panel units. Under the null of no
cointegration, the panel CIPS statistic has a non-standard distribution, and
critical values depend on N, T, k, and the model specification.

The procedure is implemented as follows:

1. Estimate the pooled CCE (Common Correlated Effects) cointegrating
relationship, projecting out the effect of cross-section averages and
deterministic components.

2. Compute Engle-Granger residuals from the estimated long-run
relationship.

3. Run individual CADF (or ADF) regressions on the residuals, augmented
with lagged cross-section averages.

4. The panel CIPS statistic is the average of the individual
t-statistics.

5. For endogenous breaks (breaks > 0), the break dates are estimated by
minimizing the sum of squared residuals over a grid of candidate break dates.

Critical Values

The panel CIPS statistic has a non-standard distribution. Critical values
depend on the panel dimensions (N, T), the number of regressors (k), the
deterministic specification (model), the number of breaks, and break effect
options (brkslope, brkloadings). For this reason, no universal asymptotic
critical values are available.

How to obtain critical values:

1. Bootstrap simulation (recommended): Use the simulate(#)
option to compute critical values by Monte Carlo simulation under the null
hypothesis (no cointegration). The DGP generates independent random walks
for both the dependent and independent variables, matching the simulation
scripts distributed by the authors. Example:

. xtcadfcoint y x1 x2, model(3) breaks(1) simulate(1000)

Recommended replications: 1000 (quick, ~1 min), 5000 (moderate, ~5 min),
50000 (publication-quality, ~1 hour). Critical values are reported at the
1%, 2.5%, 5%, and 10% significance levels with rejection decisions.

2. Paper tables: Refer to Tables B.13-B.24 in the online appendix of
Banerjee and Carrion-i-Silvestre (2025) for selected (N, T, k)
configurations.

Interpreting results:

Reject H0 if the panel CIPS statistic is more negative than the
critical value at the chosen significance level. A rejection indicates evidence
of cointegration in the panel.

Fail to reject H0 if the panel CIPS statistic is less negative than
the critical value. This indicates no evidence of cointegration.

Model Specifications

The model() option specifies the deterministic component:

Model Description

model(0) No deterministic component

model(1) Constant only (default)

model(2) Constant and linear time trend

model(3) Constant with multiple level shifts

model(4) Linear time trend with multiple level shifts

model(5) Linear time trend with both level and trend slope shifts

Models 3-5 require breaks(1) or breaks(2). In the paper, these
correspond to Models A1/B1/C1 (no break in loadings) and A2/B2/C2 (break in
loadings).

Options

Model Specification

model(#) specifies the deterministic component of the cointegrating
regression. See Models above.

breaks(#) specifies the number of endogenous structural breaks to test.
0 = no breaks, 1 = one break, 2 = two breaks. When breaks > 0, the break
dates are estimated by minimizing the SSR. Default is 0.

trimming(#) sets the trimming fraction for the break date search grid.
Observations within #*T of the sample endpoints are excluded from
candidate break points. Default is 0.15.

Common Factors and Cross-Section Dependence

nfactors(#) specifies the number of common factors assumed. The rank
condition requires num_factors <= (1 + k). Default is 1.

nocce suppresses the common correlated effects (CCE) procedure. When
specified, the panel units are assumed to be cross-sectionally independent.

Structural Break Effects

brkslope allows the cointegrating vector (slope parameters) to change
across regimes defined by the structural breaks.

brkloadings allows the factor loadings to change across regimes defined
by the structural breaks.

Lag Augmentation

maxlags(#) sets the maximum lag order for the ADF/CADF augmentation in
the cointegration test regression. Default is 4.

lagselect(method) specifies the criterion for automatic lag selection:
aic (Akaike), bic (Bayesian, default), maic (Modified AIC),
mbic (Modified BIC), or fixed (use maxlags for all units).

Critical Values

simulate(#) specifies the number of Monte Carlo replications to use for
bootstrap critical values. Under the null hypothesis (no cointegration),
independent random walks are generated for both the dependent and independent
variables, and the test statistic is computed for each replication. Critical
values at the 1%, 2.5%, 5%, and 10% significance levels are reported along with
rejection decisions. The DGP matches the GAUSS simulation scripts distributed
with the paper. Recommended values: 1000 (quick), 5000 (moderate), 50000+
(publication-quality). Default is 0 (skip).

Stored results

xtcadfcoint stores the following in r():

Scalars

r(panel_cips) panel CIPS statistic (lambda_hat)

r(panel_cips_alt) panel CIPS statistic (lambda_tilde); only with breaks

r(N) number of panel units

r(T) number of time periods

r(k) number of regressors

r(model) model specification

r(breaks) number of breaks

r(nfactors) number of common factors

r(brk_slope) 1 if breaks affect slopes

r(brk_loadings) 1 if breaks affect loadings

r(cce) 1 if CCE was used

r(trimming) trimming fraction

r(maxlags) maximum lag order

Matrices

r(beta_ccep) pooled CCE coefficient estimates

r(SSR) sum of squared residuals (4x1)

r(t_individual) individual CADF/ADF t-statistics (Nx1)

r(p_selected) selected lag orders per unit (Nx1)

r(Tb_hat) estimated break dates (lambda_hat); only with breaks

r(Tb_tilde) estimated break dates (lambda_tilde); only with breaks

Scalars (with simulate())

r(cv_panel_1) panel CIPS critical value at 1%

r(cv_panel_2_5) panel CIPS critical value at 2.5%

r(cv_panel_5) panel CIPS critical value at 5%

r(cv_panel_10) panel CIPS critical value at 10%

r(cv_ind_1) individual CADF critical value at 1%

r(cv_ind_2_5) individual CADF critical value at 2.5%

r(cv_ind_5) individual CADF critical value at 5%

r(cv_ind_10) individual CADF critical value at 10%

r(simulate) number of bootstrap replications

Examples

Setup: PSY data (Banerjee & Carrion-i-Silvestre empirical application)

. use psy_rhpi_rdipc.dta, clear

. xtset state year

Example 1: No structural breaks, constant, CCE with 2 factors

. xtcadfcoint ln_rhpi ln_rdipc, model(1) breaks(0) nfactors(2)

Example 2: Two breaks, level shifts, breaks affect slopes and loadings

. xtcadfcoint ln_rhpi ln_rdipc, model(3) breaks(2) brkslope brkloadings nfactors(2) maxlags(4)

Example 3: No CCE (assumes cross-section independence)

. xtcadfcoint ln_rhpi ln_rdipc, model(1) breaks(0) nocce

Example 4: With bootstrap critical values (1000 replications)

. xtcadfcoint ln_rhpi ln_rdipc, model(3) breaks(1) nfactors(2) simulate(1000)

Example 5: Publication-quality critical values

. xtcadfcoint ln_rhpi ln_rdipc, model(3) breaks(2) brkslope brkloadings nfactors(2) simulate(5000)

References

Banerjee, A. and Carrion-i-Silvestre, J.L. (2025).
Panel Data Cointegration Testing with Structural Instabilities.
Journal of Business & Economic Statistics, forthcoming.
DOI: 10.1080/07350015.2024.2314746.

Banerjee, A. and Carrion-i-Silvestre, J.L. (2015).
Cointegration in Panel Data with Structural Breaks and Cross-Section Dependence.
Journal of Applied Econometrics, 30(1), 1-22.

Pesaran, M.H. (2006).
Estimation and Inference in Large Heterogeneous Panels with a Multifactor
Error Structure. Econometrica, 74(4), 967-1012.

Pesaran, M.H. (2007).
A Simple Panel Unit Root Test in the Presence of Cross-Section Dependence.
Journal of Applied Econometrics, 22(2), 265-312.

Kim, D. and Perron, P. (2009).
Unit Root Tests Allowing for a Break in the Trend Function at an Unknown Time
under Both the Null and Alternative Hypotheses.
Journal of Econometrics, 148(1), 1-13.

Author

Dr Merwan Roudane

Email: merwanroudane920@gmail.com

Based on the GAUSS code by Josep Lluis Carrion-i-Silvestre and Anindya Banerjee.

Also see

Help: xtcointtest, xtunitroot, xtset