Skip to content

Fix Universal Credit caseload targets - #458

Merged
MaxGhenis merged 2 commits into
mainfrom
fix/uc-caseload-targets
Aug 17, 2026
Merged

Fix Universal Credit caseload targets#458
MaxGhenis merged 2 commits into
mainfrom
fix/uc-caseload-targets

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

What and why

The Universal Credit family-type targets currently apply an inert undercount adjustment because its numerator is expressed in millions while the family-type values are in thousands. The registry also lacks a current explicit household-total target, while the loss-matrix dispatch retains names that no source emits.

This PR makes the smallest sourced targets fix:

  1. Removes the inert adjustment so the four published family-type values are preserved exactly and sum to 6.096 million.
  2. Adds dwp/uc/households, with targets of 6.7 million in 2025 and 7.2 million in 2026, sourced from DWP's Universal Credit deductions statistics, March 2025 to February 2026, Table 1.
  3. Removes the dead OBR Universal Credit jobseeker-split dispatch branch. sources/obr.py emits neither the GBP split names nor the *_count names at main.

A unit test checks that get_all_targets(year=2025) returns the new 6.7 million target and that it produces a loss-matrix column through the existing count fallback.

Derivation

Table 1 publishes households with a deduction and the share of all Universal Credit households that they represent. Total households are therefore households with a deduction divided by that share.

Period Households with a deduction Share Derived total
April 2025 3.0m 47% 6.38m
May-August 2025 3.1m 47% 6.60m
September-November 2025 3.2m 46% 6.96m
December 2025-February 2026 3.3m 46% 7.17m

The 2025 target is the calendar-2025 average, rounded to 6.7 million. The 2026 target represents the December-February plateau, rounded to 7.2 million.

Source: https://www.gov.uk/government/statistics/universal-credit-quarterly-statistics-29-april-2013-to-12-february-2026/universal-credit-deductions-statistics-march-2025-to-february-2026

Vintage tension

The 6.096 million family-type sum and the 6.7 million 2025 total are a known vintage tension: the family-type breakdown predates managed-migration growth. Refreshing the family-type values to a current Stat-Xplore month is follow-up work for the data owner.

Tests

  • make format
  • uv run ruff check policyengine_uk_data/targets/sources/dwp.py policyengine_uk_data/targets/build_loss_matrix.py policyengine_uk_data/tests/test_target_registry.py
  • Targets-related tests: 161 passed, 26 skipped, 1 warning
  • uv run --extra dev towncrier build --draft --version 0.0.0

The full suite was not run because it includes gated private-data tests; the scoped run included every test module importing policyengine_uk_data.targets, with gated cases skipped by their existing fixtures.

Part of #452

Follow-through on the dead-code removal in this PR: the dispatch branch
was deleted, so the helper and its exports were unreferenced.
@MaxGhenis
MaxGhenis merged commit cbd5ae1 into main Aug 17, 2026
4 checks passed
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