%----------------------------------------------------------------
% 1. Defining variables
%----------------------------------------------------------------

var c lab y k z;
varexo e;

parameters alp bet tau the del rho s;
% the = psi, tau = phi


%----------------------------------------------------------------
% 2. Calibration
%----------------------------------------------------------------

alp   = 0.33;
bet    = 0.975;
tau     = 2;
the     = 0.5;
del   = 0.06;
rho     = 0.9;
s = 0.01;

%----------------------------------------------------------------
% 3. Model
%----------------------------------------------------------------

model; 
  (c^the*(1-lab)^(1-the))^(1-tau)/c = bet*((c(+1)^the*(1-lab(+1))^(1-the))^(1-tau)/c(+1))* 
    (1+alp*exp(z(-1))*k(-1)^(alp-1)*lab^(1-alp)-del); 
  c = the/(1-the)*(1-alp)*exp(z(-1))*k(-1)^alp*lab^(-alp)*(1-lab);
  k = exp(z(-1))*k(-1)^alp*lab(-1)^(1-alp)-c(-1)+(1-del)*k(-1);
  y = exp(z)*k^alp*lab^(1-alp);
  z = rho*z(-1)+s*e;
end;

%----------------------------------------------------------------
% 4. Computation
%----------------------------------------------------------------

initval;
e = 0;
z = 0;
k = 1;
y = 0.3^0.67;
lab = 0.3;
c = 1;
end;

shocks;
var e; stderr 1;
end;

estimated_params;
alp, beta_pdf, 0.33, 0.05; 
bet, beta_pdf, 0.975, 0.01;
tau, gamma_pdf, 2, 2;
the, beta_pdf, 0.5, 0.1;
del, beta_pdf, 0.06, 0.05;
rho, beta_pdf, 0.9, 0.05;
s, inv_gamma_pdf, 0.01, 4;
end;


varobs y;
estimation(datafile=gdp, mh_drop=0.5, mh_replic=50000,mh_nblocks=3, mh_jscale=0.5,
   filtered_vars);

