Refresh Tax-Free Childcare calibration targets#363
Merged
Conversation
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>
4e3805d to
7e6d6be
Compare
5 tasks
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>
2 tasks
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.pyagainst 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 formatpassesGenerated with Claude Code