From d677d04aaf5a16ac01d4722d88ac9f2841ca4612 Mon Sep 17 00:00:00 2001 From: ckwolf92 Date: Wed, 30 Jun 2021 20:15:44 -0500 Subject: [PATCH 1/5] add kaenzig (2021) application added oil news shock application --- .../gk}/GK_LICENSE.txt | 0 {application => applications/gk}/gk2015.csv | 0 {application => applications/gk}/run_gk.m | 2 + applications/kaenzig/run_kaenzig.m | 143 ++++++++++++++++++ .../kaenzig/subroutines/svariv_table.m | 64 ++++++++ .../kaenzig/subroutines/svmaiv_table.m | 73 +++++++++ applications/kaenzig/subroutines/vec.m | 2 + .../kaenzig/tables/svariv_kaenzig.tex | 23 +++ .../kaenzig/tables/svmaiv_kaenzig.tex | 23 +++ 9 files changed, 330 insertions(+) rename {application => applications/gk}/GK_LICENSE.txt (100%) rename {application => applications/gk}/gk2015.csv (100%) rename {application => applications/gk}/run_gk.m (97%) create mode 100644 applications/kaenzig/run_kaenzig.m create mode 100644 applications/kaenzig/subroutines/svariv_table.m create mode 100644 applications/kaenzig/subroutines/svmaiv_table.m create mode 100644 applications/kaenzig/subroutines/vec.m create mode 100644 applications/kaenzig/tables/svariv_kaenzig.tex create mode 100644 applications/kaenzig/tables/svmaiv_kaenzig.tex diff --git a/application/GK_LICENSE.txt b/applications/gk/GK_LICENSE.txt similarity index 100% rename from application/GK_LICENSE.txt rename to applications/gk/GK_LICENSE.txt diff --git a/application/gk2015.csv b/applications/gk/gk2015.csv similarity index 100% rename from application/gk2015.csv rename to applications/gk/gk2015.csv diff --git a/application/run_gk.m b/applications/gk/run_gk.m similarity index 97% rename from application/run_gk.m rename to applications/gk/run_gk.m index 2748e3d..bba0c11 100644 --- a/application/run_gk.m +++ b/applications/gk/run_gk.m @@ -1,4 +1,6 @@ +clc clear all; +close all; % Empirical application: Gertler & Karadi (AEJ Macro, 2015) diff --git a/applications/kaenzig/run_kaenzig.m b/applications/kaenzig/run_kaenzig.m new file mode 100644 index 0000000..d4fd9b9 --- /dev/null +++ b/applications/kaenzig/run_kaenzig.m @@ -0,0 +1,143 @@ +clc +clear all; +close all; + +% Empirical application: Kaenzig (AER, 2021) + +%% Load data + +% settings + +data.endo_vars = {'Oil price','Oil production','Oil inventories','World IP','NEER','IP','CPI','FFR','VXO','TOT'}; +data.iv = 'oil_surprise'; + +data.smpl_start = '1974M01'; +data.smpl_end = '2017M12'; + +% data + +load data_kaenzig + +% endogenous variables + +data.sampleDates = sampleDates; + +data.smplStartInd = find(strcmp(data.sampleDates,data.smpl_start)); +data.smplEndInd = find(strcmp(data.sampleDates,data.smpl_end)); + +data.Y = dataEndo(data.smplStartInd:data.smplEndInd,:); + +% IV + +proxyRaw = [oilProxiesWTIM(:,14)]; + +data.Z = proxyRaw(data.smplStartInd:data.smplEndInd,:); + +clear sampleDates dataEndo oilProxiesWTIM proxyRaw + +%% SVMA-IV inference + +disp('*** SVMA-IV analysis ***'); + +% Preliminaries +addpath('../../functions'); % Add folder with SVMA-IV analysis functions +addpath('subroutines'); % Add folder with some application-specific auxiliary functions +rng(2018); % Seed random number generator (for bootstrap) + +% Estimation settings (see other optional settings in "functions/SVMAIV_estim.m") +settings = {'p', 12; % Information criterion + 'n_boot', 100; % Number of bootstrap samples + 'signif', 0.1; % Significance level + 'horiz', 1:50}'; % Horizons of FVR to report + +% Run inference routines +[bounds, id_recov, inv_test, settings_struct] = SVMAIV_estim(data.Y, data.Z, settings{:}); + + +%% Display pre-test for invertibility + +disp('Invertibility pre-test p-value: all equations jointly'); +disp(inv_test.pval.all); + +disp('Invertibility pre-test p-value: each equation separately'); +disp(inv_test.pval.eqns); + + +%% Display bounds on alpha and degree of invertibility/recoverability + +% Scale parameter +disp('Bound estimates: alpha'); +disp([bounds.estim.lower.alpha bounds.estim.upper.alpha]); +disp('Confidence interval: alpha'); +disp([bounds.ci.lower.alpha bounds.ci.upper.alpha]); + +% Degree of invertibility +disp('Bound estimates: degree of invertibility'); +disp([bounds.estim.lower.R2_inv bounds.estim.upper.R2_inv]); +disp('Confidence interval: degree of invertibility'); +disp([bounds.ci.lower.R2_inv bounds.ci.upper.R2_inv]); + +% Degree of recoverability +disp('Bound estimates: degree of recoverability'); +disp([bounds.estim.lower.R2_recov bounds.estim.upper.R2_recov]); +disp('Confidence interval: degree of recoverability'); +disp([bounds.ci.lower.R2_recov bounds.ci.upper.R2_recov]); + + +%% Report FVR bounds + +% figure + +plots.xticks = 0:10:50; % X axis ticks for FVR plot +plots.titles = {'FVR of Oil Price', 'FVR of Oil Production', 'FVR of Oil Inventories', 'FVR of World IP', 'FVR of NEER', ... + 'FVR of IP', 'FVR of CPI', 'FVR of FFR', 'FVR of VXO', 'FVR of TOT'}; +plots.xlabel = 'Horizon (Months)'; % X axis label for FVR plot +plots.ylabel = ''; % Y axis label for FVR plot +mkdir('figures'); % Figure output folder + +for i=1:size(data.Y,2) % For each macro variable... + + % Plot bound estimates and CI for identified set + figure('Units', 'normalize', 'Position', [0.2 0.2 0.6 0.6]); + plot_band(bounds.ci.lower.FVR(:,i), bounds.ci.upper.FVR(:,i), bounds.estim.lower.FVR(:,i), bounds.estim.upper.FVR(:,i), ... + plots.titles{i}, plots.xlabel, plots.ylabel, {'Estimate of identif. set', sprintf('%d%s', 100*(1-settings_struct.signif_level), '\% conf. interval for identif. set')}, ... + 'YLim', [0 1], 'XLim', [1 max(settings_struct.FVR_hor)], 'XTick', plots.xticks, 'FontSize', 18, 'TitleFontSizeMultiplier', 1.2); + grid on; + drawnow; + save_fig('figures', strcat('svma_kaenzig_', data.endo_vars{i})); + +end + +clear i + +% table + +svmaiv_table + +%% SVAR-IV analysis for comparison (assumes invertibility) + +disp('*** SVAR-IV analysis ***'); + +% Run analysis +[~, SVARIV_FVD, SVARIV_settings_struct] = SVARIV_estim(data.Y, data.Z, settings{:}); + +% FVD figure + +for i=1:size(data.Y,2) % For each macro variable... + + % Plot point estimates and CIs + figure('Units', 'normalize', 'Position', [0.2 0.2 0.6 0.6]); + plot_band(SVARIV_FVD.ci.lower(:,i), SVARIV_FVD.ci.upper(:,i), SVARIV_FVD.estim(:,i), [], ... + plots.titles{i}, plots.xlabel, plots.ylabel, {'Point estimate', sprintf('%d%s', 100*(1-SVARIV_settings_struct.signif_level), '\% conf. interval')}, ... + 'YLim', [0 1], 'XLim', [1 max(SVARIV_settings_struct.FVD_hor)], 'XTick', plots.xticks, 'FontSize', 18, 'TitleFontSizeMultiplier', 1.2); + grid on; + drawnow; + save_fig('figures', strcat('svar_kaenzig_', data.endo_vars{i})); + +end + +clear i + +% FVD table + +svariv_table \ No newline at end of file diff --git a/applications/kaenzig/subroutines/svariv_table.m b/applications/kaenzig/subroutines/svariv_table.m new file mode 100644 index 0000000..40eb2c1 --- /dev/null +++ b/applications/kaenzig/subroutines/svariv_table.m @@ -0,0 +1,64 @@ +SVARIV_FVD_med = min(1,max(0,SVARIV_FVD.estim)); +SVARIV_FVD_lb = min(1,max(0,SVARIV_FVD.ci.lower)); +SVARIV_FVD_ub = min(1,max(0,SVARIV_FVD.ci.upper)); + +nvar = size(SVARIV_FVD_med,2); + +nvarbase = 5; +FID = fopen('tables/svariv_kaenzig.tex','w'); +fprintf(FID, strcat('\\begin{tabular}{l',repmat('c',1,6),'}\\toprule\\midrule \n')); +fprintf(FID,'\\multicolumn{6}{l}{\\textit{Global variables and exchange rates:}} \\\\ \n'); +nameString = [ ]; +for ii = 1:nvarbase-1 + nameString = [nameString ' %s &']; +end +nameString = [nameString ' %s ']; +fprintf(FID,strcat(' & ',nameString,' \\\\ \\midrule \n'),data.endo_vars{1:nvarbase}); +numString = ' %1.0f & '; +for ii = 1:nvarbase-1 + numString = [numString '%8.2f & ']; +end +numString = [numString '%8.2f']; +numStringBands = []; +for ii = 1:nvarbase-1 + numStringBands = [numStringBands ' [%1.2f,%8.2f] &']; +end +numStringBands = [numStringBands ' [%1.2f,%8.2f]']; +for kk=[0 12 24 48] %48 + kk2=kk+1; + if kk<36 + fprintf(FID,strcat(numString,' \\\\ \n'),kk,SVARIV_FVD_med(kk2,1:nvarbase)); + fprintf(FID, strcat(' & ',numStringBands,' \\\\ \n'),vec([SVARIV_FVD_lb(kk2,1:nvarbase)' SVARIV_FVD_ub(kk2,1:nvarbase)']')); + else + fprintf(FID,strcat(numString,' \\\\ \n'),kk,SVARIV_FVD_med(kk2,1:nvarbase)); + fprintf(FID, strcat(' & ',numStringBands,' \\\\[2ex] \\midrule \n'),vec([SVARIV_FVD_lb(kk2,1:nvarbase)' SVARIV_FVD_ub(kk2,1:nvarbase)']')); + end +end +fprintf(FID,'\\multicolumn{6}{l}{\\textit{U.S. variables:}} \\\\ \n'); +nameString = [ ]; +for ii = 1:nvar-nvarbase-1 + nameString = [nameString ' %s &']; +end +nameString = [nameString ' %s ']; +fprintf(FID,strcat(' & ',nameString,' \\\\ \\midrule \n'),data.endo_vars{nvarbase+1:end}); +numString = ' %1.0f & '; +for ii = 1:nvar-nvarbase-1 + numString = [numString '%8.2f & ']; +end +numString = [numString '%8.2f']; +numStringBands = []; +for ii = 1:nvar-nvarbase-1 + numStringBands = [numStringBands ' [%1.2f,%8.2f] &']; +end +numStringBands = [numStringBands ' [%1.2f,%8.2f]']; +for kk=[0 12 24 48] + kk2=kk+1; + fprintf(FID,strcat(numString,' \\\\ \n'),kk,SVARIV_FVD_med(kk2,nvarbase+1:end)); + fprintf(FID, strcat(' & ',numStringBands,' \\\\ \n'),vec([SVARIV_FVD_lb(kk2,nvarbase+1:end)' SVARIV_FVD_ub(kk2,nvarbase+1:end)']')); + +end +fprintf(FID, '\\midrule\\bottomrule \n'); +fprintf(FID, '\\end{tabular}\n'); +fclose(FID); + +clear ans nvarbase FID ii kk kk2 nameString numString numStringBands nvar SVARIV_FVD_lb SVARIV_FVD_med SVARIV_FVD_ub \ No newline at end of file diff --git a/applications/kaenzig/subroutines/svmaiv_table.m b/applications/kaenzig/subroutines/svmaiv_table.m new file mode 100644 index 0000000..4bc8cfb --- /dev/null +++ b/applications/kaenzig/subroutines/svmaiv_table.m @@ -0,0 +1,73 @@ +SVMAIV_FVD_IS_lb = min(1,max(0,bounds.estim.lower.FVR)); +SVMAIV_FVD_IS_ub = min(1,max(0,bounds.estim.upper.FVR)); +SVMAIV_FVD_CI_lb = min(1,max(0,bounds.ci.lower.FVR)); +SVMAIV_FVD_CI_ub = min(1,max(0,bounds.ci.upper.FVR)); +nvar = size(SVMAIV_FVD_IS_lb,2); + +nvarbase = 5; +FID = fopen('tables/svmaiv_kaenzig.tex','w'); +fprintf(FID, strcat('\\begin{tabular}{l',repmat('c',1,6),'}\\toprule\\midrule \n')); +fprintf(FID,'\\multicolumn{6}{l}{\\textit{Global variables and exchange rates:}} \\\\ \n'); +nameString = [ ]; +for ii = 1:nvarbase-1 + nameString = [nameString ' %s &']; +end +nameString = [nameString ' %s ']; +fprintf(FID,strcat(' & ',nameString,' \\\\ \\midrule \n'),data.endo_vars{1:nvarbase}); +numString = ' %1.0f & '; +for ii = 1:nvarbase-1 + numString = [numString '%8.2f & ']; +end +numString = [numString '%8.2f']; +numStringBands1 = []; +for ii = 1:nvarbase-1 + numStringBands1 = [numStringBands1 ' %1.2f,%8.2f &']; +end +numStringBands1 = [numStringBands1 ' %1.2f,%8.2f']; +numStringBands2 = []; +for ii = 1:nvarbase-1 + numStringBands2 = [numStringBands2 ' [%1.2f,%8.2f] &']; +end +numStringBands2 = [numStringBands2 ' [%1.2f,%8.2f]']; +for kk=[0 12 24 48] %48 + kk2=kk+1; + if kk<36 + fprintf(FID,strcat(' %1.0f '),kk); + fprintf(FID, strcat(' & ',numStringBands1,' \\\\ \n'),vec([SVMAIV_FVD_IS_lb(kk2,1:nvarbase)' SVMAIV_FVD_IS_ub(kk2,1:nvarbase)']')); + fprintf(FID, strcat(' & ',numStringBands2,' \\\\ \n'),vec([SVMAIV_FVD_CI_lb(kk2,1:nvarbase)' SVMAIV_FVD_CI_ub(kk2,1:nvarbase)']')); + else + fprintf(FID,strcat(' %1.0f '),kk); + fprintf(FID, strcat(' & ',numStringBands1,' \\\\ \n'),vec([SVMAIV_FVD_IS_lb(kk2,1:nvarbase)' SVMAIV_FVD_IS_ub(kk2,1:nvarbase)']')); + fprintf(FID, strcat(' & ',numStringBands2,' \\\\[2ex] \\midrule \n'),vec([SVMAIV_FVD_CI_lb(kk2,1:nvarbase)' SVMAIV_FVD_CI_ub(kk2,1:nvarbase)']')); + end +end +fprintf(FID,'\\multicolumn{6}{l}{\\textit{U.S. variables:}} \\\\ \n'); +nameString = [ ]; +for ii = 1:nvar-nvarbase-1 + nameString = [nameString ' %s &']; +end +nameString = [nameString ' %s ']; +fprintf(FID,strcat(' & ',nameString,' \\\\ \\midrule \n'),data.endo_vars{nvarbase+1:end}); +numString = ' %1.0f & '; +for ii = 1:nvar-nvarbase-1 + numString = [numString '%8.2f & ']; +end +numString = [numString '%8.2f']; +numStringBands2 = []; +for ii = 1:nvar-nvarbase-1 + numStringBands2 = [numStringBands2 ' [%1.2f,%8.2f] &']; +end +numStringBands2 = [numStringBands2 ' [%1.2f,%8.2f]']; +for kk=[0 12 24 48] + kk2=kk+1; + fprintf(FID,strcat(' %1.0f '),kk); + fprintf(FID, strcat(' & ',numStringBands1,' \\\\ \n'),vec([SVMAIV_FVD_IS_lb(kk2,nvarbase+1:end)' SVMAIV_FVD_IS_ub(kk2,nvarbase+1:end)']')); + fprintf(FID, strcat(' & ',numStringBands2,' \\\\ \n'),vec([SVMAIV_FVD_CI_lb(kk2,nvarbase+1:end)' SVMAIV_FVD_CI_ub(kk2,nvarbase+1:end)']')); + +end +fprintf(FID, '\\midrule\\bottomrule \n'); +fprintf(FID, '\\end{tabular}\n'); +fclose(FID); + +clear ans nvarbase FID ii kk kk2 nameString numString numStringBands1 numStringBands2 nvar ... + SVMAIV_FVD_IS_lb SVMAIV_FVD_IS_ub SVMAIV_FVD_CI_lb SVMAIV_FVD_CI_ub \ No newline at end of file diff --git a/applications/kaenzig/subroutines/vec.m b/applications/kaenzig/subroutines/vec.m new file mode 100644 index 0000000..3db218d --- /dev/null +++ b/applications/kaenzig/subroutines/vec.m @@ -0,0 +1,2 @@ +function X = vec(X) +X = X(:); \ No newline at end of file diff --git a/applications/kaenzig/tables/svariv_kaenzig.tex b/applications/kaenzig/tables/svariv_kaenzig.tex new file mode 100644 index 0000000..a8869c1 --- /dev/null +++ b/applications/kaenzig/tables/svariv_kaenzig.tex @@ -0,0 +1,23 @@ +\begin{tabular}{lcccccc}\toprule\midrule +\multicolumn{6}{l}{\textit{Global variables and exchange rates:}} \\ + & Oil price & Oil production & Oil inventories & World IP & NEER \\ \midrule + 0 & 0.87 & 0.00 & 0.04 & 0.00 & 0.08 \\ + & [0.57, 1.00] & [0.00, 0.01] & [0.00, 0.10] & [0.00, 0.05] & [0.00, 0.16] \\ + 12 & 0.50 & 0.02 & 0.05 & 0.00 & 0.19 \\ + & [0.24, 0.71] & [0.00, 0.07] & [0.00, 0.12] & [0.00, 0.02] & [0.00, 0.31] \\ + 24 & 0.46 & 0.07 & 0.13 & 0.00 & 0.30 \\ + & [0.24, 0.62] & [0.00, 0.13] & [0.00, 0.22] & [0.00, 0.02] & [0.11, 0.42] \\ + 48 & 0.44 & 0.11 & 0.24 & 0.00 & 0.33 \\ + & [0.27, 0.57] & [0.00, 0.18] & [0.08, 0.35] & [0.00, 0.05] & [0.16, 0.43] \\[2ex] \midrule +\multicolumn{6}{l}{\textit{U.S. variables:}} \\ + & IP & CPI & FFR & VXO & TOT \\ \midrule + 0 & 0.05 & 0.01 & 0.00 & 0.00 & 0.18 \\ + & [0.00, 0.13] & [0.00, 0.08] & [0.00, 0.03] & [0.00, 0.01] & [0.00, 0.33] \\ + 12 & 0.01 & 0.10 & 0.00 & 0.00 & 0.51 \\ + & [0.00, 0.07] & [0.00, 0.21] & [0.00, 0.01] & [0.00, 0.00] & [0.29, 0.71] \\ + 24 & 0.02 & 0.08 & 0.00 & 0.00 & 0.45 \\ + & [0.00, 0.09] & [0.00, 0.18] & [0.00, 0.06] & [0.00, 0.02] & [0.26, 0.61] \\ + 48 & 0.19 & 0.05 & 0.00 & 0.00 & 0.42 \\ + & [0.01, 0.28] & [0.00, 0.13] & [0.00, 0.04] & [0.00, 0.02] & [0.26, 0.56] \\ +\midrule\bottomrule +\end{tabular} diff --git a/applications/kaenzig/tables/svmaiv_kaenzig.tex b/applications/kaenzig/tables/svmaiv_kaenzig.tex new file mode 100644 index 0000000..5ffd794 --- /dev/null +++ b/applications/kaenzig/tables/svmaiv_kaenzig.tex @@ -0,0 +1,23 @@ +\begin{tabular}{lcccccc}\toprule\midrule +\multicolumn{6}{l}{\textit{Global variables and exchange rates:}} \\ + & Oil price & Oil production & Oil inventories & World IP & NEER \\ \midrule + 0 & 0.04, 0.32 & 0.00, 0.00 & 0.00, 0.02 & 0.00, 0.00 & 0.00, 0.03 \\ + & [0.00, 0.41] & [0.00, 0.00] & [0.00, 0.03] & [0.00, 0.02] & [0.00, 0.05] \\ + 12 & 0.03, 0.30 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 \\ + & [0.00, 0.40] & [0.00, 0.05] & [0.00, 0.01] & [0.00, 0.01] & [0.00, 0.04] \\ + 24 & 0.02, 0.22 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 \\ + & [0.00, 0.32] & [0.00, 0.04] & [0.00, 0.03] & [0.00, 0.03] & [0.00, 0.05] \\ + 48 & 0.02, 0.22 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.07 \\ + & [0.00, 0.31] & [0.00, 0.03] & [0.00, 0.05] & [0.00, 0.05] & [0.00, 0.14] \\[2ex] \midrule +\multicolumn{6}{l}{\textit{U.S. variables:}} \\ + & IP & CPI & FFR & VXO & TOT \\ \midrule + 0 & 0.00, 0.02 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 & 0.01, 0.07 \\ + & [0.00, 0.04] & [0.00, 0.03] & [0.00, 0.01] & [0.00, 0.00] & [0.00, 0.10] \\ + 12 & 0.00, 0.00 & 0.00, 0.03 & 0.00, 0.02 & 0.00, 0.07 & 0.02, 0.26 \\ + & [0.00, 0.01] & [0.00, 0.07] & [0.00, 0.07] & [0.00, 0.12] & [0.00, 0.36] \\ + 24 & 0.00, 0.04 & 0.00, 0.01 & 0.00, 0.01 & 0.00, 0.07 & 0.01, 0.18 \\ + & [0.00, 0.10] & [0.00, 0.07] & [0.00, 0.06] & [0.00, 0.13] & [0.00, 0.28] \\ + 48 & 0.00, 0.03 & 0.00, 0.00 & 0.00, 0.01 & 0.00, 0.06 & 0.01, 0.20 \\ + & [0.00, 0.09] & [0.00, 0.03] & [0.00, 0.06] & [0.00, 0.12] & [0.00, 0.28] \\ +\midrule\bottomrule +\end{tabular} From 0f2c725eb775fc748b5805b1c796398e0ab8623e Mon Sep 17 00:00:00 2001 From: ckwolf92 Date: Fri, 2 Jul 2021 18:40:58 -0500 Subject: [PATCH 2/5] difference var's --- applications/kaenzig/run_kaenzig.m | 23 +++++++++++-- .../kaenzig/tables/svariv_kaenzig.tex | 32 +++++++++---------- .../kaenzig/tables/svmaiv_kaenzig.tex | 32 +++++++++---------- 3 files changed, 52 insertions(+), 35 deletions(-) diff --git a/applications/kaenzig/run_kaenzig.m b/applications/kaenzig/run_kaenzig.m index d4fd9b9..eea0975 100644 --- a/applications/kaenzig/run_kaenzig.m +++ b/applications/kaenzig/run_kaenzig.m @@ -11,7 +11,9 @@ data.endo_vars = {'Oil price','Oil production','Oil inventories','World IP','NEER','IP','CPI','FFR','VXO','TOT'}; data.iv = 'oil_surprise'; -data.smpl_start = '1974M01'; +% data.smpl_start = '1974M01'; +% data.smpl_start = '1983M04'; +data.smpl_start = '1983M03'; data.smpl_end = '2017M12'; % data @@ -27,12 +29,27 @@ data.Y = dataEndo(data.smplStartInd:data.smplEndInd,:); +data.diff = [0,1,1,1,1,1,1,0,0,0]; + +for i = 1:size(data.Y,2) + if data.diff(i) == 1 + data.Y(:,i) = [NaN;12 * (data.Y(2:end,i) - data.Y(1:end-1,i))]; + end +end + % IV proxyRaw = [oilProxiesWTIM(:,14)]; data.Z = proxyRaw(data.smplStartInd:data.smplEndInd,:); +% adjust sample + +if max(data.diff) == 1 + data.Y = data.Y(2:end,:); + data.Z = data.Z(2:end,:); +end + clear sampleDates dataEndo oilProxiesWTIM proxyRaw %% SVMA-IV inference @@ -89,8 +106,8 @@ % figure plots.xticks = 0:10:50; % X axis ticks for FVR plot -plots.titles = {'FVR of Oil Price', 'FVR of Oil Production', 'FVR of Oil Inventories', 'FVR of World IP', 'FVR of NEER', ... - 'FVR of IP', 'FVR of CPI', 'FVR of FFR', 'FVR of VXO', 'FVR of TOT'}; +plots.titles = {'FVR of Oil Price', 'FVR of Oil Production Growth', 'FVR of Oil Inventories Growth', 'FVR of World IP Growth', 'FVR of U.S. NEER Growth', ... + 'FVR of U.S. IP Growth', 'FVR of U.S. CPI Growth', 'FVR of FFR', 'FVR of VXO', 'FVR of U.S. TOT'}; plots.xlabel = 'Horizon (Months)'; % X axis label for FVR plot plots.ylabel = ''; % Y axis label for FVR plot mkdir('figures'); % Figure output folder diff --git a/applications/kaenzig/tables/svariv_kaenzig.tex b/applications/kaenzig/tables/svariv_kaenzig.tex index a8869c1..ed528dd 100644 --- a/applications/kaenzig/tables/svariv_kaenzig.tex +++ b/applications/kaenzig/tables/svariv_kaenzig.tex @@ -1,23 +1,23 @@ \begin{tabular}{lcccccc}\toprule\midrule \multicolumn{6}{l}{\textit{Global variables and exchange rates:}} \\ & Oil price & Oil production & Oil inventories & World IP & NEER \\ \midrule - 0 & 0.87 & 0.00 & 0.04 & 0.00 & 0.08 \\ - & [0.57, 1.00] & [0.00, 0.01] & [0.00, 0.10] & [0.00, 0.05] & [0.00, 0.16] \\ - 12 & 0.50 & 0.02 & 0.05 & 0.00 & 0.19 \\ - & [0.24, 0.71] & [0.00, 0.07] & [0.00, 0.12] & [0.00, 0.02] & [0.00, 0.31] \\ - 24 & 0.46 & 0.07 & 0.13 & 0.00 & 0.30 \\ - & [0.24, 0.62] & [0.00, 0.13] & [0.00, 0.22] & [0.00, 0.02] & [0.11, 0.42] \\ - 48 & 0.44 & 0.11 & 0.24 & 0.00 & 0.33 \\ - & [0.27, 0.57] & [0.00, 0.18] & [0.08, 0.35] & [0.00, 0.05] & [0.16, 0.43] \\[2ex] \midrule + 0 & 1.00 & 0.00 & 0.00 & 0.00 & 0.00 \\ + & [0.88, 1.00] & [0.00, 0.00] & [0.00, 0.00] & [0.00, 0.04] & [0.00, 0.05] \\ + 12 & 0.53 & 0.00 & 0.00 & 0.09 & 0.00 \\ + & [0.33, 0.70] & [0.00, 0.03] & [0.00, 0.01] & [0.02, 0.14] & [0.00, 0.05] \\ + 24 & 0.47 & 0.00 & 0.00 & 0.09 & 0.00 \\ + & [0.28, 0.61] & [0.00, 0.03] & [0.00, 0.02] & [0.04, 0.14] & [0.00, 0.05] \\ + 48 & 0.49 & 0.00 & 0.00 & 0.09 & 0.00 \\ + & [0.27, 0.63] & [0.00, 0.02] & [0.00, 0.02] & [0.03, 0.14] & [0.00, 0.05] \\[2ex] \midrule \multicolumn{6}{l}{\textit{U.S. variables:}} \\ & IP & CPI & FFR & VXO & TOT \\ \midrule - 0 & 0.05 & 0.01 & 0.00 & 0.00 & 0.18 \\ - & [0.00, 0.13] & [0.00, 0.08] & [0.00, 0.03] & [0.00, 0.01] & [0.00, 0.33] \\ - 12 & 0.01 & 0.10 & 0.00 & 0.00 & 0.51 \\ - & [0.00, 0.07] & [0.00, 0.21] & [0.00, 0.01] & [0.00, 0.00] & [0.29, 0.71] \\ - 24 & 0.02 & 0.08 & 0.00 & 0.00 & 0.45 \\ - & [0.00, 0.09] & [0.00, 0.18] & [0.00, 0.06] & [0.00, 0.02] & [0.26, 0.61] \\ - 48 & 0.19 & 0.05 & 0.00 & 0.00 & 0.42 \\ - & [0.01, 0.28] & [0.00, 0.13] & [0.00, 0.04] & [0.00, 0.02] & [0.26, 0.56] \\ + 0 & 0.02 & 0.26 & 0.00 & 0.00 & 0.51 \\ + & [0.00, 0.06] & [0.01, 0.38] & [0.00, 0.00] & [0.00, 0.04] & [0.21, 0.76] \\ + 12 & 0.18 & 0.28 & 0.04 & 0.07 & 0.66 \\ + & [0.10, 0.24] & [0.15, 0.40] & [0.00, 0.11] & [0.00, 0.16] & [0.48, 0.84] \\ + 24 & 0.19 & 0.28 & 0.10 & 0.05 & 0.59 \\ + & [0.13, 0.24] & [0.17, 0.38] & [0.00, 0.18] & [0.00, 0.13] & [0.42, 0.73] \\ + 48 & 0.18 & 0.28 & 0.26 & 0.03 & 0.60 \\ + & [0.13, 0.24] & [0.18, 0.38] & [0.07, 0.37] & [0.00, 0.11] & [0.44, 0.74] \\ \midrule\bottomrule \end{tabular} diff --git a/applications/kaenzig/tables/svmaiv_kaenzig.tex b/applications/kaenzig/tables/svmaiv_kaenzig.tex index 5ffd794..caaed46 100644 --- a/applications/kaenzig/tables/svmaiv_kaenzig.tex +++ b/applications/kaenzig/tables/svmaiv_kaenzig.tex @@ -1,23 +1,23 @@ \begin{tabular}{lcccccc}\toprule\midrule \multicolumn{6}{l}{\textit{Global variables and exchange rates:}} \\ & Oil price & Oil production & Oil inventories & World IP & NEER \\ \midrule - 0 & 0.04, 0.32 & 0.00, 0.00 & 0.00, 0.02 & 0.00, 0.00 & 0.00, 0.03 \\ - & [0.00, 0.41] & [0.00, 0.00] & [0.00, 0.03] & [0.00, 0.02] & [0.00, 0.05] \\ - 12 & 0.03, 0.30 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 \\ - & [0.00, 0.40] & [0.00, 0.05] & [0.00, 0.01] & [0.00, 0.01] & [0.00, 0.04] \\ - 24 & 0.02, 0.22 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 \\ - & [0.00, 0.32] & [0.00, 0.04] & [0.00, 0.03] & [0.00, 0.03] & [0.00, 0.05] \\ - 48 & 0.02, 0.22 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.07 \\ - & [0.00, 0.31] & [0.00, 0.03] & [0.00, 0.05] & [0.00, 0.05] & [0.00, 0.14] \\[2ex] \midrule + 0 & 0.03, 0.17 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 \\ + & [0.00, 0.23] & [0.00, 0.00] & [0.00, 0.00] & [0.00, 0.01] & [0.00, 0.01] \\ + 12 & 0.02, 0.11 & 0.01, 0.09 & 0.01, 0.10 & 0.00, 0.04 & 0.01, 0.12 \\ + & [0.00, 0.18] & [0.00, 0.14] & [0.00, 0.15] & [0.00, 0.08] & [0.00, 0.18] \\ + 24 & 0.00, 0.05 & 0.01, 0.10 & 0.01, 0.12 & 0.00, 0.06 & 0.01, 0.13 \\ + & [0.00, 0.10] & [0.00, 0.14] & [0.00, 0.16] & [0.00, 0.10] & [0.00, 0.18] \\ + 48 & 0.00, 0.02 & 0.01, 0.10 & 0.01, 0.11 & 0.00, 0.06 & 0.01, 0.14 \\ + & [0.00, 0.07] & [0.00, 0.14] & [0.00, 0.16] & [0.00, 0.10] & [0.00, 0.18] \\[2ex] \midrule \multicolumn{6}{l}{\textit{U.S. variables:}} \\ & IP & CPI & FFR & VXO & TOT \\ \midrule - 0 & 0.00, 0.02 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 & 0.01, 0.07 \\ - & [0.00, 0.04] & [0.00, 0.03] & [0.00, 0.01] & [0.00, 0.00] & [0.00, 0.10] \\ - 12 & 0.00, 0.00 & 0.00, 0.03 & 0.00, 0.02 & 0.00, 0.07 & 0.02, 0.26 \\ - & [0.00, 0.01] & [0.00, 0.07] & [0.00, 0.07] & [0.00, 0.12] & [0.00, 0.36] \\ - 24 & 0.00, 0.04 & 0.00, 0.01 & 0.00, 0.01 & 0.00, 0.07 & 0.01, 0.18 \\ - & [0.00, 0.10] & [0.00, 0.07] & [0.00, 0.06] & [0.00, 0.13] & [0.00, 0.28] \\ - 48 & 0.00, 0.03 & 0.00, 0.00 & 0.00, 0.01 & 0.00, 0.06 & 0.01, 0.20 \\ - & [0.00, 0.09] & [0.00, 0.03] & [0.00, 0.06] & [0.00, 0.12] & [0.00, 0.28] \\ + 0 & 0.00, 0.00 & 0.01, 0.04 & 0.00, 0.00 & 0.00, 0.00 & 0.02, 0.08 \\ + & [0.00, 0.01] & [0.00, 0.06] & [0.00, 0.00] & [0.00, 0.01] & [0.00, 0.11] \\ + 12 & 0.00, 0.02 & 0.03, 0.18 & 0.04, 0.20 & 0.00, 0.04 & 0.03, 0.16 \\ + & [0.00, 0.05] & [0.00, 0.24] & [0.00, 0.28] & [0.00, 0.09] & [0.00, 0.23] \\ + 24 & 0.00, 0.05 & 0.03, 0.20 & 0.06, 0.30 & 0.00, 0.02 & 0.02, 0.12 \\ + & [0.00, 0.10] & [0.00, 0.26] & [0.00, 0.41] & [0.00, 0.07] & [0.00, 0.18] \\ + 48 & 0.00, 0.06 & 0.03, 0.20 & 0.06, 0.29 & 0.00, 0.05 & 0.01, 0.10 \\ + & [0.00, 0.10] & [0.00, 0.26] & [0.00, 0.39] & [0.00, 0.10] & [0.00, 0.15] \\ \midrule\bottomrule \end{tabular} From adcb758a045423af69cd15d5e09068bebcfcb3ce Mon Sep 17 00:00:00 2001 From: ckwolf92 Date: Mon, 5 Jul 2021 08:27:18 -0500 Subject: [PATCH 3/5] update oil figures --- applications/kaenzig/run_kaenzig.m | 14 +++++++- .../kaenzig/tables/svariv_kaenzig.tex | 34 +++++++++---------- .../kaenzig/tables/svmaiv_kaenzig.tex | 4 +-- functions/plot_band.m | 3 ++ functions/save_fig.m | 4 +-- 5 files changed, 37 insertions(+), 22 deletions(-) diff --git a/applications/kaenzig/run_kaenzig.m b/applications/kaenzig/run_kaenzig.m index eea0975..41e5dc1 100644 --- a/applications/kaenzig/run_kaenzig.m +++ b/applications/kaenzig/run_kaenzig.m @@ -8,7 +8,7 @@ % settings -data.endo_vars = {'Oil price','Oil production','Oil inventories','World IP','NEER','IP','CPI','FFR','VXO','TOT'}; +data.endo_vars = {'oil_price','oil_production','oil_inventories','world_ip','neer','ip','cpi','ffr','vxo','tot'}; data.iv = 'oil_surprise'; % data.smpl_start = '1974M01'; @@ -116,9 +116,15 @@ % Plot bound estimates and CI for identified set figure('Units', 'normalize', 'Position', [0.2 0.2 0.6 0.6]); + if i == 1 || i == 5 plot_band(bounds.ci.lower.FVR(:,i), bounds.ci.upper.FVR(:,i), bounds.estim.lower.FVR(:,i), bounds.estim.upper.FVR(:,i), ... plots.titles{i}, plots.xlabel, plots.ylabel, {'Estimate of identif. set', sprintf('%d%s', 100*(1-settings_struct.signif_level), '\% conf. interval for identif. set')}, ... 'YLim', [0 1], 'XLim', [1 max(settings_struct.FVR_hor)], 'XTick', plots.xticks, 'FontSize', 18, 'TitleFontSizeMultiplier', 1.2); + else + plot_band(bounds.ci.lower.FVR(:,i), bounds.ci.upper.FVR(:,i), bounds.estim.lower.FVR(:,i), bounds.estim.upper.FVR(:,i), ... + plots.titles{i}, plots.xlabel, plots.ylabel, [], ... + 'YLim', [0 1], 'XLim', [1 max(settings_struct.FVR_hor)], 'XTick', plots.xticks, 'FontSize', 18, 'TitleFontSizeMultiplier', 1.2); + end grid on; drawnow; save_fig('figures', strcat('svma_kaenzig_', data.endo_vars{i})); @@ -144,9 +150,15 @@ % Plot point estimates and CIs figure('Units', 'normalize', 'Position', [0.2 0.2 0.6 0.6]); + if i == 1 || i == 5 plot_band(SVARIV_FVD.ci.lower(:,i), SVARIV_FVD.ci.upper(:,i), SVARIV_FVD.estim(:,i), [], ... plots.titles{i}, plots.xlabel, plots.ylabel, {'Point estimate', sprintf('%d%s', 100*(1-SVARIV_settings_struct.signif_level), '\% conf. interval')}, ... 'YLim', [0 1], 'XLim', [1 max(SVARIV_settings_struct.FVD_hor)], 'XTick', plots.xticks, 'FontSize', 18, 'TitleFontSizeMultiplier', 1.2); + else + plot_band(SVARIV_FVD.ci.lower(:,i), SVARIV_FVD.ci.upper(:,i), SVARIV_FVD.estim(:,i), [], ... + plots.titles{i}, plots.xlabel, plots.ylabel, [], ... + 'YLim', [0 1], 'XLim', [1 max(SVARIV_settings_struct.FVD_hor)], 'XTick', plots.xticks, 'FontSize', 18, 'TitleFontSizeMultiplier', 1.2); + end grid on; drawnow; save_fig('figures', strcat('svar_kaenzig_', data.endo_vars{i})); diff --git a/applications/kaenzig/tables/svariv_kaenzig.tex b/applications/kaenzig/tables/svariv_kaenzig.tex index ed528dd..49788fa 100644 --- a/applications/kaenzig/tables/svariv_kaenzig.tex +++ b/applications/kaenzig/tables/svariv_kaenzig.tex @@ -1,23 +1,23 @@ \begin{tabular}{lcccccc}\toprule\midrule \multicolumn{6}{l}{\textit{Global variables and exchange rates:}} \\ - & Oil price & Oil production & Oil inventories & World IP & NEER \\ \midrule + & oil_price & oil_production & oil_inventories & world_ip & neer \\ \midrule 0 & 1.00 & 0.00 & 0.00 & 0.00 & 0.00 \\ - & [0.88, 1.00] & [0.00, 0.00] & [0.00, 0.00] & [0.00, 0.04] & [0.00, 0.05] \\ - 12 & 0.53 & 0.00 & 0.00 & 0.09 & 0.00 \\ - & [0.33, 0.70] & [0.00, 0.03] & [0.00, 0.01] & [0.02, 0.14] & [0.00, 0.05] \\ - 24 & 0.47 & 0.00 & 0.00 & 0.09 & 0.00 \\ - & [0.28, 0.61] & [0.00, 0.03] & [0.00, 0.02] & [0.04, 0.14] & [0.00, 0.05] \\ - 48 & 0.49 & 0.00 & 0.00 & 0.09 & 0.00 \\ - & [0.27, 0.63] & [0.00, 0.02] & [0.00, 0.02] & [0.03, 0.14] & [0.00, 0.05] \\[2ex] \midrule + & [0.80, 1.00] & [0.00, 0.00] & [0.00, 0.00] & [0.00, 0.04] & [0.00, 0.05] \\ + 12 & 0.52 & 0.00 & 0.00 & 0.08 & 0.00 \\ + & [0.30, 0.71] & [0.00, 0.04] & [0.00, 0.02] & [0.00, 0.15] & [0.00, 0.05] \\ + 24 & 0.47 & 0.00 & 0.00 & 0.08 & 0.00 \\ + & [0.26, 0.63] & [0.00, 0.03] & [0.00, 0.02] & [0.00, 0.14] & [0.00, 0.05] \\ + 48 & 0.50 & 0.00 & 0.00 & 0.08 & 0.00 \\ + & [0.28, 0.64] & [0.00, 0.03] & [0.00, 0.02] & [0.00, 0.14] & [0.00, 0.05] \\[2ex] \midrule \multicolumn{6}{l}{\textit{U.S. variables:}} \\ - & IP & CPI & FFR & VXO & TOT \\ \midrule - 0 & 0.02 & 0.26 & 0.00 & 0.00 & 0.51 \\ - & [0.00, 0.06] & [0.01, 0.38] & [0.00, 0.00] & [0.00, 0.04] & [0.21, 0.76] \\ - 12 & 0.18 & 0.28 & 0.04 & 0.07 & 0.66 \\ - & [0.10, 0.24] & [0.15, 0.40] & [0.00, 0.11] & [0.00, 0.16] & [0.48, 0.84] \\ - 24 & 0.19 & 0.28 & 0.10 & 0.05 & 0.59 \\ - & [0.13, 0.24] & [0.17, 0.38] & [0.00, 0.18] & [0.00, 0.13] & [0.42, 0.73] \\ - 48 & 0.18 & 0.28 & 0.26 & 0.03 & 0.60 \\ - & [0.13, 0.24] & [0.18, 0.38] & [0.07, 0.37] & [0.00, 0.11] & [0.44, 0.74] \\ + & ip & cpi & ffr & vxo & tot \\ \midrule + 0 & 0.00 & 0.24 & 0.00 & 0.00 & 0.51 \\ + & [0.00, 0.06] & [0.03, 0.39] & [0.00, 0.00] & [0.00, 0.04] & [0.19, 0.74] \\ + 12 & 0.17 & 0.28 & 0.03 & 0.09 & 0.65 \\ + & [0.07, 0.24] & [0.16, 0.38] & [0.00, 0.11] & [0.00, 0.16] & [0.44, 0.89] \\ + 24 & 0.18 & 0.28 & 0.09 & 0.07 & 0.59 \\ + & [0.09, 0.25] & [0.17, 0.37] & [0.00, 0.18] & [0.00, 0.13] & [0.41, 0.78] \\ + 48 & 0.18 & 0.28 & 0.25 & 0.05 & 0.60 \\ + & [0.10, 0.24] & [0.18, 0.37] & [0.04, 0.37] & [0.00, 0.11] & [0.42, 0.77] \\ \midrule\bottomrule \end{tabular} diff --git a/applications/kaenzig/tables/svmaiv_kaenzig.tex b/applications/kaenzig/tables/svmaiv_kaenzig.tex index caaed46..b5473e7 100644 --- a/applications/kaenzig/tables/svmaiv_kaenzig.tex +++ b/applications/kaenzig/tables/svmaiv_kaenzig.tex @@ -1,6 +1,6 @@ \begin{tabular}{lcccccc}\toprule\midrule \multicolumn{6}{l}{\textit{Global variables and exchange rates:}} \\ - & Oil price & Oil production & Oil inventories & World IP & NEER \\ \midrule + & oil_price & oil_production & oil_inventories & world_ip & neer \\ \midrule 0 & 0.03, 0.17 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 & 0.00, 0.00 \\ & [0.00, 0.23] & [0.00, 0.00] & [0.00, 0.00] & [0.00, 0.01] & [0.00, 0.01] \\ 12 & 0.02, 0.11 & 0.01, 0.09 & 0.01, 0.10 & 0.00, 0.04 & 0.01, 0.12 \\ @@ -10,7 +10,7 @@ 48 & 0.00, 0.02 & 0.01, 0.10 & 0.01, 0.11 & 0.00, 0.06 & 0.01, 0.14 \\ & [0.00, 0.07] & [0.00, 0.14] & [0.00, 0.16] & [0.00, 0.10] & [0.00, 0.18] \\[2ex] \midrule \multicolumn{6}{l}{\textit{U.S. variables:}} \\ - & IP & CPI & FFR & VXO & TOT \\ \midrule + & ip & cpi & ffr & vxo & tot \\ \midrule 0 & 0.00, 0.00 & 0.01, 0.04 & 0.00, 0.00 & 0.00, 0.00 & 0.02, 0.08 \\ & [0.00, 0.01] & [0.00, 0.06] & [0.00, 0.00] & [0.00, 0.01] & [0.00, 0.11] \\ 12 & 0.00, 0.02 & 0.03, 0.18 & 0.04, 0.20 & 0.00, 0.04 & 0.03, 0.16 \\ diff --git a/functions/plot_band.m b/functions/plot_band.m index 5255a6c..8ae7b3c 100644 --- a/functions/plot_band.m +++ b/functions/plot_band.m @@ -1,5 +1,8 @@ function plot_band(lower, upper, lower_line, upper_line, plot_title, plot_xlabel, plot_ylabel, plot_legend, varargin) +% ticks interpreter +set(gca,'TickLabelInterpreter','latex') + % Plot lines and confidence band for dynamic variance decompositions maxmin = @(x) max(min(x,1),0); diff --git a/functions/save_fig.m b/functions/save_fig.m index f5523bd..a458532 100644 --- a/functions/save_fig.m +++ b/functions/save_fig.m @@ -2,8 +2,8 @@ function save_fig(folder,filename) % Save figure in various formats - saveas(gcf, fullfile(folder, strcat(filename, '.fig'))); - saveas(gcf, fullfile(folder, strcat(filename, '.png'))); +% saveas(gcf, fullfile(folder, strcat(filename, '.fig'))); +% saveas(gcf, fullfile(folder, strcat(filename, '.png'))); saveas(gcf, fullfile(folder, strcat(filename, '.eps')), 'epsc'); end \ No newline at end of file From 895ac8256ce4ccd14145040e829da68bebdfbfd5 Mon Sep 17 00:00:00 2001 From: mikkelpm Date: Fri, 9 Jul 2021 20:41:38 -0400 Subject: [PATCH 4/5] + Kaenzig data files - some superfluous files, update readme --- .gitignore | 2 + README.md | 20 ++++- applications/gk/run_gk.m | 2 +- applications/kaenzig/OilSurprisesMLog.mat | Bin 0 -> 28350 bytes applications/kaenzig/dataQuantM.mat | Bin 0 -> 37524 bytes applications/kaenzig/run_kaenzig.m | 64 ++++++--------- .../kaenzig/subroutines/svariv_table.m | 64 --------------- .../kaenzig/subroutines/svmaiv_table.m | 73 ------------------ applications/kaenzig/subroutines/vec.m | 2 - .../kaenzig/tables/svariv_kaenzig.tex | 23 ------ .../kaenzig/tables/svmaiv_kaenzig.tex | 23 ------ 11 files changed, 42 insertions(+), 231 deletions(-) create mode 100644 applications/kaenzig/OilSurprisesMLog.mat create mode 100644 applications/kaenzig/dataQuantM.mat delete mode 100644 applications/kaenzig/subroutines/svariv_table.m delete mode 100644 applications/kaenzig/subroutines/svmaiv_table.m delete mode 100644 applications/kaenzig/subroutines/vec.m delete mode 100644 applications/kaenzig/tables/svariv_kaenzig.tex delete mode 100644 applications/kaenzig/tables/svmaiv_kaenzig.tex diff --git a/.gitignore b/.gitignore index 2d2b605..2453d06 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,5 @@ *.png *.eps *.DS_Store +!applications/kaenzig/dataQuantM.mat +!applications/kaenzig/OilSurprisesMLog.mat diff --git a/README.md b/README.md index 96a6651..1e16bf8 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,10 @@ Matlab code for inference on variance decompositions and the degree of invertibility/recoverability in a general Structural Vector Moving Average (SVMA) model identified by external instruments (IVs, also known as proxies) **Reference:** -Plagborg-Møller, Mikkel and Christian K. Wolf (2020), "Instrumental Variable Identification of Dynamic Variance Decompositions", https://scholar.princeton.edu/mikkelpm/decomp_iv (paper + online appendix) +Plagborg-Møller, Mikkel and Christian K. Wolf (2021), "Instrumental Variable Identification of Dynamic Variance Decompositions", https://scholar.princeton.edu/mikkelpm/decomp_iv (paper + online appendix) + +**Acknowledgements:** +We are grateful to Diego Känzig for allowing us to reproduce some of the data files used in his 2021 AER paper. Tested in: Matlab R2020a on Windows 10 PC (64-bit) @@ -13,8 +16,9 @@ Tested in: Matlab R2020a on Windows 10 PC (64-bit) - [SVMAIV_estim.m](functions/SVMAIV_estim.m): main function for SVMA-IV inference - [SVARIV_estim.m](functions/SVARIV_estim.m): SVAR-IV inference (assumes invertibility) -**[application](application):** empirical example -- [run_gk.m](application/run_gk.m): example based on Gertler & Karadi (2015) +**[applications](applications):** empirical applications +- [gk/run_gk.m](applications/gk/run_gk.m): application based on Gertler & Karadi (2015) +- [kaenzig/run_kaenzig.m](applications/kaenzig/run_kaenzig.m): application based on Känzig (2021) **[illustration](illustration):** numerical illustration - [run_sw.m](illustration/run_sw.m): SVMA-IV and SVAR-IV analysis of Smets & Wouters (2007) model @@ -55,4 +59,12 @@ Parameter names: - `FVR`: forecast variance ratio - `FVD`: forecast variance decomposition -See the [empirical application](application/run_gk.m) for a concrete example. Additional optional arguments to [`SMVAIV_estim.m`](functions/SVMAIV_estim.m) are listed at the top of the function. +See our [empirical applications](applications) for concrete examples of how to use the code. Additional optional arguments to [`SMVAIV_estim.m`](functions/SVMAIV_estim.m) are listed at the top of the function. + +## Replication instructions + +The figures and tables in our paper and supplement are produced as follows: +- Figures 1 and B.7 and Table 1: [applications/gk/run_gk.m](applications/gk/run_gk.m) +- Table 2: First run [simulations/run_sim.m](simulations/run_sim.m) nine separate times, with the variable `model.dgp` at the top set to each of the options `0` through `8`. Then run [simulations/print_results.m](simulations/print_results.m) +- Figures B.1-B.6 and Table B.1: [illustration/run_sw.m](illustration/run_sw.m) +- Figures B.8-B.11: [applications/kaenzig/run_kaenzig.m](applications/kaenzig/run_kaenzig.m) diff --git a/applications/gk/run_gk.m b/applications/gk/run_gk.m index bba0c11..f7cd2e0 100644 --- a/applications/gk/run_gk.m +++ b/applications/gk/run_gk.m @@ -32,7 +32,7 @@ % Estimation settings (see other optional settings in "functions/SVMAIV_estim.m") settings = {'ic', 'aic'; % Information criterion - 'n_boot', 500; % Number of bootstrap samples + 'n_boot', 1e3; % Number of bootstrap samples 'signif', 0.1; % Significance level 'horiz', 1:24}'; % Horizons of FVR to report diff --git a/applications/kaenzig/OilSurprisesMLog.mat b/applications/kaenzig/OilSurprisesMLog.mat new file mode 100644 index 0000000000000000000000000000000000000000..9d7c40cdcb01b5126337ab163ba60f07c01721f3 GIT binary patch literal 28350 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 literal 0 HcmV?d00001 diff --git a/applications/kaenzig/dataQuantM.mat b/applications/kaenzig/dataQuantM.mat new file mode 100644 index 0000000000000000000000000000000000000000..335d2841b4d46c3be601f58a386d42f0bcfe0918 GIT binary patch literal 37524 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

LYWl4{(m>8|kZm`n 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 Date: Sat, 10 Jul 2021 15:38:36 -0400 Subject: [PATCH 5/5] + readme links --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1e16bf8..4aaefec 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Matlab code for inference on variance decompositions and the degree of invertibi Plagborg-Møller, Mikkel and Christian K. Wolf (2021), "Instrumental Variable Identification of Dynamic Variance Decompositions", https://scholar.princeton.edu/mikkelpm/decomp_iv (paper + online appendix) **Acknowledgements:** -We are grateful to Diego Känzig for allowing us to reproduce some of the data files used in his 2021 AER paper. +We are grateful to [Diego Känzig](https://github.com/dkaenzig) for allowing us to reproduce some of the data files used in his [2021 AER paper](https://www.aeaweb.org/articles?id=10.1257/aer.20190964) Tested in: Matlab R2020a on Windows 10 PC (64-bit)