var_forecast tests

time-shift
Houtan Bastani 2016-11-22 13:13:43 +01:00 committed by Stéphane Adjemian (Charybdis)
parent 20ba99cf94
commit 7c9e54c8b4
3 changed files with 111 additions and 0 deletions

33
tests/ECB/nkm.mod Normal file
View File

@ -0,0 +1,33 @@
var i, pi, y;
varexo ee, nu;
parameters bet, bet1, gam, sig, phi, psi;
bet = 0.99;
bet1 = 0.99;
gam = 0.1275;
sig = 1;
phi = 1.5;
psi = 0.125;
model;
% Taylor Rule
i = phi*pi + psi*y + ee;
% Phillips Curve
pi = bet*pi(1) + gam*y;
% IS
y = y(1) + y(-1) - 1/sig*(i - pi(1)) + nu;
end;
shocks;
var ee; stderr 0.0205;
var nu; stderr 0.898;
end;
stoch_simul(order=1, periods=200);

33
tests/ECB/nkm_var.mod Normal file
View File

@ -0,0 +1,33 @@
var i, pi, y;
varexo ee, nu;
parameters bet, gam, sig, phi, psi;
bet = 0.99;
gam = 0.1275;
sig = 1;
phi = 1.5;
psi = 0.125;
var_model(model_name=my_var_est, order=1) pi y;
model;
% Taylor Rule
i = phi*pi + psi*y + ee;
% Phillips Curve
pi = bet*pi(1) + gam*y;
% IS
y = var_expectation(y, model_name=my_var_est) + y(-1) - 1/sig*(i - var_expectation(pi, model_name=my_var_est)) + nu;
end;
shocks;
var ee; stderr 0.0205;
var nu; stderr 0.0305;
end;
stoch_simul(order=1, periods=200);

View File

@ -0,0 +1,45 @@
clearvars
clearvars -global
!rm nkm_saved_data.mat
!rm my_var_est.mat
!rm nkm_var_saved_data.mat
%% Call Dynare without VAR
dynare nkm.mod
save('nkm_saved_data.mat')
%% Estimate VAR using simulated data
disp('VAR Estimation');
Y = oo_.endo_simul(2:3, 2:end);
Z = [ones(1, size(Y,2)); oo_.endo_simul(2:3, 1:end-1)];
% OLS
B = Y*transpose(Z)/(Z*transpose(Z));
%% save values
mu = B(:, 1);
autoregressive_matrices{1} = B(:, 2:end);
save('my_var_est.mat', 'mu', 'autoregressive_matrices');
%% Call Dynare with VAR
clearvars
clearvars -global
dynare nkm_var.mod
save('nkm_var_saved_data.mat')
%% compare values
clearvars
clearvars -global
zerotol = 1e-12;
nv = load('nkm_saved_data.mat');
wv = load('nkm_var_saved_data.mat');
assert(max(max(abs(nv.y - wv.y))) < zerotol);
assert(max(max(abs(nv.pi - wv.pi))) < zerotol);
assert(max(max(abs(nv.i - wv.i))) < zerotol);
fn = fieldnames(nv.oo_.irfs);
for i=1:length(fn)
assert(max(max(abs(nv.oo_.irfs.(fn{i}) - (wv.oo_.irfs.(fn{i}))))) < zerotol);
end