Skip to content

Nineteen calibration targets have no signal on 1.58.1: £1m+ income bands, ages 85-90 and others #593

Open

Description

@MaxGhenis

What's wrong

Nineteen national calibration targets enter the loss matrix with a column that is zero for every household. The optimiser cannot move them, so each contributes a constant error and reports as missed whatever the weights are. They are not flagged anywhere: create_target_matrix only checks that a column exists.

Measured on the released uk-data 1.58.1 enhanced_frs_2024_25.h5 (sha256 056e80fd) with the locked policyengine-uk 2.122.2. The measurement replays create_target_matrix's loop at the calibration year 2025 and records each target's status and whether its column has any non-zero entry. Counts only; no record values.

Of 660 national, regional and country targets:

Targets Why the column is zero
hmrc/{employment,dividend,property,private_pension,state_pension}_income[_count]_income_band_1_000_000_to_inf (10) Fewer than 10 records have total_income of £1m or more, and none of them has employment, dividend, property, private pension or State Pension income; they have self-employment income only. The band's count and amount targets for every other income type therefore have no signal.
ons/female_85_90, ons/male_85_90 No record is aged 85 or over; the oldest records fall in the 80–84 band.
voa/council_tax/{NORTH_EAST,NORTH_WEST,YORKSHIRE}/H No band-H household in those regions.
slc/student_loan_repayment/england/postgraduate No record repays an English postgraduate loan.
dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_{27_600_to_28_800,28_800_to_30_000,30_000_to_inf} No couple without children receives UC payments above £27,600 a year.

Why it matters

  • The £1m+ band's HMRC targets for 2025 include £35.5bn of employment income across 21,000 people and £11.1bn of dividends across 19,000. The data holds fewer than 10 records in the band, all self-employed only. Top-rate and dividend reforms therefore rest on almost no microdata in that band. It may be related to the capital gains shortfall in Capital gains on 1.58.0 total £39bn against HMRC's £65.9bn, and the test allows a 50% miss #570.
  • Ages 85+ hold the 80+ population in one band, so the 80–84 targets absorb it and the 85–90 targets can't be met.

What would fix it

The W3 coverage gate (a PR to follow) fails the build on a zero-signal target unless it is listed as a known gap with this issue, so the list can only shrink deliberately.

Activity

  1. MaxGhenis commented on Oct 15, 2026

    @MaxGhenis
    ContributorAuthor

    Correction to the figures above (UK hub, 10/15). £35.5bn of employment income (21,000 people) and £11.1bn of dividends (19,000) are the 2023-24 values: HMRC's SPI Tables 3.6 and 3.7, which are the base-year row of storage/incomes_projection.csv. The 2025 calibration targets for the £1m+ band are PolicyEngine's projection of them with its own uprating (utils/incomes_projection.py). On 1.58.1 those are £37.4bn of employment income (21,245 people) and £11.6bn of dividends (19,222). The zero-signal finding is unchanged.

  2. MaxGhenis commented on Oct 15, 2026

    @MaxGhenis
    ContributorAuthor

    Pull request (TESTING) builds have three more zero-signal targets than the release: dwp/uc_payment_dist/SINGLE_annual_payment_{24_000_to_25_200,25_200_to_26_400,27_600_to_28_800}. They had a zero national estimate in 11, 11 and 12 of 12 recent PR builds' final calibration logs, but have signal in the released 1.58.1 build. #595 lists them as known gaps.

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