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.

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).
2.Using

shock_matrix(1,strmatch('et',M_.exo_names,'exact')) = -0.5; % only tax shock.

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?

You are plotting IRFs as a deviation from the deterministic steady state, but the system should converge to the stochastic steady state. Thus, your responses look weird. Moreover, your variance are crazy big, if I see it correctly. Note that at order>1, you must not scale by 100.

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?