More on Blanchard Kahn


#1

The simplified RBC model below seems to satisfy BK when worked out by hand (at great personal expense :)) but Dynare balks. Since I am new to both Dynare and RBC, maybe I am missing something obvious, so any help would be appreciated:

var k, c, epsilon;
varexo u;

parameters alpha, rho, delta, rhoeps, sigma;

alpha=1/3.0;
delta = 0.025;
rho = 0.02;
rhoeps = 0.95;
sigma = 0.05;


model;

log(c) = (1-delta + epsilon(+1)*k(+1)^alpha)*log(c(+1))/(1+rho);
c+k(+1)-(1-delta)*k = epsilon*k^alpha;
log(epsilon(+1)) = rhoeps * log(epsilon)  +u(+1);

end;

initval;

k = (rho+delta)^(1/alpha);
c = rho + delta*(1-(rho+delta)^(1/alpha));
epsilon=1;
u=0;

end;

steady_state_model;
epsilon=1;
k = (rho+delta)^(1/alpha);
c = rho + delta - delta*(rho+delta)^(1/alpha);
end;

shocks;

var u; stderr  0.05;

end;

#2

Hi,

Your timing conventions are wrong for k, epsilon and u. In Dynare, the convention is that a variable appearing at date t must be decided at date t (for a stock variable, this corresponds to the end-of-period convention, while most papers use the beginning-of-period convention). See Error:The steady state contains NaN or Inf for more details on the convention for the capital stock. For the TFP, you should shift its law of motion by one period backwards.

Best,


#3

I am sorry to be a little dense. Do you mean that I should shift the indexing back by 1 on all variables, or should I just say that the “control” variable c is predetermined?

Thanks!


#4

No, the control variable c is not predetermined, its current timing is right.

Basically you should do two things:

  • fix the timing convention for k, by either shifting its index backwards by 1 in all occurrences, or declare it as predetermined
  • rewrite the last equation as: log(epsilon) = rhoeps * log(epsilon(-1)) + u;