Skip to content

SDLT calibration target includes corporate SDLT, which policyengine-uk adds separately #564

Open

Description

@MaxGhenis

Problem

targets/sources/obr.py maps the OBR's total stamp duty land tax line (receipts Table 3.8, all buyers) to the household variable stamp_duty_land_tax. _compute_simple_gbp then sums that variable over households. This is the same code in the 1.58.0 release (obr.py line 264).

policyengine-uk adds SDLT paid by companies separately: corporate_sdlt is shareholding × HMRC's receipts from non-natural persons, and it sits in gov_tax and household_tax alongside expected_sdlt. So calibration pushes household SDLT up to a total that already includes the corporate share, and the model then adds the corporate share again.

HMRC's buyer-type tables (Annual Stamp Tax Statistics 2024 to 2025, Tables 8a and 8b) put non-natural persons at £4,490m of £13,885m in 2024-25: £1,230m residential and £3,260m non-residential, or 32.3%. The OBR's 2024-25 outturn for SDLT by property type (receipts Table 3.7) equals HMRC's all-buyer totals exactly: £10,380m residential and £3,505m non-residential.

Measured on 1.58.0

enhanced_frs_2024_25.h5, sha256 5ba399ea…d960b6, policyengine-uk with PolicyEngine/policyengine-uk#2322, which projects corporate SDLT with the OBR forecast. Figures are £bn.

2025-26 2026-27 2030-31
OBR total SDLT (Table 3.7) 15.41 18.15 26.16
model stamp_duty_land_tax (households) 16.32 17.31 21.36
model corporate_sdlt 4.81 5.98 8.87
model total 21.12 23.29 30.23

Before #2322, corporate SDLT was held at £3.13bn and the 2026-27 total was £20.44bn.

Fix

Target stamp_duty_land_tax at the OBR total less policyengine-uk's corporate statistic for the same year: gov.hmrc.stamp_duty.statistics.{residential,non_residential}.corporate.revenue, read from the installed model.

After #2322 that statistic is HMRC's 2024-25 non-natural-person share of each property type, applied to the OBR's forecast for that type. The target is then individuals' SDLT on the OBR's forecast: £18.15bn − £5.98bn = £12.17bn in 2026-27.

tests/test_property_purchased.py bounds weighted expected_sdlt against total receipts (£5–50bn), and should compare against the household-only figure. #556's household non-residential targets can read the same statistics; #2322 updates them to 2024-25 (£245m, 25,000 transactions, £7.64bn).

This belongs in the batched data release.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    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