Skip to content

Refit childcare take-up for funded hours that stop at school entry and start by term (policyengine-uk#2570) #633

Open

Description

@juaristi22

PolicyEngine/policyengine-uk#2570 (for PolicyEngine/policyengine-uk#2567) changes which terms of the year a child gets funded early years hours in. So the take-up rates fitted in datasets/childcare/takeup_rate.py, and the caseload basis they are fitted to in datasets/childcare/targets.py, need a refit once a policyengine-uk release contains it.

What changes in policyengine-uk

  • Hours stop at school entry. Universal and working parent hours stop from the term a child starts school. A child is entitled to a reception place in the September following its fourth birthday (School Admissions Code 2021 para 2.17), and the place then meets both duties (DfE statutory guidance from April 2026, footnotes 7 and 17).
    • The new early_years_term_share_before_school reads the date of birth. A 4-year-old born before September keeps only the summer term.
    • early_years_school_start_deferred keeps the whole year for a deferred start.
    • current_education is not read for this.
  • Hours start with a term. Working parent hours start with the first 1 January, 1 April or 1 September after the child reaches the minimum age (SI 2022/1134 reg 27(1)(a)). The new variable is extended_childcare_entitlement_term_share.
    • From model year 2025 (minimum age nine months), some children aged 0 in the middle of the year qualify from the autumn or spring term.
    • Some children aged 1 lose the summer term.
    • Whole-year ages are spread over the year by months_since_last_birthday.

What the refit needs

  1. Caseloads on DfE's basis. DfE's comparators are January headcounts that leave reception children out. targets.py takes the universal count excluding reception, and DfE's working parent registrations have no reception rows.
    • is_child_receiving_* counts a child funded in any term of the year. After #2570 it still counts every 4-year-old who starts reception in September, since that child is funded for the summer term.
    • A January-equivalent count takes the children funded in the term from 1 January: early_years_term_share_before_school equal to 1, and an extended_childcare_entitlement_term_share that includes the spring term.
    • Spending targets are unaffected by this choice.
  2. Infants. targets.py notes that the model put no child under 2 on the working parent scheme. From model year 2025 it does. DfE's registrations of 9- to 11-month-olds and 1-year-olds (29,200 and 195,100 in January 2025) then become comparators on the same January basis.
  3. Order. The current rates were fitted with every reception child funded all year. They belong with that rule, so they need refitting after the release that contains #2570. The universal comparator change in Count working parent children in the universal childcare caseload target #545 (companion to policyengine-uk#2177) belongs in the same refit.

Not affected

  • The LOWER_SECONDARY branch for some 4- and 5-year-olds in frs.py (determine_education_level) no longer feeds childcare. It still feeds other readers of current_education.

Raised in Vahid's review of PolicyEngine/policyengine-uk#2570.

🤖 Generated with Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions