Skip to content

Commit 2027b1e

Browse files
MaxGhenisclaude
andauthored
Add upper interest threshold freeze for Plan 2 (Budget 2025) (#1426)
Budget 2025 freezes both interest rate thresholds for Plan 2 student loans from 2027-2030. This adds the frozen upper threshold values (£52,885) for 2027-09-01 through 2029-09-01. Per OBR EFO November 2025, section 3.22: "The Government has announced a freeze to the repayments and interest rate thresholds for Plan 2 student loan repayments for three years starting from 2027-28." Fixes #1425 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude <noreply@anthropic.com>
1 parent 1180bdf commit 2027b1e

4 files changed

Lines changed: 19 additions & 3 deletions

File tree

.beads/deletions.jsonl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{"id":"policyengine-uk-lo8","ts":"2025-12-01T05:12:40.281291Z","by":"git-history-backfill","reason":"recovered from git history (pruned from manifest)"}
2+
{"id":"policyengine-uk-exv","ts":"2025-12-01T05:12:40.289337Z","by":"git-history-backfill","reason":"recovered from git history (pruned from manifest)"}
3+
{"id":"policyengine-uk-e55","ts":"2025-12-01T05:12:40.293639Z","by":"git-history-backfill","reason":"recovered from git history (pruned from manifest)"}

.beads/issues.jsonl

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
11
{"id":"policyengine-uk-5qy","title":"Update student loan validation notebook with deeper analysis","description":"","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T21:01:35.49966-05:00","updated_at":"2025-11-29T21:02:51.469593-05:00","closed_at":"2025-11-29T21:02:51.469593-05:00"}
22
{"id":"policyengine-uk-75j","title":"Add student loan calibration targets to policyengine-uk-data","description":"Add student loan repayment and balance calibration targets to policyengine-uk-data loss function.\n\n## Proposed Calibration Targets (from SLC 2024-25 statistics)\n\n### Total Repayments by Country\n| Country | Repayments | Source |\n|---------|------------|--------|\n| England (HE) | £5.0bn | SLC 2024-25 |\n| Scotland | £203m | SLC 2024-25 |\n| Wales | £229m | SLC 2024-25 |\n| Northern Ireland | £182m | SLC 2024-25 |\n| **UK Total** | **~£5.6bn** | |\n\n### Repayments by Plan Type (England)\n| Plan | Amount | Share |\n|------|--------|-------|\n| Plan 1 | £1.9bn | 37% |\n| Plan 2 | £2.8bn | 55% |\n| Postgraduate | £0.3bn | 7% |\n| Plan 5 | £41m | 0.8% |\n\n### Number of Borrowers Repaying (England)\n- 3.0m via HMRC\n- 187k scheduled direct\n- 147k voluntary direct\n\n### Outstanding Balances\n- UK Total: £294bn (March 2025)\n\n## Implementation Notes\n1. Add targets to `loss.py` in policyengine-uk-data\n2. May need to adjust for timing (FRS year vs SLC reporting year)\n3. Consider whether to calibrate on modelled (`student_loan_repayment`) or reported (`student_loan_repayments`)\n\n## Sources\n- https://www.gov.uk/government/statistics/student-loans-in-england-2024-to-2025\n- https://www.gov.uk/government/statistics/student-loans-in-scotland-2024-to-2025\n- https://www.gov.uk/government/statistics/student-loans-in-northern-ireland-2024-to-2025\n- https://www.gov.uk/government/statistics/student-loans-in-wales-2024-to-2025","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-11-29T21:01:37.038332-05:00","updated_at":"2025-11-30T12:42:25.851958-05:00","closed_at":"2025-11-30T12:42:25.851958-05:00"}
3-
{"id":"policyengine-uk-e55","title":"Impute student loan balance from WAS to FRS","description":"Impute student loan balance from WAS to FRS.\n\n**GitHub Issue:** https://github.com/PolicyEngine/policyengine-uk-data/issues/238\n\n## WAS Data (Round 7, 2018-2020)\n- Derived from: Tot_LosR7_aggr - Tot_los_exc_SLCR7_aggr\n- 1.66m weighted households with SLC debt\n- Mean balance: £20k, Total: £33.4bn\n- Undercounts vs admin (~24% of SLC total) but captures distribution shape\n\n## Implementation in policyengine-uk-data\n1. Add variables to wealth.py\n2. Impute to FRS\n3. Consider scaling to admin totals\n\n## Then in policyengine-uk\n1. Create student_loan_balance variable\n2. Use for capping repayments (policyengine-uk-exv)\n3. Use for interest accrual (policyengine-uk-lo8)","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-30T13:00:55.693284-05:00","updated_at":"2025-11-30T21:22:35.720239-05:00"}
4-
{"id":"policyengine-uk-exv","title":"Cap student loan repayments at outstanding balance","description":"## Summary\nCurrently `student_loan_repayment` is calculated as:\n```python\nrepayment = rate * max_(0, income - threshold)\n```\n\nThis has no cap, so high earners can have modelled repayments exceeding their actual loan balance.\n\nExample from validation:\n- Person with £420k income\n- Modelled repayment: £35,470\n- Reported repayment: £1,903\n- Likely explanation: they paid off their loan during the year\n\n## Implementation\n1. Depends on: policyengine-uk-e55 (impute student loan balance)\n2. Add cap: `repayment = min_(repayment, student_loan_balance)`\n3. Consider interest accrual dynamics\n\n## References\n- Real repayments stop when balance reaches zero\n- SLC sends notification when approaching final payment","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-30T13:01:04.290596-05:00","updated_at":"2025-11-30T13:01:04.290596-05:00","dependencies":[{"issue_id":"policyengine-uk-exv","depends_on_id":"policyengine-uk-e55","type":"blocks","created_at":"2025-11-30T13:01:32.464187-05:00","created_by":"daemon"}]}
5-
{"id":"policyengine-uk-lo8","title":"Add student loan interest accrual calculation","description":"## Summary\nWe have `student_loan_interest_rate` but no calculation of actual interest accrued. This would require:\n1. Outstanding balance (see policyengine-uk-e55)\n2. Interest rate (already implemented)\n3. Decision on timing: interest on opening or closing balance?\n\n## UK Rules\n- Interest is calculated daily on the outstanding balance\n- For Plan 2, rate varies by income (RPI to RPI+3%)\n- Interest is added monthly\n\n## Implementation\n```python\ninterest_accrued = student_loan_balance * student_loan_interest_rate\n```\n\n## Use cases\n- Calculating lifetime loan costs\n- Analysing distributional impact of interest rate changes\n- Understanding real cost of higher education","status":"open","priority":2,"issue_type":"feature","created_at":"2025-11-30T13:01:12.269846-05:00","updated_at":"2025-11-30T13:01:12.269846-05:00","dependencies":[{"issue_id":"policyengine-uk-lo8","depends_on_id":"policyengine-uk-e55","type":"blocks","created_at":"2025-11-30T13:01:32.503041-05:00","created_by":"daemon"}]}
63
{"id":"policyengine-uk-occ","title":"Research official student loan repayment aggregates for calibration","description":"## Research Findings\n\n### UK Student Loan Repayments 2024-25 (SLC Official Statistics)\n\n**England (HE):** £5.0bn total repayments\n- Plan 1: £1.9bn (37%)\n- Plan 2: £2.8bn (55%)\n- Plan 3/Postgraduate: £0.3bn (7%)\n- Plan 5: £41m (0.8%, voluntary only)\n\n**Scotland:** £203m total repayments (primarily Plan 4)\n\n**Wales:** ~£229m total repayments (6.9% increase from prior year)\n\n**Northern Ireland:** £182m total repayments\n\n**UK Total (estimated):** ~£5.6bn HE repayments\n\n### Borrowers Making Repayments (England)\n- 3.0m via HMRC (39.5% of those liable)\n- 187k scheduled direct to SLC\n- 147k voluntary direct to SLC\n\n### Outstanding Balances\n- England: £236.4bn (end March 2025)\n- Scotland: £9.4bn\n- Northern Ireland: £5.6bn\n- Wales: ~£9-10bn (estimated)\n- **UK Total: ~£260-295bn**\n\n### Sources\n- https://www.gov.uk/government/statistics/student-loans-in-england-2024-to-2025\n- https://www.gov.uk/government/statistics/student-loans-in-scotland-2024-to-2025\n- https://www.gov.uk/government/statistics/student-loans-in-northern-ireland-2024-to-2025\n- https://www.gov.uk/government/statistics/student-loans-in-wales-2024-to-2025","status":"closed","priority":2,"issue_type":"task","created_at":"2025-11-29T21:01:36.199753-05:00","updated_at":"2025-11-30T12:41:52.88068-05:00","closed_at":"2025-11-30T12:41:52.88068-05:00","dependencies":[{"issue_id":"policyengine-uk-occ","depends_on_id":"policyengine-uk-75j","type":"blocks","created_at":"2025-11-29T21:01:47.791464-05:00","created_by":"daemon"}]}

changelog_entry.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
- bump: patch
2+
changes:
3+
added:
4+
- Add upper interest threshold freeze for Plan 2 student loans (Budget 2025)
5+

policyengine_uk/parameters/gov/hmrc/student_loans/interest_rates/plan_2/upper_threshold.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,14 @@ values:
3535
reference:
3636
- title: Student Loans Interest and Repayment Threshold Announcement for Plan 2 and Plan 3 loans
3737
href: https://www.gov.uk/government/news/student-loans-interest-and-repayment-threshold-announcement-for-plan-2-and-plan-3-loans
38+
# Budget 2025: interest rate thresholds frozen 2027-2030 (OBR EFO Nov 2025, section 3.22)
39+
2027-09-01:
40+
value: 52_885
41+
metadata:
42+
reference:
43+
- title: Autumn Budget 2025 - Student loans threshold freeze
44+
href: https://www.gov.uk/government/publications/budget-2025-document/budget-2025-html
45+
2028-09-01:
46+
value: 52_885
47+
2029-09-01:
48+
value: 52_885

0 commit comments

Comments
 (0)