Lack of one forward looking variable, The rank condition ISN'T verified!

Dear all:
I met a problem when I compute a model using dynare:
The error message I recieved is as follows:
There are 9 eigenvalue(s) larger than 1 in modulus
for 8 forward-looking variable(s)

The rank condition ISN’T verified!

MODEL_DIAGNOSTICS: No obvious problems with this mod-file were detected.
I add MODEL_DIAGNOSTICS, but it find no obviour problems.
And the message seems to say that I need one more forward looking variable.
In the model, TFP shock, and monetary policy shock are predetermined, I can not change the timing to make them forward looking.
And, I feel like the parameters are fairly resonable.
I tried to change other variables, like debt b_t, or profit X_, but the IRF is very wierd.
I attached my code and parameter values below.
Can anyone help me see what’s is wrong? :joy::joy::joy:
Thanks very much in advanceparameter.mat|attachment (7.0 KB) model_DE.mod (7.9 KB)parameter.mat (7.0 KB)

Hi, cmarch:
Thanks for reading my question. I did not see your reply.
I re-uploaded the parameter value file, now you can download both the parameter file and mod file and run them.
Can you help me see what is wrong with my code? I have been looking at them for many days, but just can not find the problem.:joy::joy:
Thank you very much.

Hi jun,

First, your monetary policy rule was not correctly specified. It should be more like (I use the fact that your inflation rate in steady state piss should be zero so exp(0)=1)

exp(r) = exp(r(-1))^r_R*((exp(piss)/beta)*(exp(pi)/exp(piss))^(1+r_pi)*(exp(y)/exp(yss))^r_Y)^(1-r_R)*exp(sigma_R*er);

Also, use

resid;
steady(solve_algo=4,maxit=1000);

Now, all residuals are zero (see attached file).

Concerning the rank condition, I suppose you should check you do not have redundant equations while you are missing ‘important’ equations… For instance, the equation ‘operating profits’ does not seem to be a very useful one, while maybe you left out something more important.

In particular, I would especially check the pricing block of your model :slightly_smiling_face:. If I were to guess, your issues are less of timing and more related to the equations (and lack thereof) relating to the pricing block.

model_DE.mod (8.0 KB)

Hi, cmarch:
Thank you so much for your help.
For the monetary policy, I am considering a case in which steady state inflation rate is slightly positive to match the data, so piss = 1.005 in the model.
I will double check those equations.
Thank you agian.

Check the timing.
exp(b(+1)) = theta_DE*exp(x);
seems strange if b was predetermined.

Hi, jpferfer:
Thank you very much for your reply.
The timing in exp(b(+1)) = theta_DEexp(x) is not what I want, but if I change the equation to exp(b) = theta_DEexp(x) (this is the right timing I think) , the dynare still report error message as follows (I attached the new .mod file for your reference):

There are 8 eigenvalue(s) larger than 1 in modulus
for 7 forward-looking variable(s)

The rank condition ISN’T verified!
model_DE.mod (7.4 KB) parameter.mat (7.0 KB)

Now, I am still lack of one forward looking variable.
:joy::joy::joy:

There is one unique correct timing. You cannot simply change the timing of one equation to counteract the effect of a mistake somewhere else in your model.

Thanks very much for your reply.
That 's true, it is not right to just change the timing of one equation.
The problem here is that if I want to keep the timing that I think is right, ( TFP shock a_t, monetary policy shock r_t are predetermined, and borrowing b_t, profit x_t are not forward looking), then the rank condition is not satisfied.
It is just a small model with 16 equations, I still can not find the problem of the code.
Can you help me take a look? I have been struggling in debug for many days.
Do you know any systematic way of dealing with these kind of problem? or some standard procedures to follow?
Dynare is like a black box, once the problem occur, there is no clear guidence for us to deal with it.
Thanks very much in advance.

This is not about Dynare, but about your model. The timing in Dynare reflects the variable choices in the model. I can’t really follow your logic in