From 12de6071fbfc22b5e52a3184652cdd2604fd6448 Mon Sep 17 00:00:00 2001 From: Alissa Johnson Date: Wed, 1 Sep 2021 22:14:32 -0400 Subject: [PATCH] Adjust multiple altpol test settings and saved reference output. --- .../multiple_altpol_imperfect_awareness.jl | 25 +++++------------- ...tiple_altpol_imperfect_awareness_output.h5 | Bin 0 -> 23648 bytes 2 files changed, 7 insertions(+), 18 deletions(-) create mode 100644 test/reference/multiple_altpol_imperfect_awareness_output.h5 diff --git a/test/forecast/multiple_altpol_imperfect_awareness.jl b/test/forecast/multiple_altpol_imperfect_awareness.jl index cbd98e6b6..50a6b7ffe 100644 --- a/test/forecast/multiple_altpol_imperfect_awareness.jl +++ b/test/forecast/multiple_altpol_imperfect_awareness.jl @@ -3,14 +3,6 @@ include("tvcred_parameterize.jl") regenerate_reference_forecasts = false -if VERSION < v"1.5" - ver = "111" -elseif VERSION < v"1.6" - ver = "150" -else - ver = "160" -end - # Forecast settings fcast_date = DSGE.quartertodate("2020-Q4") date_fcast_end = iterate_quarters(fcast_date, 60) @@ -104,13 +96,16 @@ m <= Setting(:skip_altpolicy_state_init, true) ## Set up temporary ZLB m <= Setting(:gensys2, true) -m <= Setting(:uncertain_temp_altpol, true) +m <= Setting(:uncertain_temporary_altpolicy, true) m <= Setting(:uncertain_altpolicy, true) +m <= Setting(:temporary_altpolicy_names, [:zero_rate]) # Set regime_dates and regime_eqcond_info for temp ZLB to flexible AIT gensys2_first_regime = get_setting(m, :n_regimes) + 1 get_setting(m, :regime_dates)[gensys2_first_regime] = start_zlb_date n_zlb_reg = DSGE.subtract_quarters(end_zlb_date, start_zlb_date) + 1 + +# Set up regime_eqcond_info m <= Setting(:replace_eqcond, true) reg_dates = deepcopy(get_setting(m, :regime_dates)) regime_eqcond_info = Dict{Int, DSGE.EqcondEntry}() @@ -128,9 +123,7 @@ m <= Setting(:regime_eqcond_info, regime_eqcond_info) setup_regime_switching_inds!(m; cond_type = :full) set_regime_vals_fnct(m, get_setting(m, :n_regimes)) m <= Setting(:temporary_altpolicy_length, n_zlb_reg) -m <= Setting(:temporary_altpolicy_names, [:zero_rate]) m <= Setting(:zero_rate_zlb_value, 0.) - # Now add additional regimes of flexible AIT to allow time-varying credibility for i in nreg0:(nreg0 + 15) reg_dates[i] = DSGE.iterate_quarters(reg_dates[nreg0], i - nreg0) @@ -140,7 +133,6 @@ m <= Setting(:regime_dates, reg_dates) m <= Setting(:regime_eqcond_info, regime_eqcond_info) setup_regime_switching_inds!(m; cond_type = :full) set_regime_vals_fnct(m, get_setting(m, :n_regimes)) - # Set up TVIS information set m <= Setting(:tvis_information_set, vcat([i:i for i in 1:(gensys2_first_regime - 1)], [i:get_setting(m, :n_regimes) for i in @@ -152,7 +144,6 @@ modal_params = map(x -> x.value, m.parameters) # sys_2pol = compute_system(m; tvis = true) out1 = DSGE.forecast_one_draw(m, :mode, :full, output_vars, modal_params, df, regime_switching = true, n_regimes = get_setting(m, :n_regimes)) - # Test multiple alternative policies with multi-period altpolicies and temporary policies ## First start with fake temporary policy @@ -222,7 +213,7 @@ out_temp_flexible_ait = DSGE.forecast_one_draw(m, :mode, :full, output_vars, mod regime_switching = true, n_regimes = get_setting(m, :n_regimes)) if regenerate_reference_forecasts - h5open(joinpath(dirname(@__FILE__), "../reference/multiple_altpol_imperfect_awareness_output_version=$(ver).h5"), "w") do file + h5open(joinpath(dirname(@__FILE__), "../reference/multiple_altpol_imperfect_awareness_output.h5"), "w") do file write(file, "forecastobs", out_temp_flexible_ait[:forecastobs]) write(file, "forecastpseudo", out_temp_flexible_ait[:forecastpseudo]) end @@ -230,14 +221,12 @@ end @testset "Multiple alternative policies, incl. MultiPeriodAltPolicy, with imperfect awareness" begin - for k in keys(out_taylor_temp_taylor) # check implementations that should yield same results as a forecast @test out_taylor_temp_taylor[k] ≈ out1[k] # with 2 alternative policies and imperfect awareness @test out_default_temp_default[k] ≈ out1[k] @test out_flexait_zlb_temp_flexait_zlb[k] ≈ out1[k] - @test out_temp_flexible_ait[k] ≈ - h5read(joinpath(dirname(@__FILE__), "../reference/multiple_altpol_imperfect_awareness_output_version=$(ver).h5"), string(k)) + @test maximum(abs.(out_temp_flexible_ait[k] - + h5read(joinpath(dirname(@__FILE__), "../reference/multiple_altpol_imperfect_awareness_output.h5"), string(k)))) < 1e-3 end - end nothing diff --git a/test/reference/multiple_altpol_imperfect_awareness_output.h5 b/test/reference/multiple_altpol_imperfect_awareness_output.h5 new file mode 100644 index 0000000000000000000000000000000000000000..7dcc5fe528ddfdbde0492494cd98b0952037dd55 GIT binary patch literal 23648 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