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#
Long-run recursive identification, Blanchard-Quah (1989). |
|
Zero restrictions split across impact and the long run, Galí (1999). |
|
Recursive identification: a declared causal ordering, Sims (1980). |
|
A point-identified structural view of a fitted reduced-form system. |
|
General short-run zero restrictions: the AB model, Amisano-Giannini (1997). |