% "Econ 605 - Pset IV"
% Maximum likelihood estimation of parameters
%
% Code by Diego Vilán

%----------------------------------------------------------------
% 0. Housekeeping:
%----------------------------------------------------------------

close all;
clc;

%----------------------------------------------------------------
% 1. Define variables:
%----------------------------------------------------------------

var y, c, k, n, z, G, eta;
varexo eeta, ez, eg;

parameters P, beta, delta, theta, k_bar, y_bar, c_bar, n_bar, G_bar, eta_bar, rhoeta, rhoG, rhoz;


%----------------------------------------------------------------
% 2. Calibration - Deep parameters:
%----------------------------------------------------------------

theta = 0.36;
beta  = 0.99;
delta = 0.025;
n_bar = 0.3;
rhoz = 0.9;
rhoG = 0.9;
rhoeta = 0.9;


%----------------------------------------------------------------
% 3. Calibration - Parameters:
%----------------------------------------------------------------

P = (1/theta*(1/beta - (1-delta)))^1/theta-1;
k_bar = P*n_bar;
y_bar = k_bar^theta*n_bar^(1-theta);
G_bar = 0.17*y_bar;
c_bar = ybar - delta*k_bar - G_bar;
eta_bar = ((1-theta)*(1-n_bar)*(k_bar/n_bar)^theta/c_bar;


%----------------------------------------------------------------
% 4. The Model:
%----------------------------------------------------------------

model; 

//----------Equation 20----------//
1 = beta*(c/c(+1))*(theta*exp(z(-1))*(k/n(+1))^(theta-1)+(1-delta));

//----------Equation 21----------//
(1-theta)*exp(z(-1))*((k(-1)/n)^theta) = eta*c/(1-n);

//----------Equation 22----------//
exp(z(-1))*k(-1)^theta*n^(1-theta)= c + k + (1-delta)*k(-1) + G;

//----------Equation 23----------//
z = rhoz*z(-1) + ez;

//----------Equation 24----------//
G = (1-rhoG)*G_bar + rhoG*G(-1) + eg;

//----------Equation 25----------//
eta = (1-rhoeta)*eta_bar + rhoeta*eta(-1) + eeta;

end;

%----------------------------------------------------------------
% 5. Computation:
%----------------------------------------------------------------

initval;
c = c_bar;
k = k_bar;
y = y_bar;
eta = eta_bar;
G = G_bar;
n = n_bar;
end;

steady;
check;

shocks;
var ez; stderr .02;
var eg; stderr .02;
var eeta; stderr 0.02;
end;



%----------------------------------------------------------------
% 6. Simulation Results:
%----------------------------------------------------------------

stoch_simul(hp_filter = 1600, order = 1, irf=32);
//stoch_simul(simul_seed=1, irf=7);



