Scenarios PichlerEtAl2022DIO#
The PichlerEtAl2022DIO model uses time-varying exogenous shocks to
simulate the economic impact of pandemic-induced supply and demand
disruptions. Scenarios are managed by
macrostat.models.PichlerEtAl2022DIO.scenarios.ScenariosPichlerEtAl2022DIO.
Scenario variables#
The following scenario variables are defined with default (no-shock) values in the steady state:
SupplyShock – \(\epsilon^S_{i,t} \in [0, 1]\), vector
(T, N). Fraction of industry i’s labour supply that is unavailable. Default: 0 (no supply disruption).DemandPreferences – \(\theta_{i,t}\), vector
(T, N). Time-varying household consumption preference shares across industries. Default: initial steady-state consumption shares.FearOfInfection – \(\tilde{\epsilon}^D_t \in [0, 1]\), scalar
(T, 1). Aggregate demand reduction due to fear of infection. Default: 0.PermanentIncomeExpectation – \(\xi_t\), scalar
(T, 1). Scaling factor on perceived permanent income. Default: 1 (no pessimism).OtherFinalDemand – \(f^d_{i,t}\), vector
(T, N). Exogenous non-household final demand (government, investment, exports). Default: initial steady-state value.
Building scenarios#
Scenarios can be constructed in two ways:
From the shock CSV (recommended for replication of the paper):
from macrostat.models.PichlerEtAl2022DIO import ( ParametersPichlerEtAl2022DIO, ScenariosPichlerEtAl2022DIO, ) params = ParametersPichlerEtAl2022DIO.from_wiod_uk( data_dir="path/to/data", ihs_dir="path/to/ihs", inv_file="path/to/inventories.csv", ) scenarios = ScenariosPichlerEtAl2022DIO.from_shocks_csv( parameters=params, shock_csv="path/to/shock_scenarios.csv", )
The
from_shocks_csvclass method reads the sameshock_scenarios.csvused by the original R replication code and constructs the full(T, N)shock tensors (supply shocks, demand preference reshuffling, fear-of-infection, and other final demand reductions) with the correct timing relative to the lockdown start date.Manually via
add_vector_scenario:scenarios.add_vector_scenario( timeseries={ "SupplyShock": my_supply_tensor, # shape (T, N) "FearOfInfection": my_fear_tensor, # shape (T, 1) }, name="Custom scenario", )