Uncertain monetary-policy transmission lag to inflation in NK model with non-linear Rotemberg pricing

Hello Dynare community,

I’m trying to estimate a closed-economy New-Keynesian DSGE with:

  • Fully non-linear Rotemberg price adjustment costs and partial indexation (γ=0.5) in the NKPC,
  • An Taylor rule with intercept and interest-rate smoothing,
  • Capital accumulation and its Euler equation,
  • AR(1) log-shocks to TFP, preferences, mark-up, and labor supply,
  • No explicit “potential output”, my gap is x_t = ln(y_t) − ln(y_t−1)

I get IRFs to a 25 bp monetary-policy shock that:

  1. Are not hump-shaped or well-behaved (output, inflation, consumption all jump sharply and then monotonically converge),
  2. Show inflation troughing almost immediately (period 1–2) instead of over 3–6 quarters as one would expect empirically.

My questions:

  1. In a fully non-linear Rotemberg setup, should inflation exhibit a multi-quarter hump in response to a policy tightening, or is an immediate disinflation plausible?
  2. Could my NKPC calibration (φₚ, ε, γ) or the growth-rate gap definition be driving these erratic IRFs, rather than genuine economic dynamics?
  3. Are there standard diagnostics (e.g. cumulating growth IRFs, plotting log y directly, or introducing habit formation/investment adjustment costs) that help recover textbook-style hump responses?
  4. Might I have a coding oversight, for instance, mis-scaled shock magnitudes or intercept misplacement, that exaggerates and de-shapes the IRFs?
  5. Are there best-practice calibrations or model modifications (e.g. habit formation, investment adjustment costs) that restore a more realistic 2–4 quarter lag from a rate hike to disinflation?

Any advice on how to restore well-behaved, hump-shaped IRFs and a realistic 2–4 quarter inflation lag would be greatly appreciated.

Thanks in advance!

I have also attached my .mod file.
nk_v4.mod (4.3 KB)

Hi, @taherfahmi . I am relatively newbie, but from my experience it is always a good idea to log-linearize by hand and feed into the model section the log-linearized model. I personally had several bad experiences when original model throws an error, while log-linearized one works OK. I hope that after log-linearizing your model by hand you will resolve the IRF shape mismatch problem.

Thank you @Adiya1234 for your reply! I see your point, however it is my understanding that Dynare already does the log-linearization automatically when we use the command stoch_simul… Also, I don’t really know how to log-linearize by hand so that’s why I have it in non-linear form.

  1. @Adiya1234 It is almost never a good idea to manually linearize by hand except for gaining intuition. Linearization is an error-prone step that the computer does better than humans.
  2. The drop in interest rates after monetary policy shocks is not uncommon. See my reply at Inconsistent IRFs: Mixing log() and Level Equations in Dynare Model Block? - #2 by jpfeifer
  3. Of course, one cannot exclude that is it caused by wrong equations or timing errors. Shock magnitudes are irrelevant in models solved at first order.
  4. I would play around with parameter values to get a better sense for the working of the model.

Perfect, thank you Professor.