diff --git a/changelog.d/minimum-wage-2023-rates.fixed.md b/changelog.d/minimum-wage-2023-rates.fixed.md new file mode 100644 index 0000000000..7ccbeaafe5 --- /dev/null +++ b/changelog.d/minimum-wage-2023-rates.fixed.md @@ -0,0 +1 @@ +Added the 1 April 2023 National Minimum Wage and National Living Wage rates (S.I. 2023/354); 2023 had used the April 2022 rates, for example £9.50 instead of £10.42 for workers aged 23 or over. Every minimum wage rate now cites the statutory instrument that set it. diff --git a/policyengine_uk/parameters/gov/hmrc/minimum_wage/apprentice.yaml b/policyengine_uk/parameters/gov/hmrc/minimum_wage/apprentice.yaml index 3a4aab3154..6d4d431744 100644 --- a/policyengine_uk/parameters/gov/hmrc/minimum_wage/apprentice.yaml +++ b/policyengine_uk/parameters/gov/hmrc/minimum_wage/apprentice.yaml @@ -1,36 +1,96 @@ description: Minimum wage rate for apprentices. +# The apprenticeship rate applies to an apprentice who is under 19 or in the +# first 12 months of the apprenticeship (NMW Regulations 2015 reg. 5). Rates +# take effect on the commencement date of each amending S.I.: on 1 October +# until 2016, then on 1 April from 2017. values: - 2012-10-01: 2.65 - 2013-10-01: 2.68 - 2014-10-01: 2.73 - 2015-10-01: 3.3 - 2016-10-01: 3.4 - 2017-04-01: 3.5 - 2018-04-01: 3.7 - 2019-04-01: 3.9 - 2020-04-01: 4.15 - 2021-04-01: 4.3 - 2022-04-01: 4.81 + 2012-10-01: + value: 2.65 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2012, regulation 2(4)(a) + href: https://www.legislation.gov.uk/uksi/2012/2397/made + 2013-10-01: + value: 2.68 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2013, regulation 2(3)(c) + href: https://www.legislation.gov.uk/uksi/2013/1975/made + 2014-10-01: + value: 2.73 + reference: + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2014, regulation 3(2)(c) + href: https://www.legislation.gov.uk/uksi/2014/2485/made + 2015-10-01: + value: 3.3 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2015, regulation 2(2)(d) + href: https://www.legislation.gov.uk/uksi/2015/1724/made + 2016-04-01: + value: 3.3 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2016, regulation 3 (substituted regulation 4A(1)(d)) + href: https://www.legislation.gov.uk/uksi/2016/68/made + 2016-10-01: + value: 3.4 + reference: + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2016, regulation 2(2)(d) + href: https://www.legislation.gov.uk/uksi/2016/953/made + 2017-04-01: + value: 3.5 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2017, regulation 2(3)(d) + href: https://www.legislation.gov.uk/uksi/2017/465/made + 2018-04-01: + value: 3.7 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2018, regulation 2(3)(d) + href: https://www.legislation.gov.uk/uksi/2018/455/made + 2019-04-01: + value: 3.9 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2019, regulation 2(3)(d) + href: https://www.legislation.gov.uk/uksi/2019/603/made + 2020-04-01: + value: 4.15 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2020, regulation 2(3)(d) + href: https://www.legislation.gov.uk/uksi/2020/338/made + 2021-04-01: + value: 4.3 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2021, regulation 2(3)(e) + href: https://www.legislation.gov.uk/uksi/2021/329/made + 2022-04-01: + value: 4.81 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2022, regulation 2(3)(d) + href: https://www.legislation.gov.uk/uksi/2022/382/made + 2023-04-01: + value: 5.28 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2023, regulation 2(3)(d) + href: https://www.legislation.gov.uk/uksi/2023/354/made 2024-04-01: value: 6.4 reference: - - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2024 + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2024, regulation 2(3)(d) href: https://www.legislation.gov.uk/uksi/2024/432/made 2025-04-01: value: 7.55 reference: - - title: The National Minimum Wage (Amendment) Regulations 2025 + - title: The National Minimum Wage (Amendment) Regulations 2025, regulation 2(3)(c) href: https://www.legislation.gov.uk/uksi/2025/401/made 2026-04-01: value: 8 reference: - - title: National Minimum Wage and National Living Wage rates - href: https://www.gov.uk/national-minimum-wage-rates + - title: The National Minimum Wage (Amendment) Regulations 2026, regulation 2(3)(c) + href: https://www.legislation.gov.uk/uksi/2026/357/made metadata: economy: false household: false label: Apprentice minimum wage unit: currency-GBP reference: + - title: The National Minimum Wage Regulations 2015, regulations 4A(1)(d) and 5 + href: https://www.legislation.gov.uk/uksi/2015/621/contents - href: https://www.gov.uk/national-minimum-wage-rates title: GOV.UK - National Minimum Wage diff --git a/policyengine_uk/parameters/gov/hmrc/minimum_wage/non_apprentice.yaml b/policyengine_uk/parameters/gov/hmrc/minimum_wage/non_apprentice.yaml index e1ab6760d3..1423e07b24 100644 --- a/policyengine_uk/parameters/gov/hmrc/minimum_wage/non_apprentice.yaml +++ b/policyengine_uk/parameters/gov/hmrc/minimum_wage/non_apprentice.yaml @@ -1,152 +1,436 @@ description: Minimum wage rate for non-apprentices by age. +# The thresholds are every age boundary the law has used since October 2012 +# (18, 21, 23 and 25), giving the bands under 18, 18 to 20, 21 to 22, 23 to 24 +# and 25 or over. The thresholds do not change. Where the law groups adjacent +# bands, they carry the same rate. +# +# - Until 31 March 2016 one adult rate applied from age 21 (NMW Regulations +# 1999 reg. 11, then NMW Regulations 2015 reg. 4(1)(a)). +# - From 1 April 2016 the national living wage (NMW Regulations 2015 reg. 4) +# applied from age 25, and reg. 4A(1)(a) set a lower rate for ages 21 to 24 +# (S.I. 2016/68 reg. 3). +# - From 1 April 2021 the national living wage applied from age 23 +# (S.I. 2021/329 reg. 2(3)(b)), leaving reg. 4A(1)(a) for ages 21 and 22. +# - From 1 April 2024 it applies from age 21, and reg. 4A(1)(a) is omitted +# (S.I. 2024/432 reg. 2(3)(a)). +# +# Rates take effect on the commencement date of each amending S.I. Until +# October 2015 all rate changes took effect on 1 October. The national living +# wage has changed each 1 April since 2016; the other rates changed on +# 1 October 2016 and each 1 April from 2017. + brackets: - threshold: 2012-10-01: 0 amount: - 2012-10-01: 3.68 - 2013-10-01: 3.72 - 2014-10-01: 3.79 - 2015-10-01: 3.87 - 2016-10-01: 4.0 - 2017-04-01: 4.05 - 2018-04-01: 4.2 - 2019-04-01: 4.35 - 2020-04-01: 4.55 - 2021-04-01: 4.62 - 2022-04-01: 4.81 + 2012-10-01: + value: 3.68 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2011, regulation 5(b) (rate from 1 October 2011, unchanged by S.I. 2012/2397) + href: https://www.legislation.gov.uk/uksi/2011/2345/made + 2013-10-01: + value: 3.72 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2013, regulation 2(3)(b) + href: https://www.legislation.gov.uk/uksi/2013/1975/made + 2014-10-01: + value: 3.79 + reference: + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2014, regulation 3(2)(b) + href: https://www.legislation.gov.uk/uksi/2014/2485/made + 2015-10-01: + value: 3.87 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2015, regulation 2(2)(c) + href: https://www.legislation.gov.uk/uksi/2015/1724/made + 2016-04-01: + value: 3.87 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2016, regulation 3 (substituted regulation 4A(1)(c), under 18) + href: https://www.legislation.gov.uk/uksi/2016/68/made + 2016-10-01: + value: 4.0 + reference: + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2016, regulation 2(2)(c) + href: https://www.legislation.gov.uk/uksi/2016/953/made + 2017-04-01: + value: 4.05 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2017, regulation 2(3)(c) + href: https://www.legislation.gov.uk/uksi/2017/465/made + 2018-04-01: + value: 4.2 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2018, regulation 2(3)(c) + href: https://www.legislation.gov.uk/uksi/2018/455/made + 2019-04-01: + value: 4.35 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2019, regulation 2(3)(c) + href: https://www.legislation.gov.uk/uksi/2019/603/made + 2020-04-01: + value: 4.55 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2020, regulation 2(3)(c) + href: https://www.legislation.gov.uk/uksi/2020/338/made + 2021-04-01: + value: 4.62 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2021, regulation 2(3)(d) + href: https://www.legislation.gov.uk/uksi/2021/329/made + 2022-04-01: + value: 4.81 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2022, regulation 2(3)(c) + href: https://www.legislation.gov.uk/uksi/2022/382/made + 2023-04-01: + value: 5.28 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2023, regulation 2(3)(c) + href: https://www.legislation.gov.uk/uksi/2023/354/made 2024-04-01: value: 6.4 reference: - - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2024 + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2024, regulation 2(3)(c) href: https://www.legislation.gov.uk/uksi/2024/432/made 2025-04-01: value: 7.55 reference: - - title: The National Minimum Wage (Amendment) Regulations 2025 + - title: The National Minimum Wage (Amendment) Regulations 2025, regulation 2(3)(b) href: https://www.legislation.gov.uk/uksi/2025/401/made 2026-04-01: value: 8 reference: - - title: National Minimum Wage and National Living Wage rates - href: https://www.gov.uk/national-minimum-wage-rates + - title: The National Minimum Wage (Amendment) Regulations 2026, regulation 2(3)(b) + href: https://www.legislation.gov.uk/uksi/2026/357/made - threshold: 2012-10-01: 18 amount: - 2012-10-01: 4.98 - 2013-10-01: 5.03 - 2014-10-01: 5.13 - 2015-10-01: 5.3 - 2016-10-01: 5.55 - 2017-04-01: 5.6 - 2018-04-01: 5.9 - 2019-04-01: 6.15 - 2020-04-01: 6.45 - 2021-04-01: 6.56 - 2022-04-01: 6.83 + 2012-10-01: + value: 4.98 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2011, regulation 5(a) (rate from 1 October 2011, unchanged by S.I. 2012/2397) + href: https://www.legislation.gov.uk/uksi/2011/2345/made + 2013-10-01: + value: 5.03 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2013, regulation 2(3)(a) + href: https://www.legislation.gov.uk/uksi/2013/1975/made + 2014-10-01: + value: 5.13 + reference: + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2014, regulation 3(2)(a) + href: https://www.legislation.gov.uk/uksi/2014/2485/made + 2015-10-01: + value: 5.3 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2015, regulation 2(2)(b) + href: https://www.legislation.gov.uk/uksi/2015/1724/made + 2016-04-01: + value: 5.3 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2016, regulation 3 (substituted regulation 4A(1)(b), ages 18 to 20) + href: https://www.legislation.gov.uk/uksi/2016/68/made + 2016-10-01: + value: 5.55 + reference: + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2016, regulation 2(2)(b) + href: https://www.legislation.gov.uk/uksi/2016/953/made + 2017-04-01: + value: 5.6 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2017, regulation 2(3)(b) + href: https://www.legislation.gov.uk/uksi/2017/465/made + 2018-04-01: + value: 5.9 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2018, regulation 2(3)(b) + href: https://www.legislation.gov.uk/uksi/2018/455/made + 2019-04-01: + value: 6.15 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2019, regulation 2(3)(b) + href: https://www.legislation.gov.uk/uksi/2019/603/made + 2020-04-01: + value: 6.45 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2020, regulation 2(3)(b) + href: https://www.legislation.gov.uk/uksi/2020/338/made + 2021-04-01: + value: 6.56 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2021, regulation 2(3)(c) + href: https://www.legislation.gov.uk/uksi/2021/329/made + 2022-04-01: + value: 6.83 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2022, regulation 2(3)(b) + href: https://www.legislation.gov.uk/uksi/2022/382/made + 2023-04-01: + value: 7.49 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2023, regulation 2(3)(b) + href: https://www.legislation.gov.uk/uksi/2023/354/made 2024-04-01: value: 8.6 reference: - - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2024 + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2024, regulation 2(3)(b) href: https://www.legislation.gov.uk/uksi/2024/432/made 2025-04-01: value: 10 reference: - - title: The National Minimum Wage (Amendment) Regulations 2025 + - title: The National Minimum Wage (Amendment) Regulations 2025, regulation 2(3)(a) href: https://www.legislation.gov.uk/uksi/2025/401/made 2026-04-01: value: 10.85 reference: - - title: National Minimum Wage and National Living Wage rates - href: https://www.gov.uk/national-minimum-wage-rates + - title: The National Minimum Wage (Amendment) Regulations 2026, regulation 2(3)(a) + href: https://www.legislation.gov.uk/uksi/2026/357/made - threshold: 2012-10-01: 21 amount: - 2012-10-01: 6.19 - 2013-10-01: 6.31 - 2014-10-01: 6.5 - 2015-10-01: 6.7 - 2016-04-01: 6.7 - 2016-10-01: 6.95 - 2017-04-01: 7.05 - 2018-04-01: 7.38 - 2019-04-01: 7.7 - 2020-04-01: 8.2 - 2021-04-01: 8.36 - 2022-04-01: 9.18 + 2012-10-01: + value: 6.19 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2012, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2012/2397/made + 2013-10-01: + value: 6.31 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2013, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2013/1975/made + 2014-10-01: + value: 6.5 + reference: + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2014, regulation 3(1) + href: https://www.legislation.gov.uk/uksi/2014/2485/made + 2015-10-01: + value: 6.7 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2015, regulation 2(2)(a) + href: https://www.legislation.gov.uk/uksi/2015/1724/made + 2016-04-01: + value: 6.7 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2016, regulation 3 (substituted regulation 4A(1)(a), ages 21 to 24) + href: https://www.legislation.gov.uk/uksi/2016/68/made + 2016-10-01: + value: 6.95 + reference: + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2016, regulation 2(2)(a) + href: https://www.legislation.gov.uk/uksi/2016/953/made + 2017-04-01: + value: 7.05 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2017, regulation 2(3)(a) + href: https://www.legislation.gov.uk/uksi/2017/465/made + 2018-04-01: + value: 7.38 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2018, regulation 2(3)(a) + href: https://www.legislation.gov.uk/uksi/2018/455/made + 2019-04-01: + value: 7.7 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2019, regulation 2(3)(a) + href: https://www.legislation.gov.uk/uksi/2019/603/made + 2020-04-01: + value: 8.2 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2020, regulation 2(3)(a) + href: https://www.legislation.gov.uk/uksi/2020/338/made + 2021-04-01: + value: 8.36 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2021, regulation 2(3)(a) + href: https://www.legislation.gov.uk/uksi/2021/329/made + 2022-04-01: + value: 9.18 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2022, regulation 2(3)(a) + href: https://www.legislation.gov.uk/uksi/2022/382/made + 2023-04-01: + value: 10.18 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2023, regulation 2(3)(a) + href: https://www.legislation.gov.uk/uksi/2023/354/made 2024-04-01: value: 11.44 reference: - - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2024 + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2024, regulation 2(2) and 2(3)(a) (national living wage from age 21) href: https://www.legislation.gov.uk/uksi/2024/432/made 2025-04-01: value: 12.21 reference: - - title: The National Minimum Wage (Amendment) Regulations 2025 + - title: The National Minimum Wage (Amendment) Regulations 2025, regulation 2(2) href: https://www.legislation.gov.uk/uksi/2025/401/made 2026-04-01: value: 12.71 reference: - - title: National Minimum Wage and National Living Wage rates - href: https://www.gov.uk/national-minimum-wage-rates + - title: The National Minimum Wage (Amendment) Regulations 2026, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2026/357/made - threshold: 2012-10-01: 23 amount: - 2012-10-01: 6.19 - 2013-10-01: 6.31 - 2014-10-01: 6.5 - 2015-10-01: 6.7 - 2016-10-01: 6.95 - 2017-04-01: 7.05 - 2018-04-01: 7.38 - 2019-04-01: 7.7 - 2020-04-01: 8.2 - 2021-04-01: 8.91 - 2022-04-01: 9.5 + 2012-10-01: + value: 6.19 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2012, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2012/2397/made + 2013-10-01: + value: 6.31 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2013, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2013/1975/made + 2014-10-01: + value: 6.5 + reference: + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2014, regulation 3(1) + href: https://www.legislation.gov.uk/uksi/2014/2485/made + 2015-10-01: + value: 6.7 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2015, regulation 2(2)(a) + href: https://www.legislation.gov.uk/uksi/2015/1724/made + 2016-04-01: + value: 6.7 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2016, regulation 3 (substituted regulation 4A(1)(a), ages 21 to 24) + href: https://www.legislation.gov.uk/uksi/2016/68/made + 2016-10-01: + value: 6.95 + reference: + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2016, regulation 2(2)(a) + href: https://www.legislation.gov.uk/uksi/2016/953/made + 2017-04-01: + value: 7.05 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2017, regulation 2(3)(a) + href: https://www.legislation.gov.uk/uksi/2017/465/made + 2018-04-01: + value: 7.38 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2018, regulation 2(3)(a) + href: https://www.legislation.gov.uk/uksi/2018/455/made + 2019-04-01: + value: 7.7 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2019, regulation 2(3)(a) + href: https://www.legislation.gov.uk/uksi/2019/603/made + 2020-04-01: + value: 8.2 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2020, regulation 2(3)(a) + href: https://www.legislation.gov.uk/uksi/2020/338/made + 2021-04-01: + value: 8.91 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2021, regulation 2(2) and 2(3)(b) (national living wage from age 23) + href: https://www.legislation.gov.uk/uksi/2021/329/made + 2022-04-01: + value: 9.5 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2022, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2022/382/made + 2023-04-01: + value: 10.42 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2023, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2023/354/made 2024-04-01: value: 11.44 reference: - - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2024 + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2024, regulation 2(2) href: https://www.legislation.gov.uk/uksi/2024/432/made 2025-04-01: value: 12.21 reference: - - title: The National Minimum Wage (Amendment) Regulations 2025 + - title: The National Minimum Wage (Amendment) Regulations 2025, regulation 2(2) href: https://www.legislation.gov.uk/uksi/2025/401/made 2026-04-01: value: 12.71 reference: - - title: National Minimum Wage and National Living Wage rates - href: https://www.gov.uk/national-minimum-wage-rates + - title: The National Minimum Wage (Amendment) Regulations 2026, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2026/357/made - threshold: 2012-10-01: 25 amount: - 2012-10-01: 6.19 - 2013-10-01: 6.31 - 2014-10-01: 6.5 - 2015-10-01: 6.7 - 2016-04-01: 7.2 - 2017-04-01: 7.5 - 2018-04-01: 7.83 - 2019-04-01: 8.21 - 2020-04-01: 8.72 - 2021-04-01: 8.91 - 2022-04-01: 9.5 + 2012-10-01: + value: 6.19 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2012, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2012/2397/made + 2013-10-01: + value: 6.31 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2013, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2013/1975/made + 2014-10-01: + value: 6.5 + reference: + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2014, regulation 3(1) + href: https://www.legislation.gov.uk/uksi/2014/2485/made + 2015-10-01: + value: 6.7 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2015, regulation 2(2)(a) + href: https://www.legislation.gov.uk/uksi/2015/1724/made + 2016-04-01: + value: 7.2 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2016, regulation 3 (substituted regulation 4, the national living wage) + href: https://www.legislation.gov.uk/uksi/2016/68/made + 2017-04-01: + value: 7.5 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2017, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2017/465/made + 2018-04-01: + value: 7.83 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2018, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2018/455/made + 2019-04-01: + value: 8.21 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2019, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2019/603/made + 2020-04-01: + value: 8.72 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2020, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2020/338/made + 2021-04-01: + value: 8.91 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2021, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2021/329/made + 2022-04-01: + value: 9.5 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2022, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2022/382/made + 2023-04-01: + value: 10.42 + reference: + - title: The National Minimum Wage (Amendment) Regulations 2023, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2023/354/made 2024-04-01: value: 11.44 reference: - - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2024 + - title: The National Minimum Wage (Amendment) (No. 2) Regulations 2024, regulation 2(2) href: https://www.legislation.gov.uk/uksi/2024/432/made 2025-04-01: value: 12.21 reference: - - title: The National Minimum Wage (Amendment) Regulations 2025 + - title: The National Minimum Wage (Amendment) Regulations 2025, regulation 2(2) href: https://www.legislation.gov.uk/uksi/2025/401/made 2026-04-01: value: 12.71 reference: - - title: National Minimum Wage and National Living Wage rates - href: https://www.gov.uk/national-minimum-wage-rates + - title: The National Minimum Wage (Amendment) Regulations 2026, regulation 2(2) + href: https://www.legislation.gov.uk/uksi/2026/357/made metadata: amount_unit: currency-GBP @@ -157,5 +441,7 @@ metadata: threshold_unit: year type: single_amount reference: + - title: The National Minimum Wage Regulations 2015, regulations 4 and 4A + href: https://www.legislation.gov.uk/uksi/2015/621/contents - href: https://www.gov.uk/national-minimum-wage-rates title: GOV.UK - National Minimum Wage diff --git a/policyengine_uk/programs.yaml b/policyengine_uk/programs.yaml index 46d253f103..da694bc41d 100644 --- a/policyengine_uk/programs.yaml +++ b/policyengine_uk/programs.yaml @@ -177,8 +177,10 @@ programs: agency: HMRC status: complete coverage: UK - parameter_prefix: gov.hmrc - verified_start_year: 2022 + variable: minimum_wage + parameter_prefix: gov.hmrc.minimum_wage + verified_start_year: 2017 + notes: Rates from 2015 are the 30 April values; the October 2015 and October 2016 changes fall mid fiscal year # --- DWP programs --- - id: universal_credit diff --git a/policyengine_uk/tests/policy/baseline/finance/income/minimum_wage.yaml b/policyengine_uk/tests/policy/baseline/finance/income/minimum_wage.yaml index a7ef1035e3..7afc59c16a 100644 --- a/policyengine_uk/tests/policy/baseline/finance/income/minimum_wage.yaml +++ b/policyengine_uk/tests/policy/baseline/finance/income/minimum_wage.yaml @@ -62,3 +62,45 @@ is_apprentice: true output: minimum_wage: 8 + +- name: 2023-24 national living wage for a person aged 23 or over + # NMW (Amendment) Regulations 2023 (SI 2023/354): reg. 4 rate 10.42. + period: 2023 + absolute_error_margin: 0.001 + input: + age: 30 + output: + minimum_wage: 10.42 + +- name: 2023-24 rate for a person aged 21 or 22 + period: 2023 + absolute_error_margin: 0.001 + input: + age: 21 + output: + minimum_wage: 10.18 + +- name: 2023-24 rate for a person aged 18 to 20 + period: 2023 + absolute_error_margin: 0.001 + input: + age: 19 + output: + minimum_wage: 7.49 + +- name: 2023-24 rate for a person aged under 18 + period: 2023 + absolute_error_margin: 0.001 + input: + age: 17 + output: + minimum_wage: 5.28 + +- name: 2023-24 apprenticeship rate + period: 2023 + absolute_error_margin: 0.001 + input: + age: 19 + is_apprentice: true + output: + minimum_wage: 5.28 diff --git a/policyengine_uk/tests/policy/baseline/gov/hmrc/tax_free_childcare/tax_free_childcare_income_condition.yaml b/policyengine_uk/tests/policy/baseline/gov/hmrc/tax_free_childcare/tax_free_childcare_income_condition.yaml index eea99435da..19410296a0 100644 --- a/policyengine_uk/tests/policy/baseline/gov/hmrc/tax_free_childcare/tax_free_childcare_income_condition.yaml +++ b/policyengine_uk/tests/policy/baseline/gov/hmrc/tax_free_childcare/tax_free_childcare_income_condition.yaml @@ -84,3 +84,30 @@ tax_free_childcare_self_employment_start_up_period: true output: tax_free_childcare_meets_income_requirements: true + +# 2023-24 thresholds use the 1 April 2023 rates (S.I. 2023/354): 16 hours x 13 +# weeks at £10.42 (23 or over) is £2,167.36, and at £10.18 (21 or 22) is +# £2,117.44. The April 2022 rates gave £1,976 and £1,909.44. +- name: 2023-24 expected income between the 2022-23 and 2023-24 thresholds, age 30 - ineligible + period: 2023 + input: + age: 30 + tax_free_childcare_expected_declaration_period_income: 2_100 + output: + tax_free_childcare_meets_income_requirements: false + +- name: 2023-24 expected income above the 2023-24 threshold, age 30 - eligible + period: 2023 + input: + age: 30 + tax_free_childcare_expected_declaration_period_income: 2_200 + output: + tax_free_childcare_meets_income_requirements: true + +- name: 2023-24 expected income between the 2022-23 and 2023-24 thresholds, age 22 - ineligible + period: 2023 + input: + age: 22 + tax_free_childcare_expected_declaration_period_income: 2_000 + output: + tax_free_childcare_meets_income_requirements: false diff --git a/policyengine_uk/tests/test_minimum_wage_rates.py b/policyengine_uk/tests/test_minimum_wage_rates.py new file mode 100644 index 0000000000..da9659640a --- /dev/null +++ b/policyengine_uk/tests/test_minimum_wage_rates.py @@ -0,0 +1,371 @@ +"""National Minimum Wage rates checked against the statutory instruments. + +Both tables below are transcribed from the National Minimum Wage Regulations +2015 (S.I. 2015/621), the National Minimum Wage Regulations 1999 before them, +and each amending S.I. on legislation.gov.uk. They are written out by hand +rather than read from the parameter files, so the tests can catch a missing or +wrong entry there. + +``RATES_FROM_COMMENCEMENT`` holds the rates each S.I. set, from the date it +came into force. ``RATES_AT_30_APRIL`` holds, for each year Y, the rates in +force on 30 April Y. That is the value PolicyEngine UK uses for year Y: +``convert_to_fiscal_year_parameters`` reads each parameter that has neither +``fiscal_year_blend`` nor ``preserve_calendar_dates`` metadata (these have +neither) at 30 April of each year from 2015 to 2040, and uses that value for +the whole year. A rate that changed on 1 October (until October 2016) +therefore first appears in the following year's row, and the October 2016 +rates never appear. + +Columns are the rate bands: apprentice, under 18, 18 to 20, 21 to 22, 23 to 24 +and 25 or over. The national living wage applied from age 25 from 1 April 2016 +(S.I. 2016/68), from 23 from 1 April 2021 (S.I. 2021/329 reg. 2(3)(b)) and from +21 from 1 April 2024 (S.I. 2024/432 reg. 2(3)(a)). The 2023 row is the case +the parameters used to get wrong: with no 1 April 2023 entry, 2023 read the +April 2022 rates, for example £9.50 instead of the £10.42 national living wage. + +The model reads ``is_apprentice`` as "the apprenticeship rate applies" +(2015 Regs reg. 5: an apprentice under 19 or in the first 12 months). Ages +under 16 are not checked: the Act does not cover workers of compulsory school +age, and the model gives them the under-18 rate. + +Properties: + +1. For every year from 2015 to the year of the latest dated rate, the value + for year Y equals the value in force on 30 April Y in the raw parameter + file, read without the fiscal-year conversion. +2. For every year from 2015 to 2040, no rate falls as age rises, and the + apprenticeship rate is never above the rate for any age from 16. +3. No rate falls from one year to the next, 2015 to 2040. This holds for + every rate set from October 2011 to April 2026; it is a property of the + enacted rates, not a rule in the Act, so a future cut would need this test + changing. + +Rates dated after the last row of ``RATES_FROM_COMMENCEMENT`` (for example +announced rates whose S.I. is not yet made) need a reference but are not +checked against the tables until a row is added for them. +""" + +import datetime +from pathlib import Path + +import numpy as np +import pytest +import yaml +from hypothesis import given, settings +from hypothesis import strategies as st + +from policyengine_uk import Simulation +from policyengine_uk.system import system + +PARAMETER_DIR = ( + Path(__file__).resolve().parent.parent + / "parameters" + / "gov" + / "hmrc" + / "minimum_wage" +) + +BANDS = ( + "apprentice", + "under_18", + "18_to_20", + "21_to_22", + "23_to_24", + "25_or_over", +) + +# Ages that fall in each non-apprentice band. +BAND_AGES = { + "under_18": (16, 17), + "18_to_20": (18, 19, 20), + "21_to_22": (21, 22), + "23_to_24": (23, 24), + "25_or_over": (25, 30, 64, 80), +} + +# (commencement date, S.I. and provisions, rates by band). Where an S.I. left a +# rate unchanged the row repeats the rate then in force. +RATES_FROM_COMMENCEMENT = [ + # 1999 Regs reg. 11 (21 and over) and reg. 13(3) (apprentices); the + # 18 to 20 and under 18 rates (reg. 13(1), (2)) stayed at the levels set + # by S.I. 2011/2345 reg. 5 from 1 October 2011. + ( + "2012-10-01", + "S.I. 2012/2397 reg. 2(2), 2(4)(a)", + (2.65, 3.68, 4.98, 6.19, 6.19, 6.19), + ), + ( + "2013-10-01", + "S.I. 2013/1975 reg. 2(2), 2(3)", + (2.68, 3.72, 5.03, 6.31, 6.31, 6.31), + ), + ("2014-10-01", "S.I. 2014/2485 reg. 3", (2.73, 3.79, 5.13, 6.50, 6.50, 6.50)), + # 2015 Regs reg. 4(1)(a) to (d). + ("2015-10-01", "S.I. 2015/1724 reg. 2(2)", (3.30, 3.87, 5.30, 6.70, 6.70, 6.70)), + # Substitutes reg. 4 (national living wage, 25 and over) and reg. 4A + # (21 to 24, 18 to 20, under 18, apprentices). + ("2016-04-01", "S.I. 2016/68 reg. 3", (3.30, 3.87, 5.30, 6.70, 6.70, 7.20)), + ("2016-10-01", "S.I. 2016/953 reg. 2(2)", (3.40, 4.00, 5.55, 6.95, 6.95, 7.20)), + ( + "2017-04-01", + "S.I. 2017/465 reg. 2(2), 2(3)", + (3.50, 4.05, 5.60, 7.05, 7.05, 7.50), + ), + ( + "2018-04-01", + "S.I. 2018/455 reg. 2(2), 2(3)", + (3.70, 4.20, 5.90, 7.38, 7.38, 7.83), + ), + ( + "2019-04-01", + "S.I. 2019/603 reg. 2(2), 2(3)", + (3.90, 4.35, 6.15, 7.70, 7.70, 8.21), + ), + ( + "2020-04-01", + "S.I. 2020/338 reg. 2(2), 2(3)", + (4.15, 4.55, 6.45, 8.20, 8.20, 8.72), + ), + # Reg. 2(3)(b): the reg. 4A(1)(a) band becomes 21 to 22. + ( + "2021-04-01", + "S.I. 2021/329 reg. 2(2), 2(3)", + (4.30, 4.62, 6.56, 8.36, 8.91, 8.91), + ), + ( + "2022-04-01", + "S.I. 2022/382 reg. 2(2), 2(3)", + (4.81, 4.81, 6.83, 9.18, 9.50, 9.50), + ), + ( + "2023-04-01", + "S.I. 2023/354 reg. 2(2), 2(3)", + (5.28, 5.28, 7.49, 10.18, 10.42, 10.42), + ), + # Reg. 2(3)(a) omits reg. 4A(1)(a): 21 and over get the national living wage. + ( + "2024-04-01", + "S.I. 2024/432 reg. 2(2), 2(3)", + (6.40, 6.40, 8.60, 11.44, 11.44, 11.44), + ), + ( + "2025-04-01", + "S.I. 2025/401 reg. 2(2), 2(3)", + (7.55, 7.55, 10.00, 12.21, 12.21, 12.21), + ), + ( + "2026-04-01", + "S.I. 2026/357 reg. 2(2), 2(3)", + (8.00, 8.00, 10.85, 12.71, 12.71, 12.71), + ), +] + +# Rates in force on 30 April of each year, and the S.I. that set them. +RATES_AT_30_APRIL = { + # 2015 Regs reg. 4(1) as made (in force 6 April 2015), carrying over the + # 1 October 2014 rates. + 2015: (2.73, 3.79, 5.13, 6.50, 6.50, 6.50), # S.I. 2015/621, S.I. 2014/2485 + 2016: (3.30, 3.87, 5.30, 6.70, 6.70, 7.20), # S.I. 2016/68 + 2017: (3.50, 4.05, 5.60, 7.05, 7.05, 7.50), # S.I. 2017/465 + 2018: (3.70, 4.20, 5.90, 7.38, 7.38, 7.83), # S.I. 2018/455 + 2019: (3.90, 4.35, 6.15, 7.70, 7.70, 8.21), # S.I. 2019/603 + 2020: (4.15, 4.55, 6.45, 8.20, 8.20, 8.72), # S.I. 2020/338 + 2021: (4.30, 4.62, 6.56, 8.36, 8.91, 8.91), # S.I. 2021/329 + 2022: (4.81, 4.81, 6.83, 9.18, 9.50, 9.50), # S.I. 2022/382 + 2023: (5.28, 5.28, 7.49, 10.18, 10.42, 10.42), # S.I. 2023/354 + 2024: (6.40, 6.40, 8.60, 11.44, 11.44, 11.44), # S.I. 2024/432 + 2025: (7.55, 7.55, 10.00, 12.21, 12.21, 12.21), # S.I. 2025/401 + 2026: (8.00, 8.00, 10.85, 12.71, 12.71, 12.71), # S.I. 2026/357 +} + +PROPERTY_YEARS = range(2015, 2041) +LAST_TRANSCRIBED = datetime.date.fromisoformat(RATES_FROM_COMMENCEMENT[-1][0]) + + +def _rates(row): + return dict(zip(BANDS, row)) + + +def _model_rate(year, age): + scale = system.parameters(str(year)).gov.hmrc.minimum_wage.non_apprentice + return float(scale.calc(np.array([age]))[0]) + + +def _model_apprentice_rate(year): + return float(system.parameters(str(year)).gov.hmrc.minimum_wage.apprentice) + + +def _load_raw(name): + return yaml.safe_load((PARAMETER_DIR / f"{name}.yaml").read_text()) + + +def _dated_values(values): + """Sorted (date, value) pairs from a raw parameter value mapping.""" + pairs = [] + for instant, entry in values.items(): + date = datetime.date.fromisoformat(str(instant)) + value = entry["value"] if isinstance(entry, dict) else entry + pairs.append((date, float(value))) + return sorted(pairs) + + +def _in_force(pairs, date): + applicable = [value for start, value in pairs if start <= date] + assert applicable, f"no value in force on {date}" + return applicable[-1] + + +RAW_APPRENTICE = _dated_values(_load_raw("apprentice")["values"]) +RAW_BRACKETS = [ + (_dated_values(bracket["threshold"]), _dated_values(bracket["amount"])) + for bracket in _load_raw("non_apprentice")["brackets"] +] +LATEST_DATED_YEAR = max( + start.year + for pairs in [ + RAW_APPRENTICE, + *(series for bracket in RAW_BRACKETS for series in bracket), + ] + for start, _ in pairs +) + + +def _raw_rate(date, age): + """The non-apprentice rate on a date, read straight from the YAML.""" + rate = None + for thresholds, amounts in RAW_BRACKETS: + if _in_force(thresholds, date) <= age: + rate = _in_force(amounts, date) + return rate + + +@pytest.mark.parametrize("year", sorted(RATES_AT_30_APRIL)) +def test_fiscal_year_rates_match_statutory_instruments(year): + expected = _rates(RATES_AT_30_APRIL[year]) + assert _model_apprentice_rate(year) == pytest.approx(expected["apprentice"]) + for band, ages in BAND_AGES.items(): + for age in ages: + assert _model_rate(year, age) == pytest.approx(expected[band]), ( + f"{year}, age {age} ({band})" + ) + + +def test_minimum_wage_variable_matches_statutory_instruments(): + years = sorted(RATES_AT_30_APRIL) + people = { + f"{band}_{age}": {"age": {str(year): age for year in years}} + for band, ages in BAND_AGES.items() + for age in ages + } + # The apprenticeship rate displaces the age rates (2015 Regs reg. 4A(2)). + # is_apprentice stands for "the apprenticeship rate applies" (reg. 5). + people["apprentice_19"] = { + "age": {str(year): 19 for year in years}, + "is_apprentice": {str(year): True for year in years}, + } + names = list(people) + sim = Simulation( + situation={ + "people": people, + "benunits": {f"b_{name}": {"members": [name]} for name in names}, + "households": {f"h_{name}": {"members": [name]} for name in names}, + } + ) + for year in years: + expected = _rates(RATES_AT_30_APRIL[year]) + actual = sim.calculate("minimum_wage", year) + for name, value in zip(names, actual): + band = ( + "apprentice" + if name.startswith("apprentice") + else name.rsplit("_", 1)[0] + ) + assert float(value) == pytest.approx(expected[band]), f"{year}, {name}" + + +@pytest.mark.parametrize( + "commencement, instrument, row", + RATES_FROM_COMMENCEMENT, + ids=[instrument for _, instrument, _ in RATES_FROM_COMMENCEMENT], +) +def test_parameter_files_match_each_instrument_from_commencement( + commencement, instrument, row +): + date = datetime.date.fromisoformat(commencement) + expected = _rates(row) + assert _in_force(RAW_APPRENTICE, date) == pytest.approx(expected["apprentice"]) + for band, ages in BAND_AGES.items(): + for age in ages: + assert _raw_rate(date, age) == pytest.approx(expected[band]), ( + f"{instrument}, age {age} ({band})" + ) + + +def test_parameter_files_change_only_on_commencement_dates(): + commencements = { + datetime.date.fromisoformat(date) for date, _, _ in RATES_FROM_COMMENCEMENT + } + series = [RAW_APPRENTICE] + for thresholds, amounts in RAW_BRACKETS: + series += [thresholds, amounts] + for pairs in series: + for start, _ in pairs: + if start <= LAST_TRANSCRIBED: + assert start in commencements, f"{start} is not a commencement date" + + +def test_30_april_table_agrees_with_commencement_table(): + for year, row in RATES_AT_30_APRIL.items(): + in_force = [ + rates + for date, _, rates in RATES_FROM_COMMENCEMENT + if datetime.date.fromisoformat(date) <= datetime.date(year, 4, 30) + ][-1] + assert row == in_force, year + + +@pytest.mark.parametrize("year", range(2015, LATEST_DATED_YEAR + 1)) +def test_fiscal_year_value_is_the_value_in_force_on_30_april(year): + date = datetime.date(year, 4, 30) + assert _model_apprentice_rate(year) == pytest.approx( + _in_force(RAW_APPRENTICE, date) + ) + for age in range(16, 101): + assert _model_rate(year, age) == pytest.approx(_raw_rate(date, age)), age + + +def test_every_rate_cites_a_statutory_instrument(): + entries = list(_load_raw("apprentice")["values"].items()) + for bracket in _load_raw("non_apprentice")["brackets"]: + entries += list(bracket["amount"].items()) + for instant, entry in entries: + assert isinstance(entry, dict), f"{instant} has no reference" + hrefs = [reference["href"] for reference in entry.get("reference", [])] + assert hrefs, f"{instant} has no reference" + if datetime.date.fromisoformat(str(instant)) <= LAST_TRANSCRIBED: + assert any( + href.startswith("https://www.legislation.gov.uk/uksi/") + for href in hrefs + ), f"{instant} does not cite an S.I." + + +PROPERTY_SETTINGS = settings(max_examples=300, deadline=None, derandomize=True) + + +@PROPERTY_SETTINGS +@given( + year=st.sampled_from(PROPERTY_YEARS), + younger=st.integers(16, 120), + older=st.integers(16, 120), +) +def test_rates_do_not_fall_with_age(year, younger, older): + younger, older = sorted((younger, older)) + assert _model_rate(year, younger) <= _model_rate(year, older) + assert _model_apprentice_rate(year) <= _model_rate(year, younger) + + +@PROPERTY_SETTINGS +@given(year=st.sampled_from(PROPERTY_YEARS[:-1]), age=st.integers(16, 120)) +def test_rates_do_not_fall_from_year_to_year(year, age): + assert _model_rate(year, age) <= _model_rate(year + 1, age) + assert _model_apprentice_rate(year) <= _model_apprentice_rate(year + 1)