% Basic 5-period OLG Model 


close all;

%----------------------------------------------------------------
% 1. Defining variables
%----------------------------------------------------------------

var Y c1 c2 c3 c4 c5 k2 k3 k4 k5 n1 n2 n3 K N w r B C i;
predetermined_variables k2 k3 k4 k5;
varexo z;

parameters b a e d T J ta g;  

%----------------------------------------------------------------
% 2. Calibration
%----------------------------------------------------------------

b      = 1.011;                  % discount factor
a      = 0.36;                   % capital share
e      = 4;                      % risk aversion
d      = 0.054;                  % depreciation rate
J      = 3;                      % retirement age
T      = 5;                      % living period
ta     = 0.1;                    % tax rate
g      = 2;                      % utility weight


%----------------------------------------------------------------
% 3. Model
%----------------------------------------------------------------

model; 
N     = (n1+n2+n3)/T;                                    % aggregate labor
K     = (k2+k3+k4+k5)/T;                                 % aggregate capital
B     = ta*w*N/(T-J);                                    % pension benefit
C     = (c1+c2+c3+c4+c5)/T;                              % aggregate consumption 
Y     = z*(K(-1)^a)*N^(1-a);                             % output
r     = a*z*(K(-1)^(a-1))*N^(1-a)-d;                     % interest rate
w     = (1-a)*(K(-1)^a)*N^(-a);                          % wage
c1+k2 = (1-ta)*w*n1;                                     % constraint age=1
c2+k3 = (1+r)*k2(-1)+(1-ta)*w*n2;                        % constraint age=2
c3+k4 = (1+r)*k3(-1)+(1-ta)*w*n3;                        % constraint age=3
c4+k5 = (1+r)*k4(-1)+B;                                  % constraint age=4
c5    = (1+r)*k5(-1)+B;                                  % constraint age=5  
g*c1  = (1-ta)*w*(1-n1);                                 % labor-consumption relation FOC age=1
g*c2  = (1-ta)*w*(1-n2);                                 % labor-consumption relation FOC age=2
g*c3  = (1-ta)*w*(1-n3);                                 % labor-consumption relation FOC age=3
c1^(-e)*(1-n1)^(g*(1-e)) = b*(1+r(+1))*c2(+1)^(-e)*(1-n2(+1))^(g*(1-e)); % FOC age=1
c2^(-e)*(1-n2)^(g*(1-e)) = b*(1+r(+1))*c3(+1)^(-e)*(1-n3(+1))^(g*(1-e)); % FOC age=2
c3^(-e)*(1-n3)^(g*(1-e)) = b*(1+r(+1))*c4(+1)^(-e);                      % FOC age=3
c4^(-e) = b*(1+r(+1))*c5(+1)^(-e);                                       % FOC age=4
i     = K-(1-d)*K(-1);                                                   % Investment

end;

%----------------------------------------------------------------
% 4. Computation
%----------------------------------------------------------------

initval;
Y  = 0.10537;               % I computed steady state values
c1 = 0.0952;
c2 = 0.1024;
c3 = 0.1102;
c4 = 0.0807;
c5 = 0.0968;
k2 = 0.0207;
k3 = 0.0416;
k4 = 0.0611;
k5 = 0.0481;
n1 = 0.3784;
n2 = 0.3313;
n3 = 0.2807;
K = 0.0343;
N = 0.1981;
w = 0.34043;
r = 1.1058;
B = 0.0034;
C = 0.097065;
i = 0.0019;
z = 1; 
end;


steady;
check;

shocks;
var z;
periods 5;
values 0.05;
end;

simul(periods=100);




