Page 1 of 1

Bounded Rationality in standard growth model

PostPosted: Tue Oct 14, 2014 11:25 am
by stsp
Hello,

I want to build a model where the expected productivity shock has a bias (depending on past shocks). I have been looking in the forum and other websites, but I can't get a clear view of how to handle it. The model should be (using primes for both derivatives and next period values):

K' = f(K,Z) - C;
u'(c) = beta* E( u'(c') * f_k(K',Z') );
lZ = rho * lZ(-1) + e;
E(lZ(+1)) = rho*lZ + BIAS(lZ,lZ(-1));

I implemented this in Dynare with the following model block:

model;
-nu * l_c = log(beta) - nu * l_c(+1) + log(exp(e_lr_n) + (1-delta));
exp(l_k) = exp( l_z + alpha*l_k(-1)) + (1-delta)*exp(l_k(-1)) - exp(l_c);
l_z = rho * l_z(-1) + sigma * e1;

%E(lr(+1)):
e_lr_n = e_lz_n + log(alpha) + (alpha-1)*l_k;

%E(lz(+1)):
e_lz_n = (1-rho)*bias + rho * l_z;
bias = f(l_z,l_z(-1)); %the form of the function shouldn't matter so I left it out

Dynare does solve it, but I am wondering if it is the correct solution. Can anybody tell me if I implemented it correctly or not?

Many thanks in advance!!

Re: Bounded Rationality in standard growth model

PostPosted: Wed Oct 15, 2014 4:57 pm
by jpfeifer
Sorry, but you need to help me out here. Using primes for both derivatives and future values is confusing. Also, I have a hard time mapping the theoretical equations with abstract functional forms to your code. And in the theoretical model, lZ does not show up in any other equation. Is the system supposed to be block recursive?

Some general comments: Dynare will only use the rational expectations operator when you use a (+1) timing. Thus, you must use auxiliary variables dated contemporaneously to evaluate the biased expectations. It seems this is what you are trying to do.

Re: Bounded Rationality in standard growth model

PostPosted: Sat Oct 18, 2014 9:49 am
by stsp
Thanks Johannes for your answer! (and great job you do here at the forum :-) )

I also implemented this method in a RE model (so I replaced lz(+1) with e_lz_n) and it gave the same results as in a standard RE model, so it seems everything works fine. I was just concerned how Dynare would handle it, but I checked the lead and lags and the Jacobian and it works perfectly :D

For completeness I wrote down the model again, hopefully in a less confusing way (using primes only for future values).

By the way, I don't understand what you mean with 'block recursive'. My lz also appears in the production function (and therefore also in the return, lr, but i only need E(lr(+1))).

++++++++

-nu * lc = log(beta) + E(- nu * lc' + log(exp(lr') + (1-delta)) );

exp(lk') = exp( lz + alpha*lk) + (1-delta)*exp(lk) - exp(lc);

lz = rho * lz(-1) + sigma * e1;
lr = lz + log(alpha) + (alpha-1)*lk;

But for the expression: E( -nu*lc' + log(exp(lr') + (1-delta)) ), instead of 'rational' expectations I want to use:
E(lr') = E(lz') + log(alpha) + (alpha-1)*lk';
E(lz') = (1-rho)*bias + rho * lz;

bias = f(l_z,l_z(-1)); %the form of the function shouldn't matter so I left it out

model;
-nu * l_c = log(beta) - nu * l_c(+1) + log(exp(e_lr_n) + (1-delta));
exp(l_k) = exp( l_z + alpha*l_k(-1)) + (1-delta)*exp(l_k(-1)) - exp(l_c);
l_z = rho * l_z(-1) + sigma * e1;

%E(lr(+1)):
e_lr_n = e_lz_n + log(alpha) + (alpha-1)*l_k;

%E(lz(+1)):
e_lz_n = (1-rho)*bias + rho * l_z;
bias = f(l_z,l_z(-1));