Page 1 of 2

Ramsey - Assertion failed

PostPosted: Thu Oct 07, 2010 4:15 pm
by cel
Hi,
I have a non linear model and I would like to compute the Ramsey policy in it.

In short, my code is
var (...) ;
varexo eps_gamma ;
parameters (...);
load_params_and_steady_state(ParamMatrix);

model;
(...) //I removed the monetary policy: n equations, n+1 variables
end;

initval;
(...)
end;

shocks;
var eps_gamma = 1;
end;

planner_objective((sigmac/(sigmac-1))*(c-bc*c(-1))^((sigmac-1)/sigmac) - (1/(1+sigmal))*lh^(1+sigmal));
ramsey_policy(planner_discount=0.99,order=1);



I've got the following error message:


Starting Dynare (version 4.1.2).
Starting preprocessing of the model file ...
Reading ParamMatrix.
Assertion failed: lag == 0, file DataTree.cc, line 82

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

??? Error using ==> dynare at 126
DYNARE: preprocessing failed


It seems that it does like my welfare. If I put ln(c) instead, I have:



Starting Dynare (version 4.1.2).
Starting preprocessing of the model file ...
Reading ParamMatrix.
Found 85 equation(s).
Evaluating expressions...done
Computing static model derivatives:
- order 1
Computing dynamic model derivatives:
- order 1
- order 2
Computing static model derivatives:
- order 1
- order 2
Processing outputs ...done
Preprocessing completed.
Starting MATLAB/Octave computing.

Warning: Log of zero.
> In model_FA_NL_ZLB at 680
In dynare at 132
Warning: Rank deficient, rank = 0, tol = 1.#INFe+000.
> In dyn_ramsey_static_ at 106
In dynare_solve at 72
In dr1 at 116
In resol at 128
In stoch_simul at 42
In ramsey_policy at 25
In model_FA_NL_ZLB at 708
In dynare at 132
STEADY: numerical initial values incompatible with the following equations
20 25 35 86

??? Error using ==> dynare_solve at 82
exiting ...

Error in ==> dr1 at 116
[oo_.steady_state,info1] = dynare_solve('dyn_ramsey_static_', ...

Error in ==> resol at 128
[dr,info,M_,options_,oo_] = dr1(dr,check_flag,M_,options_,oo_);

Error in ==> stoch_simul at 42
[oo_.dr, info] = resol(oo_.steady_state,0);

Error in ==> ramsey_policy at 25
info = stoch_simul(var_list);

Error in ==> model_FA_NL_ZLB at 708
ramsey_policy(var_list_);

Error in ==> dynare at 132
evalin('base',fname) ;



I checked for the error:
Warning: Log of zero.
> In model_FA_NL_ZLB at 680
In dynare at 132

I see that one variable equals infinity at the s.s, but I do not know which one is, I couldn't find the variables' order since oo_.dr does not exist.

So my questions would be:
- why doesn't it accept my first welfare,
- how can I find the order of variables (if I am right, the variables are re-organized classified by predetermined,...)

Thanks for your help!
Céline

Re: Ramsey - Assertion failed

PostPosted: Thu Oct 07, 2010 4:47 pm
by jpfeifer
Could you please post the mod-file. Otherwise it is hard to answer your questions.

Re: Ramsey - Assertion failed

PostPosted: Fri Oct 08, 2010 7:41 am
by cel
Hi,
Please find enclosed the .mod file and the load_params_and_steady_state file. Thanks for the reply, please, let me know if you have any idea of what's happening.
Best,
Céline

Re: Ramsey - Assertion failed

PostPosted: Fri Oct 08, 2010 8:28 am
by jpfeifer
If you comment out the Ramsey steps, Dynare tells you that there are more endogenous variables than equations.

Re: Ramsey - Assertion failed

PostPosted: Fri Oct 08, 2010 9:05 am
by cel
yes, I know. But, in my file, I didn't comment any Ramsey steps, right? (The log objective is in comment, as an additional exercise that I mentionned in my first message).
I wrote (line 272):


planner_objective((sigmac/(sigmac-1))*(c-bc*c(-1))^((sigmac-1)/sigmac) - (1/(1+sigmal))*lh^(1+sigmal));
ramsey_policy(planner_discount=0.99,order=1);



Do I miss one step?

I've got the error message:

Starting Dynare (version 4.1.2).
Starting preprocessing of the model file ...
Reading ParamMatrix.
Assertion failed: lag == 0, file DataTree.cc, line 82

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.


I don't understand what does it mean...

Thanks again
Céline

Re: Ramsey - Assertion failed

PostPosted: Fri Oct 08, 2010 11:46 am
by jpfeifer
I am trying to tell you that you have to fix your model before doing the Ramsey stuff. As long as the model does not run, you cannot continue to evaluate optimal policies. For this purpose, comment out the two lines you mention and then try to fix the model.

Re: Ramsey - Assertion failed

PostPosted: Fri Oct 08, 2010 1:55 pm
by cel
Sorry, it seems that the ParamMatrix file that I send you was broken.
Enclosed, you can find the ParamMatrix that you need to run the .mod file.
The error message still persists.
Thanks,
Céline

Re: Ramsey - Assertion failed

PostPosted: Mon Oct 11, 2010 12:33 pm
by SébastienVillemot
Hi,

The error comes from the fact that, in the planner objective, you refer to a variable which is not at current period: c(-1)

This is not currently not allowed.

A workaround is to introduce a new variable like “c1 = c(-1);”, and use “c1” in the objective instead of “c(-1)”.

I will make a change so that the error message is more explicit in the future.

Best,

Re: Ramsey - Assertion failed

PostPosted: Mon Oct 11, 2010 1:15 pm
by cel
It works, thanks a lot Sébastien!
Best,
Céline

Re: Ramsey - one more question

PostPosted: Mon Oct 11, 2010 8:34 pm
by cel
I passed the first step, it (almost) runs. I have one more question (problem)...

Imposing (with bc=0):
planner_objective(ln(c-bc*clag) - (1/(1+sigmal))*lh^(1+sigmal));
ramsey_policy(planner_discount=1,order=1,irf=30) y R c pip;

I have the following error message now:

??? Function 'mtimes' is not defined for values of class 'logical'.

Error in ==> mtimes at 18
[varargout{1:nargout}] = builtin('mtimes', varargin{:});

Error in ==> dr1 at 127
info(2) = check1'*check1;

Error in ==> resol at 128
[dr,info,M_,options_,oo_] = dr1(dr,check_flag,M_,options_,oo_);

Error in ==> stoch_simul at 42
[oo_.dr, info] = resol(oo_.steady_state,0);

Error in ==> ramsey_policy at 25
info = stoch_simul(var_list);

Error in ==> model_FA_NL_ZLB1 at 585
ramsey_policy(var_list_);

Error in ==> dynare at 132
evalin('base',fname) ;


The model runs perfectly when I compute the IRFs (stoch_simul). I computed the s.s analytically and dynare is able to compute it when I use steady; (for a given taylor rule)
I seems that Dynare is not able to compute the s.s when I ask him to compute the Ramsey optimal policy (I removed the taylor rule from the model). I tried with different calibrations, discount factor and objective function, I still have this error message.

I enclose again the codes if you want to run it (first, 'dynare ParamValue' and second 'dynare model_FA_NL_ZLB1). Do you have any clue about what's going on? Sorry about pointing out all these problems...

Thanks!
best,

Re: Ramsey - Assertion failed

PostPosted: Mon Oct 11, 2010 9:15 pm
by jpfeifer
I can't run ParamValue as funx2 is missing. However, if your conjecture is correct, Dynare has trouble computing the steady state when varying the parameters during the search for optimal parameters. If you have analytical results for your steady state and it depends on these parameters, write a separate steady state file and feed it to Dynare. Dynare then is able to compute the steady state for each parameter combination. See the manual and search the forum on how to create such a steady state file.
With the new unstable Dynare version, there is even a way to let Dynare create such a steady state file. Hope this helps.

Re: Ramsey - Assertion failed

PostPosted: Tue Oct 12, 2010 7:28 am
by cel
Thanks you very much, I will try that! Hope it will work.
Please, find enclosed funx2.m if you are interested in. Sorry for the omission...
Best,
Céline

Re: Ramsey - Assertion failed

PostPosted: Tue Oct 12, 2010 5:04 pm
by cel
Dear,
I still have one more question.

I add the _steady_state.m file and now, Dynare is able to find the steady state.

However, when I run the Ramsey policy, I obtained the following error message :

??? Reference to non-existent field 'instruments'.

Error in ==> dr1 at 89
instruments = options_.instruments;

Error in ==> resol at 128
[dr,info,M_,options_,oo_] = dr1(dr,check_flag,M_,options_,oo_);

Error in ==> stoch_simul at 42
[oo_.dr, info] = resol(oo_.steady_state,0);

Error in ==> ramsey_policy at 25
info = stoch_simul(var_list);

Error in ==> model_FA_NL_ZLB at 582
ramsey_policy(var_list_);

Error in ==> dynare at 132
evalin('base',fname) ;


It seems that it comes from the fact that options_.steadystate_flag = 1.
If I work with the small example on Ramsey available on the websiite, I have that options_.steadystate_flag = 0.

I don't know what is this option options_.steadystate_flag... Is it due to the s.s file that I added? What are the instruments?

The codes are enclosed (first 'dynare Paramvalue', second 'dynare model_FA_NL_ZLB')
Thanks for your help, sorry for disturbing you with all these problems....
Best,
Céline

Re: Ramsey - Assertion failed

PostPosted: Thu Oct 14, 2010 6:41 am
by MichelJuillard
Dear Celine,

Dynare computes the solution of the Ramsey problem with a local approximation around the steady state UNDER Ramsey policy. For complicated models such as yours, this steady state can't be computed in advance and one needs to solve the static version of all the equations of the first order conditions of the Ramsey problem.

In some cases, it is possible to provide an analytical solution for the steadystate, conditional on the value of the instrument. It is these equations that must be listed in _steadystate.m, the value of the instrument is then passed in argument ys.

Unfortunately, this is still under development and documentation is lacking. If you send us the equations for the steady state conditional on the value of r or pip, we will help you with it. Email may be easier than the forum for that purpose.

Best,

Michel

Re: Ramsey - Assertion failed

PostPosted: Thu Oct 14, 2010 9:13 am
by cel
Dear Michel,
thanks a lot for the quick reply. I will work on it and let you know if I get the FOC.
best,
Celine