Admissible structural models

Practicum · Session 04

Run the sign-restricted VAR, inspect accepted joint systems, and work through the identifying restrictions.

Run the classroom application

Place the fingerprinted CSV in data/raw/04-sign-restrictions/, following the session README. Open MATLAB at the extracted package root. Each block below continues from the preceding one; the raw source is never edited.

% Estimate the dated quarterly VAR and retain 250 admissible joint rotations.
result = run_session(4);
% Read the chosen lag order and the actual rejection-sampler denominator.
disp([result.config.lags, result.restrictions.accepted, result.restrictions.attempted]);

The checked run returns 6 250 5551. A different output is a reason to inspect the input fingerprint, settings, and MATLAB version before interpreting the figure. A changed seed alone should not change the reduced-form coefficients, but it will change the finite set of rotations.

Check one complete system

Do not begin with the median curve. Select an actual retained matrix and verify that it reconstructs the reduced-form covariance.

% Select the first accepted system, including every shock column.
B = result.restrictions.irf(:, :, 1, 1);
% Impact covariance must equal the reduced-form covariance up to rounding.
error = norm(B * B' - result.model.Sigma, 'fro');
% Stop if a nonorthogonal or incorrectly scaled impact matrix was stored.
assert(error < 1e-10);

Next examine the first five response slots. Monetary GDP is unrestricted; prices must be nonpositive and the policy rate nonnegative.

% MATLAB slots one through five represent economic horizons zero through four.
monetary = squeeze(result.restrictions.irf(:, 3, 1:5, 1));
% Check the price restriction across all five horizons jointly.
assert(all(monetary(2, :) <= 0));
% Check the interest-rate restriction in the same accepted model.
assert(all(monetary(3, :) >= 0));

Change the identifying assumptions

For a controlled experiment, extend the required signs to horizons zero through eight. The model fit must remain fixed so that differences reflect identification rather than a new reduced form. The sampler may need more attempts; an explicit cap failure is informative about computational cost, not evidence that the population set is mathematically empty.

% Expose the package after run_session has restored the original search path.
addpath('matlab');
% Copy baseline settings so the saved baseline itself remains unchanged.
alternative = result.config;
% Require the same signs for nine quarters including impact.
alternative.restrictHorizons = 0:8;
% Use 25 retained draws for this shorter teaching sensitivity calculation.
alternative.draws = 25;
% Estimate only the changed identification set, not a different VAR.
longer = tsma.ident.rotations(result.model, alternative);
% Compare attempted rotations per retained system under the stronger restriction.
disp(longer.attempted / longer.accepted);

The 250-draw baseline is a teaching-size approximation, not a proof that its sampled extrema equal the identified-set bounds. Repeat larger draws before reporting numerical bounds as stable. Do not interpret a smaller Monte Carlo range from a different seed as a tighter identifying assumption.

Worked exercises

The lecture problems use small matrices so that the identification logic can be checked without running an empirical model.

Orthogonal rotations

First, QQ'=I_2. The impact matrix is

B=\begin{pmatrix}0&-2\\1&-1\end{pmatrix},\qquad BB'=\begin{pmatrix}4&2\\2&2\end{pmatrix}=SS'.

For example, the covariance between the two reduced-form innovations is 0\cdot1+(-2)(-1)=2, exactly as with S. Both factorizations therefore fit the same innovation covariance. Neither calculation labels a monetary, supply, or demand shock. Economic restrictions must give those columns an interpretation. Checking BB'=SS' verifies observational equivalence, not causal identification.

A joint sign test

Multiply the first row by +1 and the second by -1. Every resulting entry of R_1 is positive, so its orientation is accepted. Every active sign of R_2 is reversed; multiplying the entire shock column by -1 returns R_1 and preserves orthogonality.

For R_3, the impact signs pass and the horizon-one signs fail. Reversing the column would make horizon one pass but impact fail. The system is rejected. A horizon-specific reversal would replace a single structural shock with differently oriented objects at different horizons; it cannot be written as C_hSq_j for one common q_j.

The direct code check is:

% Apply one supply-sign vector jointly to both horizons.
direction = tsma.ident.sign_orientation([1 -2; -1 3], [1; -1]);
% Zero denotes rejection, not an unrestricted or zero-valued shock.
assert(direction == 0);

Combining models

The average is \bar B=\begin{pmatrix}1/2&-1/2\\1/2&1/2\end{pmatrix}. Its columns remain perpendicular, but each has squared length 1/2. Consequently,

\bar B\bar B'=\begin{pmatrix}1/2&0\\0&1/2\end{pmatrix}\ne I_2.

Each original model reproduces the data covariance; their entrywise average does not. With two observations, an interpolated sample median can equal this average as well. More generally, selecting marginal quantiles separately across variables and horizons does not enforce the nonlinear restrictions tying a complete model together. A plotted summary can be useful descriptively, but it is not automatically a structural impact matrix. Use a saved draw for a decomposition and verify its covariance identity before interpreting the result.

A dated restriction

The first equation gives \varepsilon_{1,t^*}=1. The second gives 1+2\varepsilon_{2,t^*}=-1, hence \varepsilon_{2,t^*}=-1. The proposed positive-second-shock restriction therefore rejects this model.

Reversing the second column produces \widetilde B=\begin{pmatrix}1&0\\1&-2\end{pmatrix} and recovers \widetilde\varepsilon_{2,t^*}=+1. The fitted reduced-form innovation and its covariance are unchanged. But all impulse responses to that second shock have reversed too. Its economic label and any response-sign restrictions must be checked in the same orientation. A narrative sign cannot be made meaningful by reversing the shock after observing whether the desired historical claim passes.

For an empirical date, match its calendar code to model.periods before recovering shocks. If that date is not in the residual sample, the exercise has no recovered innovation at that date; inventing a zero would add a different assumption.