134 lines
4.3 KiB
Modula-2
134 lines
4.3 KiB
Modula-2
// Uses autonomous system from sim_base.mod, but adds separate system where exogenous variables have several leads and lags
|
|
// Lags and leads on exogenous variables are substituted out by auxiliary variables
|
|
|
|
data1 = repmat([1.2, 1.2, 12, 1, 1, 1], 208, 1);
|
|
data1(6, 6) = 0.9; //shock to x in period 2
|
|
ds = dseries(data1, '1Y', {'c', 'cmav', 'k', 'z_backward', 'z_forward', 'x'});
|
|
|
|
var c cmav k z_backward z_forward;
|
|
varexo x;
|
|
|
|
parameters alph gam delt bet aa;
|
|
alph=0.5;
|
|
gam=0.5;
|
|
delt=0.02;
|
|
bet=0.05;
|
|
aa=0.5;
|
|
|
|
model;
|
|
c + k - aa*x*k(-1)^alph - (1-delt)*k(-1);
|
|
c^(-gam) - (1+bet)^(-1)*(aa*alph*x(+1)*k^(alph-1) + 1 - delt)*c(+1)^(-gam);
|
|
z_backward=0.1*1+0.9*z_backward(-1) + (x(-4) - 1);
|
|
z_forward=0.2*1+0.8*z_forward(+1) + (x(+4) - 1);
|
|
cmav = 0.2*(c(-2) + c(-1) + c + c(+1) + c(+2));
|
|
end;
|
|
|
|
initval_file(series = ds);
|
|
if oo_.initval_series.dates(1) ~= dates('1Y');
|
|
error('Wrong initial date in oo_.initval_series');
|
|
end;
|
|
if oo_.initval_series{'x'}.data(6) ~= 0.9;
|
|
error('Wrong value for x');
|
|
end;
|
|
|
|
perfect_foresight_setup(periods=200);
|
|
perfect_foresight_solver(maxit=100);
|
|
|
|
if ~oo_.deterministic_simulation.status
|
|
error('Perfect foresight simulation failed');
|
|
end
|
|
|
|
base_results=load(['sim_exo_lead_lag' filesep 'Output' filesep 'sim_exo_lead_lag_results.mat']);
|
|
if max(max(abs(base_results.oo_.endo_simul(1:5,:) - oo_.endo_simul(1:5,:)))) > 1e-8
|
|
error('Simulation with leads and lags doesn''t match the one with auxiliary variables')
|
|
end
|
|
|
|
data1 = repmat([1.2, 1.2, 12, 1, 1, 1], 212, 1);
|
|
data1(8, 6) = 0.9; //shock to x in period 2
|
|
ds1 = dseries(data1, '1Y', {'c', 'cmav', 'k', 'z_backward', 'z_forward', 'x'});
|
|
|
|
initval_file(series = ds1, first_obs = 3, last_obs = 210, nobs = 208);
|
|
if oo_.initval_series.dates(1) ~= dates('3Y');
|
|
error('Wrong initial date in oo_.initval_series');
|
|
end;
|
|
if oo_.initval_series{'x'}.data(6) ~= 0.9;
|
|
error('Wrong value for x');
|
|
end;
|
|
|
|
|
|
perfect_foresight_setup(periods=200);
|
|
perfect_foresight_solver(maxit=100);
|
|
|
|
if ~oo_.deterministic_simulation.status
|
|
error('Perfect foresight simulation failed');
|
|
end
|
|
|
|
base_results=load(['sim_exo_lead_lag' filesep 'Output' filesep 'sim_exo_lead_lag_results.mat']);
|
|
if max(max(abs(base_results.oo_.endo_simul(1:5,:) - oo_.endo_simul(1:5,:)))) > 1e-8
|
|
error('Simulation with leads and lags doesn''t match the one with auxiliary variables')
|
|
end
|
|
|
|
initval_file(series = ds1, first_obs = 3Y, last_obs = 210Y, nobs = 208);
|
|
if oo_.initval_series.dates(1) ~= dates('3Y');
|
|
error('Wrong initial date in oo_.initval_series');
|
|
end;
|
|
if oo_.initval_series{'x'}.data(6) ~= 0.9;
|
|
error('Wrong value for x');
|
|
end;
|
|
|
|
|
|
perfect_foresight_setup(periods=200);
|
|
perfect_foresight_solver(maxit=100);
|
|
|
|
if ~oo_.deterministic_simulation.status
|
|
error('Perfect foresight simulation failed');
|
|
end
|
|
|
|
base_results=load(['sim_exo_lead_lag' filesep 'Output' filesep 'sim_exo_lead_lag_results.mat']);
|
|
if max(max(abs(base_results.oo_.endo_simul(1:5,:) - oo_.endo_simul(1:5,:)))) > 1e-8
|
|
error('Simulation with leads and lags doesn''t match the one with auxiliary variables')
|
|
end
|
|
|
|
initval_file(series = ds1, first_simulation_period = 7);
|
|
if oo_.initval_series.dates(1) ~= dates('3Y');
|
|
error('Wrong initial date in oo_.initval_series');
|
|
end;
|
|
if oo_.initval_series{'x'}.data(6) ~= 0.9;
|
|
error('Wrong value for x');
|
|
end;
|
|
|
|
|
|
perfect_foresight_setup(periods=200);
|
|
perfect_foresight_solver(maxit=100);
|
|
|
|
if ~oo_.deterministic_simulation.status
|
|
error('Perfect foresight simulation failed');
|
|
end
|
|
|
|
base_results=load(['sim_exo_lead_lag' filesep 'Output' filesep 'sim_exo_lead_lag_results.mat']);
|
|
if max(max(abs(base_results.oo_.endo_simul(1:5,:) - oo_.endo_simul(1:5,:)))) > 1e-8
|
|
error('Simulation with leads and lags doesn''t match the one with auxiliary variables')
|
|
end
|
|
|
|
initval_file(series = ds1, first_simulation_period = 7Y);
|
|
if oo_.initval_series.dates(1) ~= dates('3Y');
|
|
error('Wrong initial date in oo_.initval_series');
|
|
end;
|
|
if oo_.initval_series{'x'}.data(6) ~= 0.9;
|
|
error('Wrong value for x');
|
|
end;
|
|
|
|
|
|
perfect_foresight_setup(periods=200);
|
|
perfect_foresight_solver(maxit=100);
|
|
|
|
if ~oo_.deterministic_simulation.status
|
|
error('Perfect foresight simulation failed');
|
|
end
|
|
|
|
base_results=load(['sim_exo_lead_lag' filesep 'Output' filesep 'sim_exo_lead_lag_results.mat']);
|
|
if max(max(abs(base_results.oo_.endo_simul(1:5,:) - oo_.endo_simul(1:5,:)))) > 1e-8
|
|
error('Simulation with leads and lags doesn''t match the one with auxiliary variables')
|
|
end
|
|
|