Repository navigation
Pension annual allowance on survey data, the UC benefit-cap earnings threshold, and the loss-relief pension rule: fixes before Microcosm UK locks the next release #2523
Description
Microcosm UK locks policyengine-uk 2.134.4 and is moving to the newest release. Each item below is a rule that gives wrong results on survey-based data at the 2024 and 2025 baselines. The data cannot correct any of them, so they need an engine fix. Line references are at 2.139.2.
1. The annual allowance charge on survey data
Problem. Since 2.134.5 (#2240) and 2.135.6 (#2441), the engine charges the annual allowance on pension input above the allowance. Two defaults make the charge far too high on any survey-based dataset.
- Defined-benefit input is employer cash.
pension_contributions_for_annual_allowancecountsemployer_pension_contributionsin full for every member, defined benefit included (variables/gov/hmrc/pensions/pension_contributions_for_annual_allowance.py:35-52; the docstring anddocs/engineering/pension-annual-allowance.mdcall it a cash proxy). From 2.135.6 the same cash also enters the taper's adjusted income. For a defined-benefit member, the statutory pension input is the increase in the value of the member's rights over the input period (Finance Act 2004 s. 234), not what the employer pays, which includes deficit funding. - There is no carry-forward.
unused_pension_annual_allowancedefaults to 0 and has no formula (variables/input/unused_pension_annual_allowance.py). So everyone with pension input above the allowance pays the charge on the whole excess. Surveys do not record the three prior years.
Evidence.
- HMRC's provisional 2024-25 statistics show about £0.3bn of annual allowance charge, and 30,440 individuals reporting pension savings above the allowance through Self Assessment.
- Fix statutory pension annual allowance taper income tests #2441's own runs on the enhanced FRS put 2024's modelled count at about nine times HMRC's, and the charge well above £0.3bn.
Asks.
- Let the data supply scheme type. One way is an input that splits employer contributions into defined benefit and defined contribution. Another is an input for defined-benefit pension input. When it is not supplied, keep defined-benefit employer cash out of pension input, or scale it by a documented parameter, rather than counting it in full. Microcosm already draws each occupational member's scheme type, so it can write either input.
- Give carry-forward a documented default for data without history: a parameter or rule, cited and testable against HMRC's statistics. Keep
unused_pension_annual_allowanceas the override. - Add a test that pins the 2024 charge and the number of payers on a stated dataset against HMRC's statistics, with a tolerance.
2. The UC benefit-cap earnings threshold is fixed at £10,152 for every year
Problem. is_uc_benefit_cap_exempt_earnings hard-codes earnings_threshold = 10_152 (variables/gov/dwp/universal_credit/benefit_cap/is_uc_benefit_cap_exempt_earnings.py:42), which is £846 a month, the 2025-26 figure. Universal Credit Regulations 2013 reg. 82(1)(a) set the threshold each year as 16 hours a week at the national living wage, times 52, divided by 12.
- 2024-25: 16 × £11.44 × 52 / 12 = £793.17 a month (£9,518 a year).
- 2025-26: 16 × £12.21 × 52 / 12 = £846.56 a month.
- 2026-27: 16 × £12.71 × 52 / 12 = £881.23 a month.
So 2024-25 exempts too few families, and 2026-27 onwards too many.
Ask. Derive the threshold from gov.hmrc.minimum_wage.non_apprentice at age 21 or over, which the UC minimum income floor already reads (uc_minimum_income_floor_gross.py:44). Use 16 hours a week, a year, and DWP's monthly rounding if it applies. Add tests for 2024, 2025 and 2026.
3. Loss-relief income still gives the £3,600 basic amount to every pension contribution
Problem. adjusted_total_income caps trade-loss relief using min(pension_contributions, max(basic_amount, relevant_earnings)) (variables/gov/hmrc/income_tax/reliefs/adjusted_total_income.py:56-68). Since #2240, pension_contributions_relief gives the basic amount only to relief-at-source (personal) contributions (Finance Act 2004 s. 191(7)). The two rules also define relevant earnings differently: taxable employment income here, but employment income plus positive trading profit in utils/pensions.py:6-26.
Ask. Use the helper in utils/pensions.py in both places, so one rule and one earnings definition apply.
4. Related: Scottish water charges (#2501)
#2501 reports that Scottish households' water and sewerage charges are uprated on the England and Wales series. It moves after-housing-costs income in Scotland at 2025. Fixing it in the same release saves a second re-measure.
Not needed
- UC capital (Retain property in UC capital alongside financial reports #2447, 2.136.1). Microcosm writes a complete
uc_reported_capitalfor every benefit unit, so the new property share is never added twice there. - The benefit caps (Give Universal Credit and Housing Benefit their own benefit cap and LHA shared-accommodation rules #2089) and the VAT split (Split VAT grossing into household share and survey coverage #2187). These need only test and target updates on the data side.
🤖 Generated with Claude Code
Activity
Derive the UC benefit cap earnings threshold from the national living…
Use one relevant-earnings rule for pension relief and adjusted total …
Uprate water and sewerage charges by country
Defined-benefit input and a carry-forward default for the annual allo…