Skip to content

Qualify targeted childcare through Pension Credit only on receipt of a guarantee credit - #1987

Draft
MaxGhenis wants to merge 2 commits into
mainfrom
targeted-childcare-gc-entitlement
Draft

MaxGhenis wants to merge 2 commits into
mainfrom
targeted-childcare-gc-entitlement

Conversation

@MaxGhenis

Copy link
Copy Markdown
Collaborator

Fixes #1956

Summary

The targeted (2-year-old) childcare entitlement in England listed the raw guarantee_credit amount as a qualifying benefit. PolicyEngine computes guarantee_credit for every benefit unit as max(0, minimum guarantee − Pension Credit income), so low-income working-age families, and pensioners who do not claim Pension Credit, qualified through it. This PR replaces that entry in gov.dfe.targeted_childcare_entitlement.qualifying_benefits with in_receipt_of_guarantee_credit: the benefit unit is eligible for Pension Credit (every adult at State Pension age), claims it (would_claim_pc), and its guarantee credit is positive.

in_receipt_of_guarantee_credit.py is byte-identical to the file #1927 and #1909 add (git blob 877ab36), and its YAML test is byte-identical to #1927's (blob fe4b686). Whichever of the three merges first adds them; the others then merge without a conflict on those files.

The law

  • The Local Authority (Duty to Secure Early Years Provision Free of Charge) Regulations 2014 (SI 2014/2147) reg 1(2), "eligible child", para (a): a young child "whose parent is entitled to any one or more of the following— ... (ii) the guaranteed element of state pension credit under the State Pension Credit Act 2002; (iii) income-based jobseekers' allowance ...; (iv) income-related employment and support allowance ...; (v) income support ...". Text in force from 1 January 2026 (SI 2025/1261 omitted the tax-credit limbs); para (a) in this list form dates from 1 April 2018 (SI 2018/146).
  • State Pension Credit Act 2002 s.1(2): "A claimant is entitled to state pension credit if— (a) he is in Great Britain; (b) he has attained the qualifying age; and (c) he satisfies— (i) the condition in section 2(1) (guarantee credit); ...". s.1(3)(a) entitles such a claimant to a guarantee credit.
  • Social Security Administration Act 1992 s.1(1) and s.1(4)(ab): no entitlement to state pension credit without a claim. SPCA 2002 s.17(1) construes "entitled" through that section.

A working-age parent can never be entitled to the guaranteed element, and a pensioner who has not claimed is not entitled to it.

Before 1 April 2018 (the parameter starts on 2014-01-01), the route ran through Education Act 1996 s.512ZB(4)(aa) and the Education (Free School Lunches) (State Pension Credit) Order 2005 (SI 2005/885) art 2, which required the parent to be "receiving guarantee credit". That is also a receipt test.

The other three entries are already receipt-based: income_support needs a reported Income Support award (income_support_eligible checks income_support_reported), and jsa_income and esa_income pay reported awards screened by a capital test. Income Support and income-based JSA stop from April 2026 (gov.dwp.income_support.active, gov.dwp.JSA.income.active).

Household example

A lone parent aged 30 in England with a 2-year-old, no income, not claiming Universal Credit, in 2026:

main this PR
Computed guarantee_credit (£238.00 × 52 + £69.98 × 52) £16,014.96 £16,014.96
pension_credit £0 £0
targeted_childcare_entitlement_eligible true false
targeted_childcare_entitlement (child) £5,002.07 £0
household_net_income £6,228.62 £1,226.55

The same parent on Universal Credit with no earnings still qualifies through the Universal Credit criterion (YAML Case 11).

Enhanced FRS impact

Real runs of origin/main (da947ee) and this branch on the Enhanced FRS 2024-25 (enhanced_frs_2024_25.h5), one microsimulation per package covering every year, totals summed in float64. Weighted aggregates only.

Year Targeted childcare, main This PR Change Children losing the entitlement (weighted, nearest 10)
2025 £475.5m £434.6m −£40.9m 8,460
2026 £493.5m £451.0m −£42.5m 8,490
2027 £502.4m £463.1m −£39.2m 7,670
2028 £513.4m £474.3m −£39.1m 7,500
2029 £526.0m £485.9m −£40.1m 7,530
2030 £523.3m £482.2m −£41.1m 7,560
  • Every benefit unit that loses the entitlement has all adults below State Pension age and no Pension Credit paid. No benefit unit gains it.
  • On main, the computed guarantee credit was the only open route for exactly these benefit units: the change equals main's "computed guarantee credit, no other route" total to the penny in every year.
  • No benefit unit with a 2-year-old receives a guarantee credit in the Enhanced FRS (0 in every year), so the receipt route is empty on this dataset.
  • household_net_income, household_benefits and gov_spending fall by the same amounts, and gov_balance rises by them (to within £36, the float32 rounding of the household arrays). hbai_household_net_income, and BHC and AHC poverty for children and for everyone, do not change.
  • Every other benefit-unit output the runs saved (Pension Credit, guarantee credit, IS, JSA, ESA, UC and the UC and tax-credit criteria) is identical between main and the branch.

Effect on #1952: that PR counts Carer's Allowance as Pension Credit income. It moved targeted childcare by −£1.6m to −£1.8m because it lowered working-age carers' computed guarantee credit. #1952 can only lower a guarantee credit, and no benefit unit with a 2-year-old receives one in the Enhanced FRS, so after this PR #1952 cannot change targeted childcare on this dataset.

Invariants

Stated for every input, and tested with Hypothesis in test_targeted_childcare_guarantee_credit_properties.py. Generated populations mix working-age, pension-age and mixed-age families with a 2-year-old, across England, Wales, Scotland and Northern Ireland, in 2025, 2026 and 2029.

  1. Qualifying age. No benefit unit whose adults are all below the qualifying age is eligible through the Guarantee Credit route, however large its computed guarantee credit.
  2. Route identity. targeted_childcare_entitlement_eligible equals: claims targeted childcare, lives in England, is not eligible for the extended entitlement, and has at least one open route (IS, income-based JSA, income-related ESA, receipt of a guarantee credit, or a qualifying_criteria criterion).
  3. Receipt. The Guarantee Credit route is open exactly when pension_credit and guarantee_credit are both positive, so it implies would_claim_pc and that every adult is over State Pension age.
  4. Differential against main's formula. The fix never adds eligibility. It removes it exactly where an unpaid computed guarantee credit was the only open route (intended). Nothing changes for a family that is eligible for and claims Pension Credit.
  5. Metamorphic. Not claiming Pension Credit closes the route and never makes a family eligible.
  6. Freeze. Under gov.contrib.freeze_pension_credit, the route follows the baseline receipt.

On main, invariant 1 fails in every test year for 3 of the 5 below-age known families (working-age lone parent, working-age couple, a 65-year-old), whose computed guarantee credit is £15,051 to £23,972. It holds on this branch.

Tests

Commands run:

  • uv run policyengine-core test policyengine_uk/tests/policy -c policyengine_uk: 1,349 passed.
  • uv run pytest policyengine_uk/tests/ --ignore=policyengine_uk/tests/microsimulation: PYTEST
  • uv run pytest policyengine_uk/tests/test_targeted_childcare_guarantee_credit_properties.py: 5 passed (116 s).
  • ruff format . and ruff check .: clean.
  • Not run locally: make test-microsimulation.

Known departures from the law (unchanged by this PR)

  • Mixed-age couples. is_pension_credit_eligible requires every adult to be at State Pension age. Since 15 May 2019 SPCA s.4(1A) excludes mixed-age couples, but SI 2019/37 art 4 saves couples entitled on 14 May 2019, and before that date the older member could be entitled. Date the mixed-age couple Pension Credit exclusion and model the SI 2019/37 saving #1940 models the saving and dates the exclusion; this route follows it once that merges.
  • Qualifying age. The model uses a flat State Pension age by sex. Set State Pension age from date of birth, including the rise to 67 #1899 (date of birth, the rise to 67) and Use the State Pension Credit qualifying age, and start-of-year status for Class 4 NI #1907 (the SPCA s.1(6) qualifying age) change it; this route follows is_pension_credit_eligible, so it picks those up.
  • "Parent". The model tests the benefit unit. Reg 1(2)(a) asks whether the child's parent is entitled, and only the claimant in a couple is entitled (SPCA s.4(1)). Neither SI 2014/2147 nor the Childcare Act 2006 defines "parent" for para (a), so a pension-age grandparent or kinship carer in the child's benefit unit may or may not count. The model counts them.
  • Claims. would_claim_pc is the claim. It defaults to true outside the dataset and is a take-up draw in the Enhanced FRS.

Axiom

axiom: AXIOM

SI 2014/2147 is not in the Axiom corpus (no rows for uk/regulation/uksi/2014/2147 or /1), and rulespec-uk has no module for it. SPCA 2002 ss.1 and 2 are in the corpus and encoded. The queued issue covers corpus ingestion and the reg 1(2)(a) routes, with the guaranteed element composed from the SPCA modules, and companion tests taken from the law.

🤖 Generated with Claude Code

MaxGhenis and others added 2 commits October 1, 2026 09:43
The 2-year-old entitlement listed the raw guarantee_credit amount as a
qualifying benefit. PolicyEngine computes that amount for every benefit
unit, so low-income working-age families and pensioners who do not claim
Pension Credit qualified through it. SI 2014/2147 reg 1(2) requires the
parent to be entitled to the guaranteed element of state pension credit,
and entitlement needs the qualifying age (SPCA 2002 s.1(2)(b)) and a claim
(SSAA 1992 s.1(1), (4)(ab)).

The entry is now in_receipt_of_guarantee_credit (Pension Credit eligible,
claims it, guarantee credit positive), the variable #1927 and #1909 add;
the file is byte-identical to theirs. Its YAML test is #1927's, also
byte-identical.

Fixes #1956

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

This branch has not been deployed

No deployments
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.

Targeted childcare qualifies working-age families through a computed Guarantee Credit

1 participant