Below I’m sending an adaptation of this example code by Prof Pfeifer. I have two shocks (both unanticipated) and I’m trying to understand two very simple things.
i. When I only have a single shock (e_t), why is the output in the log_y_et vector not matching the y_IRFmodel025csolo output (row 15 for log_y_et)? (ps. I can confirm that both systems received the same shock by comparing row 11 to ttau_et. However, the same is not true for the outcome variables.)
ii. How can I generate a negative shock? I have tried different alternatives, yet I still have the problem of getting different values which confuses me a lot. Should I be changing signs in the .m file or in the shock_matrix line? (as both again are giving different numbers)
For instance, if I use
“shock_matrix(1,strmatch(‘et’,M_.exo_names,‘exact’)) = - 0.5”
I do not think this is really generating me a negative tax shock since output (again row 15 in y_IRFmodel025csolo) seems to respond negatively to a tax cut. In contrast, when I do the sign flip of the shock in the .m file without the use of shock_matrix, I get a negative tax shock increasing output, which sounds more right economically.
I appreciate any helps on this, thank you so much for your time and consideration.
ModelC_order2_steadystate.m (2.3 KB) ModelC_order2.mod (3.3 KB)
Also, I have forgot to phrase that tax shock hits at time t and monetary policy shock hits at time t+10.
I’ve just noticed the third documents was not uploaded. Please find attached.
Dynare_9.17.m (1.9 KB)
- You are using a second order approximation. Dynare will by default use generalized IRFs, i.e. integrate over future shocks. In contrast,
simult_ will only give you one simulation path (where you shut off all future shocks).
shock_matrix(1,strmatch('et',M_.exo_names,'exact')) = -0.5; % only tax shock.
will give you a negative shock of size 0.5.
Thank you Prof. Pfeifer.
On point 1. That clarifies that they are not really comparable. Although, I would have thought they would be comparable in a single, one-off shock setting.
I have one more related question. When I simulate the same shock but opposite sign like
a. shock_matrix(1,strmatch(‘et’,M_.exo_names,‘exact’)) = -0.5;
b. shock_matrix(1,strmatch(‘et’,M_.exo_names,‘exact’)) = 0.5;
One is a tax cut, and the other is a tax increase. simult_ returns me the outcome of output falling in both scenarios. On the other hand, stoch_simult suggest that tax cut would clearly increase output.
Why is simult_ not generating an output increase as in stoch_simult? Is there any way to make it do that?
Thank you very much!
Dear Prof Pfeifer,
Thank you for the clarification. Indeed, lowering the variance scale has helped a lot with the impulse responses.
Is it possible to plot IRF as a deviation from stochastic steady state? I would like to compare them to the deterministic versions.
Dear Prof Pfeifer,
The code was very helpful, thank you so much. I have a generic follow-up question on this exercise. When I do a tax cut and a tax increase using second order approximation, I get a much larger effectiveness of a tax increase than a tax cut. Is there a simple explanation why this might be the case?
I am not aware of a simple explanation beyond the generic “nonlinearities may matter”.