In this tutorial we illustrate how to calibrate the model to the Italian data for a specific quarter

import BeforeIT as Bit

using Dates, FileIO

We start from loading the calibration object for italy, which contains 4 datasets: calibration_data, figaro, data, and ea. These are saved within BeforeIT.jl for the Italian case, and would need to be appropriately generated for other countries.

cal = Bit.ITALY_CALIBRATION
fieldnames(typeof(cal))
(:calibration, :figaro, :data, :ea, :max_calibration_date, :estimation_date)

These are essentially 4 dictionaries with well defined keys, such as

println(keys(cal.calibration))
println(keys(cal.figaro))
println(keys(cal.data))
println(keys(cal.ea))
["social_benefits", "government_debt_quarterly", "capital_taxes", "interest_government_debt", "dwellings_eu7", "pension_benefits", "nace64_capital_consumption_eu20", "fixed_assets_eu7", "firm_interest", "dwellings", "nominal_nace64_output_eu20", "social_contributions", "nominal_nace64_output", "income_tax", "wages", "employees", "fixed_assets", "firms", "mixed_income", "nominal_nace64_output_eu7", "firm_debt_quarterly", "bank_equity_quarterly", "corporate_tax", "property_income", "household_cash_quarterly", "gross_capitalformation_dwellings", "gross_fixed_capitalformation", "unemployment_benefits", "population", "years_num", "government_deficit", "capital_consumption", "firm_cash_quarterly", "quarters_num", "nace64_capital_consumption"]
["intermediate_consumption", "household_consumption", "capitalformation", "operating_surplus", "compensation_employees", "imports", "government_consumption", "inventory_changes", "exports", "taxes_products_government", "fixed_capitalformation", "taxes_products", "years_num", "quarters_num", "taxes_production", "taxes_products_capitalformation", "taxes_products_household"]
["unemployment_rate", "nominal_nace10_gva_quarterly", "operating_surplus", "nominal_household_consumption_growth_quarterly", "nominal_exports", "real_capitalformation_growth", "household_consumption_deflator", "gdp_deflator_growth", "gva_deflator_quarterly", "capitalformation_deflator_growth", "nominal_final_consumption_growth_quarterly", "real_fixed_capitalformation_growth", "real_exports_growth", "nominal_imports", "nominal_nace10_gva_growth_quarterly", "gdp_deflator_quarterly", "capitalformation_deflator_quarterly", "real_government_consumption_growth_quarterly", "real_final_consumption", "real_capitalformation_quarterly", "nominal_capitalformation_growth", "fixed_capitalformation_deflator", "real_imports_growth", "nace10_gva_deflator", "real_household_consumption_growth", "fixed_capitalformation_deflator_growth", "real_gva", "nominal_final_consumption", "nominal_exports_quarterly", "real_household_consumption", "real_imports_quarterly", "real_nace10_gva_growth", "real_gva_growth_quarterly", "nominal_household_consumption_growth", "nominal_imports_quarterly", "employed_quarterly", "nace10_gva_deflator_growth", "nominal_capitalformation_growth_quarterly", "nace10_gva_deflator_quarterly", "real_government_consumption_growth", "nominal_government_consumption_quarterly", "final_consumption_deflator", "real_capitalformation_growth_quarterly", "compensation_employees", "gva_deflator_growth", "imports_deflator_quarterly", "real_household_consumption_growth_quarterly", "gdp_deflator_growth_quarterly", "nominal_gdp_quarterly", "exports_deflator_growth_quarterly", "government_consumption_deflator_growth_quarterly", "exports_deflator_quarterly", "real_exports_growth_quarterly", "wages", "nominal_nace10_gva", "gdp_deflator", "household_consumption_deflator_growth", "nominal_nace10_gva_growth", "nominal_gdp_growth", "nominal_household_consumption", "fixed_capitalformation_deflator_quarterly", "nominal_exports_growth_quarterly", "wages_quarterly", "nominal_exports_growth", "euribor", "years_num", "real_final_consumption_quarterly", "nominal_gva_quarterly", "quarters_num", "real_capitalformation", "nominal_government_consumption_growth", "real_final_consumption_growth", "nominal_imports_growth", "nominal_government_consumption", "imports_deflator_growth", "nominal_fixed_capitalformation_quarterly", "real_nace10_gva_quarterly", "nominal_final_consumption_quarterly", "compensation_employees_quarterly", "nominal_fixed_capitalformation_growth_quarterly", "real_gdp_growth", "real_government_consumption", "exports_deflator_growth", "nominal_gdp", "imports_deflator_growth_quarterly", "real_nace10_gva", "real_exports_quarterly", "government_consumption_deflator_growth", "real_fixed_capitalformation_growth_quarterly", "nominal_capitalformation_quarterly", "nominal_gdp_growth_quarterly", "employed", "imports_deflator", "euribor_yearly", "fixed_capitalformation_deflator_growth_quarterly", "real_imports", "real_final_consumption_growth_quarterly", "nominal_household_consumption_quarterly", "real_fixed_capitalformation", "household_consumption_deflator_growth_quarterly", "nominal_fixed_capitalformation_growth", "gva_deflator_growth_quarterly", "final_consumption_deflator_growth_quarterly", "unemployment_rate_quarterly", "nominal_gva_growth_quarterly", "nominal_government_consumption_growth_quarterly", "final_consumption_deflator_quarterly", "real_gva_growth", "government_consumption_deflator_quarterly", "real_gdp_growth_quarterly", "exports_deflator", "real_gdp_quarterly", "final_consumption_deflator_growth", "capitalformation_deflator_growth_quarterly", "real_fixed_capitalformation_quarterly", "real_gdp", "nominal_fixed_capitalformation", "real_nace10_gva_growth_quarterly", "nace10_gva_deflator_growth_quarterly", "real_government_consumption_quarterly", "government_consumption_deflator", "nominal_gva_growth", "household_consumption_deflator_quarterly", "real_household_consumption_quarterly", "capitalformation_deflator", "nominal_capitalformation", "operating_surplus_quarterly", "nominal_imports_growth_quarterly", "gva_deflator", "nominal_final_consumption_growth", "real_gva_quarterly", "nominal_gva", "real_imports_growth_quarterly", "real_exports"]
["nominal_nace10_gva_quarterly", "operating_surplus", "nominal_household_consumption_growth_quarterly", "nominal_exports", "real_capitalformation_growth", "household_consumption_deflator", "gdp_deflator_growth", "gva_deflator_quarterly", "capitalformation_deflator_growth", "nominal_final_consumption_growth_quarterly", "real_fixed_capitalformation_growth", "real_exports_growth", "nominal_imports", "nominal_nace10_gva_growth_quarterly", "gdp_deflator_quarterly", "capitalformation_deflator_quarterly", "real_government_consumption_growth_quarterly", "real_final_consumption", "real_capitalformation_quarterly", "nominal_capitalformation_growth", "fixed_capitalformation_deflator", "real_imports_growth", "nace10_gva_deflator", "real_household_consumption_growth", "fixed_capitalformation_deflator_growth", "real_gva", "nominal_final_consumption", "nominal_exports_quarterly", "real_household_consumption", "real_imports_quarterly", "real_nace10_gva_growth", "real_gva_growth_quarterly", "nominal_household_consumption_growth", "nominal_imports_quarterly", "employed_quarterly", "nace10_gva_deflator_growth", "nominal_capitalformation_growth_quarterly", "nace10_gva_deflator_quarterly", "real_government_consumption_growth", "nominal_government_consumption_quarterly", "final_consumption_deflator", "real_capitalformation_growth_quarterly", "compensation_employees", "gva_deflator_growth", "imports_deflator_quarterly", "real_household_consumption_growth_quarterly", "gdp_deflator_growth_quarterly", "nominal_gdp_quarterly", "exports_deflator_growth_quarterly", "government_consumption_deflator_growth_quarterly", "exports_deflator_quarterly", "real_exports_growth_quarterly", "wages", "nominal_nace10_gva", "gdp_deflator", "household_consumption_deflator_growth", "nominal_nace10_gva_growth", "nominal_gdp_growth", "nominal_household_consumption", "fixed_capitalformation_deflator_quarterly", "nominal_exports_growth_quarterly", "wages_quarterly", "nominal_exports_growth", "euribor", "years_num", "real_final_consumption_quarterly", "nominal_gva_quarterly", "quarters_num", "real_capitalformation", "nominal_government_consumption_growth", "real_final_consumption_growth", "nominal_imports_growth", "nominal_government_consumption", "imports_deflator_growth", "nominal_fixed_capitalformation_quarterly", "real_nace10_gva_quarterly", "nominal_final_consumption_quarterly", "compensation_employees_quarterly", "nominal_fixed_capitalformation_growth_quarterly", "real_gdp_growth", "real_government_consumption", "exports_deflator_growth", "nominal_gdp", "imports_deflator_growth_quarterly", "real_nace10_gva", "real_exports_quarterly", "government_consumption_deflator_growth", "real_fixed_capitalformation_growth_quarterly", "nominal_capitalformation_quarterly", "nominal_gdp_growth_quarterly", "employed", "imports_deflator", "euribor_yearly", "fixed_capitalformation_deflator_growth_quarterly", "real_imports", "real_final_consumption_growth_quarterly", "nominal_household_consumption_quarterly", "real_fixed_capitalformation", "household_consumption_deflator_growth_quarterly", "nominal_fixed_capitalformation_growth", "gva_deflator_growth_quarterly", "final_consumption_deflator_growth_quarterly", "nominal_gva_growth_quarterly", "nominal_government_consumption_growth_quarterly", "final_consumption_deflator_quarterly", "real_gva_growth", "government_consumption_deflator_quarterly", "real_gdp_growth_quarterly", "exports_deflator", "real_gdp_quarterly", "final_consumption_deflator_growth", "capitalformation_deflator_growth_quarterly", "real_fixed_capitalformation_quarterly", "real_gdp", "nominal_fixed_capitalformation", "real_nace10_gva_growth_quarterly", "nace10_gva_deflator_growth_quarterly", "real_government_consumption_quarterly", "government_consumption_deflator", "nominal_gva_growth", "household_consumption_deflator_quarterly", "real_household_consumption_quarterly", "capitalformation_deflator", "nominal_capitalformation", "operating_surplus_quarterly", "nominal_imports_growth_quarterly", "gva_deflator", "nominal_final_consumption_growth", "real_gva_quarterly", "nominal_gva", "real_imports_growth_quarterly", "real_exports"]

The object also contains two time variables related to the data

println(cal.max_calibration_date)
println(cal.estimation_date)
2016-12-31T00:00:00
1996-12-31T00:00:00

We can calibrate the model on a specific quarter as follows

calibration_date = DateTime(2010, 03, 31)
parameters, initial_conditions = Bit.get_params_and_initial_conditions(cal, calibration_date; scale = 0.01)
(Dict{String, Any}("c_E_g" => [0.012978039260418144; 0.0003985263617433438; … ; 0.0006434280333680591; 0.0004140786749482401;;], "T" => 12, "C" => [4.382915017591217e-5 0.00015893321363428918 0.00010502110395244288; 0.00015893321363428918 0.0007927471570727974 0.0005507616320609982; 0.00010502110395244288 0.0005507616320609982 0.0005321192085097513], "xi_pi" => 0.3251309110739497, "L" => 23301.0, "sigma_E" => 0.028155765964945748, "H_act" => 233911.0, "beta_I" => 0.7789361541128721, "theta" => 0.05, "tau_SIW" => 0.12024155738392799…), Dict{String, Any}("sb_inact" => 0.14744411918306366, "K_H" => 2.5717239e6, "E_CB" => 1.4744936e6, "L_G" => 1.8761466e6, "C_G" => [69620.85113236062; 69628.26021546751; … ; 79003.25341430637; 79057.21957369307;;], "w_UB" => 0.25418566007666155, "pi" => [0.01552341251616679, 0.007364847580140943, -0.0014413096223191424, 0.012659687617788129, -0.00543339680120708, 0.0031342727675487403, 0.008259917102933556, 0.0024505137911164376, 0.015517671905839303, -0.00045722860474695093  …  0.018003552480356795, -0.005662735440323672, 0.011943008727627318, 0.0007471090186489046, 0.0028493451107789447, 0.010472796408025353, 0.0006497589705015978, -0.0008405102979527736, 0.0020667266123554308, -0.0017542487268334779], "sb_other" => 0.02967997863525455, "D_RoW" => 0.0, "Y" => [700366.76824049, 702852.9431179382, 712326.5572179741, 717255.0622122793, 730150.7303844375, 724630.8126553466, 728866.2558510749, 729869.1801729304, 725864.7575767277, 730869.7451354716  …  829111.1076237833, 838773.0772424112, 830807.0937442156, 820293.7886396761, 797832.2947409479, 777930.7056982398, 774054.8681846666, 778964.3016911813, 781534.6270508396, 784197.360650308]…))

In general, we might want to repeat this operation for multiple quarters. In the following, we loop over all quarters from 2010Q1 to 2019Q4 and save the parameters and initial conditions in separate files. We can then load these files later to run the model for each quarter.

start_calibration_date = DateTime(2010, 03, 31)
end_calibration_date = DateTime(2019, 12, 31)

for calibration_date in collect(start_calibration_date:Dates.Month(3):end_calibration_date)
    params, init_conds = Bit.get_params_and_initial_conditions(cal, calibration_date; scale = 0.0005)
    save(
        "data/italy/parameters/" *
        string(year(calibration_date)) *
        "Q" *
        string(Dates.quarterofyear(calibration_date)) *
        ".jld2",
        params,
    )
    save(
        "data/italy/initial_conditions/" *
        string(year(calibration_date)) *
        "Q" *
        string(Dates.quarterofyear(calibration_date)) *
        ".jld2",
        init_conds,
    )
end