// OPTIMAL RAMSEY POLICY

var y c k b d l p w rb z tau;
varexo e;

parameters beta delta alpha dbar sigma psi rho rb_ss bk_ss l_ss k_ss y_ss w_ss b_ss;


%----------------------------------------------------------------
% 2. Calibration 
%----------------------------------------------------------------

alpha   = 0.33;
beta    = 0.99;
delta   = 0.023;
psi     = 2.36;
rho     = 0.95;
sigma   = 2;

%----------------------------------------------------------------
% 3. Steady state values 
%----------------------------------------------------------------

bk_ss   = (2/3*(1/beta-1))^(1/2);
rb_ss   = 1/2*(bk_ss)^2;
l_ss    = 0.33;
k_ss    = l_ss*((1/beta-(1-delta)-bk_ss^2)/alpha)^(1/(alpha-1));
b_ss    = bk_ss*k_ss;
y_ss    = k_ss^alpha*l_ss^(1-alpha);
w_ss    = (1-alpha)*(k_ss/l_ss)^(alpha);
dbar    = 0.02*y_ss;
d_ss    = dbar;
c_ss    = y_ss-rb_ss*b_ss-delta*k_ss;
p_ss    = beta*d_ss/(1-beta);


%----------------------------------------------------------------
% 3. Ramsey model 
%----------------------------------------------------------------

model; 
p = beta*(c(+1)/c)^(-sigma)*(d(+1)+p(+1));
psi/(1-l) = w*(c^(-sigma));
rb = (1/2)*(b(-1)/k(-1))^2;
1 = beta*(c(+1)/c)^(-sigma)*(((1-tau(+1))*alpha*exp(z(+1))*(k/l(+1))^(alpha-1)+(b/k)^3)+1-delta);
1 = beta*(c(+1)/c)^(-sigma)*(((1-tau(+1))*3/2*(b/k)^2)+1);
w = (1-alpha)*exp(z)*(1-tau)*(k(-1)/l)^(alpha);
y = exp(z)*(k(-1)^alpha)*(l^(1-alpha));
d - dbar = 0;
c = y+b-k+(1-delta)*k(-1)-(1+rb)*b(-1);
z = rho*z(-1)+e;
end;

%----------------------------------------------------------------
% 3. Computation
%----------------------------------------------------------------

initval;
  rb = rb_ss;  
  k = k_ss;
  l = l_ss;
  y = y_ss;
  w = w_ss;
  b = b_ss;
  d = d_ss;
  p = p_ss;
  z = 0;
  tau  = 0;
end;

shocks;
var e = 0.001;
end;
resid(1);
steady;

planner_objective ((c^(1-sigma))-1/1-sigma) + (psi*log(1-l));

ramsey_policy(planner_discount=0.99, irf=12, hp_filter=1600);
