diff --git a/tests/Makefile.am b/tests/Makefile.am index 86d3e1a42b4ffbc97fc24594cda0d5bbcdbd08da..871f1ae33fd54b53cadbe5099fcd39365f6e47dd 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -158,6 +158,10 @@ MODFILES = \ steady_state_operator/bytecode_test.mod \ block_bytecode/ireland.mod \ block_bytecode/ramst_normcdf_and_friends.mod \ + block_bytecode/lola_solve_one_boundary.mod \ + block_bytecode/lola_solve_one_boundary_mfs1.mod \ + block_bytecode/lola_solve_one_boundary_mfs2.mod \ + block_bytecode/lola_solve_one_boundary_mfs3.mod \ k_order_perturbation/fs2000k2a.mod \ k_order_perturbation/fs2000k2_use_dll.mod \ k_order_perturbation/fs2000k_1_use_dll.mod \ @@ -338,10 +342,6 @@ MODFILES = \ deterministic_simulations/multiple_lead_lags/sim_endo_lead_lag.mod \ deterministic_simulations/multiple_lead_lags/sim_lead_lag_aux_vars.mod \ deterministic_simulations/multiple_lead_lags/sim_lead_lag.mod \ - deterministic_simulations/lola_solve_one_boundary.mod \ - deterministic_simulations/lola_solve_one_boundary_mfs1.mod \ - deterministic_simulations/lola_solve_one_boundary_mfs2.mod \ - deterministic_simulations/lola_solve_one_boundary_mfs3.mod \ deterministic_simulations/ramst_block_mfs1.mod \ deterministic_simulations/linear_approximation/sw.mod \ deterministic_simulations/multiple_lead_lags/AR2.mod \ @@ -696,13 +696,13 @@ deterministic_simulations/rbc_det_stack_solve_algo_7_exo_lead.m.trs: determinist deterministic_simulations/rbc_det_stack_solve_algo_7_exo_lead.o.trs: deterministic_simulations/rbc_det.o.trs deterministic_simulations/rbc_det_stack_solve_algo_7_exo_lag.m.trs: deterministic_simulations/rbc_det.m.trs deterministic_simulations/rbc_det_stack_solve_algo_7_exo_lag.o.trs: deterministic_simulations/rbc_det.o.trs -deterministic_simulations/lola_solve_one_boundary_mfs1.m.trs: deterministic_simulations/lola_solve_one_boundary.m.trs -deterministic_simulations/lola_solve_one_boundary_mfs1.o.trs: deterministic_simulations/lola_solve_one_boundary.o.trs -deterministic_simulations/lola_solve_one_boundary_mfs2.m.trs: deterministic_simulations/lola_solve_one_boundary.m.trs -deterministic_simulations/lola_solve_one_boundary_mfs2.o.trs: deterministic_simulations/lola_solve_one_boundary.o.trs -deterministic_simulations/lola_solve_one_boundary_mfs3.m.trs: deterministic_simulations/lola_solve_one_boundary.m.trs -deterministic_simulations/lola_solve_one_boundary_mfs3.o.trs: deterministic_simulations/lola_solve_one_boundary.o.trs +block_bytecode/lola_solve_one_boundary_mfs1.m.trs: block_bytecode/lola_solve_one_boundary.m.trs +block_bytecode/lola_solve_one_boundary_mfs1.o.trs: block_bytecode/lola_solve_one_boundary.o.trs +block_bytecode/lola_solve_one_boundary_mfs2.m.trs: block_bytecode/lola_solve_one_boundary.m.trs +block_bytecode/lola_solve_one_boundary_mfs2.o.trs: block_bytecode/lola_solve_one_boundary.o.trs +block_bytecode/lola_solve_one_boundary_mfs3.m.trs: block_bytecode/lola_solve_one_boundary.m.trs +block_bytecode/lola_solve_one_boundary_mfs3.o.trs: block_bytecode/lola_solve_one_boundary.o.trs histval_initval_file/ramst_initval_file.m.trs: histval_initval_file/ramst_initval_file_data.m.tls histval_initval_file/ramst_data_generate.m.trs histval_initval_file/ramst_initval_file.o.trs: histval_initval_file/ramst_initval_file_data.o.tls histval_initval_file/ramst_data_generate.o.trs @@ -1109,6 +1109,8 @@ EXTRA_DIST = \ AIM/data_ca1.m \ AIM/fsdat.m \ block_bytecode/run_ls2003.m \ + block_bytecode/lola_data.mat \ + block_bytecode/lola_common.inc \ bvar_a_la_sims/bvar_sample.m \ dates/fsdat_simul.m \ dates/data_uav.xlsx \ @@ -1199,7 +1201,6 @@ EXTRA_DIST = \ optimizers/fs2000.common.inc \ estimation/MH_recover/fs2000.common.inc \ prior_posterior_function/posterior_function_demo.m \ - deterministic_simulations/lola_data.mat \ k_order_perturbation/fs2000k++.mod \ lmmcp/sw-common-header.inc \ lmmcp/sw-common-footer.inc \ diff --git a/tests/deterministic_simulations/lola_solve_one_boundary.mod b/tests/block_bytecode/lola_common.inc similarity index 90% rename from tests/deterministic_simulations/lola_solve_one_boundary.mod rename to tests/block_bytecode/lola_common.inc index 6930b4d7240974198371bffd9a3a762c02e2c171..ab335ac0c2f8babeaf3f1cae294264789bb19e3d 100644 --- a/tests/deterministic_simulations/lola_solve_one_boundary.mod +++ b/tests/block_bytecode/lola_common.inc @@ -1,5 +1,13 @@ -// Based on Luca Marchiori/Olivier Pierrard(2012) LOLA 2.0: Luxembourg OverLapping generation model for policy Analysis -// Involves a call to solve_one_boundary.m that is tested here +// 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 + - deterministic +*/ load lola_data.mat @@ -144,9 +152,12 @@ set_param_value('bsY_iss',bsY_iss); NBRYb=NBR_iss/(phii_iss*gdp_iss); -% ======================================================= -model(block); -% ====================================================== + +@#if block +model(block, mfs=@{mfs}); +@#else +model; +@#endif % Labor Market Variables in the home country % ------------------------------------------ @@ -713,10 +724,9 @@ resid; steady(solve_algo=3); check; -%======================================================== -endval; -%======================================================== +@#if deterministic +endval; @#for i in wg n@{i}=n@{i}_fss; n@{i}_f=n@{i}_f_fss; @@ -918,7 +928,6 @@ NBR2=NBR; tauf2=tauf; tauw2=tauw; tauc2=tauc; - end; %======================================================== @@ -930,42 +939,40 @@ steady(solve_algo=3); check; -% =================================================== shocks; -% =================================================== - -var P00; - periods 1:99; - values (se_P00); + 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}); + 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 P00_foP00; + periods 1:99; + values (se_P00_foP00); -var eps_PensCorr_F; - periods 1:99; - values (se_eps_PensCorr_F); + var eps_g; + periods 1:99; + values (se_eps_g); -var eps_PensCorr_L; - periods 1:99; - values (se_eps_PensCorr_L); + 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; % ******************************************* @@ -978,3 +985,7 @@ perfect_foresight_solver(maxit=100); if ~oo_.deterministic_simulation.status error('Perfect foresight simulation failed') end + +@#else // stochastic case, used by files under tests/block_bytecode/lola_* +stoch_simul(order=1); +@#endif diff --git a/tests/deterministic_simulations/lola_data.mat b/tests/block_bytecode/lola_data.mat similarity index 100% rename from tests/deterministic_simulations/lola_data.mat rename to tests/block_bytecode/lola_data.mat diff --git a/tests/block_bytecode/lola_solve_one_boundary.mod b/tests/block_bytecode/lola_solve_one_boundary.mod new file mode 100644 index 0000000000000000000000000000000000000000..f72b8afca9ac3aac152f1a08523d27fce687cdd8 --- /dev/null +++ b/tests/block_bytecode/lola_solve_one_boundary.mod @@ -0,0 +1,6 @@ +// Involves a call to solve_one_boundary.m that is tested here + +@#define deterministic = true +@#define block = true +@#define mfs = 0 +@#include "lola_common.inc" diff --git a/tests/block_bytecode/lola_solve_one_boundary_mfs1.mod b/tests/block_bytecode/lola_solve_one_boundary_mfs1.mod new file mode 100644 index 0000000000000000000000000000000000000000..553171257d26babb89eed0970c6387159fa33b1d --- /dev/null +++ b/tests/block_bytecode/lola_solve_one_boundary_mfs1.mod @@ -0,0 +1,12 @@ +// Tests option mfs=1 with block + +@#define deterministic = true +@#define block = true +@#define mfs = 1 +@#include "lola_common.inc" + +mfs0=load('lola_solve_one_boundary_results'); + +if max(max(oo_.endo_simul-mfs0.oo_.endo_simul)) > options_.dynatol.x + error('Inconsistency with mfs=0') +end diff --git a/tests/block_bytecode/lola_solve_one_boundary_mfs2.mod b/tests/block_bytecode/lola_solve_one_boundary_mfs2.mod new file mode 100644 index 0000000000000000000000000000000000000000..f582ecc8440f3064de4795c1addcc861786f0694 --- /dev/null +++ b/tests/block_bytecode/lola_solve_one_boundary_mfs2.mod @@ -0,0 +1,12 @@ +// Tests option mfs=2 with block + +@#define deterministic = true +@#define block = true +@#define mfs = 2 +@#include "lola_common.inc" + +mfs0=load('lola_solve_one_boundary_results'); + +if max(max(oo_.endo_simul-mfs0.oo_.endo_simul)) > options_.dynatol.x + error('Inconsistency with mfs=0') +end diff --git a/tests/block_bytecode/lola_solve_one_boundary_mfs3.mod b/tests/block_bytecode/lola_solve_one_boundary_mfs3.mod new file mode 100644 index 0000000000000000000000000000000000000000..3eb2dc9f0178f6cdeaa03407891c8d3126007e9b --- /dev/null +++ b/tests/block_bytecode/lola_solve_one_boundary_mfs3.mod @@ -0,0 +1,12 @@ +// Tests option mfs=3 with block + +@#define deterministic = true +@#define block = true +@#define mfs = 3 +@#include "lola_common.inc" + +mfs0=load('lola_solve_one_boundary_results'); + +if max(max(oo_.endo_simul-mfs0.oo_.endo_simul)) > options_.dynatol.x + error('Inconsistency with mfs=0') +end diff --git a/tests/deterministic_simulations/lola_solve_one_boundary_mfs1.mod b/tests/deterministic_simulations/lola_solve_one_boundary_mfs1.mod deleted file mode 100644 index 2554539c56a44748aabdb6b94f8164f9e9a0c8c7..0000000000000000000000000000000000000000 --- a/tests/deterministic_simulations/lola_solve_one_boundary_mfs1.mod +++ /dev/null @@ -1,987 +0,0 @@ -// Tests option mfs=1 with block - -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); - - -% ======================================================= -model(block, mfs=1); -% ====================================================== - -% 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 and check eigenvalues -%======================================================== - -resid; -steady(solve_algo=3); -check; - -%======================================================== -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 and check eigenvalues -%======================================================== - -resid; -steady(solve_algo=3); -check; - - -% =================================================== -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 -% ******************************************* - -model_info; - -perfect_foresight_setup(periods=125); -perfect_foresight_solver(maxit=100); - -if ~oo_.deterministic_simulation.status - error('Perfect foresight simulation failed') -end - -mfs0=load('lola_solve_one_boundary_results'); - -if max(max(oo_.endo_simul-mfs0.oo_.endo_simul)) > options_.dynatol.x - error('Inconsistency with mfs=0') -end diff --git a/tests/deterministic_simulations/lola_solve_one_boundary_mfs2.mod b/tests/deterministic_simulations/lola_solve_one_boundary_mfs2.mod deleted file mode 100644 index 7d569e20a1370a08c95bcde81c5f915a99712e8a..0000000000000000000000000000000000000000 --- a/tests/deterministic_simulations/lola_solve_one_boundary_mfs2.mod +++ /dev/null @@ -1,985 +0,0 @@ -// Tests option mfs=2 with block - -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); - - -% ======================================================= -model(block, mfs=2); -% ====================================================== - -% 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 and check eigenvalues -%======================================================== - -resid; -steady(solve_algo=3); -check; - -%======================================================== -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 and check eigenvalues -%======================================================== - -resid; -steady(solve_algo=3); -check; - - -% =================================================== -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 - -mfs0=load('lola_solve_one_boundary_results'); - -if max(max(oo_.endo_simul-mfs0.oo_.endo_simul)) > options_.dynatol.x - error('Inconsistency with mfs=0') -end diff --git a/tests/deterministic_simulations/lola_solve_one_boundary_mfs3.mod b/tests/deterministic_simulations/lola_solve_one_boundary_mfs3.mod deleted file mode 100644 index 2a64bd222a446c02abf07026d71939cf35e5feaa..0000000000000000000000000000000000000000 --- a/tests/deterministic_simulations/lola_solve_one_boundary_mfs3.mod +++ /dev/null @@ -1,985 +0,0 @@ -// Tests option mfs=3 with block - -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); - - -% ======================================================= -model(block, mfs=3); -% ====================================================== - -% 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 and check eigenvalues -%======================================================== - -resid; -steady(solve_algo=3); -check; - -%======================================================== -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 and check eigenvalues -%======================================================== - -resid; -steady(solve_algo=3); -check; - - -% =================================================== -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 - -mfs0=load('lola_solve_one_boundary_results'); - -if max(max(oo_.endo_simul-mfs0.oo_.endo_simul)) > options_.dynatol.x - error('Inconsistency with mfs=0') -end