Skip to content

Refresh Tax-Free Childcare calibration targets#363

Merged
MaxGhenis merged 1 commit intomainfrom
update-tfc-calibration-targets
Apr 18, 2026
Merged

Refresh Tax-Free Childcare calibration targets#363
MaxGhenis merged 1 commit intomainfrom
update-tfc-calibration-targets

Conversation

@MaxGhenis
Copy link
Copy Markdown
Contributor

Summary

Fixes item 5 of #1621 — TFC understatement (-£0.5 bn vs OBR).

Refreshes the TFC calibration targets and the default take-up rate using HMRC's June 2025 TFC statistics release covering 2024-25 outturn (£632 m government top-up, 985 k children reached annual-unique). The prior targets (£600 m / 660 k) were anchored to the September 2024 release covering 2023-24 and have since been overtaken by TFC account growth plus the Sept 2025 rollout of 30 free hours for under-5s.

Changes

  • datasets/childcare/takeup_rate.py: spending target £0.6 bn -> £0.63 bn; caseload target 660 k -> 985 k. Commentary link updated to June 2025 release.
  • parameters/take_up/tax_free_childcare.yaml: adds a 2024-04-06 rate of 0.88 (up from 0.586, which remains in effect for pre-2024 years). The current FRS-pipeline rate was calibrated against the old targets; 0.88 is a linear extrapolation to close most of the £0.4 bn -> £0.63 bn gap.

Followup

A full recalibration run via datasets/childcare/takeup_rate.py against the refreshed targets should be filed as a separate task — the manual bump here is meant to close the reported understatement in the interim, not to replace the joint optimisation that calibrates TFC against the other three childcare programmes.

Test plan

  • make format passes
  • CI data build verifies TFC spending lands in the £0.6-0.7 bn range
  • Follow-up: run full recalibration with new targets

Generated with Claude Code

Updates the TFC calibration targets in
`datasets/childcare/takeup_rate.py` to HMRC's June 2025 release
(2024-25 outturn: £632 m spending, 985 k children reached). The prior
targets (£600 m / 660 k) were anchored to the September 2024 release
covering 2023-24 and have since been overtaken by TFC account growth
and the September 2025 rollout of 30 free hours for under-5s.

Bumps the default TFC take-up rate from 0.586 (calibrated against the
older targets under the prior FRS-based pipeline) to 0.88 on
2024-04-06. A full recalibration via `takeup_rate.py` against the
refreshed targets is still required; this manual bump closes most of
the reported £0.5 bn gap in the interim.

Refs: #1621 (item 5 — TFC understatement)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@MaxGhenis MaxGhenis force-pushed the update-tfc-calibration-targets branch from 4e3805d to 7e6d6be Compare April 18, 2026 11:37
@MaxGhenis MaxGhenis merged commit e132907 into main Apr 18, 2026
3 checks passed
@MaxGhenis MaxGhenis deleted the update-tfc-calibration-targets branch April 18, 2026 12:08
MaxGhenis added a commit that referenced this pull request Apr 19, 2026
The weighted-UK-population drift that motivated #310 has already
dropped from ~6.5% to ~1.6% on current main as a side-effect of the
data-pipeline improvements landed yesterday (stage-2 QRF #362, TFC
target refresh #363, reported-anchor takeup #359).

Tightens `test_population` tolerance from 7 % to 3 % to lock in that
gain — any future calibration change that regresses back toward the
pre-April-2026 overshoot now trips CI instead of silently drifting.
Adds a new `test_population_fidelity.py` with four regression tests
extracted from the #310 draft:

- weighted-total ONS match (3 % tolerance)
- household-count sanity range (25-33 M)
- non-inflation guard (< 72 M)
- country-populations-sum-to-UK consistency

Does not include #310's loss-function change or Scotland target
removal; those are independent proposals and should be evaluated on
their own merits once the practical overshoot is resolved.

Co-authored-by: Vahid Ahmadi <va.vahidahmadi@gmail.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Apr 19, 2026
* Tighten population tolerance and add fidelity tests

The weighted-UK-population drift that motivated #310 has already
dropped from ~6.5% to ~1.6% on current main as a side-effect of the
data-pipeline improvements landed yesterday (stage-2 QRF #362, TFC
target refresh #363, reported-anchor takeup #359).

Tightens `test_population` tolerance from 7 % to 3 % to lock in that
gain — any future calibration change that regresses back toward the
pre-April-2026 overshoot now trips CI instead of silently drifting.
Adds a new `test_population_fidelity.py` with four regression tests
extracted from the #310 draft:

- weighted-total ONS match (3 % tolerance)
- household-count sanity range (25-33 M)
- non-inflation guard (< 72 M)
- country-populations-sum-to-UK consistency

Does not include #310's loss-function change or Scotland target
removal; those are independent proposals and should be evaluated on
their own merits once the practical overshoot is resolved.

Co-authored-by: Vahid Ahmadi <va.vahidahmadi@gmail.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* Loosen population tolerance 3% -> 4% for stochastic calibration variance

First CI run on this branch produced 71.8M (3.31% over target) where
yesterday's main build produced 70.97M (1.58%). Stochastic dropout
in the calibration optimiser (`dropout_weights(weights, 0.05)`) gives
~1-2 percentage point build-to-build variance on the population total.

4% keeps the regression gate well below the pre-April-2026 overshoot
(~6.5%) while not flaking on normal stochastic variance.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Vahid Ahmadi <va.vahidahmadi@gmail.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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