Skip to content

[DO NOT MERGE] Batch-3 option C: release without CGT prior raking, full CI fit gate - #622

Closed
MaxGhenis wants to merge 105 commits into
mainfrom
b3/option-c-gate
Closed

MaxGhenis wants to merge 105 commits into
mainfrom
b3/option-c-gate

Conversation

@MaxGhenis

Copy link
Copy Markdown
Contributor

DO NOT MERGE. This is a diagnostic for the batch-3 release #608 (option C). The UK hub closes it, and deletes its branch, once read.

The question: with #571's CGT prior raking removed from both local calibrations, but its targets and twinning kept, does #608's real CI fit gate pass?

Context, from production-setting (512-epoch) diagnostics:

Build Local within 10% National within 10% (common)
Release (A, #618) 91.9% 86.7%
Without #571 (B, #619) 92.1% 88.3%
Without the raking (C, #620) 92.2% 87.2%

C keeps #571's CGT level: £25.9bn in 2025-26, against £25.7bn with the raking.

🤖 Generated with Claude Code

MaxGhenis and others added 30 commits October 4, 2026 21:37
The cash-receipts parser targeted Table 3.8 "National insurance
contributions" (total NICs, £200.08bn in 2025-26) on the ni_employee
variable, which _parse_nics also targets at the Class 1 employee figure
(£49.54bn). The two targets on one matrix column contradicted each other;
the seeded constituency calibration on main b45c373 ended with obr/ni at
0.242 of target.

Drop the row rather than retarget it: the Table 3.4 class targets
(employee, employer, self-employed) already cover every NIC class the data
populates, and a total target on total_national_insurance would conflict
with them through the statutory payment recoveries and "Other NIC" lines
PE-UK does not model.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- test_obr_target_mapping: pin the variable of every target parsed from the
  committed receipts workbook, the Table 3.4 rows behind the NIC class
  targets, and the source identity that rules out a total-NICs target.
- test_obr_target_conflicts: no two calibration targets whose matrix column
  is the same plain variable sum or count may disagree on a year's value,
  checked over the OBR targets offline and over every target the national
  matrix uses; it flags the removed obr/ni mapping, and a seeded random
  check holds the grouped check to its pairwise definition.
- build_loss_matrix.calibration_targets: the target list create_target_matrix
  already built inline, extracted so the test checks the same set.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PolicyEngine UK's year N is tax year N to N+1: convert_to_fiscal_year_parameters
gives every parameter, the uprating indices included, its value at 30 April N.
hmrc_spi mapped the 2023-24 SPI to 2024 and hmrc_cgt followed, so both treated
2023-24 outturns as 2024-25 values and every projected year carried one year
too little uprating. The FRS release (2024-25 -> 2024), OBR targets, the SPI
microdata (2022-23 -> 2022) and #533's salary sacrifice tables already use the
start year; the end-year mapping arrived without stated reasoning in the
February 2026 registry refactor (de061fc).

- _SPI_YEAR and _CGT_BASE_YEAR move to 2023; incomes_projection.csv is
  regenerated from the same ODS (its 2023 rows equal main's 2024 rows).
- The CGT base year is now gated at the £6,000 AEA the outturn was realised
  under.
- Tests tie _SPI_YEAR to the tax year in the configured ODS name, check the
  CGT base-year AEA against policyengine-uk, and (as in #541) check that the
  committed projection is the SPI table uprated with the committed factors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
build_loss_matrix fetches targets without a year filter, and the registry
keeps only the first target of each name. hmrc_spi emitted each band twice:
the ODS outturn (base year only), then the projection (later years). The
projected target was dropped, so _resolve_value carried the base-year outturn
forward unuprated: the 2025 calibration has targeted raw 2023-24 SPI values
since the February 2026 registry refactor. get_targets now merges the two
into one target per band, and a test checks every projected band, variable
and year through the calibration's own resolution path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
derive_is_in_approved_training_from_frs_person read a `train` column. No FRS
release has one (2020-21 to 2024-25 carry TRAIN2 and TRAINEE), and the
function returned False when the column was missing, so every record was
coded as not in approved training.

DWP's FRS counts a 16- to 19-year-old as a dependent child only when in
full-time non-advanced education or unwaged government training. In FRS
2024-25 all 20 child-table records aged 16 to 19 outside full-time education
have TRAINEE = 1 (33.0k grossed), and uk-data coded every one as failing the
qualifying-young-person education-or-training condition.

Read TRAINEE = 1 (yes; the same yes/no format as EDUCFT), and fail the build
when the column is missing instead of defaulting to False.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review of #561 (Subfleet 20261010-193520-ud561-review-r1) found that an
adult-table trainee aged 16 to 19 would become a qualifying young person of
their own benefit unit. FRS 2024-25 has none, but 2020-21 has one and 2023-24
three. The FRS has already decided those records are not dependants, and the
adult TRAINEE question does not say the training is unwaged, so it may be
training under a contract of employment (UC reg. 5(3)).

- Flag TRAINEE = 1 on child-table records only. On FRS 2020-21, 2022-23,
  2023-24 and 2024-25 the result equals the child-table records aged 16 to 19
  outside full-time education exactly (8, 26, 16 and 20 records).
- Say why TRAINEE and not TRAIN2: `train` was TRAIN2's question name, only the
  adult table has TRAIN2, and its value labels are not in the repo.
- Property test over numeric, float and string codes and adult/child status;
  a create_frs test with an adult-table trainee in the same household.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Delta review r2 of #561 (Subfleet 20261010-201405-ud561-review-r2, APPROVE
WITH NITS at c952694):

- The docstring said a dependant outside full-time education "carries
  TRAINEE = 1" as if it were guaranteed. It is what the four FRS releases
  checked show, so say that, and call the adult exclusion a proxy.
- The adult-trainee fixture set age80 = 18 but kept age = 30, and create_frs
  adds the two, so it built a 48-year-old. Set age = 0 and assert age 18.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review r2 (APPROVE_WITH_NITS): with the live ODS download failing, the merge
test passed even without the merge, because only the projection targets were
emitted. The test now serves get_income_band_table from incomes.csv, checks the
outturn year as well as the projected years through the calibration resolver,
and requires every SPI target to carry all of them. The comment now names
30 April N, the date convert_to_fiscal_year_parameters samples.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The 1.58.0 enhanced FRS carries £53bn of gains above the annual exempt
amount, and -£15bn of losses on 1.4m people, against the £65.9bn the
build targeted and the £119.3bn HMRC now reports for individuals in
2024-25 (uk-data#570).

The calibration started 17 times over on CGT taxpayers and 5 times over
on gains: the has-gains copy of each zero-weight SPI household kept a
zero weight, so it received a full zero-weight prior, the same as its
no-gains original. After 512 epochs the taxpayer count was still 56%
over while the £12,300 to £250,000 bands had overshot to 23-64% under.

- Split every household's mass between itself and a has-gains twin by
  the Advani-Summers share for its income band, in closed form, and
  split a zero-weight household the same way.
- Give no twin to draws at or under the lowest HMRC band limit, losses
  included: no target describes them.
- Stack donors only for the bands from £500,000 up.
- Scale the calibration's starting weights so each HMRC size band's
  taxpayer count begins on target (rake_priors_to_targets).
- Target Table 2.1a for 2024-25 (2026 release), individuals only, from
  the £3,000 exempt amount up, with the aggregates as the band sums.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The has-gains copies of zero-weight SPI households now carry a weight,
so that the calibration starts from the right share of each. Salary
sacrifice, student loan plans and Pension Credit take-up count people on
survey weights and draw per record. Run before capital gains, they see
neither those weights nor the copies, and a copy matches its original in
everything but the gain.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- test_obr_efo_fallback: the receipts and NICs set from #536 listed
  obr/ni, which this branch no longer emits.
- test_obr_target_conflicts: #490/#530 added Target.countries, and
  create_target_matrix zeroes a column outside them, so the column key
  now includes countries. The random differential check uses Hypothesis,
  now a dev dependency, and draws country restrictions too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- obr.py: name what PE-UK lacks (statutory payment recoveries, Class 1A,
  1B, settlements, unallocated) and say ni_class_3 exists but is unfilled;
  the _parse_nics docstring no longer claims it covers Class 3.
- test_obr_target_conflicts: compare every pair in a shared column (isclose
  is not transitive), key countries as a set (restrict_to_countries uses
  np.isin), guard the registry-wide test against a silently empty registry,
  draw carry_forward and both orders of a two-country restriction, and pin
  the tolerance edge with an example.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sol review r2: the pairwise reference checked a pair only in its own
listed years, so two carried-forward targets that disagree in a year only
a third target lists were reported by the grouped check alone. The
reference now uses the column's full year set, and a regression pins the
reviewer's three-target case.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The OBR targets came from whatever obr.uk served, falling back to
committed workbooks matched by URL substring, with the vintage label
taken from sources.yaml rather than the bytes, year columns fixed by
letter, and missing rows logged and dropped.

A manifest per EFO vintage (targets/source_manifests/) now names the two
workbooks with their SHA-256, size and own title, the unit and financial
years every parsed table must head, and the targets they must yield.
Builds read only the verified committed bytes; each table's years come
from its header row; a missing target or year, or an undeclared one,
fails the build. `python -m policyengine_uk_data.targets.obr_sources
ingest` adopts a new vintage from browser-downloaded workbooks and
prints each target's change.

On the March 2026 bytes all 29 OBR targets are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
calibrate_local_areas saved and returned the weights only when
epoch % 10 == 0, so a 512-epoch build shipped the state after step 511
and a 32-epoch build the state after step 31, dropping the last update
(#456). Save at the last epoch too, in both the verbose and the
non-verbose loop, so the saved file, the returned dataset and the
logged fit are the final optimiser state.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
create_target_matrix skipped a target whose year did not resolve with no
log line (#456), skipped one whose column raised with a warning, and
accepted columns no household contributes to (#593). It now records each
offered target's status and fails unless every target is in the matrix
with a finite value and signal, or is listed in targets/known_gaps.yaml
under that status with a reason and an issue. Errors and non-finite
values can never be listed; a listed gap that no longer applies is
logged as stale.

known_gaps.yaml lists the 34 gaps measured on uk-data 1.58.1 at the
calibration year 2025: 15 two-child-limit targets dated 2026 only, and
19 targets with no signal. The matrix built is unchanged. The diagnostic
get_loss_results and the CPS transfer reweighting opt out.

`python -m policyengine_uk_data.targets.coverage` reports every target's
status on a dataset (names, statuses and counts only).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pull request CI now also builds the PR's base, in the same way as the
head (TESTING, one clone) and with the head's lockfile, so both run one
model and environment. A new job compares the two final-epoch fits from
their calibration logs. It fails when the share of national or local
targets within 10% falls by more than 2pp, flags national targets whose
error rises by more than 0.2, and posts the comparison on the PR.

The thresholds (targets/fit_policy.yaml, adopted under d1344) come from
five builds of the same data code: their shares moved by at most 0.93pp
(national) and 0.69pp (local), and they flagged 0 to 6 targets per pair.
Per-target moves only flag while #598 (two weight sets from one code)
is open. Only calibration logs are uploaded, as before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n unit

Sol review of #592:
- The manifest's vintage, its label and both workbook titles must agree
  (march_2026, "March 2026", "March 2026 Economic and fiscal outlook ...
  receipts"), at load and at ingest, so verified March bytes cannot be
  labelled October.
- A row whose label states its own unit ("Standard colour licence fee
  (£)") is refused under a "£ billion unless otherwise stated" table, and
  the TV licence target reads the "BBC licence fee receipts" row only.
- Ingest checks both workbooks and parses them in a staging folder before
  copying anything, and never replaces an ingested vintage.
- Coverage checks every workbook target, including one without the
  vintage.
- The NICs docstring no longer claims Class 3 or that partial results
  pass.

All 29 OBR targets are still identical to main's on the March bytes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Calibration fits grouped targets; these checks measure what the groups
hide, on the built dataset. Each PR build and its base build report
person-weighted equivalised income medians, means and Gini, and relative
low income for everyone, children, working-age adults and pensioners,
against DWP's HBAI FYE 2025 estimates and 95% intervals (tables 8a and
8b, read from the published ODS files), at period 2024. They also report
people by sex and single year of age against the ONS 2024-based
projection at the calibration year. The comparison job adds them to the
PR comment and flags a measure that leaves its interval; it fails only on
a broken or mismatched report until the same-code spread is measured
(#598).

On uk-data 1.58.1, 5 of 14 HBAI measures are outside their intervals
(median AHC, both Gini coefficients, child low income BHC and AHC), and
single ages 0 to 79 are off by 19.5% on average.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first CI build of this branch failed the gate on three single-claimant
UC payment bands (24,000 to 28,800 a year). Pull request (TESTING) builds
hold fewer records than the release: across the final calibration logs of
12 recent ones, these three have no signal in 11 or all 12, while the
released 1.58.1 build has signal in all three. A listed gap that applies
to one kind of build only warns as stale in the other.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…book

The Scottish band targets came from a live gov.scot download. When
gov.scot's CloudFront challenge blocked it, as in two of five recent pull
request builds of the same code, the loader substituted a fixed 2025
total spread by fixed shares, so identical code calibrated to different
targets (#596). Commit the September 2025 chargeable-dwellings workbook,
verify its SHA-256, and fail if it is missing or changed. Its Scotland row
equals the targets of the builds whose download succeeded.

Fixes #596.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both builds are measured with policyengine-uk's aggregate-impact tool at
a pinned commit (policyengine-uk#2425, stacked on #2335), under the head's
locked model: receipts by tax head, spending and caseloads, poverty,
inequality, deciles and the ten standard reform costings, 2025-26 to
2031-32. The comparison job runs `compare --axis data`, which fails unless
both sides ran one model, runtime and set of definitions, and adds the
result to the PR comment. It fails on a check the head breaks that the
base passes. Only each side's result.json (aggregates) is uploaded; the
tool's private household detail stays on the runner.

Under the locked 2.122.2 the tool falls back to policyengine-uk main's
partition, whose lists differ from that model's, so closure and two
identities fail on both sides (pre-existing) until uk-data locks a model
that ships its own partition.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
obr.uk refuses scripted downloads, so on Budget day a person downloads the
two EFO workbooks in a browser. The manifest now records each workbook's
download time with its SHA-256 and size: the file's modification time,
which a browser sets on saving, unless --downloaded-at is given. `ingest
--dry-run` checks everything and prints titles, hashes, sizes, download
times and every target's change, writing nothing; on the active vintage
it says whether the bytes match the committed workbooks, so a March 2026
download rehearses the Budget-day path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sol review of #600:
- Negative incomes before housing costs are reset to zero, and income
  after housing costs is derived from the adjusted figure (DWP HBAI
  methodology FYE 2025, "Negative incomes"). Weekly amounts use 365.25 / 7,
  as the FRS loader annualises them.
- A report missing any reference measure, or with a missing or
  non-finite single-age summary, fails the comparison.
- A missing distribution report fails the job.

On uk-data 1.58.1, four of 14 measures are now outside their intervals
(both Gini coefficients, child low income BHC and AHC); median AHC moves
inside.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rint commit

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Raw calibration logs stay on the runner. Each build uploads a summary:
  whether every national and local target is within 10%, and the error of
  national targets supported by at least 10 households only (the
  constituency log gains a records column). An estimate from a few records,
  divided by a published count, could give one household's value back.
  The test job's raw-log uploads are replaced by the summary too.
- The gate compares shares over the targets both builds have; added and
  removed targets are notes.
- An empty national or local group, or a last epoch with fewer rows than
  the one before, fails.
- The comment step writes a failure comment when the comparison never ran.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 25 commits October 16, 2026 03:41
With #557 each SPI income band is emitted once, so its 156 duplicate entries
go; with #604 the ages are 80 and over, so the two ons/*_85_90 zero-signal
entries go. The shipped-file counts move from 19 to 17 without signal and
from 159 to 3 duplicates (the ONS three, #605). The ten SPI bands of £1m and
over keep their zero-signal entries: #557 gives them no signal.

On uk-data 1.58.1 at 2025 the coverage CLI reports 626 in the matrix, 3
duplicates, 15 with no 2025 value and 17 without signal, with no problems and
no stale gaps, as a release build and as a testing build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…(review nit)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	policyengine_uk_data/targets/build_loss_matrix.py
133632a

# Conflicts:
#	policyengine_uk_data/targets/sources/obr.py
#	policyengine_uk_data/tests/test_obr_efo_fallback.py
#	policyengine_uk_data/tests/test_obr_receipts_sheet.py
…ifacts) at 5881ce3

# Conflicts:
#	.github/workflows/pull_request.yaml
…GT prior raking (full PR workflow, unseeded, as #608's gate runs)
@github-actions

Copy link
Copy Markdown

Calibration fit against the base build: fail

Targets within 10% (those both builds have) Base Head Change
National (627) 64.8% 64.9% +0.2pp
Local (11,228) 79.2% 75.0% -4.2pp

A drop of more than 2.0% fails.

Failures

  • The share of local targets within 10% falls from 79.2% to 75.0%, over the 11228 targets both builds have, by more than the 2.0% allowed.

Notes

  • The base log ends at epoch 30 and the head's at 31: one of them saves the final epoch (Save the calibrated weights from the final optimiser step #594).
  • 20 national targets are new: hmrc/capital_gains_band_10000, hmrc/capital_gains_band_3000, hmrc/capital_gains_band_6000, hmrc/cgt_taxpayers_band_10000, hmrc/cgt_taxpayers_band_3000, hmrc/cgt_taxpayers_band_6000, ons/east_age_80_plus, ons/east_midlands_age_80_plus, ons/female_80_plus, ons/london_age_80_plus
  • 17 national targets are gone: obr/ni, ons/east_age_80_89, ons/east_midlands_age_80_89, ons/female_80_84, ons/female_85_90, ons/london_age_80_89, ons/male_80_84, ons/male_85_90, ons/north_east_age_80_89, ons/north_west_age_80_89
  • 42 national targets are in a better band on the head.

National targets in a worse error band on the head (33)

Target Base Head
dwp/uc/claimants_with_5+_children 10-25% 25-50%
dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_1_200_to_2_400 within 10% 10-25%
dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_25_200_to_26_400 within 10% 10-25%
dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_26_400_to_27_600 25-50% 50-100%
dwp/uc_payment_dist/COUPLE_NO_CHILDREN_annual_payment_4_800_to_6_000 within 10% 10-25%
dwp/uc_payment_dist/COUPLE_WITH_CHILDREN_annual_payment_27_600_to_28_800 10-25% 25-50%
dwp/uc_payment_dist/LONE_PARENT_annual_payment_20_400_to_21_600 within 10% 10-25%
dwp/uc_payment_dist/LONE_PARENT_annual_payment_24_000_to_25_200 within 10% 10-25%
dwp/uc_payment_dist/LONE_PARENT_annual_payment_8_400_to_9_600 within 10% 10-25%
hmrc/dividend_income_count_income_band_50_000_to_70_000 10-25% 25-50%
hmrc/employment_income_count_income_band_200_000_to_300_000 within 10% 10-25%
hmrc/employment_income_income_band_20_000_to_30_000 10-25% 25-50%
hmrc/private_pension_income_count_income_band_200_000_to_300_000 25-50% 50-100%
hmrc/private_pension_income_income_band_20_000_to_30_000 within 10% 10-25%
hmrc/property_income_count_income_band_100_000_to_150_000 25-50% 50-100%
hmrc/property_income_count_income_band_150_000_to_200_000 25-50% 50-100%
hmrc/property_income_count_income_band_40_000_to_50_000 25-50% 50-100%
hmrc/property_income_income_band_15_000_to_20_000 within 10% 10-25%
hmrc/self_employment_income_count_income_band_300_000_to_500_000 within 10% 10-25%
hmrc/self_employment_income_count_income_band_500_000_to_1_000_000 within 10% 10-25%
hmrc/self_employment_income_income_band_50_000_to_70_000 within 10% 10-25%
hmrc/state_pension_count_income_band_500_000_to_1_000_000 within 10% 10-25%
hmrc/state_pension_income_band_70_000_to_100_000 within 10% 10-25%
obr/esa within 10% 10-25%
obr/statutory_maternity_pay within 10% 10-25%
ons/corporate_land_value within 10% 10-25%
ons/female_50_54 within 10% 10-25%
ons/female_55_59 within 10% 10-25%
ons/household_land_value/YORKSHIRE within 10% 10-25%
ons/scotland_age_10_19 within 10% 10-25%

3 more in the job log.

Flags are for review: builds of the same code move 2 to 12 national targets to a worse band (#598). Bands are of |estimate / target - 1|; no target's estimate or error is published.

Workflow run

Income distribution and single ages against the base build: pass

HBAI FYE 2025 (DWP), period 2024: equivalised income in £ a week, rates and Gini in per cent. A value outside HBAI's 95% interval is marked (outside).

Measure Base Head HBAI 95% interval
median_bhc 665.86 (outside) 678.78 (outside) 719.48 703.57 to 735.58
median_ahc 570.73 (outside) 584.51 (outside) 623.14 605.21 to 637.07
mean_bhc 784.77 (outside) 802.11 (outside) 854.98 836.37 to 870.35
mean_ahc 676.15 (outside) 693.36 (outside) 749.82 732.33 to 764.50
gini_bhc 33.22 33.20 32.74 31.89 to 33.98
gini_ahc 38.65 (outside) 38.46 (outside) 36.78 35.90 to 38.29
relative_low_income_bhc_all 18.10 (outside) 17.95 (outside) 15.91 14.45 to 17.64
relative_low_income_bhc_children 23.11 23.21 20.52 17.36 to 23.96
relative_low_income_bhc_working_age 17.63 (outside) 17.23 (outside) 14.28 12.91 to 16.02
relative_low_income_bhc_pensioners 13.46 (outside) 14.01 15.90 13.69 to 17.99
relative_low_income_ahc_all 23.17 (outside) 23.12 (outside) 19.64 17.99 to 21.27
relative_low_income_ahc_children 32.41 (outside) 32.56 (outside) 27.41 23.49 to 30.64
relative_low_income_ahc_working_age 23.11 (outside) 22.85 (outside) 18.58 17.01 to 20.34
relative_low_income_ahc_pensioners 11.58 (outside) 12.36 13.87 11.62 to 15.90
Single ages against the ONS projection Base Head
Mean error, ages 0 to 79 10.8% 11.0%
Largest error, ages 0 to 79 42.3% 44.1%
Largest error, ages 15 to 19 37.9% 37.7%

Flags

None.

These measures report and flag but do not fail yet: their same-code spread is unmeasured (#598).

Aggregate impact of the data change: pass

Base dataset enhanced_frs_2024_25.h5 (the base's build, sha256 e87347b4e7ef) against head dataset enhanced_frs_2024_25.h5 (this pull request's build, sha256 cfbecc5fb85e), both measured with policyengine-uk 2.122.2, fiscal years 2025-26 to 2031-32. Each year is a full microsimulation run on each side.

Checks: 0 broken by this change, 4 failing on both sides, 0 fixed. Moves flagged for review: 422 (thresholds in report_spec.yaml; a flag does not fail the job).

Workflow run and full report

Notes

  • The check sign:sda no longer applies on the head: 2025-26: not checked, from fewer than 10 records
  • The check sign:dfe_education_spending no longer applies on the head: 2025-26: not checked, from fewer than 10 records
  • In the years a figure from fewer than 10 records is suppressed (spending.dfe_education_spending, spending.disabled_students_allowance, spending.sda), every total containing it, and the decile incomes, are rebuilt from their other components, so no published total includes it. Those totals are marked †. A change is withheld where the two sides leave out different figures and can't be lined up.

Moves flagged for review

Measure Year Base Head Change
Capital gains tax 2031-32 £65.96bn £31.10bn -£34.86bn
Capital gains tax 2030-31 £63.50bn £30.01bn -£33.49bn
Capital gains tax 2029-30 £61.02bn £28.95bn -£32.08bn
Capital gains tax 2028-29 £58.77bn £27.97bn -£30.80bn
Capital gains tax 2027-28 £56.54bn £27.01bn -£29.53bn
Capital gains tax 2026-27 £54.32bn £26.05bn -£28.27bn
Capital gains tax 2025-26 £52.34bn £25.20bn -£27.14bn
Income tax 2029-30 £342.70bn £363.85bn +£21.15bn
Income tax 2025-26 £280.78bn £298.11bn +£17.33bn
Income tax 2026-27 £299.14bn £317.58bn +£18.44bn
Income tax 2031-32 £377.81bn £401.09bn +£23.28bn
Income tax 2028-29 £327.73bn £347.91bn +£20.19bn
Income tax 2030-31 £359.11bn £381.23bn +£22.11bn
Income tax 2027-28 £314.18bn £333.52bn +£19.35bn
National Insurance (employer) 2025-26 £144.59bn £151.16bn +£6.57bn
National Insurance (employer) 2029-30 £166.18bn £173.73bn +£7.55bn
National Insurance (employer) 2030-31 £171.38bn £179.16bn +£7.77bn
National Insurance (employer) 2026-27 £150.76bn £157.60bn +£6.84bn
National Insurance (employer) 2031-32 £178.14bn £186.21bn +£8.08bn
National Insurance (employer) 2027-28 £155.45bn £162.49bn +£7.04bn
National Insurance (employer) 2028-29 £159.78bn £167.01bn +£7.23bn
VAT 2027-28 £326.55bn £340.40bn +£13.85bn
VAT 2028-29 £334.41bn £348.59bn +£14.18bn
VAT 2031-32 £359.59bn £374.83bn +£15.25bn
VAT 2026-27 £318.97bn £332.49bn +£13.52bn
VAT 2029-30 £342.60bn £357.13bn +£14.53bn
VAT 2030-31 £351.03bn £365.91bn +£14.88bn
VAT 2025-26 £310.61bn £323.79bn +£13.17bn
Household market income 2030-31 £2,025.26bn £1,951.68bn -£73.58bn
Household market income 2031-32 £2,099.85bn £2,023.69bn -£76.16bn
Household market income 2028-29 £1,896.29bn £1,827.61bn -£68.67bn
Household market income 2029-30 £1,963.72bn £1,893.11bn -£70.61bn
Household market income 2027-28 £1,842.79bn £1,776.91bn -£65.88bn
Household market income 2025-26 £1,723.35bn £1,661.86bn -£61.49bn
Household market income 2026-27 £1,787.33bn £1,724.12bn -£63.21bn
State Pension 2031-32 £151.03bn £156.24bn +£5.21bn
State Pension 2028-29 £138.41bn £143.18bn +£4.77bn
State Pension 2029-30 £142.50bn £147.41bn +£4.91bn
State Pension 2030-31 £146.72bn £151.77bn +£5.06bn
State Pension 2027-28 £136.26bn £140.84bn +£4.58bn

382 more flags are in the report artifact.

Receipts by tax head

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Income tax +£17.33bn +£18.44bn +£19.35bn +£20.19bn +£21.15bn +£22.11bn +£23.28bn
National Insurance (employee and self-employed) +£2.03bn +£2.10bn +£2.16bn +£2.21bn +£2.28bn +£2.33bn +£2.42bn
National Insurance (employer) +£6.57bn +£6.84bn +£7.04bn +£7.23bn +£7.55bn +£7.77bn +£8.08bn
Capital gains tax -£27.14bn -£28.27bn -£29.53bn -£30.80bn -£32.08bn -£33.49bn -£34.86bn
Student loan repayments +£339.0m +£351.8m +£361.6m +£370.7m +£380.5m +£391.4m +£233.5m
VAT +£13.17bn +£13.52bn +£13.85bn +£14.18bn +£14.53bn +£14.88bn +£15.25bn
Fuel duties -£841 -£115 -£347 +£90 -£635 -£707 -£894
TV licence fee +£99.7m +£103.0m +£103.5m +£103.4m +£104.1m +£104.4m +£105.1m
Council tax +£1.10bn +£1.16bn +£1.24bn +£1.32bn +£1.40bn +£1.48bn +£1.49bn
High value council tax surcharge 0 0 0 +£55.7m +£57.0m +£58.4m +£59.9m
Northern Ireland domestic rates +£5.1m +£5.3m +£5.6m +£5.8m +£6.1m +£6.4m +£6.5m
Business rates +£1,199 +£798 -£2,200 -£1,424 +£722 -£356 -£875
Stamp duty land tax (own purchases, and corporate until the -£125.4m -£124.0m -£128.4m -£132.3m -£135.1m -£137.0m -£138.4m
Land transaction tax (Wales) +£0.3m +£0.3m +£0.3m +£0.3m +£0.3m +£0.4m +£0.4m
Land and buildings transaction tax (Scotland) +£1.6m +£1.6m +£1.8m +£1.9m +£2.0m +£2.2m +£2.3m

Spending by benefit and service

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
State Pension +£4.22bn +£4.44bn +£4.58bn +£4.77bn +£4.91bn +£5.06bn +£5.21bn
Pension Credit +£35.1m +£34.8m +£30.8m +£18.1m +£16.6m +£15.9m +£5.7m
Winter Fuel Payment +£51.5m +£51.4m +£51.0m +£49.5m +£48.8m +£49.1m +£49.1m
Pension Age Winter Heating Payment (Scotland) +£0.4m +£0.5m +£0.7m +£0.7m +£0.6m +£0.7m +£0.7m
Universal Credit +£1.29bn +£1.37bn +£1.41bn +£1.45bn +£1.40bn +£1.32bn +£1.30bn
Housing Benefit +£43.8m +£48.3m +£45.7m +£74.7m +£79.8m +£80.5m +£70.6m
Council Tax Reduction +£26.9m +£23.8m +£26.1m +£24.9m +£24.7m +£22.1m +£22.6m
Employment and Support Allowance (income-related) -£41.7m -£42.8m -£43.8m -£45.0m -£46.1m -£47.2m -£48.3m
Employment and Support Allowance (contribution-based) +£168.4m +£172.9m +£177.0m +£181.3m +£185.7m +£190.3m +£195.0m
Jobseeker's Allowance (income-based) -£1.4m 0 0 0 0 0 0
Jobseeker's Allowance (contribution-based) -£8.6m -£8.8m -£9.0m -£9.2m -£9.5m -£9.7m -£9.9m
Income Support -£2.8m 0 0 0 0 0 0
Personal Independence Payment -£44.1m -£46.0m -£47.2m -£48.4m -£49.6m -£50.8m -£52.0m
Disability Living Allowance +£4.0m +£4.2m +£4.3m +£4.4m +£4.5m +£4.6m +£4.7m
Attendance Allowance +£340.4m +£354.7m +£364.2m +£373.0m +£382.1m +£391.5m +£401.1m
Carer's Allowance +£13.1m +£13.7m +£14.1m +£14.4m +£14.7m +£15.1m +£15.5m
Carer Support Payment (Scotland) -£47.6m -£49.6m -£50.9m -£52.2m -£53.5m -£54.8m -£56.1m
Carer's Allowance Supplement (Scotland) 0 -£6.7m -£6.7m -£6.8m -£6.8m -£6.8m -£6.9m
Severe Disablement Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Industrial Injuries Disablement Benefit +£33.7m +£34.6m +£35.4m +£36.3m +£37.1m +£38.1m +£39.0m
Armed Forces Compensation Scheme +£56.8m +£58.3m +£59.7m +£61.2m +£62.7m +£64.2m +£65.8m
Child Benefit +£31.4m +£32.3m +£32.0m +£33.2m +£46.1m +£47.4m +£43.5m
Scottish Child Payment -£57.7m -£60.1m -£61.7m -£63.2m -£64.3m -£65.9m -£67.1m
Healthy Start vouchers +£0.3m +£0.3m +£0.3m +£0.3m +£0.3m +£0.3m +£0.3m
Statutory Maternity Pay +£426.8m +£438.3m +£448.7m +£459.5m +£470.8m +£482.4m +£494.1m
Statutory Sick Pay +£28.4m +£29.2m +£29.9m +£30.6m +£31.4m +£32.1m +£32.9m
Sure Start Maternity Grant -£0.3m -£0.3m -£0.3m -£0.3m -£0.3m -£0.3m -£0.3m
Bereavement Support Payment +£13.8m +£14.2m +£14.5m +£14.9m +£15.2m +£15.6m +£16.0m
Tax-Free Childcare +£7.2m +£5.6m +£5.3m +£5.4m +£6.6m +£4.7m +£1.7m
Extended childcare entitlement -£43.8m -£56.4m -£62.2m -£62.6m -£59.5m -£82.7m -£63.0m
Universal childcare entitlement -£1.7m +£1.1m +£1.3m +£4.0m +£1.8m +£0.3m +£2.9m
Targeted childcare entitlement +£21.5m +£22.3m +£22.9m +£23.4m +£24.0m +£23.4m +£23.8m
Parents' Learning Allowance +£0.2m +£0.2m +£0.2m +£0.2m +£0.2m +£0.2m +£0.2m
Adult Dependants' Grant +£0.8m +£0.8m -£1.5m -£1.5m -£1.5m -£1.5m -£1.4m
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
NHS spending +£4.17bn +£4.18bn +£4.20bn +£4.22bn +£4.23bn +£4.25bn +£4.27bn
State education spending suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Transport subsidy spending -£281 -£313 -£342 -£330 -£342 -£361 -£133

Caseloads

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
State Pension +375.3k +376.4k +374.3k +380.0k +381.7k +383.4k +385.0k
Pension Credit +12.1k +14.2k +14.0k +17.5k +17.2k +18.1k +16.1k
Winter Fuel Payment +175.0k +175.4k +174.3k +167.4k +164.4k +166.0k +165.7k
Pension Age Winter Heating Payment (Scotland) +4.1k +4.0k +4.7k +4.6k +4.7k +4.7k +4.7k
Universal Credit +82.5k +83.5k +85.9k +84.6k +81.8k +83.0k +81.6k
Housing Benefit +11.7k +11.9k +11.3k +14.6k +15.0k +15.0k +14.3k
Council Tax Reduction +55.6k +53.1k +54.7k +54.7k +53.3k +53.2k +54.7k
Employment and Support Allowance (income-related) -3.2k -3.2k -3.2k -3.2k -3.2k -3.2k -3.2k
Employment and Support Allowance (contribution-based) +22.7k +22.8k +22.8k +22.9k +23.0k +23.1k +23.2k
Jobseeker's Allowance (income-based) -284 0 0 0 0 0 0
Jobseeker's Allowance (contribution-based) -2.0k -2.0k -2.0k -2.0k -2.0k -2.0k -2.0k
Income Support -709 0 0 0 0 0 0
Personal Independence Payment -1.7k -1.7k -1.7k -1.7k -1.7k -1.7k -1.7k
Disability Living Allowance +5.0k +5.0k +5.0k +5.0k +5.0k +5.1k +5.1k
Attendance Allowance +69.2k +69.5k +69.8k +70.0k +70.3k +70.7k +71.0k
Carer's Allowance +3.0k +3.0k +3.1k +3.1k +3.1k +3.1k +3.1k
Carer Support Payment (Scotland) -11.0k -11.0k -11.1k -11.1k -11.2k -11.2k -11.3k
Carer's Allowance Supplement (Scotland) 0 -11.0k -11.1k -11.1k -11.2k -11.2k -11.3k
Severe Disablement Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Industrial Injuries Disablement Benefit +8.5k +8.5k +8.6k +8.6k +8.6k +8.7k +8.7k
Armed Forces Compensation Scheme +5.9k +5.9k +6.0k +6.0k +6.0k +6.0k +6.1k
Child Benefit +31.5k +31.2k +29.9k +30.1k +38.5k +38.7k +36.8k
Scottish Child Payment -40.8k -41.0k -41.1k -41.3k -41.1k -41.3k -41.3k
Healthy Start vouchers +2.6k +2.6k +2.6k +2.6k +2.7k +2.7k +2.7k
Statutory Maternity Pay +20.8k +20.8k +20.9k +21.0k +21.1k +21.2k +21.3k
Statutory Sick Pay +4.6k +4.6k +4.6k +4.6k +4.7k +4.7k +4.7k
Sure Start Maternity Grant -530 -532 -534 -536 -539 -541 -543
Bereavement Support Payment +48 +48 +48 +48 +49 +49 +49
Tax-Free Childcare +9.7k +11.0k +9.6k +9.3k +15.0k +11.1k +6.5k
Extended childcare entitlement -5.4k -6.3k -7.1k -7.4k -6.2k -15.2k -2.6k
Universal childcare entitlement -496 +322 +358 +1.1k +472 +87 +741
Targeted childcare entitlement +4.4k +4.5k +4.5k +4.5k +4.5k +4.3k +4.3k
Parents' Learning Allowance +109 +109 +110 +110 +111 +111 +112
Adult Dependants' Grant +233 +234 -430 -432 -434 -436 -404
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Government balance, each component counted once

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Government receipts, each component once +£13.37bn +£14.13bn +£14.45bn +£14.73bn +£15.24bn +£15.53bn +£15.92bn
Government spending +£10.74bn † +£11.07bn † +£11.27bn † +£11.56bn † +£11.71bn † +£11.78bn † +£11.96bn †
Government balance, each receipt once +£2.64bn † +£3.06bn † +£3.18bn † +£3.18bn † +£3.53bn † +£3.74bn † +£3.96bn †

Model totals

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
gov_tax +£13.37bn +£14.13bn +£14.45bn +£14.73bn +£15.24bn +£15.53bn +£15.92bn
household_tax -£6.37bn -£6.23bn -£6.44bn -£6.68bn -£6.84bn -£7.13bn -£7.40bn
pre_budget_change_household_tax -£6.71bn -£6.59bn -£6.80bn -£7.10bn -£7.27bn -£7.58bn -£7.70bn
gov_spending +£10.74bn † +£11.07bn † +£11.27bn † +£11.56bn † +£11.71bn † +£11.78bn † +£11.96bn †
household_benefits +£10.74bn † +£11.07bn † +£11.27bn † +£11.56bn † +£11.71bn † +£11.78bn † +£11.96bn †
gov_balance +£2.64bn † +£3.06bn † +£3.18bn † +£3.18bn † +£3.53bn † +£3.74bn † +£3.96bn †

Components the model counts twice

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
corporate_sdlt, counted again inside expected_sdlt +£116 +£113 -£207 -£129 +£73 -£41 -£68

Household income totals

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Household market income -£61.49bn -£63.21bn -£65.88bn -£68.67bn -£70.61bn -£73.58bn -£76.16bn
Household net income -£45.29bn † -£46.84bn † -£49.13bn † -£51.42bn † -£53.93bn † -£56.56bn † -£58.78bn †
Household net income (HBAI definition) suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Population

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
People +1,108.4k +1,112.6k +1,116.7k +1,121.2k +1,126.1k +1,131.2k +1,136.0k
Benefit units +650.3k +652.8k +655.2k +657.8k +660.7k +663.7k +666.6k
Households +677.0k +679.6k +682.1k +684.9k +687.9k +691.0k +693.9k

Poverty rates

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed

People in poverty

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Inequality

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Gini coefficient, equivalised HBAI income before housing costs suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Mean household net income in each side's own deciles

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 2: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 3: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 4: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 5: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 6: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 7: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 8: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 9: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 10: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed

Standard reform costings (change in gov_balance)

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp +£249.8m +£258.3m +£264.1m +£270.3m +£277.5m +£283.5m +£291.5m
Raise higher rate by 1pp +£296.4m +£316.0m +£331.8m +£346.7m +£367.4m +£385.7m +£400.4m
Raise personal allowance by ~800GBP/year -£101.8m -£104.9m -£106.2m -£106.9m -£102.4m -£102.8m -£41.6m
Raise child benefit by 25GBP/week per additional child +£19.6m +£16.1m +£15.1m +£14.6m +£13.7m +£13.6m +£12.5m
Reduce Universal Credit taper rate to 20% -£227.2m -£237.2m -£233.8m -£229.4m -£221.6m -£229.0m -£238.7m
Raise Class 1 main employee NICs rate to 10% +£374.3m +£378.8m +£384.8m +£396.1m +£403.0m +£408.4m +£420.2m
Raise VAT standard rate by 2pp +£1.30bn +£1.33bn +£1.37bn +£1.40bn +£1.43bn +£1.47bn +£1.50bn
Raise additional rate by 3pp +£220.2m +£238.1m +£252.9m +£267.1m +£282.3m +£299.8m +£325.4m
Raise the Universal Credit standard allowance by 10% -£47.6m -£53.4m -£55.6m -£56.0m -£54.0m -£55.7m -£56.0m
Raise the State Pension by 10% -£354.4m -£368.1m -£382.9m -£393.7m -£403.7m -£417.2m -£427.4m

Standard reforms: change in each reform's target

Measure 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp: change in income_tax +£251.1m +£260.0m +£266.0m +£272.3m +£279.3m +£285.9m +£294.6m
Raise higher rate by 1pp: change in income_tax +£296.7m +£316.3m +£332.2m +£347.2m +£367.7m +£386.1m +£401.0m
Raise personal allowance by ~800GBP/year: change in income_tax -£133.8m -£138.1m -£140.1m -£143.1m -£140.0m -£141.8m -£57.7m
Raise child benefit by 25GBP/week per additional child: change in child_benefit -£5.1m -£4.6m -£4.0m -£3.7m -£3.6m -£3.3m -£3.6m
Reduce Universal Credit taper rate to 20%: change in universal_credit +£226.3m +£236.6m +£233.0m +£228.4m +£221.5m +£228.2m +£237.9m
Raise Class 1 main employee NICs rate to 10%: change in national_insurance +£374.8m +£384.0m +£391.5m +£397.3m +£404.0m +£410.2m +£422.6m
Raise VAT standard rate by 2pp: change in vat +£1.30bn +£1.33bn +£1.37bn +£1.40bn +£1.43bn +£1.47bn +£1.50bn
Raise additional rate by 3pp: change in income_tax +£220.2m +£238.1m +£252.9m +£267.1m +£282.3m +£299.8m +£325.4m
Raise the Universal Credit standard allowance by 10%: change in universal_credit +£47.4m +£53.3m +£55.1m +£55.4m +£53.2m +£55.1m +£55.7m
Raise the State Pension by 10%: change in state_pension +£422.5m +£443.9m +£457.8m +£477.0m +£491.1m +£505.6m +£520.5m

Household net income by decile

The datasets hold different households, so households are not matched; compare the mean income in each side's own deciles.

Checks failing on both base and head (4)
  • Each model total's components are exactly the partition's heads and declared double counts (closure): gov_spending: the partition puts 'healthy_start_vouchers' in this total, but the model does not add it; gov_spending: the partition puts 'scottish_child_payment' in this total, but the model does not add it; gov_spending: the partition puts 'statutory_paternity_pay' in this total, but the model does not add it
  • VAT is never negative (sign:vat): 2025-26: 67 units below zero, a weighted £-80,590,785 in total; 2026-27: 67 units below zero, a weighted £-82,757,668 in total; 2027-28: 67 units below zero, a weighted £-84,725,146 in total
  • The partition's heads and declared double counts add up to gov_spending (identity:gov_spending): 2025-26: 358 households differ, by a weighted £538,271,423 in total (households holding a figure from fewer than 10 records aren't checked this year); 2026-27: 360 households differ, by a weighted £559,374,820 in total (households holding a figure from fewer than 10 records aren't checked this year); 2027-28: 360 households differ, by a weighted £573,007,148 in total (households holding a figure from fewer than 10 records aren't checked this year)
  • The partition's heads and declared double counts add up to household_benefits (identity:household_benefits): 2025-26: 1,819 households differ, by a weighted £92,506,953 in total (households holding a figure from fewer than 10 records aren't checked this year); 2026-27: 1,791 households differ, by a weighted £94,454,966 in total (households holding a figure from fewer than 10 records aren't checked this year); 2027-28: 1,739 households differ, by a weighted £94,821,550 in total (households holding a figure from fewer than 10 records aren't checked this year)
Counted-once check

Counted-once check not run: not requested.

Provenance
Side Commit Runtime Environment hash Partition hash Time
base policyengi uk 2.122.2 (files 0cb87d75a516), core 3.32.13, py 3.13.16 x86_64 038f9f2c132e e8ea8a019873 201.87s
head policyengi uk 2.122.2 (files 0cb87d75a516), core 3.32.13, py 3.13.16 x86_64 038f9f2c132e e8ea8a019873 169.43s

Base dataset: enhanced_frs_2024_25.h5, sha256 e87347b4e7ef9b5bc301d03be297c55b76b54318c0facada5741b3ed20526002, the base's build.

Head dataset: enhanced_frs_2024_25.h5, sha256 cfbecc5fb85e9909326462ecb6296f2f93d2d6923de092427d2c1eb71b3ff02a, this pull request's build.

Receipts by tax head: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Income tax £298.11bn £317.58bn £333.52bn £347.91bn £363.85bn £381.23bn £401.09bn
National Insurance (employee and self-employed) £51.16bn £53.36bn £55.11bn £56.70bn £58.60bn £60.41bn £62.74bn
National Insurance (employer) £151.16bn £157.60bn £162.49bn £167.01bn £173.73bn £179.16bn £186.21bn
Employer NI change borne by capital £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Employer NI change borne by consumers £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Capital gains tax £25.20bn £26.05bn £27.01bn £27.97bn £28.95bn £30.01bn £31.10bn
Student loan repayments £7.71bn £8.00bn £8.23bn £8.43bn £8.66bn £8.90bn £8.29bn
VAT £323.79bn £332.49bn £340.40bn £348.59bn £357.13bn £365.91bn £374.83bn
Change in VAT from its baseline £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
VAT on private school fees £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Fuel duties £24.04bn £24.14bn £26.10bn £26.16bn £25.89bn £25.24bn £25.82bn
Alcohol duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Tobacco duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Vehicle excise duties £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
TV licence fee £4.50bn £4.66bn £4.68bn £4.70bn £4.72bn £4.74bn £4.77bn
Council tax £48.71bn £51.54bn £54.80bn £58.34bn £61.86bn £65.54bn £65.83bn
High value council tax surcharge £0.00bn £0.00bn £0.00bn £0.69bn £0.71bn £0.72bn £0.74bn
Northern Ireland domestic rates £1.12bn £1.18bn £1.23bn £1.29bn £1.35bn £1.42bn £1.42bn
Business rates £31.73bn £31.73bn £31.73bn £31.73bn £31.73bn £31.73bn £31.73bn
Stamp duty land tax (own purchases, and corporate until the £19.52bn £20.40bn £21.36bn £22.33bn £23.33bn £24.44bn £25.63bn
Land transaction tax (Wales) £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn
Land and buildings transaction tax (Scotland) £0.06bn £0.06bn £0.06bn £0.06bn £0.07bn £0.07bn £0.07bn
Unspecified tax change borne by capital £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Unspecified tax change borne by consumers £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Wealth tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Wealth tax excluding the main residence £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Land value tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Carbon tax £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Spending by benefit and service: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
State Pension £133.48bn £138.55bn £140.84bn £143.18bn £147.41bn £151.77bn £156.24bn
Pension Credit £6.55bn £7.15bn £7.04bn £7.09bn £7.19bn £7.30bn £7.31bn
Winter Fuel Payment £1.69bn £1.66bn £1.62bn £1.59bn £1.58bn £1.58bn £1.57bn
Pension Age Winter Heating Payment (Scotland) £0.09bn £0.09bn £0.09bn £0.10bn £0.10bn £0.10bn £0.10bn
Universal Credit £78.86bn £83.08bn £84.90bn £86.45bn £87.37bn £84.58bn £85.08bn
Housing Benefit £8.34bn £8.67bn £8.87bn £9.07bn £9.35bn £9.59bn £9.55bn
Council Tax Reduction £2.17bn £2.23bn £2.30bn £2.36bn £2.42bn £2.50bn £2.46bn
Employment and Support Allowance (income-related) £3.20bn £3.28bn £3.36bn £3.43bn £3.52bn £3.60bn £3.69bn
Employment and Support Allowance (contribution-based) £4.74bn £4.87bn £4.98bn £5.10bn £5.23bn £5.36bn £5.49bn
Jobseeker's Allowance (income-based) £0.05bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Jobseeker's Allowance (contribution-based) £0.29bn £0.29bn £0.30bn £0.31bn £0.32bn £0.32bn £0.33bn
Income Support £0.17bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Working Tax Credit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Child Tax Credit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Incapacity Benefit £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Personal Independence Payment £30.43bn £31.71bn £32.56bn £33.34bn £34.16bn £35.00bn £35.85bn
Disability Living Allowance £8.12bn £8.46bn £8.68bn £8.89bn £9.11bn £9.33bn £9.56bn
Attendance Allowance £7.79bn £8.11bn £8.33bn £8.53bn £8.74bn £8.95bn £9.17bn
Carer's Allowance £3.97bn £4.14bn £4.25bn £4.35bn £4.46bn £4.57bn £4.68bn
Carer Support Payment (Scotland) £0.31bn £0.32bn £0.33bn £0.34bn £0.34bn £0.35bn £0.36bn
Carer's Allowance Supplement (Scotland) £0.00bn £0.04bn £0.04bn £0.04bn £0.04bn £0.04bn £0.04bn
Severe Disablement Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Industrial Injuries Disablement Benefit £0.62bn £0.64bn £0.65bn £0.67bn £0.69bn £0.70bn £0.72bn
Armed Forces Compensation Scheme £0.59bn £0.61bn £0.62bn £0.64bn £0.65bn £0.67bn £0.69bn
Child Benefit £16.35bn £16.99bn £17.41bn £17.81bn £18.23bn £18.67bn £19.07bn
Scottish Child Payment £0.48bn £0.50bn £0.51bn £0.53bn £0.53bn £0.55bn £0.56bn
Two Child Limit Payment (Scotland, counterfactual) £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Healthy Start vouchers £0.06bn £0.06bn £0.06bn £0.06bn £0.06bn £0.06bn £0.06bn
Maternity Allowance £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Maternity Pay £3.84bn £3.94bn £4.04bn £4.13bn £4.24bn £4.34bn £4.45bn
Statutory Paternity Pay £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Statutory Sick Pay £0.97bn £1.00bn £1.02bn £1.04bn £1.07bn £1.10bn £1.12bn
Sure Start Maternity Grant £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn £0.01bn
Bereavement Support Payment £1.12bn £1.15bn £1.18bn £1.21bn £1.24bn £1.27bn £1.30bn
Tax-Free Childcare £0.45bn £0.44bn £0.44bn £0.45bn £0.46bn £0.47bn £0.47bn
Extended childcare entitlement £3.76bn £4.17bn £4.29bn £4.41bn £4.52bn £4.69bn £4.82bn
Universal childcare entitlement £1.50bn £1.59bn £1.64bn £1.68bn £1.72bn £1.74bn £1.79bn
Targeted childcare entitlement £0.37bn £0.38bn £0.39bn £0.40bn £0.41bn £0.41bn £0.41bn
Care to Learn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Childcare Grant £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Parents' Learning Allowance £0.19bn £0.19bn £0.19bn £0.19bn £0.19bn £0.20bn £0.20bn
Adult Dependants' Grant £0.06bn £0.06bn £0.05bn £0.05bn £0.05bn £0.05bn £0.05bn
Travel Grant £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
16 to 19 Bursary Fund £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
NHS spending £208.42bn £209.21bn £209.98bn £210.82bn £211.75bn £212.70bn £213.62bn
State education spending suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Transport subsidy spending £25.15bn £25.25bn £25.34bn £25.44bn £25.55bn £25.67bn £30.94bn
Cost-of-living support payment £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Energy Bills Rebate £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Energy Price Guarantee subsidy £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Basic income £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Disability basic income £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Other public spending budget change £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Caseloads: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
State Pension 11,749k 11,643k 11,397k 11,307k 11,357k 11,408k 11,457k
Pension Credit 1,369k 1,392k 1,346k 1,329k 1,329k 1,327k 1,308k
Winter Fuel Payment 7,150k 7,028k 6,805k 6,671k 6,648k 6,617k 6,606k
Pension Age Winter Heating Payment (Scotland) 711k 703k 691k 685k 688k 691k 694k
Universal Credit 6,373k 6,403k 6,428k 6,430k 6,406k 6,395k 6,372k
Housing Benefit 1,212k 1,209k 1,203k 1,199k 1,205k 1,205k 1,202k
Council Tax Reduction 3,611k 3,639k 3,681k 3,704k 3,726k 3,747k 3,722k
Employment and Support Allowance (income-related) 310k 311k 312k 313k 315k 316k 317k
Employment and Support Allowance (contribution-based) 667k 670k 672k 675k 678k 681k 684k
Jobseeker's Allowance (income-based) 9k 0k 0k 0k 0k 0k 0k
Jobseeker's Allowance (contribution-based) 60k 60k 60k 60k 61k 61k 61k
Income Support 26k 0k 0k 0k 0k 0k 0k
Working Tax Credit 0k 0k 0k 0k 0k 0k 0k
Child Tax Credit 0k 0k 0k 0k 0k 0k 0k
Incapacity Benefit 0k 0k 0k 0k 0k 0k 0k
Personal Independence Payment 4,133k 4,149k 4,164k 4,181k 4,199k 4,218k 4,236k
Disability Living Allowance 1,331k 1,336k 1,341k 1,347k 1,353k 1,359k 1,364k
Attendance Allowance 1,538k 1,544k 1,550k 1,556k 1,563k 1,570k 1,577k
Carer's Allowance 917k 921k 924k 928k 932k 936k 940k
Carer Support Payment (Scotland) 71k 71k 71k 71k 72k 72k 72k
Carer's Allowance Supplement (Scotland) 0k 71k 71k 71k 72k 72k 72k
Severe Disablement Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Industrial Injuries Disablement Benefit 158k 159k 159k 160k 161k 161k 162k
Armed Forces Compensation Scheme 67k 67k 67k 67k 68k 68k 68k
Child Benefit 7,956k 7,970k 7,983k 8,010k 8,036k 8,068k 8,081k
Scottish Child Payment 339k 341k 342k 343k 342k 343k 342k
Two Child Limit Payment (Scotland, counterfactual) 0k 0k 0k 0k 0k 0k 0k
Healthy Start vouchers 231k 231k 232k 233k 234k 235k 236k
Maternity Allowance 0k 0k 0k 0k 0k 0k 0k
Statutory Maternity Pay 304k 305k 306k 307k 309k 310k 311k
Statutory Paternity Pay 0k 0k 0k 0k 0k 0k 0k
Statutory Sick Pay 152k 152k 153k 153k 154k 155k 155k
Sure Start Maternity Grant 22k 22k 23k 23k 23k 23k 23k
Bereavement Support Payment 182k 183k 184k 184k 185k 186k 187k
Tax-Free Childcare 966k 951k 952k 958k 934k 945k 934k
Extended childcare entitlement 793k 783k 790k 794k 795k 805k 823k
Universal childcare entitlement 438k 448k 451k 452k 454k 452k 455k
Targeted childcare entitlement 76k 77k 77k 77k 78k 76k 75k
Care to Learn 0k 0k 0k 0k 0k 0k 0k
Childcare Grant 0k 0k 0k 0k 0k 0k 0k
Parents' Learning Allowance 95k 95k 95k 96k 96k 96k 97k
Adult Dependants' Grant 17k 17k 14k 15k 15k 15k 14k
Travel Grant 0k 0k 0k 0k 0k 0k 0k
Disabled Students' Allowance suppressed suppressed suppressed suppressed suppressed suppressed suppressed
16 to 19 Bursary Fund 0k 0k 0k 0k 0k 0k 0k
Cost-of-living support payment 0k 0k 0k 0k 0k 0k 0k
Energy Bills Rebate 0k 0k 0k 0k 0k 0k 0k
Energy Price Guarantee subsidy 0k 0k 0k 0k 0k 0k 0k
Basic income 0k 0k 0k 0k 0k 0k 0k
Disability basic income 0k 0k 0k 0k 0k 0k 0k
Government balance, each component counted once: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Government receipts, each component once £986.81bn £1,028.80bn £1,066.73bn £1,101.93bn £1,140.59bn £1,179.55bn £1,220.30bn
Government spending £554.19bn † £568.87bn † £576.34bn † £583.74bn † £592.72bn † £598.26bn † £611.79bn †
Government balance, each receipt once £432.62bn † £459.93bn † £490.39bn † £518.19bn † £547.86bn † £581.29bn † £608.51bn †
Benefits in household_benefits but not in gov_spending £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn £0.00bn
Model totals: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
gov_tax £989.94bn £1,031.93bn £1,069.86bn £1,105.06bn £1,143.72bn £1,182.68bn £1,223.43bn
household_tax £514.99bn £541.84bn £566.98bn £589.46bn £612.86bn £637.61bn £662.38bn
pre_budget_change_household_tax £507.28bn £533.83bn £558.76bn £580.33bn £603.50bn £627.98bn £653.35bn
gov_spending £554.19bn † £568.87bn † £576.34bn † £583.74bn † £592.72bn † £598.26bn † £611.79bn †
household_benefits £554.19bn † £568.87bn † £576.34bn † £583.74bn † £592.72bn † £598.26bn † £611.79bn †
gov_balance £435.75bn † £463.06bn † £493.52bn † £521.32bn † £550.99bn † £584.42bn † £611.64bn †
Components the model counts twice: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
corporate_sdlt, counted again inside expected_sdlt £3.13bn £3.13bn £3.13bn £3.13bn £3.13bn £3.13bn £3.13bn
Household income totals: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Household market income £1,661.86bn £1,724.12bn £1,776.91bn £1,827.61bn £1,893.11bn £1,951.68bn £2,023.69bn
Household net income £1,660.61bn † £1,709.17bn † £1,743.13bn † £1,777.67bn † £1,813.37bn † £1,851.37bn † £1,909.62bn †
Household net income (HBAI definition) suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Population: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
People 70,729k 70,998k 71,261k 71,546k 71,860k 72,184k 72,494k
Benefit units 38,918k 39,065k 39,210k 39,367k 39,540k 39,718k 39,889k
Households 32,056k 32,178k 32,297k 32,426k 32,569k 32,715k 32,856k
Poverty rates: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
People in poverty: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Absolute poverty, before housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Absolute poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, before housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: everyone suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: children suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: working-age adults suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Relative poverty, after housing costs: pensioners suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Inequality: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Gini coefficient, equivalised HBAI income before housing costs suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Mean household net income in each side's own deciles: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Decile 1: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 2: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 3: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 4: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 5: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 6: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 7: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 8: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 9: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Decile 10: mean household_net_income per household suppressed suppressed suppressed suppressed suppressed suppressed suppressed
Standard reform costings (change in gov_balance): head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp £6.04bn £6.31bn £6.52bn £6.71bn £6.91bn £7.14bn £7.39bn
Raise higher rate by 1pp £3.76bn £4.06bn £4.30bn £4.52bn £4.78bn £5.07bn £5.28bn
Raise personal allowance by ~800GBP/year £-3.59bn £-3.70bn £-3.80bn £-3.86bn £-3.91bn £-3.98bn £-1.67bn
Raise child benefit by 25GBP/week per additional child £-2.05bn £-1.82bn £-1.69bn £-1.59bn £-1.48bn £-1.37bn £-1.26bn
Reduce Universal Credit taper rate to 20% £-16.79bn £-17.43bn £-17.67bn £-17.87bn £-17.92bn £-18.13bn £-18.16bn
Raise Class 1 main employee NICs rate to 10% £10.62bn £11.04bn £11.34bn £11.60bn £11.88bn £12.19bn £12.63bn
Raise VAT standard rate by 2pp £31.93bn £32.79bn £33.57bn £34.37bn £35.22bn £36.08bn £36.96bn
Raise additional rate by 3pp £3.28bn £3.53bn £3.74bn £3.95bn £4.19bn £4.44bn £4.79bn
Raise the Universal Credit standard allowance by 10% £-2.97bn £-3.12bn £-3.17bn £-3.22bn £-3.24bn £-3.28bn £-3.33bn
Raise the State Pension by 10% £-9.77bn £-10.02bn £-10.10bn £-10.20bn £-10.43bn £-10.69bn £-10.97bn
Standard reforms: change in each reform's target: head levels
Measure (head) 2025-26 2026-27 2027-28 2028-29 2029-30 2030-31 2031-32
Raise basic rate by 1pp: change in income_tax £6.15bn £6.43bn £6.64bn £6.84bn £7.05bn £7.27bn £7.53bn
Raise higher rate by 1pp: change in income_tax £3.77bn £4.06bn £4.30bn £4.53bn £4.79bn £5.08bn £5.30bn
Raise personal allowance by ~800GBP/year: change in income_tax £-3.69bn £-3.81bn £-3.91bn £-3.98bn £-4.03bn £-4.11bn £-1.73bn
Raise child benefit by 25GBP/week per additional child: change in child_benefit £2.50bn £2.29bn £2.16bn £2.05bn £1.94bn £1.82bn £1.69bn
Reduce Universal Credit taper rate to 20%: change in universal_credit £16.83bn £17.47bn £17.71bn £17.91bn £17.96bn £18.17bn £18.20bn
Raise Class 1 main employee NICs rate to 10%: change in national_insurance £10.81bn £11.23bn £11.54bn £11.82bn £12.11bn £12.42bn £12.87bn
Raise VAT standard rate by 2pp: change in vat £31.93bn £32.79bn £33.57bn £34.37bn £35.22bn £36.08bn £36.96bn
Raise additional rate by 3pp: change in income_tax £3.28bn £3.53bn £3.74bn £3.95bn £4.19bn £4.44bn £4.79bn
Raise the Universal Credit standard allowance by 10%: change in universal_credit £2.97bn £3.12bn £3.17bn £3.22bn £3.25bn £3.29bn £3.33bn
Raise the State Pension by 10%: change in state_pension £13.35bn £13.86bn £14.08bn £14.32bn £14.74bn £15.18bn £15.62bn

@MaxGhenis

Copy link
Copy Markdown
Contributor Author

Closing: this was a diagnostic build for the batch-3 fit attribution, never meant to merge. Max ruled d1678 = A, and the release, #608, merged at cbf50eaa on 2026-10-19. This PR's measurements are summarised in #608's body. Its CI artifacts are saved in the UK hub's records (jobs/release-batch3/ci-attrib/), and the PR's commits stay reachable from this PR. The branch is deleted.

🤖 Generated with Claude Code

@MaxGhenis MaxGhenis closed this Oct 19, 2026
@MaxGhenis
MaxGhenis deleted the b3/option-c-gate branch October 19, 2026 20:19
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