STEADY_STATE() command in perfect foresight simulations

Hi together,

Since in perfect foresight simulations with permanent shocks the steady state of the model changes, the use of STEADY_STATE() in the model block is ambiguous. This issue has already been raised in the following GitHub forum: The discussion has not come to a conclusion, though, and I wonder whether this issue has been resolved?

To better outline the problem, I will make a quick example:
Let’s assume the initial and end steady state of our permanently shocked simulation is init_SS and end_SS. Let’s assume further, that the monetary policy rule in the model block features a term " GDP / STEADY_STATE(GDP) ", the idea being that the nominal interest rate moves with deviations of GDP to its steady state. When Dynare calculates the perfect foresight solution, does it assume that STEADY_STATE(GDP) = init_SS (GDP) or = end_SS(GDP)? Does Dynare even switch the interpretation of STEADY_STATE(GDP) from init_SS (before the shock; up t=0 in case of a shock at t=0) to end_SS after the shock?

It would be great if this could be cleared up.

Dynare should compute the steady state conditional on the value of the exogenous variables (which presumably differ here). But I am not sure that correctly works. If you have an example file to check the behavior that would be great.

I have attached a very simple example file that illustrates what I found out in the meantime with the help of a colleague, namely that STEADY_STATE switches in the period that a change in the exogenous variable is known. The example file should be self-explanatory.

Note, you can run the code for ANTICIPATION = 0 where the permanent shock is unanticipated or ANTICIPATION = 1 where (if I coded this correctly), the shock is permanent but happens only at t=10. Also in this latter case STEADY_STATE() switches to the final SS in t=1.

PermShock.mod (503 Bytes)

Thank you very much for this. I created a ticket for the documentation at Better document behavior of steady_state operator (#1605) · Issues · Dynare / dynare · GitLab

Is your original question solved?

Almost! One small question remains about the anticipated permanent shock and how to implement this in Dynare. Is the following approach correct?

  1. Specify initval and endval. For the sake of this argument assume the exogenous variable exo = 0 in the initval and exo=1 in the endval.
  2. Specify a shock from t=1 until t=9 with exo = 0 in order to have the permanent shock take place in period 10 and be anticipated.

Let me know if this is the right approach. And thanks a lot!


Yes, that should work. To be sure, call perfect_foresight_setup and then check whether oo_.exo_simul looks the way you intended.