Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/2683.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Apply the apprentice minimum wage only to apprentices under 19 or explicitly in their first 12 months, including historical calculations from October 2012, while preserving employer National Insurance relief for later-year apprentices under 25.
53 changes: 53 additions & 0 deletions docs/book/usage/simulations.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,59 @@ marginal_tax_rate = sim.calculate("marginal_tax_rate", 2025)
These calculations return arrays because simulations can handle multiple people, benefit units or households simultaneously. Each variable gives you results at the appropriate level - income tax is calculated per person, Universal Credit per benefit unit, and council tax per household.
```

## Apprenticeship inputs

Apprentice status and entitlement to the apprentice minimum wage use separate
annual person inputs:

- `is_apprentice` records apprentice status and continues to determine the
apprentice employer National Insurance relief, subject to its age limit.
- `is_in_first_year_of_apprenticeship` records whether the person is within
the first 12 months of the current apprenticeship employment. It defaults
to `False`; it does not establish apprentice status on its own.

The apprentice minimum wage applies when `is_apprentice` is true and the
person is either under 19 or has the first-year input set to true. Both
`minimum_wage` and `minimum_wage_category` use this rule. At age 19 or over,
an apprentice with a false or omitted first-year input uses the ordinary
age-related rate. A later-year apprentice under 25 can therefore retain
employer National Insurance relief while using the ordinary minimum wage.

The first 12 months refer to the current apprenticeship employment, rather
than an academic or training-provider year. Employment with a previous
employer counts where statutory continuity is preserved. A genuinely
separate apprenticeship contract starts a new period, as explained in
[HMRC's apprenticeship contract guidance](https://www.gov.uk/hmrc-internal-manuals/national-minimum-wage-manual/nmwm05300)
and [regulation 5](https://www.legislation.gov.uk/uksi/2015/621/regulation/5).

For example, the person inputs for a 22-year-old in the first 12 months are:

```python
"parent": {
"age": {2026: 22},
"is_apprentice": {2026: True},
"is_in_first_year_of_apprenticeship": {2026: True},
"employment_income": {2026: 8_000},
}
```

Previously, setting only `is_apprentice` selected the apprentice minimum
wage at every age. Existing callers must now supply the first-year input
for apprentices aged 19 or over who qualify for that rate. Missing tenure
does not establish that someone has completed 12 months; the false default
avoids assuming eligibility for the lower rate. The distinction also affects
the minimum-income conditions for Tax-Free Childcare, extended childcare
entitlement and the Childcare Offer for Wales.

These inputs classify the model's annual period. The model does not infer
an apprenticeship start date, change the classification at a birthday or
anniversary within the year, or advance apprenticeship tenure during dataset
projection. Callers must supply the classification for each modelled year.
Annual minimum-wage calculations retain the existing fiscal-year conversion:
the model uses the rate in force on 30 April for the whole labelled year.
This change does not introduce a pay-reference-period calculation or alter
the dated rate parameters.

## Simulating policy scenarios

To test policy changes, create a scenario and apply it to your simulation. This example shows what happens when we increase Universal Credit's standard allowance for single people over 25 from the current rate to £500 per month:
Expand Down
26 changes: 26 additions & 0 deletions docs/engineering/skills/dataset-sources.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,32 @@ discard H5 attributes must explicitly preserve this declaration before their
output can be reloaded safely. Test routing and migration on synthetic frames
and small H5 fixtures, without downloading private datasets.

## Apprenticeship status and tenure

Dataset producers should export `is_apprentice` and
`is_in_first_year_of_apprenticeship` as separate annual person columns.
Apprentice status alone cannot establish entitlement to the apprentice
minimum wage at age 19 or over. The first-year column records the first
12 months of the current apprenticeship employment, including any period
covered by statutory continuity; it is not an academic-year flag. See the
[calculator input contract](../../book/usage/simulations.md#apprenticeship-inputs).

An absent first-year column uses the variable's `False` default. This can
change minimum-wage and dependent childcare income-condition results for
existing data whose `is_apprentice` flag is true at age 19 or over. It does
not change the existing under-25 apprentice employer National Insurance
relief. A missing column is not evidence that every apprentice is in a
later year.

The producer work in [Microcosm PR #1373](https://github.com/PolicyEngine/microcosm/pull/1373)
must supply an explicit first-year classification alongside apprentice
status before that status can also identify older apprentices who receive
the lower minimum wage. This UK change supplies no first-year imputation,
prevalence estimate or migration of existing releases. Projection does not
advance apprenticeship tenure, so a producer or caller must supply changed
classifications for later years rather than rely on a carried input to
expire automatically.

## Defaults

`policyengine_uk` does not silently choose a default dataset when no situation is
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
description: Apprentices below this age qualify for the apprentice minimum wage regardless of how long they have been in their apprenticeship.
# The under-19 rule took effect on 1 October 2010. Values begin with the
# model's minimum wage rate history on 1 October 2012.
values:
2012-10-01: 19
metadata:
label: Apprentice minimum wage age limit
unit: year
period: year
reference:
- title: The National Minimum Wage Regulations 1999 (Amendment) Regulations 2010, regulation 5 (substituted regulation 13(3)(b))
href: https://www.legislation.gov.uk/uksi/2010/1901/regulation/5/made
- title: The National Minimum Wage Regulations 1999 (Amendment) Regulations 2010, regulation 1
href: https://www.legislation.gov.uk/uksi/2010/1901/regulation/1/made
- title: The National Minimum Wage Regulations 2015, regulation 5(1)(b)
href: https://www.legislation.gov.uk/uksi/2015/621/regulation/5
- title: The National Minimum Wage Regulations 2015, regulation 1
href: https://www.legislation.gov.uk/uksi/2015/621/regulation/1
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
input:
age: 30
is_apprentice: true
is_in_first_year_of_apprenticeship: true
output:
# Reg. 90(2) names NMW Regs reg. 4 and 4A(1)(a) to (c); the
# apprenticeship rate of 8.00 (reg. 4A(1)(d)) would give 14,560.
Expand Down
Loading
Loading