Fixed integration tests related to simulation of backward models.
parent
6dde1b1ee7
commit
f284169248
|
@ -250,7 +250,6 @@ MODFILES = \
|
|||
stochastic-backward-models/solow_cd.mod \
|
||||
stochastic-backward-models/solow_ces.mod \
|
||||
stochastic-backward-models/solow_cd_with_steadystate.mod \
|
||||
stochastic-backward-models/backward_linear.mod \
|
||||
deterministic_simulations/purely_forward/ar1.mod \
|
||||
deterministic_simulations/purely_forward/nk.mod \
|
||||
deterministic_simulations/purely_backward/ar1.mod \
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
var y gdp gdp_pot g pi P rs;
|
||||
varexo e_y e_g e_p;
|
||||
|
||||
parameters alpha_1 alpha_2 beta_1 beta_2 theta gamma_1 gamma_2 pi_tar g_ss rr_bar;
|
||||
alpha_1 = 0.9;
|
||||
alpha_2 = -0.1;
|
||||
beta_1 = 0.8;
|
||||
beta_2 = 0.1;
|
||||
theta = 0.9;
|
||||
gamma_1 = 1.5;
|
||||
gamma_2 = 0.5;
|
||||
pi_tar = 2;
|
||||
g_ss = 0.005;
|
||||
rr_bar = 1;
|
||||
|
||||
model(linear);
|
||||
gdp = gdp_pot + y;
|
||||
y = alpha_1*y(-1) + alpha_2*(rs - pi - rr_bar) + e_y;
|
||||
gdp_pot = gdp_pot(-1) + g;
|
||||
g = (1 - theta)*g_ss + theta*g(-1) + e_g;
|
||||
pi = (1 - beta_1)*pi_tar + beta_1*pi(-1) + beta_2*y + e_p;
|
||||
P = pi/400 + P(-1);
|
||||
rs = rr_bar + pi_tar + gamma_1*(pi(-1) - pi_tar) + gamma_2*y(-1);
|
||||
end;
|
||||
|
||||
histval;
|
||||
gdp_pot(0) = 1;
|
||||
P(0) = 1;
|
||||
g(0) = g_ss;
|
||||
pi(0) = pi_tar;
|
||||
end;
|
||||
|
||||
oo_.steadystate = NaN(7,1);
|
||||
|
||||
oo_ = simul_backward_model(M_.endo_histval, 10, options_, M_, oo_, zeros(11,3));
|
||||
|
||||
err1 = norm(abs(oo_.endo_simul([1 4 5 7],2:end) - repmat([0 0.005 2 3]',1,10)));
|
||||
err2 = norm(abs(oo_.endo_simul([2 3 6],2:end) - repmat(linspace(1.005,1.05,10),3,1)));
|
||||
if err1 > 1e-14 || err2 > 1e-14;
|
||||
error('Error in backward_linear.mod');
|
||||
end;
|
|
@ -54,4 +54,6 @@ shocks;
|
|||
var e_n = 0.001;
|
||||
end;
|
||||
|
||||
oo_ = simul_backward_nonlinear_model([], 5000, options_, M_, oo_);
|
||||
initialconditions = dseries([1 1.02 1 1.02 1], 2000Q1, {'Efficiency'; 'EfficiencyGrowth'; 'Population'; 'PopulationGrowth'; 'PhysicalCapitalStock'});
|
||||
|
||||
simulations = simul_backward_model(initialconditions, 5000);
|
||||
|
|
|
@ -33,35 +33,31 @@ model;
|
|||
PhysicalCapitalStock = (1-delta)*PhysicalCapitalStock(-1) + s*Output;
|
||||
end;
|
||||
|
||||
histval;
|
||||
Efficiency(0) = .5;
|
||||
EfficiencyGrowth(0) = 1.00;
|
||||
Population(0) = 1;
|
||||
PopulationGrowth(0) = 1.04;
|
||||
PhysicalCapitalStock(0) = 15;
|
||||
end;
|
||||
d = dseries([.5 1 1 1.04 15], 2000Q1, {'Efficiency'; 'EfficiencyGrowth'; 'Population'; 'PopulationGrowth'; 'PhysicalCapitalStock'});
|
||||
|
||||
LongRunEfficiency = M_.endo_histval(1)*M_.endo_histval(2)^(rho_x/(1-rho_x));
|
||||
LongRunPopulation = M_.endo_histval(3)*M_.endo_histval(4)^(rho_n/(1-rho_n));
|
||||
LongRunEfficiency = d.Efficiency*d.EfficiencyGrowth^(rho_x/(1-rho_x));
|
||||
LongRunPopulation = d.Population*d.PopulationGrowth^(rho_n/(1-rho_n));
|
||||
LongRunEfficiencyGrowth = EfficiencyGrowth_ss;
|
||||
LongRunPopulationGrowth = PopulationGrowth_ss;
|
||||
LongRunIntensiveCapitalStock = LongRunEfficiencyGrowth*LongRunPopulationGrowth*(s/(LongRunEfficiencyGrowth*LongRunPopulationGrowth-1+delta))^(1/(1-alpha));
|
||||
LongRunIntensiveCapitalStock = (s/(LongRunEfficiencyGrowth*LongRunPopulationGrowth-1+delta))^(1/(1-alpha)); //LongRunEfficiencyGrowth*LongRunPopulationGrowth*
|
||||
|
||||
precision = 1e-6;
|
||||
T = 5*floor(log(precision)/log(max(rho_x, rho_n)));
|
||||
|
||||
oo_ = simul_backward_model(M_.endo_histval, T, options_, M_, oo_, zeros(T+1,2));
|
||||
e = dseries(zeros(T, 2), 2000Q2, {'e_x'; 'e_n'});
|
||||
|
||||
if abs(oo_.endo_simul(1,end)-LongRunEfficiency)>1e-10
|
||||
simulations = simul_backward_model(d, T, e);
|
||||
|
||||
if abs(simulations.Efficiency.data(end)-LongRunEfficiency.data)>1e-10
|
||||
error('Wrong long run level!')
|
||||
end
|
||||
|
||||
if abs(oo_.endo_simul(3,end)-LongRunPopulation)>1e-10
|
||||
if abs(simulations.Population.data(end)-LongRunPopulation.data)>1e-10
|
||||
error('Wrong long run level!')
|
||||
end
|
||||
|
||||
IntensiveCapitalStock = oo_.endo_simul(6,1:end)./(oo_.endo_simul(1,1:end).*oo_.endo_simul(3,1:end));
|
||||
IntensiveCapitalStock = simulations.PhysicalCapitalStock/(simulations.Efficiency*simulations.Population);
|
||||
|
||||
if abs(IntensiveCapitalStock(end)-LongRunIntensiveCapitalStock>1e-10)
|
||||
error('Wrong long run level!')
|
||||
if abs(IntensiveCapitalStock.data(end)-LongRunIntensiveCapitalStock)>1e-3
|
||||
error('Wrong long run level!')
|
||||
end
|
||||
|
|
|
@ -35,17 +35,11 @@ model;
|
|||
PhysicalCapitalStock = (1-delta)*PhysicalCapitalStock(-1) + s*Output;
|
||||
end;
|
||||
|
||||
histval;
|
||||
Efficiency(0) = 1;
|
||||
EfficiencyGrowth(0) = 1.02;
|
||||
Population(0) = 1;
|
||||
PopulationGrowth(0) = 1.02;
|
||||
PhysicalCapitalStock(0) = 1;
|
||||
end;
|
||||
d = dseries([1 1.02 1 1.02 1], 2000Q1, {'Efficiency'; 'EfficiencyGrowth'; 'Population'; 'PopulationGrowth'; 'PhysicalCapitalStock'});
|
||||
|
||||
shocks;
|
||||
var e_x = 0.005;
|
||||
var e_n = 0.001;
|
||||
end;
|
||||
|
||||
oo_ = simul_backward_nonlinear_model([], 5000, options_, M_, oo_);
|
||||
simulations = simul_backward_model(d, 5000);
|
Loading…
Reference in New Issue