%The role of investment-specific technological change in the business cycle

% Endogenous Variables.

var y c ke ks is ie i re rs w l h ae as a tau z q eta ;

% Exogenous Variables

varexo e;

% Parameters

parameters  alphae alphas beta gammaq gammaz phie phis tauk taul theta omega g bh_omega deltas rho sigma kappae kappas bh;


% Values of the parameters

beta = .97;
g = 1.0124;
theta = .40;
bh_omega = .20;
alphae = .18;
alphas = .12;
tauk = .53;
gammaq = 1.032;
gammaz = 1.004;
phi = 1.50;
taul = .40;
omega = 1.59;
rho = .64;
sigma = .035;
deltas = .056;
kappae = 1.0463;
kappas = 1.0124;
phie = 1.50;
phis = 1.60214;
bh =(.20)^(1/omega);

% Value of endogenous variables (stationnary)

zss = 1;
qss = 1;
hss = .8;
ksss= 2.324;
lss = .24;
kess=(((1-tauk)*alphae*zss*(ksss^alphas)*(lss^(1-alphae-alphas))*(hss^alphae))/((1/(beta*qss))-((1-(bh_omega/omega))/qss)))^(1/(1-alphae));
yss=zss*(hss*kess)^(alphae)*ksss^(alphas)*lss^(1-alphae-alphas);
isss=deltas*ksss;
iess=((bh_omega/omega)*kess)/qss;
wss=(1-alphae-alphas)*yss/lss;
ress=(alphae)*yss/kess;
rsss=(alphas)*yss/ksss;
tauss= tauk*((ress*hss*kess)+(rsss*ksss))+(taul*wss*lss);
aess= phie*(((1-kappae)/qss)*kess)^2/(kess/qss);
asss= phis*((1-kappas)*ksss)^2/ksss;
iss = iess+isss;
ass = aess+asss;
css = yss*(1-taul)*(1-alphae-alphas)*((theta*(1-lss))/((1-theta)*(lss)));
     

% Modèle

model; 
  (1/c) = beta*(1/c(+1))*((1-tauk)*(h(+1)^alphae)*alphae*(ke^(alphae-1))*(ks(+1)^alphas)*(exp(z(+1))*l(+1))^(1-alphae-alphas)+((1-(h(+1)^omega))/omega)*exp(q-q(+1)));
  (1/c) = beta*(1/c(+1))*((1-tauk)*alphas*(ks^(alphas-1))*((h(+1)*ke(+1))^alphae)*(exp(z(+1))*l(+1))^(1-alphae-alphas)+(1-deltas)*exp(q-q(+1)));
  c/(1-l) = (theta/(1-theta))*(1-taul)*(1-alphae-alphas)*((h*ke(-1))^alphae)*(ks(-1)^alphas)*(exp(z)^(1-alphae-alphas))*(l^(-alphae-alphas));
  (y/ke) = bh_omega/(alphae*(1-tauk)*q);
  y = c+ie+is+a;
  a = ae+as;
  i = ie+is;
  y = ((h*ke(-1))^alphae)*(ks(-1)^alphas)*(exp(z)*l)^(1-alphae-alphas);
  ks = (1-deltas)*ks(-1)+is;
  ke = (1-deltas)*ke(-1)+exp(q)*ie;
  re = alphae*((h*ke)^(alphae-1))*(ks(-1)^alphas)*(exp(z)*l)^(1-alphae-alphas);
  rs = alphas*((h*ke(-1))^alphae)*(ks^(alphas-1))*(exp(z)*l)^(1-alphae-alphas);
  w  = ((h*ke(-1))^alphae)*(ks(-1)^alphas)*(exp(z)^(1-alphae-alphas))*(l^(-alphae-alphas));
  tau= tauk*(re*h*ke(-1))+(rs*ks(-1))+(taul*w*l);
  ae = exp(eta)*phie*((ke/q)-(kappae*ke(-1)/q))^2/(ke(-1)/q); 
  as = phis*(ks-(kappas*ks(-1)))^2/(ks(-1));
  q = gammaq+eta;
  eta = rho*eta(-1)+e;
  z = gammaz+e;
end;


initval;
l = lss;
i = iss;
ie= iess;
is= isss;
y = yss;
ke = kess;
ks = ksss;
c = css;
z = zss;
q = qss;
re=ress;
rs=rsss;
w = wss;
h =hss;
tau =tauss;
ae =aess;
as =asss;
a  = ass;

end;
steady;
check;

% Shocks

shocks;
    var e = sigma;
end;

% Simulation

steady;
stoch_simul(periods=20100) y c q ie is i;