Page 1 of 1

Recovering Structural Shocks in Long-run restricted SVARS

Posted: Fri Jul 02, 2021 12:50 am
by BrsG
I have estimated a 3-variable SVAR (EViews 11, latest patch), with long-run restrictions on F in

Psi*e = Fu

Code: Select all

_y.append(svar) @VEC(F) = NA, NA, NA, 0, NA, NA, 0, 0, NA


For the following note that u and e are related by Su = e, where S = A^(-1)B. Moreover, the underlying VAR is stable. The notation in this post tries to approximate the one used in the EViews documentation.

When trying to recover the orthonormal structural shocks u I ran into trouble and have the following issues.

(1) the residuals S^(-1) e, which should give us the structural shocks, are far from orthonormal. In particular, they are highly cross-correlated.

(2) Psi S != F, although identity is clearly implied (I calculated Psi = (I_3- A1-A2)^(-1) )

(3) Although the general approach with restrictions on F should not allow to get estimates for A or B, both are in fact available when calling

Code: Select all

 matrix bmat = _y.@svarbmat
 matrix amat = _y.@svaramat

A turns out to be the identity matrix (and B=S). It seems the estimation procedure makes this assumption on A automatically whenever restrictions are placed on F. Even when trying prevent restrictions on A via

Code: Select all

_y.append(svar) @VEC(F) = NA, NA, NA, 0, NA, NA, 0, 0, NA
_y.append(svar) @VEC(A) =NA, NA, NA, NA, NA, NA, NA, NA, NA

A is still the identity matrix.

What am I missing here?

Any help would be much appreciated!

Re: Recovering Structural Shocks in Long-run restricted SVARS

Posted: Fri Jul 02, 2021 12:34 pm
by EViews Matt
Hello,

Regarding (1) and (2), here's a quick program that verifies that the S and F matrices behave as expected for a trivial artificial SVAR. If you run the last four statements for your own SVAR, do the results not match the mentioned expectations?

Code: Select all

create u 100
series x = rnd
series y = 2 * x + nrnd
series z = nrnd
var v.ls 1 2 x y z
v.svar(preset=3)   ' F is lower triangular.


v.makeresids(struct, method=struct) x_r y_r z_r
cov x_r y_r z_r   ' Should be close to the identity matrix.
matrix psi_s_minus_f = @inverse(@identity(3) - v.@lagcoefsum) * v.@svarsmat - v.@svarfmat
show psi_s_minus_f   ' Should be close to all zeros.

Regarding (3), you're correct that restricting S and/or F doesn't permit estimating A or B. For historical reasons, @svaramat and @svarbmat need to be available and meaningful after an estimation, so A is simply set to I and B is set to S. These aren't independent estimations, they're just one possible choice for A and B this is consistent with the estimation results.

Re: Recovering Structural Shocks in Long-run restricted SVARS

Posted: Mon Jul 05, 2021 6:17 am
by BrsG
Thanks, Matt, this was helpful, especially on 3), which in combination with the others created the confusion.

I should have clarified in my question 1) that I had checked

Code: Select all

v.makeresids(struct, method=struct) x_r y_r z_r
cov x_r y_r z_r   ' Should be close to the identity matrix.


and it worked. However I also checked S^(-1)e = u, whose covariance matrix was off. I now found that the reason behind this was that I had created the residual matrix e via a group command with a wildcard, which had changed the ordering of the series.

So all good now. Thanks again!