Renamed and changed integration test for sim1_purely_forward routine.
Check the results against analytical solution. Also added a new integration test (ar1.mod).time-shift
parent
02c71eb270
commit
8763c29f34
|
@ -214,7 +214,8 @@ MODFILES = \
|
||||||
ep/rbc2.mod \
|
ep/rbc2.mod \
|
||||||
ep/rbcii.mod \
|
ep/rbcii.mod \
|
||||||
ep/linearmodel.mod \
|
ep/linearmodel.mod \
|
||||||
deterministic_simulations/deterministic_model_purely_forward.mod \
|
deterministic_simulations/purely_forward/ar1.mod \
|
||||||
|
deterministic_simulations/purely_forward/nk.mod \
|
||||||
deterministic_simulations/purely_backward/ar1.mod \
|
deterministic_simulations/purely_backward/ar1.mod \
|
||||||
deterministic_simulations/rbc_det1.mod \
|
deterministic_simulations/rbc_det1.mod \
|
||||||
deterministic_simulations/rbc_det2.mod \
|
deterministic_simulations/rbc_det2.mod \
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
var y i pi rbar ;
|
|
||||||
|
|
||||||
varexo r tauw taus taua gn;
|
|
||||||
|
|
||||||
parameters khia khiw khis phipi phiy taubs taubw tauba w sigma psi kappa alpha mu beta teta;
|
|
||||||
|
|
||||||
teta = 12.7721;
|
|
||||||
sigma = 1.1599;
|
|
||||||
beta = 0.9970;
|
|
||||||
alpha = 0.7747;
|
|
||||||
mu = 0.9030;
|
|
||||||
taubs = 0.05;
|
|
||||||
taubw = 0.02;
|
|
||||||
tauba = 0;
|
|
||||||
w = 1.5692;
|
|
||||||
phipi = 1.5;
|
|
||||||
phiy = 0.5/4;
|
|
||||||
|
|
||||||
khia = (1-beta)/(1-tauba);
|
|
||||||
khiw = 1/(1-taubw);
|
|
||||||
khis = 1/(1+taubs);
|
|
||||||
psi = 1/(sigma + w);
|
|
||||||
kappa = (1-alpha)*(1-alpha*beta)*(sigma+w)/(alpha*(1+w*teta));
|
|
||||||
|
|
||||||
model(linear);
|
|
||||||
y = y(+1)-sigma*(i-pi(+1)-r)+(gn-gn(+1))+(sigma)^-1*khis*(taus(+1)-taus)+sigma*khia*taua;
|
|
||||||
|
|
||||||
pi=kappa*y+kappa*psi*(khiw*tauw+khis*taus-sigma*gn)+beta*pi(+1);
|
|
||||||
|
|
||||||
i=max(0,r+phipi*pi+phiy*y);
|
|
||||||
|
|
||||||
rbar = -((kappa*phipi+(1-beta*mu)*phiy)*sigma^-1*khia*taus)/((1-mu+sigma^-1*phiy)*(1-beta*mu)+kappa*sigma^-1*(phipi-mu))
|
|
||||||
- (((1-mu)*kappa*psi*phipi+sigma^-1*mu*kappa*psi*phiy)*khiw*tauw)/((1-mu+sigma^-1*phiy)*(1-beta*mu)+kappa*sigma*(phipi-mu))
|
|
||||||
-(kappa*sigma*(1-mu)*(sigma^-1-psi)*phipi+((1-mu)*(1-beta*mu)-kappa*psi*mu)*phiy)*(gn-sigma^-1*khis*taus)/((1-mu-sigma^-1*phiy)*(1-beta*mu)+kappa*sigma^-1*(phipi-mu));
|
|
||||||
|
|
||||||
end;
|
|
||||||
|
|
||||||
initval;
|
|
||||||
y=0;
|
|
||||||
i=-log(beta);
|
|
||||||
pi=0;
|
|
||||||
rbar = 0;
|
|
||||||
end;
|
|
||||||
|
|
||||||
steady;
|
|
||||||
check;
|
|
||||||
|
|
||||||
shocks;
|
|
||||||
var r;
|
|
||||||
periods 1:9;
|
|
||||||
values -0.0104;
|
|
||||||
end;
|
|
||||||
|
|
||||||
simul(periods=2100);
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
var y;
|
||||||
|
|
||||||
|
varexo eps;
|
||||||
|
|
||||||
|
model;
|
||||||
|
y = sqrt(y(1))*exp(eps);
|
||||||
|
end;
|
||||||
|
|
||||||
|
initval;
|
||||||
|
y = 1;
|
||||||
|
eps = 0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
steady;
|
||||||
|
|
||||||
|
check;
|
||||||
|
|
||||||
|
|
||||||
|
shocks;
|
||||||
|
var eps;
|
||||||
|
periods 1 2;
|
||||||
|
values 1 -1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
simul(periods=5);
|
||||||
|
|
||||||
|
expected_y = ones(1, 6);
|
||||||
|
expected_y(2) = exp(-1);
|
||||||
|
expected_y(1) = sqrt(exp(-1))*exp(1);
|
||||||
|
|
||||||
|
if max(abs(oo_.endo_simul-expected_y))>options_.dynatol.x
|
||||||
|
error('Wrong solution!')
|
||||||
|
end
|
|
@ -0,0 +1,76 @@
|
||||||
|
var y i pi ;
|
||||||
|
|
||||||
|
varexo e;
|
||||||
|
|
||||||
|
parameters a1 a2 a3 a4 a5;
|
||||||
|
|
||||||
|
a1 = -.5;
|
||||||
|
a2 = .1;
|
||||||
|
a3 = .9;
|
||||||
|
a4 = 1.5;
|
||||||
|
a5 = 0.5;
|
||||||
|
|
||||||
|
model;
|
||||||
|
|
||||||
|
y = y(1)+a1*(i-pi(1))+e;
|
||||||
|
|
||||||
|
pi = a2*y + a3*pi(1);
|
||||||
|
|
||||||
|
i = max(0, a4*pi+a5*y);
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
steady_state_model;
|
||||||
|
y=0;
|
||||||
|
i=0;
|
||||||
|
pi=0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
steady;
|
||||||
|
check;
|
||||||
|
|
||||||
|
shocks;
|
||||||
|
var e;
|
||||||
|
periods 1 2;
|
||||||
|
values .3 -0.1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
simul(periods=5);
|
||||||
|
|
||||||
|
% Initialize the analytical solution for the endogenous variables.
|
||||||
|
expected_y = zeros(1, 6);
|
||||||
|
expected_pi = zeros(1, 6);
|
||||||
|
expected_i = zeros(1, 6);
|
||||||
|
|
||||||
|
% Set period 2.
|
||||||
|
tmp = inv(eye(3)-[0 0 a1; a2 0 0; a5 a4 0])*[oo_.exo_simul(2); 0; 0];
|
||||||
|
|
||||||
|
if tmp(3)>=0
|
||||||
|
expected_y(2) = tmp(1);
|
||||||
|
expected_pi(2) = tmp(2);
|
||||||
|
expected_i(2) = tmp(3);
|
||||||
|
else
|
||||||
|
expected_y(2) = oo_.exo_simul(2);
|
||||||
|
expected_pi(2) = expected_y(2)*a2;
|
||||||
|
expected_i(2) = 0;
|
||||||
|
end
|
||||||
|
|
||||||
|
% Set period 1.
|
||||||
|
tmp = inv(eye(3)-[0 0 a1; a2 0 0; a5 a4 0])*[oo_.exo_simul(1)+expected_y(2)-a1*expected_pi(2); a3*expected_pi(2); 0];
|
||||||
|
|
||||||
|
if tmp(3)>=0
|
||||||
|
expected_y(1) = tmp(1);
|
||||||
|
expected_pi(1) = tmp(2);
|
||||||
|
expected_i(1) = tmp(3);
|
||||||
|
else
|
||||||
|
expected_y(1) = oo_.exo_simul(1)+expected_y(2)-a1*expected_pi(2);
|
||||||
|
expected_pi(1) = expected_y(2)*a2+a3*expected_pi(2);
|
||||||
|
expected_i(1) = 0;
|
||||||
|
end
|
||||||
|
|
||||||
|
% Compare the paths returned by sim1_purely_forward routine and the analytical solution.
|
||||||
|
if max(abs(oo_.endo_simul(1,:)-expected_y))>options_.dynatol.x || ...
|
||||||
|
max(abs(oo_.endo_simul(2,:)-expected_i))>options_.dynatol.x || ...
|
||||||
|
max(abs(oo_.endo_simul(3,:)-expected_pi))>options_.dynatol.x
|
||||||
|
error('Wrong solution!')
|
||||||
|
end
|
Loading…
Reference in New Issue