Skip to content

UK national gaps: CGT gain bands, housing cost aggregates, Scotland household composition, salary-sacrifice contributions, benefit cap reduction #196

Description

@juaristi22

Summary

Diffing the microcosm UK national register (388 references, 189 contract targets) against
policyengine-uk-data 1.56.16 at the national level turned up 65 national/country targets the
incumbent calibrates against that we do not carry.

Most of that gap is ours to close: 28 of our 29 zero-reference contract targets resolve
against the current feed as written (or after a one-line selector fix), and are being wired in
PolicyEngine/microcosm#743. This issue covers only the residue that genuinely needs facts
minting here.

Feed checked: chronicle-uk-artifact-1cab809, facts 226358e73e7c449e71a3f6dc91a72e8e3941e0f14265943d81c990edb21c2a6c, 107,550 rows, 238 distinct (source, concept) pairs.

1. HMRC capital gains, banded by gain size — 18 rows

The incumbent carries a nine-band CGT distribution: gain amounts (£1.46bn at the £12,300
threshold up to £23.34bn above £5m) and matching taxpayer counts (79,000 down to 2,000).

The feed has hmrc.cgt_gains_total / _individuals / _trusts, hmrc.cgt_tax_* and
hmrc.cgt_taxpayers_* — but no band dimension on any of them, and the latest period is
2023. We can currently target three CGT aggregates where the incumbent targets a distribution.

Wanted: gain amount and taxpayer count dimensioned by gain band, on the same band edges HMRC
publishes (12,300 / 25,000 / 50,000 / 100,000 / 250,000 / 500,000 / 1,000,000 / 2,000,000 /
5,000,000).

This is the largest single gap and the one that most affects CGT reform analysis, since the
spine already carries 270 CGT band donor records — the support exists, the targets do not.

2. National housing cost aggregates — 3 rows

The incumbent carries housing/rent_private £89.04bn, housing/rent_social £30.68bn and
housing/total_mortgage £99.00bn as national totals.

The feed has mhclg.ehs_mean_weekly_housing_costs_* and mhclg.ehs_median_weekly_housing_costs_*
(per-household weekly statistics, England, 2023) and ons.pipr_average_monthly_rent
(per-dwelling monthly averages). Neither is a national aggregate, and neither can be summed
into one without a dwelling-count denominator the same table does not carry.

Wanted: UK (or GB) annual aggregate private rent paid, social rent paid, and total mortgage
interest or total mortgage payments.

3. Scotland households with three or more dependent children — 1 row

ons.families_households_table7 carries the ten household-composition types we already
calibrate against, but only at K02000001 (UK) geography across 2018–2025. There is no
Scotland cut, so a Scotland-specific 3+-children household count cannot be selected.

This is the one member of our zero-reference set that genuinely blocks on a fact rather than
on our own wiring. (Its current selector in our contract points at
ons.mid_year_population_estimate grouped by age, which matches 30,925 facts and cannot
answer a household question — that is our bug and we are fixing it regardless.)

Wanted: the table 7 household-type breakdown at country level (England / Scotland / Wales /
Northern Ireland), or at minimum a Scotland 3+-dependent-children household count.

4. HMRC salary sacrifice contributions — 1 row

The incumbent carries hmrc/salary_sacrifice_contributions £24.72bn. The feed carries
hmrc.salary_sacrifice_pension_users (dimensioned by salary_sacrifice_threshold_position)
but not the contribution amount those users generate. We target the reliefs without the base
they are computed from.

Note: the incumbent's own build currently fails to fetch this source — the HMRC CSV at
assets.publishing.service.gov.uk/media/687a294e312ee8a5f0806b6d/Tables_6_1_and_6_2.csv
returns HTTP 410, so whatever lands here should not use that URL.

5. DWP benefit cap total reduction — 1 row

The incumbent carries dwp/benefit_cap_total_reduction £320.87m. The feed carries
dwp.uc_capped_households_* — household counts by weekly-reduction band, plus a total count —
but no total reduction amount. We can count capped households but not the money withdrawn.

What is explicitly not asked for here

Facts for the other 27 zero-reference contract targets already exist and resolve correctly:
OBR council tax by country and NI domestic rates (2025), SLC borrowers by repayment plan and
status (2025), SLC targeted support by product, SLC devolved net repayments, DWP PIP daily
living by award rate (2025-01), the Scottish Child Payment line within
scotgov.social_security_assistance_spending (2025), Scottish chargeable dwellings by council
tax band, and the HMRC SPI property income amount bands. Those are reference-wiring work on the
microcosm side, tracked in PolicyEngine/microcosm#743.

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