Why is _steadystate.m important when estimating a model

  1. Using a steady state file is only the right option in two cases: First, if you have parameters that depend on estimated parameters and need to be updated. Let’s say you want to set the labor disutility parameter so that hours in steady state are always 0.2 and you estimate e.g. the Frisch elasticity of labor supply. Then the labor disutility parameter is a function of the Frisch elasticity and needs to be updated in every MCMC iteration. This can be easily done in a steady state file. However, an alternative would by to define the labor disutility as an expression instead of a parameter, i.e. using the pound operator # inside of the model-block. This gives the same updating. See [Bayesian Estimation and Steady State Updating)
    The second case is if you want to use a numerical solver like fsolve to compute your steady state.

  2. The check is an error indicator for Dynare’s internal steady state computation. This output is required for Dynare’s syntax, but is not needed for user-written steady state files. It appears at the beginning and end in two mutually exclusive cases, so it is only set once.

  3. If you don’t change parameters and the model is already linearized, put model(linear) and just omit the init_val-block. Dynare automatically sets the starting values to 0. Note that this does not work if constants were added to equations as is sometimes the case with Taylor rules. See also [External function in dynare 4.2)