Skip to content

Update corporate SDLT and business rates statistics and project them with OBR receipts - #2322

Draft
MaxGhenis wants to merge 7 commits into
fix/corporate-sdlt-double-countfrom
update-corporate-receipts-statistics
Draft

MaxGhenis wants to merge 7 commits into
fix/corporate-sdlt-double-countfrom
update-corporate-receipts-statistics

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Oct 11, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #2320

Summary

corporate_sdlt, business_rates and baseline_business_rates allocate receipt statistics to households by shareholding. Those statistics stopped in 2018-2021 and were held flat in every later year. This PR:

  • updates them from the latest official outturn;
  • adds the England and Wales central rating lists, which councils' figures exclude;
  • projects later years with the OBR's March 2026 receipts forecasts.

On certified data in 2026-27:

  • Corporate SDLT rises from £3.13bn to £5.98bn.
  • Business rates rise from £31.73bn to £38.04bn.
  • gov_tax and household_tax rise by £9.16bn, and household net income falls by the same amount. The rise is £4.63bn in 2025-26 and £17.14bn in 2030-31.
  • HBAI income and all four poverty rates are unchanged.

Every figure comes from real runs, shown below.

Known overlap. £2.85bn of the 2026-27 change is corporate SDLT, which overlaps household SDLT until policyengine-uk-data#564 lands; see "SDLT calibration overlap" below.

Stacked on #2235 (base fix/corporate-sdlt-double-count). Retarget to main when #2235 merges.

Sources

Every value was read from the published file. extract_values.py regenerates them all with sheet and cell references. A separate blind extraction, which was not shown these values, read 666 cells from the same publications, and every value it covers matches. Where it found later revisions or extra series, they are adopted below. It did not cover the England central list. Its seven accounts were checked against the published PDFs: each account's prior-year column equals the previous account's figure, and the round-2 reviewer confirmed 2023-24 to 2025-26 on gov.uk.

Series Source Measure Latest outturn
Corporate and household SDLT (receipts, transactions, values) HMRC Annual Stamp Tax Statistics. Tables 8a/8b, 2024 to 2025 edition (corrected March 2026), for 2023-24 and 2024-25. Tables 6a/6b, 2023 to 2024 edition, for 2021-22 and 2022-23. Historic tables 6a/6b for 2019-20 and 2020-21. "Other buyers" (non-natural persons: companies, partnerships, collective investment schemes) vs individuals. Transactions of £40,000 or more, England and NI. 2024-25: £1,230m residential, £3,260m non-residential
England, local lists MHCLG NNDR3, 2025 to 2026 release, Table 1. 2019-20 and 2020-21 come from MHCLG's November 2025 revised underlying data. Non-domestic rating income from the rates retention scheme, the release's headline 2025-26 (provisional): £27,591m
England, central list MHCLG Main Non-Domestic Rating Accounts (HC papers), 2019-20 to 2025-26 Amounts received from ratepayers on the central list 2025-26: £2,103m
Scotland Scottish Government, Non-domestic rates income statistics (August 2026), Table 1 Contributable amount from the latest outturn return: audited to 2021-22, provisional after 2025-26 (provisional): £3,079m
Wales, local lists StatsWales, Non-domestic rates actuals Contribution to the pool 2024-25: £980m
Wales, central list StatsWales, Non-domestic rates central list Total rates received, Wales 2024-25: £105m
Northern Ireland Land & Property Services (OpenDataNI), Rates paid by District Council and Sector Non-domestic rates paid in the rating year 2025-26: £766m
Projection OBR March 2026 EFO, detailed receipts tables 3.7 (SDLT by property type), 3.8 (Business rates, cash) and 3.2 (Northern Ireland business rates). The 2023-24 base comes from the March 2025 EFO. Ratios of the published levels —

Checks.

  • The existing 2019-20 and 2020-21 SDLT values match HMRC's historic tables exactly.
  • The OBR's SDLT outturn by property type equals HMRC's all-buyer totals:
    • 2024-25: £10,380m residential and £3,505m non-residential;
    • 2023-24, in the March 2025 EFO: £8,570m and £3,045m.
  • The England, Scotland and Wales series, local and central lists together, cover the OBR's Business rates line within 1% in 2024-25 and 2025-26. A test checks both years within 2%.
    • 2024-25: £32.69bn against £32.38bn;
    • 2025-26: £33.91bn against £34.05bn;
    • 2023-24: £31.06bn against £29.60bn in the March 2025 EFO, or +4.9%. England's local-list income is an accounting measure, while the OBR line is cash.

What was wrong with the old values

Old value Problem
Corporate SDLT 2020-21 (£3,130m) A Covid year, held flat. 2024-25 is £4,490m.
England 2021-01-01 £27,222m Not MHCLG's outturn, which is £20,448m for 2021-22. The central list (£1.8-2.1bn a year) was missing.
Scotland 2020, 2021 Mid-year estimates.
Wales 2020 £1,053m From StatsWales' NDR estimates table (per its reference), not outturn. The central list was missing.
Northern Ireland 2018 £1,334m Total NI rates: district £590m plus regional £744m, domestic and non-domestic together. Its source (2019 Review of Business Rates terms of reference) says about half is non-domestic. So business_rates contained NI domestic rates, which domestic_rates already charges. LPS's total less domestic equals its non-domestic series in every year to within £1; a test enforces this.

Projection

The new series sit in gov.economic_assumptions.yoy_growth.obr:

  • stamp_duty_land_tax.residential and stamp_duty_land_tax.non_residential, from Table 3.7;
  • business_rates.great_britain, from Table 3.8;
  • business_rates.northern_ireland, from Table 3.2.

Each value is the ratio of consecutive published levels, to six decimals:

  • 2025-2030 is the forecast.
  • From 2031 each series follows average_earnings's long-run path, because the OBR forecasts receipts only to 2030-31.
  • 2024 is outturn growth. It enters no projection; it anchors the index at 2024 for statistics whose latest outturn is 2024-25. The YAML says so.
  • The economic-assumption indices stop at 2039, so every projected statistic is flat in cash terms from 2039-40. That is documented and tested.

Each outturn statistic declares uprating:, and core uprating scales its last outturn value by the index ratio:

  • SDLT. Each buyer type keeps its 2024-25 share of its property type's receipts, applied to the OBR forecast. In 2026-27 that is £1,230m × 13.4289/10.380 + £3,260m × 4.7213/3.505 = £5,982.5m. The YAML states the assumption: shares are held, and allocating "other buyers" to UK households by shareholding is a modelling convention.
  • Business rates. Each series grows from its own latest outturn with its OBR line:
    • England, Scotland and Wales, local and central lists, use Business rates;
    • Northern Ireland uses Northern Ireland business rates.
    • Because the GB series now cover the same receipts as the OBR line, to within 1% in 2024-25 and 2025-26, its growth applies to a comparable base.

Why growth rates in yoy_growth rather than levels elsewhere: the projection then behaves like the model's other OBR series. In particular, no_economic_assumptions holds it at the latest outturn, which is tested.

Caveats

  • The OBR's profile. This PR takes the OBR forecast as published:
    • non-residential SDLT grows 28.5% in 2026-27;
    • the Business rates line grows 9.9% in 2026-27, 8.5% in 2029-30 and 0.1% in 2030-31.
  • NNDR1. Councils' NNDR1 2026-27 forecast of England's local-list net rates yield is 8.4% above the 2025-26 outturn (£30.55bn against £28.19bn). The OBR's line grows 9.9%. The difference, applied to England's local lists, is about £0.4bn in 2026-27. NNDR1 covers local lists only, and from 2026-27 its "rating income" includes £6.5bn of Section 31 grant. The OBR forecast covers both lists and is used here.
  • Accrued basis. The OBR's accrued Business rates line (Annex Table A.5) grows within 0.1 percentage points of the cash line in every year.
£bn Old (all years) 2024-25 2025-26 2026-27 2030-31
Corporate SDLT 3.130 4.490 4.808 5.983 8.866
England, local lists 27.222 26.397 27.591 30.315 34.406
England, central list — 2.064 2.103 2.310 2.622
Scotland 2.123 3.146 3.079 3.383 3.840
Wales, local lists 1.053 0.980 1.031 1.133 1.285
Wales, central list — 0.105 0.110 0.121 0.137
Northern Ireland 1.334 0.741 0.766 0.782 0.843
Business rates total 31.732 33.434 34.680 38.043 43.134

2024-25 is outturn. 2025-26 is outturn except for Wales, which is projected. Later years are projected.

Data notes, recorded in the YAML

  • Shareholding convention. business_rates allocates every list's receipts by shareholding. That includes ratepayers such as Network Rail (£10.5m) and Dwr Cymru (£17.0m) on the Welsh central list in 2024-25.
  • Wales, Covid years. The contribution to the pool was 1.41 and 1.38 times the councils' net collectable debit in 2020-21 and 2021-22, against 0.96 to 1.02 in other years. So those two years appear to include retail, leisure and hospitality relief that ratepayers did not pay. The 2024-25 base is in the normal range.
  • NI before 2020-21. NI's series starts in 2020-21, a rates-holiday year, so programs.yaml now verifies from 2020.

Interactions checked

  • corporate_tax_incidence (= corporate_sdlt + business_rates). hbai_excluded_income (= −corporate_tax_incidence). baseline_business_rates now sums the six series; business_rates shares its formula. All move exactly with the statistics: the microsimulation test checks weighted totals, and the real runs show identical changes. HBAI household net income doesn't change, so poverty doesn't either.
  • Fiscal partition (Count corporate SDLT once and let SDLT abolition remove all of it #2235). The heads and lists are unchanged, and all 39 partition tests pass. The PR adds two data_notes:
    • business_rates: GB £37.26bn against the OBR's £37.41bn in 2026-27. NI is £0.78bn against the OBR's £0.40bn NI line, which the OBR records under other taxes.
    • sdlt_household: the calibration overlap, below.
  • SDLT calibration overlap. This PR raises the overlap with uk-data's calibration (policyengine-uk-data#564).
    • At tag 1.58.0, targets/sources/obr.py locates the current-receipts sheet by title and maps the OBR's total "Stamp duty land tax" to household stamp_duty_land_tax.
    • So the household target includes the companies' share that corporate_sdlt adds again.
    • In 2026-27, household plus corporate SDLT is £23.29bn against the OBR's £18.15bn. That was £20.44bn before this PR.
    • The corporate figure is now right. Add page to carbon tax documentation #564 sets out the target fix (OBR total less this corporate statistic), for the batched data release.
  • corporate_sdlt.yaml. Expectations move from £3,130 to £5,982.55 per 1e-6 of shareholding, derived in the file header from the HMRC and OBR cells. Margins are £0.50, because the model chains six-decimal growth into a five-decimal index and lands within £0.10.
  • programs.yaml. Business rates is now verified 2020-2030, with notes on the method. It was 2019-2021, "Parameters need updating beyond 2021".

Invariants (tests in test_corporate_receipts_statistics.py)

  1. Published. Every outturn value equals the published figure, at published precision. NI equals LPS total rates paid less domestic, within £1.
  2. Coverage. The England, Scotland and Wales series sum to within 2% of the OBR's Business rates line in 2024-25 and 2025-26.
  3. Ratio. Every growth value for 2024-2030 equals the ratio of consecutive published OBR levels, within 5e-7. From 2031 it equals average_earnings growth through 2045.
  4. Tracking. Each projected statistic equals its last outturn × OBR(t)/OBR(last), within 2e-5 relative, for every year to 2030.
  5. Shares (Hypothesis, any two years 2025-2039). Each buyer type keeps its 2024-25 share of its property type's SDLT. The five GB series keep their shares of the GB total.
  6. Horizon. Every statistic rises into 2039-40 and is flat after it.
  7. Positive and finite. Every statistic is positive and finite for 2019-2049.
  8. Allocated once. On a microsimulation in 2025, 2026 and 2030:
    • weighted corporate_sdlt equals the corporate SDLT statistic;
    • weighted business_rates and baseline_business_rates equal the business rates statistic;
    • corporate_tax_incidence is their sum and hbai_excluded_income its negative.
  9. No economic assumptions. Under no_economic_assumptions, both statistics hold at the latest outturn. The test asserts the scenario's cutoff assumption explicitly.

Tests run

  • This PR's tests. test_corporate_receipts_statistics.py: 141 passed. stamp_duty/ and excise_integration YAML: 24 passed. Partition tests: 39 passed.
  • Other affected tests (earlier head; this round's changes don't touch them). Every other YAML test touching corporate wealth or these heads: 136 passed. test_sdlt_counted_once_properties.py, test_import_obr_forecasts.py, test_lagged_series.py, test_council_tax_uprating.py, test_threshold_indexation.py and test_fiscal_year_parameters.py: 180 passed.
  • Full CI. PR CI runs only for PRs into main, so it is dispatched manually.

National impact (real runs)

Setup.

  • Data: policyengine-uk-data 1.58.0, enhanced_frs_2024_25.h5, sha256 5ba399ea5ab9a6c7d4e9aaf6c623080beb34d9ad5f330f6244dbad72b8d960b6.
  • Code: base is Count corporate SDLT once and let SDLT abolition remove all of it #2235's head (41e970b). Head is 1477c91; the later commit changes only the partition note.
  • Runtime: both use policyengine-core 3.33.0 and numpy 2.1.3.
  • Runs: 12 Microsimulation runs at current law, 2 versions × 6 years. No scaling.
£bn a year 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31
corporate_sdlt, base → head 3.130 → 4.808 3.130 → 5.983 3.130 → 6.732 3.130 → 7.464 3.130 → 8.205 3.130 → 8.866
business_rates, base → head 31.732 → 34.680 31.732 → 38.043 31.732 → 38.882 31.732 → 39.765 31.732 → 43.074 31.732 → 43.134
Change in gov_tax, household_tax, pre_budget_change_household_tax, gov_balance, corporate_tax_incidence +4.626 +9.163 +10.752 +12.367 +16.416 +17.138
Change in household_net_income (BHC and AHC), hbai_excluded_income −4.626 −9.163 −10.752 −12.366 −16.416 −17.138
Change in hbai_household_net_income, stamp_duty_land_tax, expected_sdlt 0 0 0 0 0 0

Checks, every year.

  • Weighted corporate_sdlt and business_rates equal their statistics to within £0.01m.
  • Shareholding sums to 1.000000.
  • No non-finite outputs in either version.
  • BHC and AHC poverty, absolute and relative, are unchanged to four decimal places.

Distribution. Head − base, household net income per household, weighted mean £, by decile:

D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 All
2026-27 −134.36 −176.31 −156.16 −253.48 −237.44 −241.30 −273.18 −333.93 −481.76 −653.22 −292.17
2030-31 −303.86 −304.93 −301.14 −392.62 −429.12 −415.18 −506.31 −642.23 −916.29 −1,194.23 −537.45

Both statistics are allocated by shareholding, so the change grows with corporate wealth.

Not changed here (follow-ups)

  • SDLT calibration target: policyengine-uk-data#564, for the batched data release.
  • OBR import tool. import_obr_forecasts.py should refresh these growth series when a new EFO lands. This is a chip.
  • Reconciliation. Reconciling the NI series with the OBR's NI line, and the remaining GB differences, is a chip.
  • Statistics no formula reads. residential.household.first_time_buyers_relief and transactions_by_age (2020-21) are kept verbatim.

Review

Round 1 (independent review, Opus 5.5): REQUEST_CHANGES, with 14 findings. The responses, finding by finding:

  1. Central lists. Added for England and Wales, and the GB coverage test was added.
  2. Wales relief. Checked against Wales's net collectable debit: the 2024-25 base is in the normal range, and the Covid-year overstatement is documented.
  3. SDLT overlap. The uk-data claim is verified at tag 1.58.0, which locates the sheet by title. The reviewer read an older checkout. The overlap is now stated in the summary.
  4. England 2026-27 growth. Coverage now matches the OBR line, and the NNDR1 comparison is stated with its limits.
  5. Impact head. Rerun on 1477c91.
  6. 2024 growth row. Documented as an index anchor.
  7. Flat after 2039. Documented and tested.
  8. NI start year. NI is documented as starting in 2020-21, and verification now starts in 2020.
  9. Scenario cutoff. The cutoff is guarded explicitly.
  10. NI test. Strengthened to total less domestic.
  11. Independent extraction. Resolved by the blind extraction.
  12. Body cleanup. Done.
  13. References. Updated, and the collector comments corrected.
  14. Shares assumption. Stated in the YAML.

Round 2 (same reviewer): APPROVE. All four major findings are resolved.

  • The remaining minor points and nits are addressed in 2f951f8, a comment-only change, and in this description: the central-list verification note, the shareholding convention, 2023-24 coverage, the direct NNDR1 comparison, the OBR's 2029-30 step and the cleanups.
  • The run JSONs record package versions but not the git SHA; the head SHA is stated under Setup.

axiom: n/a: official receipts statistics and OBR forecasts used for corporate incidence, not law

🤖 Generated with Claude Code

…with OBR receipts

Corporate SDLT (HMRC buyer-type tables) now runs to 2024-25 and business
rates to 2025-26 (Wales 2024-25); both grow with OBR March 2026 receipts
forecasts by property type / nation. NI business rates were total rates
(domestic and non-domestic); they are now LPS non-domestic rates paid.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 4 commits October 11, 2026 13:09
…tions

- test_corporate_receipts_statistics: outturn equals the published tables,
  growth equals ratios of the OBR's published receipts, projections track
  them, shares within each line are invariant (Hypothesis), and the
  microsimulation allocates each statistic once (and holds it at the latest
  outturn under no_economic_assumptions).
- corporate_sdlt.yaml: expectations for the 2026-27 statistic (£5,982.55 per
  1e-6 shareholding), derived from the HMRC and OBR cells.
- programs.yaml: business rates verified to 2030.
- fiscal_partition.yaml: data notes on the business rates head (includes NI,
  which the OBR records under other taxes) and the household SDLT head
  (calibrated to the OBR total; policyengine-uk-data#564).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s; address review

- England central list (Main Non-Domestic Rating Accounts) and Wales central
  list (StatsWales), which councils' figures exclude; GB statistics now sum
  to within 1% of the OBR's Business rates line in 2024-25 and 2025-26.
- England 2019-20 and 2020-21 from MHCLG's November 2025 revised data.
- Document the Welsh Covid-year relief treatment, NI's 2020-21 start, the
  2039 index horizon, the 2024 index anchor and the SDLT shares assumption.
- Tests: central lists, NI = LPS total less domestic, GB coverage of the OBR
  line, flat after 2039, explicit no_economic_assumptions cutoff guard.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The aggregate impact report (#2335) adds gov_spending, household_benefits
and spending_heads to fiscal_partition.yaml. The tax tests now check the
three tax totals only, require that spending heads borrow no tax head id or
variable and that no spending head names a tax total, and apply dropped_when
to the tax totals alone. Checked against #2335's file with these tax
sections merged in: this file's tests and #2335's partition and guard tests
pass.

The vat head records that 76 households have negative VAT on
policyengine-uk-data 1.58.0 (consumption or the full-rate expenditure share
is negative in the data; policyengine-uk-data issue 565).

Refs #2159

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…R lines

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… rates statistics

Comment-only (review round 2, findings 2 and 3).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant