Repository navigation
Hold the Child Tax Credit family element at £545 and apply the 6 April 2017 birth-date condition - #2051
Hold the Child Tax Credit family element at £545 and apply the 6 April 2017 birth-date condition#2051MaxGhenis wants to merge 4 commits into
Conversation
…fore-2017 rule The family element was £545 from 6 April 2003 until tax credits ended on 5 April 2025 (CTC Regs 2002 reg 7(3) as made, and as substituted by SI 2011/1035 reg 2(2)); no Tax Credits Up-rating Regulations changed it. The parameter started in 2016 and was CPI-uprated, giving £721.57 in 2024-25. - family_element: £545 from 2003-04-06, no uprating. - family_element_baby_addition: £545 more where a child is under one, until 5 April 2011 (reg 7(3)(a) as made). - eligibility/family_element_born_before (20170406): from 6 April 2017 the element is included only where a child or qualifying young person was born before 6 April 2017 (TCA 2002 s.9(2)(a); reg 7(2)(a), SI 2017/387 reg 4(b)). CTC_family_element applied no such condition. - A birth year entered for some people leaves the others at 0; the formula falls back to the period less age for them. Tests: 20 YAML cases worked from the law (17 fail on main) and Hypothesis properties (bounds, characterisation, order invariance, newborn metamorphic, pre-2011 baby rate). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A situation that enters birth_year for some people leaves the others at 0, which is the case the formula's fallback handles; the family element assertion is what the property is about. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-input cases - family_element.yaml: the 2011 substitution is the one Up-rating change to reg 7(3); cite the point-in-time texts rather than the changes feed. - YAML header: award amounts are the model's annual arithmetic (reg 8(3) steps 1-2 round daily rates up to the penny); the model backdates parameters to 2015. - Two YAML cases: an older child without an entered birth year beside an entered one, and two pre-cutoff children (one family element). - Pin a partial birth-year example on the characterisation property. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
#1904 merged into main as
Exact comparison for the family element
Your branch
|
Summary
The Child Tax Credit family element was £545 a year for the whole life of tax credits, 6 April 2003 to 5 April 2025. PE-UK started the parameter in 2016 and CPI-uprated it, so it read £550.99 in 2017-18, rising to £721.57 in 2024-25. The model also paid it to every eligible family, though from 6 April 2017 it is only for families with a child or qualifying young person born before 6 April 2017.
This PR:
elements/family_element.yaml: £545 from 2003-04-06, uprating removedelements/family_element_baby_addition.yaml: £545 more where any child is under one, 2003-04-06 to 2011-04-05eligibility/family_element_born_before.yaml: 20170406CTC_family_elementapplies the cutoff and the pre-2011 baby rateThe law
Fetched verbatim from legislation.gov.uk
/data.xmlon 2026-10-02.CTC Regs 2002 reg 7(3), as made (in force for awards from 6 April 2003, reg 1):
SI 2011/1035 reg 2(2) (Tax Credits Up-rating Regulations 2011, awards for the year from 6 April 2011):
Never uprated.
Reg 7(2)(a) from 6 April 2017 (words inserted by SI 2017/387 reg 4(b)):
TCA 2002 s.9(2)(a), as substituted by WRWA 2016 s.13(2)(a) (in force 6 April 2017, s.36(4)), says the same. SI 2017/387 has no transitional saving for existing awards.
Two corrections to the brief that led to this PR: the rule is in reg 7(2)(a), and reg 7(2A) is the child limit. And the amount was £545 from 2003; what changed in 2011 was the end of the £1,090 rate for a family with a baby.
Model notes
birth_year, the period less age, or an input). A child counts as born before the cutoff when 6 April of their birth year is before 20170406. That means a birth year of 2016 or earlier, exactly asis_CTC_child_limit_exemptreads the 2017 child limit. Apply the 6 April 2017 child cutoffs by date of birth #1904 (date of birth from age and months since the last birthday) will replace this with itsbirth_dayhelper; the parameter is already a YYYYMMDD date to match itsborn_beforeparameters.birth_yearfor some people leaves everyone else at 0 (core fills the input array). Read naively, 0 is "born before 2017". The formula treats 0 as not given and uses the period less age. The Hypothesis characterisation found this case, and it has a YAML case.is_CTC_child_limit_exempt,uc_is_child_born_before_child_limitand the Pension Credit child addition share the issue on main. Apply the 6 April 2017 child cutoffs by date of birth #1904 fixes those by moving them to its helper, which ignoresbirth_yearinputs and treats a 0date_of_birthas not given.age < 1for the year. In law it ran by relevant period (daily), so in a whole-year model a child who turns one mid-year keeps it all year. It affects only 2003-04 to 2010-11.Invariants (stated and tested)
policyengine_uk/tests/test_ctc_family_element_properties.py:Tests
policyengine_uk/tests/policy/baseline/gov/dwp/tax_credits/ctc_family_element.yaml: 22 cases, worked from the law in the file header. On main, 20 fail on value or the missing parameters. The two that pass are 2016-17 (where main already had £545) and the 2025-26 zero award. For example, in 2024-25 a lone parent on £25,000 with one child born in 2014 gets £3,455 + £545 - 41% x (25,000 - 19,995) = £1,947.95 (main: £2,124.52). With one child born in 2019 the award is £1,402.95. Awards use the model's annual arithmetic. SI 2002/2008 reg 8(3) steps 1-2 take each element as a daily rate rounded up to the penny, so a full-year statutory award is a few pounds higher (£1,952.00 for the first case). The element amounts and the condition are exact.test_ctc_family_element_properties.py: 31 passed locally. The characterisation property pins a partial birth-year example in both directions. The full YAML and pytest suites run in CI'sTestjob.Enhanced FRS impact (2024-25)
One real
Microsimulationper package state on a copy ofenhanced_frs_2024_25.h5(sha256e433e532…): base origin/main15de0cadf, branchb34cc9478. Scripts and aggregate outputs are kept with the session notes. Weighted totals, 2024-25:Where the family element moves:
The amounts are small because the data has few tax credit awards left in 2024-25: 21,000 weighted CTC-eligible families and £80.8m of CTC paid on main. In 2025-26 tax credits pay nothing on either base. Maximum rates and pre-minimum CTC still change, but abolition stops those changes reaching paid CTC, Housing Benefit or household net income.
Coordination
upratingfromfamily_element.yamland adds a comment. This PR supersedes that hunk: it keeps Set DWP benefit rates to the announced amounts, not CPI projections #1925's reference entries and adds the law. Whichever merges second should take this PR's version of the file.CTC_family_elementonto itsbirth_dayhelper (birth_day(person, period) < ctc.eligibility.family_element_born_before). Its whole-age invariant (born before 6 April 2017 iff period - age < 2017) then covers this reader too.worker.yamlvalues, not here.axiom: TheAxiomFoundation/rulespec-uk#372 queued (extended with reg 7(3) as made and as substituted from 2011, plus companion tests)
Fixes #2050
🤖 Generated with Claude Code