%----------------------------------------------------------------

close all

%----------------------------------------------------------------
% 1. Defining variables
%----------------------------------------------------------------

var y c k i l w r g ig d h  z;
varexo e eg eh;
parameters beta psi delta alpha rho rhoh rhog gamma sigma sigmag sigmah
pi tau fi theta;

%----------------------------------------------------------------
% 2. Calibration
%----------------------------------------------------------------

alpha   = 0.4; 
beta    = 0.9902;
delta   = 0.00850715;
psi     = 2.597;
rho     = 0.895385;
rhog    = 0.928410;
rhoh    = 0.835625;
sigma   = 0.008009;
sigmag  = 0.051479;
sigmah  = 0.012603;
pi      = 0;
tau     = 0.35;   
fi      = 0.3594;
theta   = 0; %spurious convergence with 0.12.
%----------------------------------------------------------------
% 3. Model
%----------------------------------------------------------------

model;
  (1/(c+pi*g)) = beta*(1/(c(+1)+pi*g(+1)))*(1+(1-tau)*(r(+1)-delta));
  psi*(c+pi*g)/((1-l)*(1-fi)) = w;
  c+i+g+ig = y;
  y = (k(-1)^alpha)*(exp(log(z)))*(l^(1-alpha))*(d(-1)^theta);
  w = y*(1-alpha)/l;
  r = y*alpha/k;
  i = k-(1-delta)*k(-1);
  log(z) = rho*log(z(-1))+e;
  log(g) = rhog*log(g(-1))+eg;
  ig = d-(1-delta)*d(-1);
  h = rhoh*h(-1)+eh;  
  ig+g = tau*(r-delta)*k(-1)+fi*(w*l)-h;
 end;

%----------------------------------------------------------------
% 4. Computation
%----------------------------------------------------------------

initval;
  k = 9;
  c = 0.76;
  l = 0.4;
  w = 2.07;
  r = 0.03;
  z = 1;
  e = 0;
  g = 1;
  eg = 0;
  h = 0;
  eh = 0;
  d = 2;
  
end;

shocks;
var e = sigma^2;
var eg = sigmag^2;
var eh = sigmah^2;
end;

steady;

%stoch_simul(periods=1000,irf=60,ar=7,simul_seed=3);
stoch_simul(conditional_variance_decomposition = 1);
datatomfile('simuldataRBC',[]);
return;