Error message wrt Jacobian

Dear Johannes Pfeifer,

I have a Problem with the attached mod file. Dynare says that “The Jacobian contains Inf or NaN.” The variable “u” has steady state 1, such that (u-1)^2=(0)^2 may be the problem?

I am wondering if this can be the problem because variable capital utilization has been introduced as proposed here:


In fact, I guess if I would log-linearize the model by hand, the problem might not occurr?

Kind regards

% Basic RBC model
% + habit formation
% + investment adjustment costs
var Uc Ul F Fk Fl c y k z w l r i q M c_l k_l u delta Uchat Ulhat Fhat Fkhat Flhat chat yhat khat zhat what lhat rhat ihat qhat;

varexo e_z;

parameters delta0 delta1 delta2 beta alpha eta rho h phi;

delta0 = 0.025;
delta1 = 1/beta - 1 + delta0;
delta2 = 0.10;
rho    = 0.90;
alpha  = 0.3;
eta    = 1.5;
beta   = 0.95; 
h      = 0.9;
phi    = 2.0; 

model;

// (1) marginal utility wrt consumption
//Uc = 1/c;
Uc = (1-h)/(c-h*c(-1));

// (2) marginal utility wrt labor
Ul = eta/(1-l);

// (3) production function
//F = z*k(-1)^alpha*l^(1-alpha);
F = z*(u*k(-1))^alpha*l^(1-alpha);

// (4) marginal productivity of capital
//Fk = alpha*z*(l/k(-1))^(1-alpha);
Fk = alpha*z*(l/(u*k(-1)))^(1-alpha);

// (5) marginal productivity of labor
//Fl = (1-alpha)*z*(k(-1)/l)^alpha;
Fl = (1-alpha)*z*(u*k(-1)/l)^alpha;

// (6) 
M = Uc/Uc(-1);

// (7)
q = beta*(M(+1))*(r(+1)*u(+1)+(1-delta(+1))*q(+1));

// (8)
1 = q*(1-phi/2*(i/i(-1)-1)^2 -phi*(i/i(-1)-1)*i/i(-1)) + beta*M(+1)*q(+1)*phi*(i(+1)/i-1)*(i(+1)/i)^2;
//Uc = beta*(1+r(+1)-delta)*Uc(+1);

// (9) rental rate of capital
Fk = r;

// (10) output
y = F;

// (11) capital accumulation
//i = k - (1-delta)*k(-1);
k = (1-phi/2*(i/i(-1)-1)^2)*i + (1-delta)*k(-1);

// (12) closed economy identity
y = c + i;

// (13) wage
w = Fl;

// (14) MRS consumption/labor
w*Uc = Ul;

// (15) productivity shock (exogenous)
log(z) = rho*log(z(-1)) + e_z;

// (16)
delta = delta0 + delta1*(u-1) + (delta2/2)*(u-1)^2;

// (17)
delta1 + delta2*(u-1) = r;

// (18)
c_l = c/l;

// (19)
k_l = k/l;

// log-deviations from steady state
Uchat = log(Uc) - log(steady_state(Uc));
Ulhat = log(Ul) - log(steady_state(Ul));
Fhat  = log(F)  - log(steady_state(F));
Fkhat = log(Fk) - log(steady_state(Fk));
Flhat = log(Fl) - log(steady_state(Fl));
chat  = log(c)  - log(steady_state(c));
yhat  = log(y)  - log(steady_state(y));
khat  = log(k)  - log(steady_state(k));
zhat  = log(z)  - log(steady_state(z));
what  = log(w)  - log(steady_state(w));
lhat  = log(l)  - log(steady_state(l));
rhat  = log(r)  - log(steady_state(r));
ihat  = log(i)  - log(steady_state(i));
qhat  = log(q)  - log(steady_state(q));

end;

initval;
z     = 1;
r     = 1/beta - 1 + delta0;
k_l   = (alpha*z/r)^(1/(1-alpha));
w     = (1-alpha)*z*(k_l)^alpha;
c_l   = (k_l)^alpha - delta0*k_l;
l     = 1/(1+eta/(1-alpha) - delta0*eta/((1-alpha)*z*k_l^(1-alpha)));
k     = k_l*l;
i     = delta0*k;
y     = z*k_l^alpha*l;
c     = c_l*l;
F     = y;
Uc    = 1/c;
Ul    = eta/(1-l);
Fl    = w;
Fk    = alpha*z*(l/k)^(1-alpha);
M     = 1;
q     = 1;
u     = 1;
delta = delta0;

Uchat = 0; 
Ulhat = 0; 
Fhat  = 0;
Fkhat = 0;  
Flhat = 0;  
chat  = 0;  
yhat  = 0;  
khat  = 0;  
zhat  = 0;  
what  = 0;  
lhat  = 0;  
rhat  = 0;  
ihat  = 0; 
qhat  = 0;
end;

shocks;
var e_z = 1^2;
end;

steady;
//check;
stoch_simul(order = 1) chat yhat khat zhat what lhat rhat ihat qhat;

Your parameter definitions are

delta0 = 0.025;
delta1 = 1/beta - 1 + delta0;

But beta is only defined later on.

Thank you very much. This fixed my code.