Skip to content

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

Open

Description

@juaristi22

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_allowance counts employer_pension_contributions in full for every member, defined benefit included (variables/gov/hmrc/pensions/pension_contributions_for_annual_allowance.py:35-52; the docstring and docs/engineering/pension-annual-allowance.md call 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_allowance defaults 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_allowance as 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

🤖 Generated with Claude Code

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