Shocks for IRFs in a third order approximation

Dear all,
Attached is a Dynare code for a NK-DSGE model with endogenous growth (with auxiliary Matlab codes). I have tried reading posts related to third-order approximation in Dynare, but I am still not convinced about my issue. I really appreciate it if someone could help a bit more.

  1. while calling for results of a 1 percent increase in R, in the third order IRF I see the dynamics of a 3 percent decrease in R! I understand that due to higher order interaction between variables in perturbation methods, shocks may not be as smooth as a first order approximation, but is it possible to get a totally opposite sign and magnitude? If so, do I have to normalize IRFs to a 1 percent increase in R manually? Or are there better ways to do it?

  2. As an exercise, I need to compare the IRFs of monetary policy shocks under different economic uncertainty. One way would be to compare IRFs under different TFP shock volatility. Is there a better way to do it? Because when the volatility of TFP shock changes, the dynamics of monetary policy shock also changes significantly!

Many thanks in advance,

benchmark.mod (13.3 KB)
irfsss.m (1.8 KB)
sss.m (1.4 KB)

No comments on this question?? I would really appreciate if anyone can help! thanks,

  1. In principle, this can happen depending on the endogenous feedback. See the discussion at Positive monetary policy shock with nominal interest rate falling?
  2. Your shock volatilities of 100 percent seem totally off. That might explain your weird results. Have a look at the thread at IRFs analysis when std of shocks where calibrated
  3. Please upgrade to Dynare 5.2. Use
    sss.m (1.4 KB)
    irfsss.m (1.9 KB)
    benchmark1.mod (13.3 KB)
1 Like

Thanks, @jpfeifer! Really helpful links!

I did not fully understand your second point, though. Would you please elaborate a bit?
If you refer to the size of the shock, I can solve it by defining deviation from the steady state rather than the current log level (for the productivity shock). What do you think about the general approach? Is it ok to run the code under different sd of TFP shock and interpreted it as different economic uncertainty? Or do I have to run each time separately with a different initial point (initial stochastic steady state)?

Sorry if it seems a bit basic; I am new to the high-order perturbation methods.
Thanks again!

At higher order, there is a difference between the shock volatility, which will determine the stochastic steady state and the ergodic mean, and the shock size for an IRF. For the first one you need to choose realistic values. For example

log(R/R_ss)=rho_r*log(R(-1)/R_ss)+rho_p*log(pi/pi_ss)+rho_y*log((y/y(-1))*(g(-1)/g_ss))+sigma_r*epsilon_r ;

with sigma_r=1 and

var epsilon_r = 1;

implies that monetary policy shocks on average move the log quarterly interest rate by 1, which is about 100 percent! That makes no sense. Scaling by 100 is not allowed for models solved at higher order.

The way to proceed is to

  1. fully calibrate the model using the correct shock standard deviations.
  2. compute the stochastic steady state based on these values.
  3. compute IRFs at the stochastic steady state for a chosen shock size. For that, you can set the shock matrix entering the simult_-function.
1 Like

Great! really appreciate your help.