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

the code is written as follows:

var y c i a k n r_k w q r_d r_l r_e;
varexo e_a;
parameters theta alpha beta delta chi phi rho_a sigma_a;

theta=7.5;
alpha=0.5;
beta=0.9937;
delta=0.025;
chi=1;
phi=2;
rho_a=0.9;
sigma_a=0.01;

model;
theta*n^chi=w/c;
1/c=beta/c(+1)*r_d;
y=a*k^alpha*n^(1-alpha);
r_k=alpha*a*k^(alpha-1)*n^(1-alpha);
w=(1-alpha)*a*k^(alpha)*n^(-alpha);
k(+1)=(1-phi/2*(i/i(-1)-1)^2)*i+(1-delta)*k;
1=q*(1-phi/2*(i/i(-1)-1)^2-phi*(i/i(-1)-1)*i/i(-1))+beta*c/c(+1)*q(+1)*phi*(i(+1)/i-1)*(i(+1)/i)^2;
r_e(+1)=(r_k(+1)+q(+1)*(1-delta))/q;
r_d=r_l;
r_e(+1)=r_d;
y=c+i;
log(a)=rho_a*log(a(-1))+e_a;
end;

initval;
a=1;
r_d=1/beta;
r_l=r_d;
r_e=r_d;
q=1;
r_k=r_e*q-(1-delta)*q;
w=(1-alpha)*a*(r_k/(a*alpha))^(alpha/(alpha-1));
n=((w/theta)*(1/(w/(1-alpha)-delta*(w/(a*(1-alpha)))^(1/alpha))))^(1/(1+chi));
c=w/(theta*n^chi);
k=(w*n^alpha/(a*(1-alpha)))^(1/alpha);
i=delta*k;
y=c+i;
end;

resid(1)
steady;
check;

shocks;
var e_a=sigma_a^2;
end;

stoch_simul(order=1,irf=25);

the runing is alway failed with “There are 4 eigenvalue(s) larger than 1 in modulus
for 6 forward-looking variable(s) The rank condition ISN’T verified!”

can u tel lme why? thanks a lot.

Hi Colin_YE,

You should check the timing of your capital stock, which does not seem to follow the convention in Dynare.
It should be more like:

k=....k(-1)

and hence capital ought to enter the production function as k(-1) for consistency of notation.
Try and review the timing in your .mod file :slightly_smiling_face:

Given that you are consistently using the stock at the beginning of period notation, use the command

predetermined_variables k;
1 Like

thank you jpfeifer, but when I add “predetermined_variables k;” to the mod file, it still does not work, and the output is same, which prints “There are 4 eigenvalue(s) larger than 1 in modulus for 5 forward-looking variable(s) The rank condition ISN’T verified!” and I wonder if my dynare version is OK, can you help me?

thank you I tried to change “y=ak^alphan^(1-alpha);” to “y=ak(-1)^alphan^(1-alpha);” but it still does not work. Can you help me?

You need to fix your timing. k needs to be defined as predetermined. Also,

r_e(+1)=(r_k(+1)+q(+1)*(1-delta))/q;

is most probably not a proper definition.