% 2 periods OLG model:
% people work only when young and population grows at rate n
% people leave non-negative bequests (X) to their children before dying
% k=capital per capita, y=output per capita
% C1: consumption of youngs, C2:consumption of olds
% L1:leisure and mu: parameter of leisure utility
% N1 = 1-L1: hours worked
% r: real capital return, W: real wage 
% lamda: lagrange multiplier for non negative bequests
% delta: depreciation rate
% beta: discount factor
% gamma: altruism parameter



var C1 C2 L1 S k r W y N1 X lamda;
varexo z;

parameters mu beta g n alpha delta gamma;
  mu = .27;
  beta = .75; 
  n = .02;
  alpha = .35;
  delta = .025;
  gamma = .75;
  
model;
C2(+1) = beta*(1+r(+1))*C1;
C1 = L1*W/mu;
C2(+1)*(gamma/C1(+1)+lamda) = beta*(1+n);
S = N1*W + X(-1) - C1;
lamda*X;
k = S(-1)/(1+n);
C1 + C2/(1+n) + S = y + (1-delta)*k(-1);
r = alpha*z*(k(-1)/N1)^(alpha-1) - delta; 
W = (1-alpha)*z*(k(-1)/N1)^(alpha);
y = z*k(-1)^alpha*N1^(1-alpha);
N1 = 1-L1;
end;

initval;
z = 1;
C1 = .4;
C2 = .4;
S = .9;
k = .9;
L1 = .12;
N1 = .88;
r = .3;
W = .6;
y = .95;
X = .8;
lamda = 0.2;
end;
steady;
check;

shocks;
var z;
periods 1 2;  
values  1 1.02;
end;

simul(periods=200);

rplot k;
rplot y;
rplot lamda;
rplot X;