Problem
The model currently captures imported inflation through two reduced-form channels:
- FX/import pass-through in
PriceLevel.importPush
- commodity / energy cost pass-through into firm P&L and Calvo markups
That is directionally correct, but it is still missing the direct household-CPI channel that dominated Polish inflation during episodes like COVID supply shocks and the Russia-Ukraine energy shock.
In the current implementation, an energy shock is represented mainly as a producer-cost shock. There is no explicit household energy basket component (electricity, gas, heating, fuels) with administered pricing / tariff smoothing / delayed pass-through.
Why this matters
For an agent-based macro model, imported inflation should be modeled explicitly enough to distinguish:
- FX-driven imported inflation
- commodity / energy shock inflation
- direct household energy CPI effects
- delayed / buffered pass-through via regulated prices and state-owned suppliers
Without that split, 2021-2023 style inflation is only partially represented.
Current code shape
Relevant pieces today:
PriceLevel.importPush depends on FX deviation and aggregate import propensity
GvcTrade provides commodityPriceIndex and importCostIndex
Firm.energyAndEtsCost passes commodity prices into producer costs
CalvoPricing.energyCostPressure passes part of that into firm markups
StateOwned.effectiveEnergyPassthrough partially buffers pass-through
This is useful, but still too indirect for household CPI energy inflation.
Proposed direction
Add an explicit imported-energy inflation block, for example:
- introduce a household energy CPI component (electricity / gas / heating / fuels)
- drive it from
commodityPriceIndex, importCostIndex, and FX
- add administered-price / tariff smoothing and optional temporary freezes
- keep SOE / public buffering as a separate pass-through layer
- aggregate headline CPI from core + food + energy-style components, or at least from core + explicit energy component
Acceptance criteria
- a commodity shock can raise CPI even without a large PLN depreciation
- the model distinguishes direct household energy inflation from producer-cost pass-through
- tariff buffering / delayed pass-through can be switched on and calibrated
- diagnostic output can show how much CPI comes from FX vs commodity/energy vs domestic channels
Notes
This is not just a calibration tweak. It is a structural gap in inflation modeling for a Poland-style open economy with energy import dependence and regulated price buffering.
Problem
The model currently captures imported inflation through two reduced-form channels:
PriceLevel.importPushThat is directionally correct, but it is still missing the direct household-CPI channel that dominated Polish inflation during episodes like COVID supply shocks and the Russia-Ukraine energy shock.
In the current implementation, an energy shock is represented mainly as a producer-cost shock. There is no explicit household energy basket component (electricity, gas, heating, fuels) with administered pricing / tariff smoothing / delayed pass-through.
Why this matters
For an agent-based macro model, imported inflation should be modeled explicitly enough to distinguish:
Without that split, 2021-2023 style inflation is only partially represented.
Current code shape
Relevant pieces today:
PriceLevel.importPushdepends on FX deviation and aggregate import propensityGvcTradeprovidescommodityPriceIndexandimportCostIndexFirm.energyAndEtsCostpasses commodity prices into producer costsCalvoPricing.energyCostPressurepasses part of that into firm markupsStateOwned.effectiveEnergyPassthroughpartially buffers pass-throughThis is useful, but still too indirect for household CPI energy inflation.
Proposed direction
Add an explicit imported-energy inflation block, for example:
commodityPriceIndex,importCostIndex, and FXAcceptance criteria
Notes
This is not just a calibration tweak. It is a structural gap in inflation modeling for a Poland-style open economy with energy import dependence and regulated price buffering.