Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/obr-receipts-importer.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- `import_obr_forecasts.py` now refreshes the OBR receipts growth series that project corporate SDLT and business rates (`yoy_growth.obr.stamp_duty_land_tax.*` and `.business_rates.*`) from a new EFO's receipts tables, with the previous EFO's tables (`--previous-receipts-file`) as the base for outturn growth, and refuses receipts tables from a different EFO.
33 changes: 33 additions & 0 deletions policyengine_uk/parameters/gov/economic_assumptions/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,19 @@ generated from it by
| `petrol_spending_litre_proxy` | Spending growth that preserves road-fuel litres | HMRC + OBR |
| `diesel_spending_litre_proxy` | Same, for diesel | HMRC + OBR |
| `finance_ni.domestic_rates` | Average Northern Ireland domestic rates bill (regional plus district poundage) | DoF rate poundages, LPS rates paid, NI draft Budget 2026-29 |
| `stamp_duty_land_tax.residential` | SDLT receipts from residential property | EFO receipts Table 3.7 |
| `stamp_duty_land_tax.non_residential` | SDLT receipts from non-residential property | EFO receipts Table 3.7 |
| `business_rates.great_britain` | Business rates receipts, England, Scotland and Wales (cash) | EFO receipts, current receipts (cash basis): Table 3.8 in March 2026 |
| `business_rates.northern_ireland` | Northern Ireland business rates receipts | EFO receipts Table 3.2 |

The four receipts series project the corporate SDLT and business rates
statistics (`gov.hmrc.stamp_duty.statistics`,
`gov.hmrc.business_rates.statistics`) from their latest outturn. Each is the
ratio of consecutive published receipts levels, to six decimals: outturn
growth for the EFO's outturn year (its outturn over the year before's outturn
in an earlier EFO), the EFO's forecast years, and after them the
`average_earnings` path. Years before the outturn year are kept, so each
index keeps its base year.

## Time horizons

Expand Down Expand Up @@ -118,6 +131,26 @@ threshold by the same rises, up to the last year of
`yoy_growth.yaml`; pass the receipts tables with `--receipts-file` or
`--receipts-url` so September CPI uses the OBR's September forecast. If
you edit `yoy_growth.yaml` by hand instead, rerun it with `--gaps-only`.
6. Refresh the receipts series (`stamp_duty_land_tax.*`,
`business_rates.*`). The importer does this in the same run when it also
gets the receipts tables of the EFO whose outturn year is one earlier
(March 2025 for March 2026), with `--previous-receipts-file` or
`--previous-receipts-url`; their outturn is the base for the outturn
year's growth. It finds each line by table title and row label, so table
renumbering does not matter, and it refuses receipts tables from another
EFO. Then update the published levels in
`policyengine_uk/tests/test_corporate_receipts_statistics.py`
(`OBR_RECEIPTS_BN`), which pin the series to the OBR's tables. Pass
`--skip-receipts-growth` only to leave them on the previous EFO.

For example, for March 2026:

```bash
uv run python -m policyengine_uk.utils.import_obr_forecasts \
--file economy_tables_march_2026.xlsx \
--receipts-file receipts_tables_march_2026.xlsx \
--previous-receipts-file receipts_tables_march_2025.xlsx
```

The EFO refresh does not touch `finance_ni.domestic_rates`; OBR does not
publish a Northern Ireland domestic rates bill series (see below).
Expand Down
25 changes: 14 additions & 11 deletions policyengine_uk/parameters/gov/economic_assumptions/yoy_growth.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -647,19 +647,22 @@ obr:
href: https://obr.uk/efo/economic-and-fiscal-outlook-march-2026/

# Receipts used to project the statistics behind corporate incidence.
# Each is the OBR's growth in a receipts line: 2024 is outturn growth
# (2024-25 outturn in the March 2026 EFO over 2023-24 outturn in the March
# 2025 EFO), 2025-2030 the March 2026 EFO forecast, and 2031 onwards the
# average_earnings long-run path (the OBR forecasts receipts only to
# 2030-31). Values are ratios of the published levels, to six decimals.
# The 2024 value never enters a projection: indices start at 1.0 in a
# series' first year, so it only anchors the index at 2024, where the
# Each is the OBR's growth in a receipts line, the ratio of consecutive
# published levels to six decimals. The latest EFO supplies outturn growth
# for its outturn year (its outturn over the previous year's outturn in an
# earlier EFO) and growth for each forecast year. After the OBR's receipts
# forecast, each series follows the average_earnings long-run path. The
# comments in each series name the EFOs and tables behind its values.
# policyengine_uk/utils/import_obr_forecasts.py rewrites these series from
# a new EFO's receipts tables and keeps the years before its outturn year.
# The first value, 2024, never enters a projection: indices start at 1.0
# in a series' first year, so it only anchors the index at 2024, where the
# statistics with 2024-25 as their latest outturn are uprated from.
stamp_duty_land_tax:
residential:
description: Growth in stamp duty land tax receipts from residential property (England and Northern Ireland).
values:
# Outturn (2024-25 over 2023-24), Table 3.7 "SDLT from residential property"
# Outturn (2024-25 over 2023-24) from OBR EFO March 2026 over March 2025, receipts Table 3.7 "SDLT from residential property"
2024-01-01: 0.211202
# Forecast (2025-2030) from OBR EFO March 2026, receipts Table 3.7
2025-01-01: 0.1302
Expand All @@ -686,7 +689,7 @@ obr:
non_residential:
description: Growth in stamp duty land tax receipts from non-residential property (England and Northern Ireland).
values:
# Outturn (2024-25 over 2023-24), Table 3.7 "SDLT from non-residential property"
# Outturn (2024-25 over 2023-24) from OBR EFO March 2026 over March 2025, receipts Table 3.7 "SDLT from non-residential property"
2024-01-01: 0.151067
# Forecast (2025-2030) from OBR EFO March 2026, receipts Table 3.7
2025-01-01: 0.048515
Expand Down Expand Up @@ -714,7 +717,7 @@ obr:
great_britain:
description: Growth in business rates receipts in England, Scotland and Wales (the OBR "Business rates" line, cash basis).
values:
# Outturn (2024-25 over 2023-24), Table 3.8 (March 2025: Table 3.9) "Business rates"
# Outturn (2024-25 over 2023-24) from OBR EFO March 2026 over March 2025, receipts Table 3.8 (March 2025: Table 3.9) "Business rates"
2024-01-01: 0.093818
# Forecast (2025-2030) from OBR EFO March 2026, receipts Table 3.8
2025-01-01: 0.051739
Expand All @@ -741,7 +744,7 @@ obr:
northern_ireland:
description: Growth in Northern Ireland business rates receipts (the OBR "Northern Ireland business rates" line in other taxes).
values:
# Outturn (2024-25 over 2023-24), Table 3.2 "Northern Ireland business rates"
# Outturn (2024-25 over 2023-24) from OBR EFO March 2026 over March 2025, receipts Table 3.2 "Northern Ireland business rates"
2024-01-01: 0.032513
# Forecast (2025-2030) from OBR EFO March 2026, receipts Table 3.2
2025-01-01: 0.032388
Expand Down
Loading