dynare/tests/block_bytecode/lola_common.inc

983 lines
17 KiB
PHP

// Based on Luca Marchiori/Olivier Pierrard(2012) LOLA 2.0: Luxembourg
// OverLapping generation model for policy Analysis
/* Snippet common to several test files.
Macro-variables that can be defined to tune the computations:
- block
- mfs
*/
load lola_data.mat
% ====================================================
% declarations var -- varexo -- para
% ====================================================
@#define nbr_work_generations=9
@#define nbr_early_generations=2
@#define nbr_generations=16
parameters
length_period age_early;
length_period=5;
age_early=55;
@#define wt=[1]
@#define wg=0:nbr_work_generations-1
@#define ag=0:nbr_generations-1
@#define fwg=0:nbr_work_generations-nbr_early_generations-1
@#define nbwg=1:nbr_work_generations-1
@#define nbg=1:nbr_generations-1
@#define rg=nbr_work_generations:nbr_generations-1
@#define erg=nbr_work_generations-nbr_early_generations:nbr_work_generations-1
@#define endg=[nbr_generations-1]
@#define endw=[nbr_work_generations-1]
@#for i in wg
var
n@{i} u@{i} Omega@{i} w@{i} dWHN@{i} dWFN@{i}
n@{i}_f u@{i}_f Omega@{i}_f w@{i}_f dWFN@{i}_f
i@{i} lambda@{i} i@{i}_f lambda@{i}_f eta@{i};
parameters
Du@{i} Dn@{i} h@{i} h@{i}_f chi@{i} eta@{i}b;
varexo
eps_eta@{i};
@#endfor
@#for i in ag
var
c@{i} s@{i} P@{i} P@{i}_f;
varexo
beta@{i} beta@{i}_f PD@{i};
@#endfor
@#for i in erg
var
WE@{i} De_@{i};
parameters
De_@{i}b;
varexo
eps_De_@{i};
@#endfor
var
wb wb_f
Omega Omega_f Omega_hf
V M qq p
N N_f
Q RR H K Y gdp nx FH pi
ct st wshare rr
gamma mc phii D DH DF X bs bsY P00_f
rhou rhoe rhol tauw tauc tauf tauk g
TFP gh rrb
theta tau1 om1 om2 om2s Ds phijs
DepRatio DepRatio_n DepRatio_d ZARA Ptot Ptot_f sleep du de dl inA inB in
NBR NBRY NBR2 tauw2 tauf2 tauc2
PensCorr_L PensCorr_F;
parameters
rho phi delta alpha beta ann
fc nu aa
rhoub rhoeb rholb tauwb taucb taufb taukb gb
TFPb ghb rrbb
thetab tau1b om1b om2b om2sb Dsb phijsb
NBRYb bsY_iss;
varexo
P00 P00_foP00
eps_rhol eps_tauw eps_tauf eps_tauc eps_tauk
eps_rhoe eps_rhou eps_TFP eps_gh eps_theta eps_g
eps_Ds eps_phijs eps_PensCorr_L eps_PensCorr_F;
% ============================================================
% initialization
% ============================================================
@#for i in wg
set_param_value('Du@{i}',Du@{i});
set_param_value('Dn@{i}',Dn@{i});
set_param_value('h@{i}',h@{i});
set_param_value('h@{i}_f',h@{i}_f);
set_param_value('chi@{i}',chi@{i});
set_param_value('eta@{i}b',eta@{i}b);
@#endfor
@#for i in erg
set_param_value('De_@{i}b',De_@{i}b);
@#endfor
set_param_value('rho',rho);
set_param_value('phi',phi);
set_param_value('delta',delta);
set_param_value('alpha',alpha);
set_param_value('beta',beta);
set_param_value('ann',ann);
set_param_value('fc',fc);
set_param_value('nu',nu);
set_param_value('aa',aa);
set_param_value('rhoub',rhoub);
set_param_value('rhoeb',rhoeb);
set_param_value('rholb',rholb);
set_param_value('tauwb',tauwb);
set_param_value('taucb',taucb);
set_param_value('taufb',taufb);
set_param_value('taukb',taukb);
set_param_value('gb',gb);
set_param_value('TFPb',TFPb);
set_param_value('ghb',ghb);
set_param_value('rrbb',rrbb);
set_param_value('thetab',thetab);
set_param_value('tau1b',tau1b);
set_param_value('om1b',om1b);
set_param_value('om2b',om2b);
set_param_value('om2sb',om2sb);
set_param_value('Dsb',Dsb);
set_param_value('phijsb',phijsb);
set_param_value('bsY_iss',bsY_iss);
NBRYb=NBR_iss/(phii_iss*gdp_iss);
@#if block
model(block, mfs=@{mfs}, static_mfs=@{mfs});
@#else
model;
@#endif
% Labor Market Variables in the home country
% ------------------------------------------
@#for i in fwg
0=lambda@{i};
@#endfor
@#for i in wg
1=n@{i}+u@{i}+i@{i};
@#endfor
i0=lambda0;
@#for i in nbwg
i@{i}=lambda@{i-1}(-1)+lambda@{i}*(1-lambda@{i-1}(-1));
@#endfor
P0=beta0*P00+PD0;
@#for i in nbg
P@{i}=beta@{i}*P@{i-1}(-1)+PD@{i};
@#endfor
Omega0=P0;
@#for i in nbwg
Omega@{i}=(1-lambda@{i})*( 1-lambda@{i-1}(-1)-(1-chi@{i})*n@{i-1}(-1))*P@{i};
@#endfor
n0=p;
@#for i in nbwg
n@{i}=(1-lambda@{i})*((1-p)*(1-chi@{i})*n@{i-1}(-1)+p*(1-lambda@{i-1}(-1)));
@#endfor
N=
@#for i in wg
+n@{i}*P@{i}
@#endfor
;
% Labor Market Variables in the foreign country
% ---------------------------------------------
@#for i in wg
1=n@{i}_f+u@{i}_f+i@{i}_f;
@#endfor
i0_f=lambda0_f;
@#for i in nbwg
i@{i}_f=lambda@{i-1}_f(-1)+lambda@{i}_f*(1-lambda@{i-1}_f(-1));
@#endfor
% ----------- reproduction cross-border --------------------
P00_f=P00_foP00*P00;
P0_f=beta0_f*P00_f;
@#for i in nbg
P@{i}_f=beta@{i}_f*P@{i-1}_f(-1);
@#endfor
Omega0_f=P0_f;
@#for i in nbwg
Omega@{i}_f=(1-lambda@{i}_f)*(1-lambda@{i-1}_f(-1)-(1-chi@{i})*n@{i-1}_f(-1))*P@{i}_f;
@#endfor
n0_f=p;
@#for i in nbwg
n@{i}_f=(1-lambda@{i}_f)*((1-p)*(1-chi@{i})*n@{i-1}_f(-1)+p*(1-lambda@{i-1}_f(-1)));
@#endfor
N_f=
@#for i in wg
+n@{i}_f*P@{i}_f
@#endfor
;
% Matching
% ----------
Omega=
@#for i in wg
+Omega@{i}
@#endfor
;
Omega_f=
@#for i in wg
+Omega@{i}_f
@#endfor
;
Omega_hf=Omega+Omega_f;
M=V*Omega_hf/(V^nu+Omega_hf^nu)^(1/nu);
qq=M/V;
p=M/Omega_hf;
% Flow Budget Constraints (no bequests)
% --------------------------------------
rhou*w0*u0+ (1-tauw)*w0*n0 = (1+tauc)*c0+s0;
@#for i in nbwg
(1+rr*(1-tauk))/(beta@{i})^ann*s@{i-1}(-1)/(1+gh)+rhou*w@{i}*u@{i}+rhoe*w@{i}*i@{i}+(1-tauw)*w@{i}*n@{i}=(1+tauc)*c@{i}+s@{i};
@#endfor
@#for i in rg
(1+rr*(1-tauk))/(beta@{i})^ann*s@{i-1}(-1)/(1+gh)+rhol*wb=(1+tauc)*c@{i}+s@{i};
@#endfor
@#for i in endg
s@{i}=0;
@#endfor
wb=
@#for i in wg
+w@{i}/@{nbr_work_generations}
@#endfor
;
% Euler Conditions
% ------------------
@#for i in nbg
1/(1+tauc)/c@{i-1}=beta*(1+rr(+1)*(1-tauk(+1)))/(1+tauc(+1))/c@{i}(+1)*(beta@{i})^(1-ann)/(1+gh);
@#endfor
% Optimal Participation Rates (Early Retirement)
% ----------------------------------------------
@#for i in erg
WE@{i} = 0;
@#endfor
@#for i in erg
@#if i in endw
WE@{i} = ((De_@{i}b*i@{i}^(phi-1))+Du@{i}+(rhoe-rhou)*w@{i}/(1+tauc)/c@{i})*(1-i@{i})-((1-tauw-rhou)*w@{i}/(1+tauc)/c@{i}-(Dn@{i}-Du@{i}))*n@{i};
@#else
WE@{i} = ((De_@{i}b*i@{i}^(phi-1))+Du@{i}+(rhoe-rhou)*w@{i}/(1+tauc)/c@{i})*(1-i@{i})-((1-tauw-rhou)*w@{i}/(1+tauc)/c@{i}-(Dn@{i}-Du@{i}))*n@{i}+ beta*beta@{i+1}*WE@{i+1};
@#endif
@#endfor
% Household Surplus
% -------------------
@#for i in wg
@#if i in endw
dWHN@{i} = w@{i}*(1-tauw-rhou)/(1+tauc)-(Dn@{i}-Du@{i})*c@{i};
@#else
dWHN@{i} = w@{i}*(1-tauw-rhou)/(1+tauc)-(Dn@{i}-Du@{i})*c@{i} + beta*beta@{i+1}*c@{i}/c@{i+1}(+1)*dWHN@{i+1}(+1)*(1-p(+1))*(1-chi@{i+1})*(1-lambda@{i+1}(+1));
@#endif
@#endfor
% Foreign household
% ------------------------
% participation and wages
% ........................
@#for i in wg
lambda@{i}=lambda@{i}_f;
w@{i}_f=w@{i};
@#endfor
wb_f=
@#for i in wg
+w@{i}_f/@{nbr_work_generations}
@#endfor
;
% Firm's Behavior
% -------------------
H=
@#for i in wg
+h@{i}*n@{i}*P@{i}+h@{i}_f*n@{i}_f*P@{i}_f
@#endfor
;
wshare=(1+tauf)*(
@#for i in wg
+w@{i}*n@{i}*P@{i}+w@{i}_f*n@{i}_f*P@{i}_f
@#endfor
)/(phii*gdp);
Y=TFP*H^(1-alpha)*(K)^alpha;
gdp= TFP*H^(1-alpha)*(K)^alpha-aa*V/phii-fc/phii;
pi = phii*gdp - wshare*phii*gdp - (rr+delta)*K(-1)/(1+gh);
(rr(+1)+delta)/(1+rr(+1)*(1-tauk(+1))) = mc*TFP*alpha*(H/(K))^(1-alpha);
FH=TFP*(1-alpha)*((K)/H)^alpha;
RR=1+rr*(1-tauk);
rr=rrb+tau1*(exp(bsY_iss-bsY)-1);
% Firm's Surplus
% ---------------------
@#for i in wg
@#if i in endw
dWFN@{i} = h@{i}*mc*FH-(1+tauf)*w@{i};
dWFN@{i}_f = h@{i}_f*mc*FH-(1+tauf)*w@{i}_f;
@#else
dWFN@{i} = h@{i}*mc*FH-(1+tauf)*w@{i} + beta@{i+1}/RR(+1)*dWFN@{i+1}(+1)*(1-chi@{i+1})*(1-lambda@{i+1}(+1))*(1+gh);
dWFN@{i}_f = h@{i}_f*mc*FH-(1+tauf)*w@{i}_f + beta@{i+1}_f/RR(+1)*dWFN@{i+1}_f(+1)*(1-chi@{i+1})*(1-lambda@{i+1}_f(+1))*(1+gh);
@#endif
@#endfor
% Free Entry Condition
% ---------------------
aa=qq/Omega_hf*(
@#for i in wg
+Omega@{i}*dWFN@{i}+Omega@{i}_f*dWFN@{i}_f
@#endfor
);
% Wage Determination (Rent Sharing)
% -----------------------------------
@#for i in wg
(1-eta@{i})*dWHN@{i} = eta@{i}*((1-tauw)/(1+tauf)/(1+tauc))*dWFN@{i};
@#endfor
% Equilibrium Conditions
% ----------------------
ct=
@#for i in ag
+c@{i}*P@{i}
@#endfor
;
st=
@#for i in ag
+s@{i}*P@{i}
@#endfor
;
% Non-Arbitrage condition (physical capital-shares)
% .........................
Q(+1)+pi(+1)=(1+rr(+1))*Q/(1+gh);
% New Open Economy Macroeconomics (NOEM)
% ---------------------------------------
phii=mc/theta;
D= ct + K-(1-delta)*K(-1)/(1+gh) + g*gdp*phii + fc+aa*V;
DH=(1/om1*phii)^(1/(rho-1))*D;
X=(1/om2s*phii/gamma)^(1/(rho-1))*Ds;
DF=(1/om2*gamma*phijs)^(1/(rho-1))*D;
nx=phii*X-phijs*gamma*DF;
bsY=bs/(phii*gdp);
Y=DH+X;
phii*gdp=ct + K-(1-delta)*K(-1)/(1+gh) + g*gdp*phii+nx;
st=K+Q +bs ;
% Policies
% ----------
rhou=rhoub*eps_rhou;
rhoe=rhoeb*eps_rhoe;
rhol=rholb*eps_rhol;
g=gb*eps_g;
@#for i in erg
De_@{i}=De_@{i}b*eps_De_@{i};
@#endfor
TFP=TFPb*eps_TFP;
gh=ghb*eps_gh;
@#for i in wg
eta@{i}=eta@{i}b*eps_eta@{i};
@#endfor
rrb=rrbb;
theta=thetab*eps_theta;
tau1=tau1b;
om1=om1b;
om2=om2b;
om2s=om2sb;
Ds=Dsb*eps_Ds;
phijs=phijsb*eps_phijs;
% ----------- RefDR scenario
DepRatio_n=
@#for i in rg
+P@{i}
@#endfor
;
DepRatio_d=
@#for i in wg
+P@{i}
@#endfor
;
DepRatio=DepRatio_n/DepRatio_d;
ZARA=age_early+length_period*(
@#for i in erg
+1-i@{i}
@#endfor
);
% ----------- WGEM
Ptot=
@#for i in ag
+P@{i}
@#endfor
;
Ptot_f=
@#for i in ag
+P@{i}_f
@#endfor
;
sleep=(1+rr)*(
@#for i in nbg
+1/beta@{i}*(1-1/beta@{i}^(ann-1))*s@{i-1}(-1)*P@{i}
@#endfor
)/(1+gh);
du=rhou*(
@#for i in wg
+w@{i}*u@{i}*P@{i}
@#endfor
);
de=rhoe*(
@#for i in erg
+w@{i}*i@{i}*P@{i}+w@{i}_f*i@{i}_f*P@{i}_f
@#endfor
);
dl=
@#for i in rg
+rhol*wb*PensCorr_L*P@{i}+rhol*wb_f*(N_f/(N+N_f))*PensCorr_F*P@{i}_f
@#endfor
;
PensCorr_L=eps_PensCorr_L;
PensCorr_F=eps_PensCorr_F;
inA=(tauw+tauf)*(
@#for i in wg
+n@{i}*w@{i}*P@{i}+n@{i}_f*w@{i}_f*P@{i}_f
@#endfor
);
inB=tauk*rr*(
@#for i in nbg
+1/beta@{i}^ann*s@{i-1}(-1)*P@{i}
@#endfor
)/(1+gh);
in=tauc*ct+inA+inB+sleep;
NBR=g*phii*gdp+(du+de+dl)-(in);
NBRY=NBR/(phii*gdp);
% ----------- WGEM Adjustment variable ---------------
tauf2=tauf;
tauw2=tauw;
NBR2=NBR;
tauc2=tauc;
tauf=taufb*eps_tauf;
%----- WGEM: adjustment through tauc
tauc=taucb*eps_tauc;
%----- WGEM: adjustment through tauk
tauk=taukb*eps_tauk;
%----- WGEM: adjustment through tauw
tauw=tauwb*eps_tauw;
end;
%==================================
initval;
%==================================
@#for i in wg
n@{i}=n@{i}_iss;
n@{i}_f=n@{i}_f_iss;
u@{i}=u@{i}_iss;
u@{i}_f=u@{i}_f_iss;
Omega@{i}=Omega@{i}_iss;
Omega@{i}_f=Omega@{i}_f_iss;
w@{i}=w@{i}_iss;
w@{i}_f=w@{i}_f_iss;
dWHN@{i}=dWHN@{i}_iss;
dWFN@{i}=dWFN@{i}_iss;
dWFN@{i}_f=dWFN@{i}_f_iss;
eps_eta@{i}=eps_eta@{i}_iss;
eta@{i}=eta@{i}b*eps_eta@{i};
@#endfor
@#for i in erg
i@{i}=i@{i}_iss;
lambda@{i}=lambda@{i}_iss;
i@{i}_f=i@{i}_f_iss;
lambda@{i}_f=lambda@{i}_f_iss;
WE@{i}=0;
eps_De_@{i}=eps_De_@{i}_iss;
De_@{i}=De_@{i}b*eps_De_@{i}_iss;
@#endfor
@#for i in fwg
i@{i}=0;
lambda@{i}=0;
i@{i}_f=0;
lambda@{i}_f=0;
@#endfor
@#for i in ag
@#if i in endg
s@{i}=0;
@#else
s@{i}=s@{i}_iss;
@#endif
@#endfor
@#for i in ag
beta@{i}=beta@{i}_iss;
beta@{i}_f=beta@{i}_f_iss;
PD@{i}=PD@{i}_iss;
c@{i}=c@{i}_iss;
P@{i}=P@{i}_iss;
P@{i}_f=P@{i}_f_iss;
@#endfor
wb = wb_iss;
wb_f = wb_f_iss;
Omega = Omega_iss;
Omega_f = Omega_f_iss;
Omega_hf = Omega_hf_iss;
V = V_iss ;
M = M_iss ;
qq = qq_iss ;
p = p_iss ;
N = N_iss ;
N_f = N_f_iss ;
Q = Q_iss ;
RR = RR_iss ;
H = H_iss ;
K = K_iss ;
Y = Y_iss ;
gdp = gdp_iss ;
nx = nx_iss ;
FH = FH_iss ;
pi = pi_iss ;
ct = ct_iss ;
st = st_iss ;
wshare = wshare_iss ;
rr = rr_iss ;
gamma = gamma_iss ;
mc = mc_iss ;
phii = phii_iss ;
D = D_iss ;
DH = DH_iss ;
DF = DF_iss ;
X = X_iss ;
bs = bs_iss ;
bsY = bsY_iss ;
P00_f = P00_f_iss;
eps_rhol=eps_rhol_iss;
eps_rhoe=eps_rhoe_iss;
eps_rhou=eps_rhou_iss;
rhou=rhoub*eps_rhou_iss;
rhoe=rhoeb*eps_rhoe_iss;
rhol=rholb*eps_rhol_iss;
eps_tauc=eps_tauc_iss;
eps_tauk=eps_tauk_iss;
eps_tauw=eps_tauw_iss;
eps_tauf=eps_tauf_iss;
tauw=tauwb*eps_tauw;
tauc=taucb*eps_tauc;
tauf=taufb*eps_tauf;
tauk=taukb*eps_tauk;
eps_theta=eps_theta_iss;
eps_gh=eps_gh_iss;
eps_TFP=eps_TFP_iss;
eps_g=eps_g_iss;
g=gb*eps_g_iss;
TFP=TFPb*eps_TFP_iss;
gh=ghb*eps_gh_iss;
theta=thetab*eps_theta_iss;
rrb=rrbb;
tau1=tau1b;
om1=om1b;
om2=om2b;
om2s=om2sb;
eps_Ds=1;
eps_phijs=1;
Ds=Dsb*eps_Ds;
phijs=phijsb*eps_phijs;
eps_PensCorr_F=eps_PensCorr_F_iss;
eps_PensCorr_L=eps_PensCorr_L_iss;
PensCorr_F=eps_PensCorr_F_iss;
PensCorr_L=eps_PensCorr_L_iss;
P00 = P00_iss ;
P00_foP00 = P00_foP00_iss ;
DepRatio_n=
@#for i in rg
+P@{i}
@#endfor
;
DepRatio_d=
@#for i in wg
+P@{i}
@#endfor
;
DepRatio=DepRatio_n/DepRatio_d;
ZARA=age_early+length_period*(
@#for i in erg
+1-i@{i}
@#endfor
);
Ptot=Ptot_iss;
Ptot_f=Ptot_f_iss;
sleep=sleep_iss;
du=du_iss;
de=de_iss;
dl=dl_iss;
inA=inA_iss;%(tauw+tauf)*(
%@#for i in wg
%+n@{i}*w@{i}*P@{i}+n@{i}_f*w@{i}_f*P@{i}_f
%@#endfor
%);
inB=inB_iss;%tauk*rr*(
%@#for i in nbg
%+1/beta@{i}^ann*s@{i-1}*P@{i}
%@#endfor
%)/(1+gh);
in=in_iss;%tauc*ct+inA+inB+sleep;
NBR=NBR_iss;%g*phii*gdp+(du+de+dl)-(in);
NBRY=NBR/(phii*gdp);
NBR2=NBR;
tauf2=tauf;
tauw2=tauw;
tauc2=tauc;
end;
%==============================
% compute initial steady state
%==============================
resid;
steady(solve_algo=3);
endval;
@#for i in wg
n@{i}=n@{i}_fss;
n@{i}_f=n@{i}_f_fss;
u@{i}=u@{i}_fss;
u@{i}_f=u@{i}_f_fss;
Omega@{i}=Omega@{i}_fss;
Omega@{i}_f=Omega@{i}_f_fss;
w@{i}=w@{i}_fss;
w@{i}_f=w@{i}_f_fss;
dWHN@{i}=dWHN@{i}_fss;
dWFN@{i}=dWFN@{i}_fss;
dWFN@{i}_f=dWFN@{i}_f_fss;
eps_eta@{i}=eps_eta@{i}_fss;
eta@{i}=eta@{i}b*eps_eta@{i};
@#endfor
@#for i in erg
i@{i}=i@{i}_fss;
lambda@{i}=lambda@{i}_fss;
i@{i}_f=i@{i}_f_fss;
lambda@{i}_f=lambda@{i}_f_fss;
WE@{i}=0;
eps_De_@{i}=eps_De_@{i}_fss;
De_@{i}=De_@{i}b*eps_De_@{i}_fss;
@#endfor
@#for i in fwg
i@{i}=0;
lambda@{i}=0;
i@{i}_f=0;
lambda@{i}_f=0;
@#endfor
@#for i in ag
@#if i in endg
s@{i}=0;
@#else
s@{i}=s@{i}_fss;
@#endif
@#endfor
@#for i in ag
beta@{i}=beta@{i}_fss;
beta@{i}_f=beta@{i}_f_fss;
PD@{i}=PD@{i}_fss;
c@{i}=c@{i}_fss;
P@{i}=P@{i}_fss;
P@{i}_f=P@{i}_f_fss;
@#endfor
wb = wb_fss;
wb_f = wb_f_fss;
Omega = Omega_fss;
Omega_f = Omega_f_fss;
Omega_hf = Omega_hf_fss;
V = V_fss ;
M = M_fss ;
qq = qq_fss ;
p = p_fss ;
N = N_fss ;
N_f = N_f_fss ;
Q = Q_fss ;
RR = RR_fss ;
H = H_fss ;
K = K_fss ;
Y = Y_fss ;
gdp = gdp_fss ;
nx = nx_fss ;
FH = FH_fss ;
pi = pi_fss ;
ct = ct_fss ;
st = st_fss ;
wshare = wshare_fss ;
rr = rr_fss ;
gamma = gamma_fss ;
mc = mc_fss ;
phii = phii_fss ;
D = D_fss ;
DH = DH_fss ;
DF = DF_fss ;
X = X_fss ;
bs = bs_fss ;
bsY = bsY_fss ;
P00_f = P00_f_fss;
eps_rhol=eps_rhol_fss;
eps_rhoe=eps_rhoe_fss;
eps_rhou=eps_rhou_fss;
rhou=rhoub*eps_rhou_fss;
rhoe=rhoeb*eps_rhoe_fss;
rhol=rholb*eps_rhol_fss;
eps_tauc=eps_tauc_fss;
eps_tauk=eps_tauk_fss;
eps_tauw=eps_tauw_fss;
eps_tauf=eps_tauf_fss;
tauw=tauwb*eps_tauw;
tauc=taucb*eps_tauc;
tauf=taufb*eps_tauf;
tauk=taukb*eps_tauk;
eps_theta=eps_theta_fss;
eps_gh=eps_gh_fss;
eps_TFP=eps_TFP_fss;
eps_g=eps_g_fss;
g=gb*eps_g_fss;
TFP=TFPb*eps_TFP_fss;
gh=ghb*eps_gh_fss;
theta=thetab*eps_theta_fss;
rrb=rrbb;
tau1=tau1b;
om1=om1b;
om2=om2b;
om2s=om2sb;
eps_Ds=1;
eps_phijs=1;
Ds=Dsb*eps_Ds;
phijs=phijsb*eps_phijs;
eps_PensCorr_F=eps_PensCorr_F_fss;
eps_PensCorr_L=eps_PensCorr_L_fss;
PensCorr_F=eps_PensCorr_F_fss;
PensCorr_L=eps_PensCorr_L_fss;
P00 = P00_fss ;
P00_foP00 = P00_foP00_fss ;
DepRatio_n=
@#for i in rg
+P@{i}
@#endfor
;
DepRatio_d=
@#for i in wg
+P@{i}
@#endfor
;
DepRatio=DepRatio_n/DepRatio_d;
ZARA=age_early+length_period*(
@#for i in erg
+1-i@{i}
@#endfor
);
Ptot=
@#for i in ag
+P@{i}
@#endfor
;
Ptot_f=
@#for i in ag
+P@{i}_f
@#endfor
;
sleep=(1+rr)*(
@#for i in nbg
+1/beta@{i}*(1-1/beta@{i}^(ann-1))*s@{i-1}*P@{i}
@#endfor
)/(1+gh);
du=rhou*(
@#for i in wg
+w@{i}*u@{i}*P@{i}
@#endfor
);
de=rhoe*(
@#for i in erg
+w@{i}*i@{i}*P@{i}+w@{i}_f*i@{i}_f*P@{i}_f
@#endfor
);
dl=
@#for i in rg
+rhol*wb*PensCorr_L*P@{i}+rhol*wb_f*(N_f/(N+N_f))*PensCorr_F*P@{i}_f
@#endfor
;
inA=(tauw+tauf)*(
@#for i in wg
+n@{i}*w@{i}*P@{i}+n@{i}_f*w@{i}_f*P@{i}_f
@#endfor
);
inB=tauk*rr*(
@#for i in nbg
+1/beta@{i}^ann*s@{i-1}*P@{i}
@#endfor
)/(1+gh);
in=tauc*ct+inA+inB+sleep;
NBR=g*phii*gdp+(du+de+dl)-(in);
NBRY=NBR/(phii*gdp);
NBR2=NBR;
tauf2=tauf;
tauw2=tauw;
tauc2=tauc;
end;
%============================
% compute final steady state
%============================
resid;
steady(solve_algo=3);
shocks;
var P00;
periods 1:99;
values (se_P00);
@#for i in nbg
var beta@{i};
periods 1:99;
values (se_beta@{i});
var beta@{i}_f;
periods 1:99;
values (se_beta@{i}_f);
var PD@{i};
periods 1:99;
values (se_PD@{i});
@#endfor
var P00_foP00;
periods 1:99;
values (se_P00_foP00);
var eps_g;
periods 1:99;
values (se_eps_g);
var eps_PensCorr_F;
periods 1:99;
values (se_eps_PensCorr_F);
var eps_PensCorr_L;
periods 1:99;
values (se_eps_PensCorr_L);
end;
% *******************************************
% Numerical Simulation, Control Parameters
% *******************************************
perfect_foresight_setup(periods=125);
perfect_foresight_solver(maxit=100);
if ~oo_.deterministic_simulation.status
error('Perfect foresight simulation failed')
end