User specified steady state in Ramsey problem

Hi all,

How can I specify a (wrong) steady state for Ramsey problem in Dynare? “steady(nocheck)” only works for normal problem. I guess it is from the over-identification of the Ramsey multipliers.

I provide Dynare with an external function that maps an instrument to other endogenous variables. Dynare 4.4.3 accepts a wrong steady state (contrary to economic intuition) after a very long iteration and solves the problem. The unstable version tells me rather quickly that it is not possible to find the steady state.

Really appreciate!


Given the bugs associated with Ramsey when using instruments and a user-provided steady state, you should not use 4.4.3 but focus on the unstable. Providing a wrong steady state will yield wrong results.

Thanks so much Johannes!

Sorry my question might not be clear enough: Is it possible to specify a steady state VALUE for endogenous variables, instruments and the multipliers directly in a Ramsey problem, given that the numerical difficulty in solving steady state?

For example I have 1 instrument, 40 endogenous variables and 40 equations in the constraint part of a Ramsey problem specified in the mod file. Dynare will create 41 FOC with 40 auxiliary variables (lagrangean multipliers) when trying to solve the steady state. Is it possible to provide the value of the 1 steady state instrument, 40 endogenous variables and setting all the 40 lagrangean multipliers to be zero? I would like dynare to solve the problem around this wrong steady state. The steady state cannot be found with established routines, even if I already specify the function: steady state instrument → steady state of 40 endogenous variables. A wrong steady state might reduce the performance of the approximation, but it still provides some insights of the policy.

We can require Dynare solving a non-Ramsey problem around any user specified steady state value by just adding steady(nocheck). But this does not work for Ramsey. Dynare still starts iterating to find the corresponding steady state multipliers. I conjecture modifying oo_.steady_state might work because stoch_simul only use oo_, M_, and options_. Is it correct?

Many thanks!


no it is not possible to force Dynare to approximate around a wrong steady state for the Ramsey problem. I don’t think that we should allow it. Not all Ramsey problem have a steady state and the information obtained from an approximation around a “wrong” steady state is of unknown quality. It may very well be wrong at 1st order. If you want to change the Dynare code, the computation of the steady state of a Ramsey problem is done in dyn_ramsey_static.m



One more question: would it be possible to compute the steady state if your model for a given value of the policy instrument (or another variable closely linked to it) and therefore ignoring the Lagrange multipliers? This would greatly simplify the numerical task of computing the steady state of the Ramsey problem, shrinking it to a one unknown nonlinear problem.

Many thanks Michel! I will have a look at the dyn_ramsey_static.m.

In terms of your question. Yes I have programmed a function so that if we have the steady state policy instrument value the correct steady state endogenous variable value can be computed. As the system are linear in the multipliers, I believe Dynare is indeed solving a one unkown non-linear problem. However, with this function, Dynare 4.4.3 find a (wrong) steady state. When I set the initial value of the instrument to the final accepted value (up to 16 digits precision) it takes same long time for dynare to iterate and find the (wrong) steady state. What’s more, the unstable version gives explicit information that the steady state cannot be computed after a much shorter iteration.

A follow up question, is it possible to change solution algorithm for looking for the steady state in the Ramsey problem? steady(solve_algo=) is not working for Ramsey. Thank you!

Dear Dynare Team: I have a related question.
I want to obtain the values of the Lagrange multipliers for a Ramsey problem, for which I know the Ramsey steady state values of the (original) model variables. It should be a simple linear problem for Dynare to find the Lagrange multipliers, but for some reason it diverges when starting from (arbitrary) values close to zero for the multipliers. I think Dynare also searches for the original variables values, interpreting what I feed it as initial guesses only. Is there a way I can tell Dynare that what I am supplying is the actual Ramsey steady state, and ask it to “only” solve for the multipliers that go with it?

Hi Anton,

you are right this is what should happen. Do you enter the steady state values that you know as numbers or as formulas in a steady_state_model block? I would like to see the code in order to debug what is going on. If you prefer you can send it directly to my email address

See also the example linked at