*! version 1.0.1 21aug2026

Title

gvar report -- one specification audit of the fitted model

Syntax

gvar report [, psc(#) step(#)]

options

psc(#) lag order for the serial-correlation test. Default psc(4).

step(#) horizon at which persistence profiles must have settled.
Default step(24).

Description

gvar report runs the checks a referee would ask for, in the order they
matter, and reduces each to a line or two. It is a triage tool: it tells you
which of the detailed subcommands to go and read, and it flags the ones whose
answer is outside the range the literature reports for a well-specified GVAR.

Nothing here is new arithmetic. Every number is produced by the subcommand
named in the right margin of its section, run quietly. If a section worries
you, run that subcommand yourself and read the full table.

What it checks

section

1. solve largest eigenvalue modulus, explosive roots, and whether the
number of unit roots equals K - sum r_i. A disagreement means the
ranks and the dynamics are telling you different things.

2. wetest share of weak-exogeneity tests rejected at 5%. Dees, di Mauro,
Pesaran and Smith report 5-10% for a correctly specified GVAR; above 15%
gvar report says so.

3. avgcorr mean absolute pairwise correlation in the levels against
the same statistic in the residuals, and the ratio. This is the one number
that says whether the foreign variables did their job.

4. diag counts of equations failing serial correlation, normality and
ARCH.

5. pp how many cointegrating relations are still above 0.10 at horizon
step().

Options

psc(#) the serial-correlation order carried into the diagnostic block,
default 4, and step(#) the horizon used for the dynamic checks, default 24.

graph draws the dashboard, panels(spec) chooses which panels appear,
and name() names it.

The whole panel list is validated before anything is drawn. A misspelled panel
name is an error up front rather than a half-built dashboard: the alternative is
a figure that is missing something and does not say so.

nosummary suppresses the report.

Remarks

Read section 3 first. A GVAR exists to make the country models
conditionally independent. If the mean absolute residual correlation is not
much smaller than the mean absolute correlation in the levels, the foreign
variables have not absorbed the common factors, and the generalized impulse
responses -- which are conditional on the residual covariance -- are not
telling you about country-specific shocks.

Non-normality is not a defect. Quarterly macroeconomic data is
routinely non-normal, and generalized responses need only the first two
moments. Serial correlation is different: it says the lag orders are too
short, and it biases everything downstream.

The section 1 check is a real test, not a formality. A GVAR with K
endogenous variables and sum r_i cointegrating relations must have
exactly K - sum r_i eigenvalues on the unit circle. More unit roots
than that means a rank has been understated somewhere; fewer means one has
been overstated. Either way the long-run behaviour of the solved system is not
the long-run behaviour the individual rank tests implied.

What it does not do. gvar report runs only the asymptotic versions
of the diagnostics, because the bootstrap ones take minutes. At GVAR
dimensions the asymptotic multivariate tests are badly oversized -- see
gvar diag -- so treat section 4 as a screen, and settle the
question with gvar diag, multivariate reps(200).

Examples

The whole audit

. gvar report

A longer settling horizon and a longer serial-correlation lag

. gvar report, step(40) psc(8)

Keep the headline numbers

. gvar report
. display "WE rejection rate: " 100*r(wetest_rej)/r(wetest_tot) "%"
. display "dependence reduced by a factor of " r(corr_lev)/r(corr_res)

Stored results

gvar report stores the following in r():

r(wetest_rej) weak-exogeneity tests rejected at 5%

r(wetest_tot) weak-exogeneity tests computed

r(corr_lev) mean absolute correlation, levels

r(corr_res) mean absolute correlation, residuals

r(nequations) equations in the system

Source

Reporting command. The checks and the ranges they are judged against follow
the specification tables of Dees, di Mauro, Pesaran and Smith (2007) and the
diagnostic output of GVAR Toolbox 2.0.

Author

Dr Merwan Roudane

merwanroudane920@gmail.com

https://github.com/merwanroudane