SetIdentifiedSVARResult.impact_bounds#

property SetIdentifiedSVARResult.impact_bounds: NDArray[float64][source]#

Exact (k, 2) lower and upper impact responses to the shock.

Example

A single sign leaves the other variable’s response free in sign: its upper bound is still its innovation standard deviation, and its lower bound is the most negative response compatible with the restricted variable rising:

>>> import numpy as np
>>> from cultivars.multivariate.reduced_form.vector_autoregression import VAR
>>> rng = np.random.default_rng(0)
>>> B = np.array([[1.0, 0.5], [0.3, 1.0]])
>>> y = np.zeros((402, 2))
>>> for t in range(1, 402):
...     y[t] = 0.4 * y[t - 1] + B @ rng.standard_normal(2)
>>> res = VAR(y, order=1, names=("gdp", "infl")).fit()
>>> one = SetIdentifiedSVAR(res, {"gdp": "+"}).identify()
>>> one.impact_bounds.shape, one.impact_bounds.round(3).tolist()
((2, 2), [[0.0, 1.122], [-0.758, 1.041]])