From 7c9e54c8b40f6938a302ad7498a5287dc69593dc Mon Sep 17 00:00:00 2001 From: Houtan Bastani Date: Tue, 22 Nov 2016 13:13:43 +0100 Subject: [PATCH] var_forecast tests --- tests/ECB/nkm.mod | 33 +++++++++++++++++++++++++ tests/ECB/nkm_var.mod | 33 +++++++++++++++++++++++++ tests/ECB/run_var_comparison.m | 45 ++++++++++++++++++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 tests/ECB/nkm.mod create mode 100644 tests/ECB/nkm_var.mod create mode 100644 tests/ECB/run_var_comparison.m diff --git a/tests/ECB/nkm.mod b/tests/ECB/nkm.mod new file mode 100644 index 000000000..0f3c1e3b1 --- /dev/null +++ b/tests/ECB/nkm.mod @@ -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); + diff --git a/tests/ECB/nkm_var.mod b/tests/ECB/nkm_var.mod new file mode 100644 index 000000000..c709615a0 --- /dev/null +++ b/tests/ECB/nkm_var.mod @@ -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); + diff --git a/tests/ECB/run_var_comparison.m b/tests/ECB/run_var_comparison.m new file mode 100644 index 000000000..5677b5d09 --- /dev/null +++ b/tests/ECB/run_var_comparison.m @@ -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 \ No newline at end of file