cultivars.multivariate.structural.zero_restrictions#

Zero-restriction identification: triangularity on impact or in the long run.

A reduced-form innovation covariance admits infinitely many factorizations \(\Sigma_u = B B'\), one per orthogonal rotation of any of them, and every one tells a different economic story. The schemes here choose by the oldest device in the literature: zeros, enough of them to leave one factorization standing. Four arrangements are offered. RecursiveSVAR puts a triangle on impact – a declared causal ordering in which each variable responds contemporaneously only to shocks at or before its own position, Sims (1980), the Cholesky factor in closed form. LongRunSVAR puts the triangle at the infinite horizon – an ordering of permanence in which each shock has no cumulated effect on the variables before its position, Blanchard-Quah (1989) – as the Cholesky factor of \(F \Sigma_u F'\) mapped back through the long-run matrix \(F = A(1)^{-1} M(1)\). ShortRunSVAR is the general AB model, \(A u_t = B \varepsilon_t\) with zeros anywhere in either matrix, estimated by maximum likelihood and tested for over-identification when the zeros exceed \(k(k+1)/2 - k(k-1)/2\) worth of freedom (Amisano-Giannini 1997). MixedSVAR takes \(k(k-1)/2\) zeros split between the impact matrix and the long-run matrix and solves for the rotation of the Cholesky factor that honours all of them, Galí (1999). Every scheme returns the same SVARResult: impact columns, structural impulse responses, variance shares, recovered shocks and historical decompositions, computed per identified column.

Two commitments shape the surface. First, the restriction is an argument, never a default. Each model constructs from a fitted closed reduced-form result rather than from data: the reduced form supplies every estimable quantity, and what the model adds is exactly the declared zeros, which the result restates as a sentence in its summary – the ordering, the cell pattern, the horizons – so that the identifying assumption travels with the numbers it produced. Second, the covariance is reproduced or the scheme refuses. A recursive or long-run factor reproduces \(\Sigma_u\) by construction; the long-run one is checked anyway, because a nearly nonstationary system makes \(F\) ill-conditioned enough to break it; a just-identified AB pattern that cannot reproduce it is the rank condition failing and is reported as that, not as an estimate; a mixed pattern no rotation can satisfy is refused with the best violation. Where the zeros over-identify, the likelihood-ratio statistic against the unrestricted covariance is the data’s verdict and is printed; where they exactly identify, the summary says the data cannot contradict them.

Layout. All four models are _IdentificationModel subclasses from _internals; orderings are validated by _validate_ordering and cell patterns by _validate_impact_pattern, both in _core; the factor comes from _lower_cholesky and the long-run matrix from _long_run_matrix, which refuses a unit root; the AB likelihood is _ShortRunObjective under _maximize_likelihood and the mixed rotation is _MixedHorizonObjective under _solve, all in _internals. SVARResult renders through the shared _UNIT_SHOCK_NOTE and, when columns are missing, the _PARTIAL_IDENTIFICATION_NOTE; it is also the record returned by the partial and statistical schemes in external_instruments, heteroskedacity and non_gaussian, and the point surface stochastic_volatility lands on. Restrictions that do not point-identify belong to sign_restrictions and set_identification.

References

Sims, C. A. (1980). Macroeconomics and reality. Econometrica, 48(1), 1-48.

Blanchard, O. J., & Quah, D. (1989). The dynamic effects of aggregate demand and supply disturbances. American Economic Review, 79(4), 655-673.

Amisano, G., & Giannini, C. (1997). Topics in Structural VAR Econometrics (2nd ed.). Springer.

Galí, J. (1999). Technology, employment, and the business cycle: Do technology shocks explain aggregate fluctuations? American Economic Review, 89(1), 249-271.

Kilian, L., & Lütkepohl, H. (2017). Structural Vector Autoregressive Analysis. Cambridge University Press.

Example

The same reduced form under the impact triangle and the long-run triangle. Both reproduce the innovation covariance; they disagree on the impact matrix, and the disagreement is the identifying assumption:

>>> import numpy as np
>>> from cultivars.multivariate.reduced_form.vector_autoregression import VAR
>>> rng = np.random.default_rng(0)
>>> A = np.array([[0.5, 0.1], [0.0, 0.4]])
>>> B = (np.eye(2) - A) @ np.array([[1.0, 0.0], [0.5, 1.0]])
>>> eps = rng.standard_normal((602, 2))
>>> y = np.zeros((602, 2))
>>> for t in range(1, 602):
...     y[t] = A @ y[t - 1] + B @ eps[t]
>>> res = VAR(y, order=1, names=("dy", "u")).fit()
>>> recursive = RecursiveSVAR(res).identify()
>>> long_run = LongRunSVAR(res).identify()
>>> recursive.impact.round(2).tolist(), long_run.impact.round(2).tolist()
([[0.45, 0.0], [0.17, 0.64]], [[0.44, -0.11], [0.31, 0.58]])
>>> covariances = [s.impact @ s.impact.T for s in (recursive, long_run)]
>>> bool(np.allclose(covariances[0], res.sigma_u)), bool(np.allclose(*covariances))
(True, True)
>>> permanent = [bool(abs(s.long_run_impact[0, 1]) < 1e-10) for s in (recursive, long_run)]
>>> permanent
[False, True]

Classes#

LongRunSVAR

Long-run recursive identification, Blanchard-Quah (1989).

MixedSVAR

Zero restrictions split across impact and the long run, Galí (1999).

RecursiveSVAR

Recursive identification: a declared causal ordering, Sims (1980).

SVARResult

A point-identified structural view of a fitted reduced-form system.

ShortRunSVAR

General short-run zero restrictions: the AB model, Amisano-Giannini (1997).