Skip to content

Impute additional-dwelling and non-residential purchases, calibrated to HMRC's HRAD statistics #556

Open

Description

@MaxGhenis

Why

PolicyEngine/policyengine-uk#2241 (fixing policyengine-uk#2238) stops the model inferring an additional-dwelling purchase from the main-residence purchase flag. Previously other_residential_property_value × property_purchased charged a household's whole other-property stock as one purchase at the higher rates. After it, additional_residential_property_purchased and non_residential_property_purchased are inputs, nil unless the dataset supplies them. Until this dataset imputes them, household higher-rates SDLT (and the LBTT ADS and LTT higher rates) is nil. HMRC's 2024-25 figures imply individuals paid at least £4.2bn of HRAD receipts in England and Northern Ireland.

The model reads both variables if present, on current and older policyengine-uk versions (a dataset value overrides the old formula), and #2241 uprates them with the property stocks.

Targets (UK Stamp Tax Statistics 2024-25, https://www.gov.uk/government/statistics/uk-stamp-tax-statistics)

  • Table 6b, HRAD, England and NI, all buyers: 211,700 transactions worth £77.97bn, £5.44bn receipts (surcharge element £2.79bn). By price band: ≤£250k 113,500 / £16.6bn; £250-500k 60,700 / £21.5bn; £0.5-1m 27,500 / £18.8bn; £1-1.5m 5,300 / £6.5bn; £1.5-2m 2,000 / £3.5bn; over £2m 2,600 / £11.0bn.
  • Table 8a, residential, all buyers: individuals 925,100 transactions / £335.5bn / £9.15bn receipts; other buyers 124,500 / £44.7bn / £1.23bn. Since other buyers' HRAD cannot exceed all their transactions, individuals' HRAD is at least 211,700 − 124,500 = 87,200 transactions and at least £5.44bn − £1.23bn = £4.2bn of receipts.
  • HRAD refunds (Table 2f, about £0.5bn a year) are replacement-of-main-residence cases, which the model already charges at main rates.

Data (enhanced_frs_2024_25 @1.58.0, FY2025)

  • 31.2m households; 3.88m with other_residential_property_value > 0 (3.37m in England and NI), stock £2.39tn.
  • Weighted quantiles of the stock among owners: p10 £125k, p25 £209k, p50 £365k, p75 £783k, p90 £1.67m, p99 £2.61m.
  • The existing property_purchased draw (3.85% seeded) gives 194 sample owners who drew a purchase. That is too few to carry this base, and it is the main-residence event.

Proposal

  1. A separate seeded draw (its own np.random.default_rng seed, deterministic) among households with other residential property: the household bought one additional dwelling this year. Calibrate the rate so weighted transactions match individuals' HRAD transactions in England and NI.
  2. A price for that one purchase, at most the household's other-property stock. Draw it from Table 6b's price-band distribution conditional on the cap, or use min(stock, a calibrated price). Calibrate so weighted value matches individuals' HRAD value.
  3. Do the same for non_residential_property_purchased against the household non-residential targets (statistics.yaml in policyengine-uk holds older HMRC household non-residential figures).
  4. Tests: weighted HRAD transactions, value and higher-rates SDLT within a stated tolerance of the targets for FY2024-25; only owners of other property ever buy an additional dwelling; no price exceeds the stock; the build is reproducible across runs.

Timing

The Budget-day stack freezes on 21 October 2026. uk-data lands as one batch on Max's go (d833), so this needs to be in that batch for the certified pair to carry household HRAD.

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