Difference steady_state_model block and .m file

Hi all,

what is the difference between using the “steady_state_model;” block or using the external “steadystate.m” file to find a steady state in a model?



The steady state model block is more efficient is more efficient than the file user written steady state Matlab routine. By more efficient I mean that the steady state will be quicker if the steady state routine is written by Dynare. The problem is that this approach is less flexible. For instance you cannot use loops or conditional statements (which is very useful to discard parameter vectors that imply non sensible long run restrictions) in the steady state model block.

To understand the efficiency gain, just look at the content of the *_steadystate2.m file generated by Dynare when a steady state block is present.

Part of the efficiency problem comes from the use of eval in loops (to read the parameter values, to update the parameter values and to fill the vector of steady state values). Everybody seems to use a file I write years ago (when we introduced the possibility to use a steady state file), we can do a lot better by avoiding the loops and and the many calls to eval (which has a cost).

We can do even better by writing directly something equivalent to what Dynare is doing with the steady state block. I managed to do that in a Matlab/octave toolbox. I still need to fix something and to provide an interesting example. I will publish the code in the coming weeks (and I will announce it on the forum).


1 Like

Thanks so much for the reply, Stephane.