*! version 1.0.1 21aug2026

Title

gvar pp -- persistence profiles of the cointegrating relations

Syntax

gvar pp [, options]

options

units(list) which units. Default all.

step(#) horizon. Default 24.

horizons(numlist) which horizons to print.

vcov(string) sample keeps the estimated covariance; blockdiag zeroes every cross-unit covariance; blockdiag unit does the same but leaves one unit's cross-covariances free.

shrink shrink the correlation matrix towards the identity, intensity chosen internally.

lambda(#) set the shrinkage intensity by hand, between 0 and 1.

reps(#) bootstrap replications for the bands.

level(#) band level. Default 95.

shuffle resample whole date columns.

shrinkdraw lamdraw(#) shrink the draw covariance.

graph small-multiples plot.

name(name) graph name.

nosummary suppress the table.

saving(name) save the profiles.

Description

gvar pp computes the effect of a system-wide shock on each estimated
long-run relation, scaled to one on impact. A well-behaved cointegrating
relation decays monotonically to zero; the speed of that decay is the
economically interesting quantity.

Options

units(spec) restricts which units' cointegrating relations are profiled.
Omitted, all of them are.

step(#) the horizon. Default 24.

horizons(numlist) which horizons appear in the printed table.

reps(#) bootstrap replications for the bands and level(#) their
coverage. reps(0), the default, gives point profiles only.

shuffle, shrinkdraw and lamdraw(#) govern the bootstrap, as in
gvar irf.

vcov(spec), shrink and lambda(#) transform or regularise the
covariance.

A persistence profile starts at one for any covariance matrix, because the
same Sigma sits in its numerator and denominator at h = 0. So the value
at zero cannot validate the covariance argument, and neither can the shape. If
you want to check that a covariance option is doing what you think, use an
orthogonalised FEVD, which sums to one only when it is right.

graph, name(), saving() and nosummary as elsewhere.

Remarks

This is a specification test. A profile that has not returned to near
zero by the end of the horizon says the relation is not settling back, and
the usual cause is an overstated cointegrating rank. The command counts those
and points at gvar coint. Dees, di Mauro, Pesaran and Smith
read overshooting and slow decay the same way.

Overshooting above one is common and reflects short-run dynamics, not
misspecification. The half-life column - the first horizon at which the
profile falls to one half - is the summary worth quoting.

PP(0) = 1 is not a check. The same covariance appears in the numerator
and denominator at horizon zero, so the profile starts at one whatever
covariance is supplied. It cannot detect a wrong covariance argument.

No ordering options. The Toolbox computes persistence profiles on the
un-reordered system, deliberately: a persistence profile is a property of
the cointegrating relations and carries no Cholesky ordering.

Examples

. gvar pp
. gvar pp, units(usa euro china) step(24)
. gvar pp, step(16) reps(200) shuffle graph

Stored results

gvar pp stores the following in r():

r(pp) the profiles, with unit and relation identifiers

r(ppband) the three bootstrap quantiles stacked

r(nrelations) profiles reported

r(nslow) profiles still above 0.10 at the final horizon

r(step) the horizon

r(reps) replications that converged

Source

Toolbox pprofile.m; Pesaran and Shin (1996). Bands from
bootstrap_GVAR.m.

Author

Dr Merwan Roudane

merwanroudane920@gmail.com

https://github.com/merwanroudane