Skip to content

Energy spending projection: add an energy-specific price index and a Microcosm release that writes energy_price_basis #2526

Open

Description

@vahid-ahmadi

Update, 23 Oct 2026: the consumer side is mostly in place. #2571 (merged) projects energy inputs from the price year a dataset declares in energy_price_basis, and keeps unlabelled inputs flat. #2591 (merged 24 Oct 2026) isolates the declared energy projections and checks the index has history for the basis and target dates. Both use generic OBR CPI as an interim proxy. This issue now covers the two remaining pieces listed under Remaining work.

Problem

policyengine_uk/data/uprating_indices.yaml leaves domestic_energy_consumption, electricity_consumption and gas_consumption out of dataset projection, and economic_assumptions.py (DATASET_UPRATING_EXCLUSIONS) keeps them flat in every projected year. The reason given is that the input is already at FY2026-27 prices: the legacy policyengine-uk-data build converts kWh to pounds at Ofgem Q2 2026 unit rates (#1867, #1868).

That holds for the legacy data, but not for Microcosm UK 2024-25. The current release (f9d1922c) prices domestic energy at DESNZ Quarterly Energy Prices for FY2024-25 and calibrates to ONS household spending for CY2025. With projection switched off, every later year keeps those 2024-25 prices. PolicyEngine/microcosm#1113 reports model electricity spending of about £26.7bn, £26.8bn and £26.9bn in 2025, 2026 and 2027, moving only with household growth.

This affects any costing built on these variables in later years. For example, #2189 (the temporary 0% VAT on GB domestic electricity, #2166) costs 2026-27 on a base that is still at 2024-25 prices.

PolicyEngine/microcosm#1113 item 4 asked for the producer and consumer sides of this. The producer side has moved: PolicyEngine/microcosm#1167 (which closed #1113) puts Microcosm main on calendar-2024 prices so that policyengine-uk can project from the dataset's year. policyengine-uk still excludes energy from projection, so the next release would also stay at 2024 prices. This issue is the consumer side.

Remaining work

  1. An energy-specific price index. Replace the CPI proxy with an index built from the Ofgem price cap for quarters with outturn, then a sourced assumption for later quarters.
  2. A Microcosm release that writes energy_price_basis. Until a released dataset declares its energy price year, the projection in Project labelled energy inputs from their declared price year #2571 does not apply and Microcosm energy spending stays at its base-year prices. Lock policyengine-uk 2.151.0 and write the UK inputs it reads (#1095, #1278) microcosm#1383 (open, as of 24 Oct 2026) writes energy_price_basis; a release built from it would close this item.

The original proposal is kept below for the record. #2571 and #2591 implement its mechanism, using CPI in place of an energy index.

Original proposed fix

Proposed fix

Uprate energy spending from the price year the dataset declares, not from a fixed FY2026-27 assumption:

  • read the energy price year from the dataset (calendar 2024 for Microcosm main, FY2024-25 for the current release), falling back to the dataset year;
  • project from that year to each later year with an energy price index;
  • keep the current flat behaviour only for datasets at FY2026-27 prices, such as the legacy build;
  • add a test that a 2024-priced input is uprated to 2026-27 and a FY2026-27-priced input is not.

#2189 adds gov.simulation.vat.energy_input_price_basis_rate to describe the inputs' VAT basis; the price year could sit beside it.

🤖 Generated with Claude Code

Activity

  1. self-assigned this
    on Oct 21, 2026
  2. changed the title [-]On Microcosm data, domestic energy spending stays at 2024-25 prices in later years[/-] [+]Energy spending projection: add an energy-specific price index and a Microcosm release that writes energy_price_basis[/+] on Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions