%Taking ratio pnyn/yt as a parameter. Transfroming experiment13 some other way
% Basic Stochastic Growth Model
% Lecture: Solving Nonlinear Dynamic Stochastic Models


%----------------------------------------------------------------
% 0. Housekeeping (close all graphic windows)
%----------------------------------------------------------------

close all;

%----------------------------------------------------------------
% 1. Defining variables
%----------------------------------------------------------------

% list of endogenous variables
var  z1 z2  i  kt kn k yt yn y ct cn c pn pc lt l_n r ;

% the following exogenous variables are shocked
varexo e1 e2 ;

parameters beta alpha delta omega eta mu nu  sigma psi1 psi2    sigma1 sigma2   A An  ;

%----------------------------------------------------------------
% 2. Calibration
%----------------------------------------------------------------

alpha   = 0.30;
beta    = 0.95;
delta   = 0.05;
omega   = 0.26;
eta     = 0.5;
nu      = -10;
mu      = 0.3157;
psi1   = 0.95;

psi2   = 0.95;


sigma   = 5;  
sigma1  = 0.11;
sigma2  = 0.11;
A=1;
An=1.52;


pnynyt=2;

klt=((alpha*A)/(1/beta-1+delta))^(1/(1-alpha));                                    %Kt/Lt
%kln=((1-alpha)/(1-eta))*(eta/alpha)*(klt);                                          %Kn/Ln


                                                                             

%----------------------------------------------------------------
% 3. Model
%----------------------------------------------------------------

model; 
  
  c^(-sigma)/pc = beta*((c(+1)^(-sigma))/pc(+1))*r(+1);       % Euler eqution
  r = alpha*A*z1*(kt/lt)^(alpha-1) + 1-delta;                               % return
  pn = ((1-omega)/omega)*(cn/ct)^(-(1+mu));                              % Substitutions between the consumption of tradable and non-tradable goods
  pc = (omega^(1/(1+mu))+((1-omega)^(1/(1+mu)))*pn^(mu/(1+mu)))^((1+mu)/mu);
  A*z1*alpha*(kt/lt)^(alpha-1)= pn*An*z2*eta*(kn/l_n)^(eta-1) ;               % The cost of capital
  A*z1*(1-alpha)*(kt/lt)^alpha = pn*An*z2*(1-eta)*(kn/l_n)^eta;               % The cost of labor
                                          
   
  ct+i =yt;                                                                         % aggregate resource constraint
  cn = yn;
  c  = (omega*(ct)^(-mu)+ (1-omega)*(cn^(-mu)))^(-1/mu);                             %overall capital
  yt = z1*A*kt^alpha*(lt)^(1-alpha);                                            % tradable production function
  yn = z2*An*kn^eta*(l_n)^(1-eta);                                                % non-tradable sector production funstion
  y= yt+pn*yn;                                                                      % GDP
  lt+l_n=1;
  k = i + (1-delta)*k(-1);                                                          % overall labor
  
 k = (kt^(-nu)+(kn)^(-nu))^(-1/nu);                                     % capital accumulation
  
  
                                                   
  
  log(z1) =psi1*log(z1(-1)) +e1;                                                    % technology
  log(z2) =psi2*log(z2(-1)) +e2;    

end;

%----------------------------------------------------------------
% 4. Computation
%----------------------------------------------------------------

initval; 


lt=1/(1+((1-eta)/(1-alpha))*pnynyt);
l_n=1-lt;
kt=klt*lt;
kn=(eta/alpha)*kt*pnynyt;
k = (kt^(-nu)+(kn)^(-nu))^(-1/nu);
i=delta*k;
yt=A*lt*(klt)^alpha;
yn=An*l_n*(kn/l_n)^alpha;
cn=yn;
ct=yt-i;
c  = (omega*(ct)^(-mu)+ (1-omega)*(cn^(-mu)))^(-1/mu);
pn = ((1-omega)/omega)*(cn/ct)^(-(1+mu));    
pc = (omega^(1/(1+mu))+((1-omega)^(1/(1+mu)))*pn^(mu/(1+mu)))^((1+mu)/mu);
y=yt+pn*yn;
  
e1 = 0;
e2 = 0;
z1 = 1;
z2 = 1;
end;
steady;
check;


shocks;
var e1=sigma1^2;
var e2=sigma2^2;
var e1,e2=0.4*sigma1*sigma2;
end;

resid(1);

steady;

stoch_simul(hp_filter = 1600, order = 1);
  