Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Student loan repayment validation

This notebook compares PolicyEngine UK’s calculated student loan repayments against reported repayments from the Family Resources Survey (FRS) microdata. Understanding the alignment between modelled and reported values helps assess model accuracy and identify areas for improvement.

Background

A borrower repays a percentage of income above a threshold, and the threshold depends on the loan’s plan. The figures below are for 2024-25, the year the code on this page runs (year = 2024; the model reads a year as the fiscal year that starts on 6 April).

  • Plan 1: loans for courses begun on or before 31 August 2012 under England’s and Wales’s student support regulations (SI 2009/470 reg. 3A), and every Student Finance Northern Ireland loan (GOV.UK). 9% of income above £24,990.

  • Plan 2: Student Finance England loans for courses begun from 1 September 2012 to 31 July 2023, and Student Finance Wales loans for courses begun on or after 1 September 2012 (GOV.UK). 9% of income above £27,295.

  • Plan 4: loans under Scottish student loan regulations from 1998 onwards whose repayments the Scottish Ministers have HMRC collect (SI 2009/470 reg. 3D). GOV.UK puts every Student Awards Agency Scotland loan on Plan 4. 9% of income above £31,395.

  • Plan 5: Student Finance England loans for courses begun on or after 1 August 2023 (GOV.UK). Its threshold is £25,000, but SI 2009/470 reg. 15(2BA), which SI 2022/1335 reg. 15(9) inserted, requires no repayment of a Plan 5 loan on or before 5 April 2026, so Plan 5 borrowers owe nothing in 2024-25 or 2025-26. The model doesn’t yet apply reg. 15(2BA): it charges Plan 5 borrowers 9% of income above £25,000 in those years too.

  • Postgraduate: 6% of income above £21,000.

The FRS captures reported student loan repayments, while PolicyEngine calculates repayments based on income and loan plan type.

Student loan plan distribution

First, let’s examine the distribution of student loan plans in the weighted population:

Aggregate comparison

Comparing total reported vs modelled repayments:

Individual-level alignment

For people who report making student loan repayments, how well do our calculations align?

What can make the two measures differ

The code compares two variables. student_loan_repayments holds the repayments a dataset reports; where a dataset supplies none, its formula returns student_loan_repayment, and the two match exactly. student_loan_repayment applies the plan’s rate to income above the plan’s threshold, and caps the result at student_loan_balance where the balance is known. They can differ for these reasons:

  1. Annual income: the model applies the threshold to a year’s income (student_loan_income, net income less benefits in kind), not to each pay period, so it doesn’t reflect how income varies within the year.

  2. Voluntary repayments: the formula holds no voluntary repayments, so it leaves out any that a reported figure includes.

  3. One plan per person: student_loan_plan gives each person one plan, so the model can’t charge someone who holds loans on two plans for both.

  4. Missing plans: a person with no plan (NONE) gets no modelled repayment, whatever they report. #1764 reports a run on enhanced_frs_2023_24.h5 with policyengine-uk 2.88.43 for 2026 in which 5,570 people had a reported repayment and none had a modelled one, because no person had a plan.

  5. Plan 5 before April 2026: the model charges Plan 5 borrowers repayments that the law doesn’t require until 6 April 2026 (see the plan list above).

Results

This page stores no output. The code reports the weighted totals of the two measures and their ratio and, for people with a reported repayment, the correlation between the measures, the share who also have a modelled repayment, and the mean of each measure and of adjusted net income. It draws no conclusion about how closely they agree: that needs a run with a stated date, model version and dataset.