diff --git a/changelog.d/1962.fixed.md b/changelog.d/1962.fixed.md new file mode 100644 index 0000000000..43b3dbf905 --- /dev/null +++ b/changelog.d/1962.fixed.md @@ -0,0 +1 @@ +Give Scotland's working-age council tax reduction scheme and the Welsh rules for persons who are not pensioners their own route: Universal Credit claimants are means-tested under each country's Universal Credit rules (Wales against the Universal Credit maximum amount; Scotland counting only the child and childcare elements), Income Support, income-based JSA and income-related ESA passport to the maximum reduction, applicable amounts include each country's personal allowances, child amounts, family premium and disabled child premiums (2013-14 to 2026-27), and income follows the law (Child Benefit disregarded, earnings disregards, tariff income from capital, and childcare charges capped by the number of children with charges, which Scotland deducts after adding unearned income). diff --git a/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/adult_premiums.yaml b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/adult_premiums.yaml new file mode 100644 index 0000000000..0e54ef0fcd --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/adult_premiums.yaml @@ -0,0 +1,544 @@ +description: Weekly adult premiums in the applicable amount of a working-age applicant under the Scotland + council tax reduction rules. +disability_premium: + description: Scotland working-age CTR disability premium. + single: + description: Weekly disability premium for a single applicant or lone parent. + values: + 2013-04-01: + value: 31.0 + reference: + - title: SSI 2013/48 reg 14(f)(i)(aa) + href: https://www.legislation.gov.uk/ssi/2013/48/regulation/14 + 2014-04-01: + value: 31.85 + reference: + - title: SSI 2014/35 reg 4(d)(i)(aa) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2015-04-01: + value: 32.25 + reference: + - title: SSI 2015/46 reg 9(c)(i)(aa) + href: https://www.legislation.gov.uk/ssi/2015/46/regulation/9 + 2017-04-01: + value: 32.55 + reference: + - title: SSI 2017/41 reg 10(a)(i) + href: https://www.legislation.gov.uk/ssi/2017/41/regulation/10 + 2018-04-01: + value: 33.55 + reference: + - title: SSI 2018/69 reg 9(a)(i)(aa) + href: https://www.legislation.gov.uk/ssi/2018/69/regulation/9 + 2019-04-01: + value: 34.35 + reference: + - title: SSI 2019/29 reg 5(a)(i)(aa) + href: https://www.legislation.gov.uk/ssi/2019/29/regulation/5 + 2020-04-01: + value: 34.95 + reference: + - title: SSI 2020/25 reg 8(c)(i)(aa) + href: https://www.legislation.gov.uk/ssi/2020/25/regulation/8 + 2021-04-01: + value: 35.1 + reference: + - title: SSI 2021/51 reg 7(c)(i)(aa) + href: https://www.legislation.gov.uk/ssi/2021/51/regulation/7 + 2022-04-01: + value: 36.2 + reference: + - title: SSI 2022/52 reg 25(c)(iii)(aa) + href: https://www.legislation.gov.uk/ssi/2022/52/regulation/25/made + 2023-04-01: + value: 39.85 + reference: + - title: SSI 2023/38 reg 20(i)(iii)(aa) + href: https://www.legislation.gov.uk/ssi/2023/38/regulation/20 + 2024-04-01: + value: 42.5 + reference: + - title: SSI 2024/35 reg 17(i)(iii)(aa) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/17 + 2025-04-01: + value: 43.2 + reference: + - title: SSI 2025/24 reg 16(i)(iii)(aa) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/16 + 2026-04-01: + value: 44.85 + reference: + - title: SSI 2026/56 reg 14(i)(iii)(aa) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + metadata: + label: Scotland working-age CTR disability premium, single + unit: currency-GBP + period: week + uprating: gov.benefit_uprating_cpi + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 1 paras. 5 and 11-17 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1 + couple: + description: Weekly disability premium for a couple. + values: + 2013-04-01: + value: 44.2 + reference: + - title: SSI 2013/48 reg 14(f)(i)(bb) + href: https://www.legislation.gov.uk/ssi/2013/48/regulation/14 + 2014-04-01: + value: 45.4 + reference: + - title: SSI 2014/35 reg 4(d)(i)(bb) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2015-04-01: + value: 45.95 + reference: + - title: SSI 2015/46 reg 9(c)(i)(bb) + href: https://www.legislation.gov.uk/ssi/2015/46/regulation/9 + 2017-04-01: + value: 46.4 + reference: + - title: SSI 2017/41 reg 10(a)(ii) + href: https://www.legislation.gov.uk/ssi/2017/41/regulation/10 + 2018-04-01: + value: 47.8 + reference: + - title: SSI 2018/69 reg 9(a)(i)(bb) + href: https://www.legislation.gov.uk/ssi/2018/69/regulation/9 + 2019-04-01: + value: 48.95 + reference: + - title: SSI 2019/29 reg 5(a)(i)(bb) + href: https://www.legislation.gov.uk/ssi/2019/29/regulation/5 + 2020-04-01: + value: 49.8 + reference: + - title: SSI 2020/25 reg 8(c)(i)(bb) + href: https://www.legislation.gov.uk/ssi/2020/25/regulation/8 + 2021-04-01: + value: 50.05 + reference: + - title: SSI 2021/51 reg 7(c)(i)(bb) + href: https://www.legislation.gov.uk/ssi/2021/51/regulation/7 + 2022-04-01: + value: 51.6 + reference: + - title: SSI 2022/52 reg 25(c)(iii)(bb) + href: https://www.legislation.gov.uk/ssi/2022/52/regulation/25/made + 2023-04-01: + value: 56.8 + reference: + - title: SSI 2023/38 reg 20(i)(iii)(bb) + href: https://www.legislation.gov.uk/ssi/2023/38/regulation/20 + 2024-04-01: + value: 60.6 + reference: + - title: SSI 2024/35 reg 17(i)(iii)(bb) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/17 + 2025-04-01: + value: 61.65 + reference: + - title: SSI 2025/24 reg 16(i)(iii)(bb) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/16 + 2026-04-01: + value: 64.0 + reference: + - title: SSI 2026/56 reg 14(i)(iii)(bb) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + metadata: + label: Scotland working-age CTR disability premium, couple + unit: currency-GBP + period: week + uprating: gov.benefit_uprating_cpi + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 1 paras. 5 and 11-17 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1 +severe_disability_premium: + description: Scotland working-age CTR severe disability premium. + single: + description: Weekly severe disability premium where one person qualifies, or where someone is paid + a carer benefit for caring for a member of the couple. + values: + 2013-04-01: + value: 59.5 + reference: + - title: SSI 2013/48 reg 14(f)(ii)(aa) + href: https://www.legislation.gov.uk/ssi/2013/48/regulation/14 + 2014-04-01: + value: 61.1 + reference: + - title: SSI 2014/35 reg 4(d)(ii)(aa) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2015-04-01: + value: 61.85 + reference: + - title: SSI 2015/46 reg 9(c)(ii)(aa) + href: https://www.legislation.gov.uk/ssi/2015/46/regulation/9 + 2017-04-01: + value: 62.45 + reference: + - title: SSI 2017/41 reg 10(a)(iii) + href: https://www.legislation.gov.uk/ssi/2017/41/regulation/10 + 2018-04-01: + value: 64.3 + reference: + - title: SSI 2018/69 reg 9(a)(ii)(aa) + href: https://www.legislation.gov.uk/ssi/2018/69/regulation/9 + 2019-04-01: + value: 65.85 + reference: + - title: SSI 2019/29 reg 5(a)(ii)(aa) + href: https://www.legislation.gov.uk/ssi/2019/29/regulation/5 + 2020-04-01: + value: 66.95 + reference: + - title: SSI 2020/25 reg 8(c)(ii)(aa) + href: https://www.legislation.gov.uk/ssi/2020/25/regulation/8 + 2021-04-01: + value: 67.3 + reference: + - title: SSI 2021/51 reg 7(c)(ii)(aa) + href: https://www.legislation.gov.uk/ssi/2021/51/regulation/7 + 2022-04-01: + value: 69.4 + reference: + - title: SSI 2022/52 reg 25(c)(iv)(aa) + href: https://www.legislation.gov.uk/ssi/2022/52/regulation/25/made + 2023-04-01: + value: 76.4 + reference: + - title: SSI 2023/38 reg 20(i)(iv)(aa) + href: https://www.legislation.gov.uk/ssi/2023/38/regulation/20 + 2024-04-01: + value: 81.5 + reference: + - title: SSI 2024/35 reg 17(i)(iv)(aa) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/17 + 2025-04-01: + value: 82.9 + reference: + - title: SSI 2025/24 reg 16(i)(iv)(aa) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/16 + 2026-04-01: + value: 86.05 + reference: + - title: SSI 2026/56 reg 14(i)(iv)(aa) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + metadata: + label: Scotland working-age CTR severe disability premium, single + unit: currency-GBP + period: week + uprating: gov.benefit_uprating_cpi + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 1 paras. 5 and 11-17 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1 + couple: + description: Weekly severe disability premium for a couple who both qualify and for whom no one is + paid a carer benefit. + values: + 2013-04-01: + value: 119.0 + reference: + - title: SSI 2013/48 reg 14(f)(ii)(bb) + href: https://www.legislation.gov.uk/ssi/2013/48/regulation/14 + 2014-04-01: + value: 122.2 + reference: + - title: SSI 2014/35 reg 4(d)(ii)(bb) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2015-04-01: + value: 123.7 + reference: + - title: SSI 2015/46 reg 9(c)(ii)(bb) + href: https://www.legislation.gov.uk/ssi/2015/46/regulation/9 + 2017-04-01: + value: 124.9 + reference: + - title: SSI 2017/41 reg 10(a)(iv) + href: https://www.legislation.gov.uk/ssi/2017/41/regulation/10 + 2018-04-01: + value: 128.6 + reference: + - title: SSI 2018/69 reg 9(a)(ii)(bb) + href: https://www.legislation.gov.uk/ssi/2018/69/regulation/9 + 2019-04-01: + value: 131.7 + reference: + - title: SSI 2019/29 reg 5(a)(ii)(bb) + href: https://www.legislation.gov.uk/ssi/2019/29/regulation/5 + 2020-04-01: + value: 133.9 + reference: + - title: SSI 2020/25 reg 8(c)(ii)(bb) + href: https://www.legislation.gov.uk/ssi/2020/25/regulation/8 + 2021-04-01: + value: 134.6 + reference: + - title: SSI 2021/51 reg 7(c)(ii)(bb) + href: https://www.legislation.gov.uk/ssi/2021/51/regulation/7 + 2022-04-01: + value: 138.8 + reference: + - title: SSI 2022/52 reg 25(c)(iv)(bb) + href: https://www.legislation.gov.uk/ssi/2022/52/regulation/25/made + 2023-04-01: + value: 152.8 + reference: + - title: SSI 2023/38 reg 20(i)(iv)(bb) + href: https://www.legislation.gov.uk/ssi/2023/38/regulation/20 + 2024-04-01: + value: 163.0 + reference: + - title: SSI 2024/35 reg 17(i)(iv)(bb) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/17 + 2025-04-01: + value: 165.8 + reference: + - title: SSI 2025/24 reg 16(i)(iv)(bb) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/16 + 2026-04-01: + value: 172.1 + reference: + - title: SSI 2026/56 reg 14(i)(iv)(bb) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + metadata: + label: Scotland working-age CTR severe disability premium, couple + unit: currency-GBP + period: week + uprating: gov.benefit_uprating_cpi + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 1 paras. 5 and 11-17 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1 +enhanced_disability_premium: + description: Scotland working-age CTR enhanced disability premium. + single: + description: Weekly enhanced disability premium for a single applicant or lone parent. + values: + 2013-04-01: + value: 15.15 + reference: + - title: SSI 2013/48 reg 14(f)(v)(bb) + href: https://www.legislation.gov.uk/ssi/2013/48/regulation/14 + 2014-04-01: + value: 15.55 + reference: + - title: SSI 2014/35 reg 4(d)(v)(bb) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2015-04-01: + value: 15.75 + reference: + - title: SSI 2015/46 reg 9(c)(v)(bb) + href: https://www.legislation.gov.uk/ssi/2015/46/regulation/9 + 2017-04-01: + value: 15.9 + reference: + - title: SSI 2017/41 reg 10(a)(viii) + href: https://www.legislation.gov.uk/ssi/2017/41/regulation/10 + 2018-04-01: + value: 16.4 + reference: + - title: SSI 2018/69 reg 9(a)(v)(bb) + href: https://www.legislation.gov.uk/ssi/2018/69/regulation/9 + 2019-04-01: + value: 16.8 + reference: + - title: SSI 2019/29 reg 5(a)(v)(bb) + href: https://www.legislation.gov.uk/ssi/2019/29/regulation/5 + 2020-04-01: + value: 17.1 + reference: + - title: SSI 2020/25 reg 8(c)(v)(bb) + href: https://www.legislation.gov.uk/ssi/2020/25/regulation/8 + 2021-04-01: + value: 17.2 + reference: + - title: SSI 2021/51 reg 7(c)(v)(bb) + href: https://www.legislation.gov.uk/ssi/2021/51/regulation/7 + 2022-04-01: + value: 17.75 + reference: + - title: SSI 2022/52 reg 25(c)(v)(bb) + href: https://www.legislation.gov.uk/ssi/2022/52/regulation/25/made + 2023-04-01: + value: 19.55 + reference: + - title: SSI 2023/38 reg 20(i)(v)(bb) + href: https://www.legislation.gov.uk/ssi/2023/38/regulation/20 + 2024-04-01: + value: 20.85 + reference: + - title: SSI 2024/35 reg 17(i)(v)(bb) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/17 + 2025-04-01: + value: 21.2 + reference: + - title: SSI 2025/24 reg 16(i)(v)(bb) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/16 + 2026-04-01: + value: 22.0 + reference: + - title: SSI 2026/56 reg 14(i)(v)(bb) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + metadata: + label: Scotland working-age CTR enhanced disability premium, single + unit: currency-GBP + period: week + uprating: gov.benefit_uprating_cpi + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 1 paras. 5 and 11-17 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1 + couple: + description: Weekly enhanced disability premium for a couple. + values: + 2013-04-01: + value: 21.75 + reference: + - title: SSI 2013/48 reg 14(f)(v)(cc) + href: https://www.legislation.gov.uk/ssi/2013/48/regulation/14 + 2014-04-01: + value: 22.35 + reference: + - title: SSI 2014/35 reg 4(d)(v)(cc) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2015-04-01: + value: 22.6 + reference: + - title: SSI 2015/46 reg 9(c)(v)(cc) + href: https://www.legislation.gov.uk/ssi/2015/46/regulation/9 + 2017-04-01: + value: 22.85 + reference: + - title: SSI 2017/41 reg 10(a)(ix) + href: https://www.legislation.gov.uk/ssi/2017/41/regulation/10 + 2018-04-01: + value: 23.55 + reference: + - title: SSI 2018/69 reg 9(a)(v)(cc) + href: https://www.legislation.gov.uk/ssi/2018/69/regulation/9 + 2019-04-01: + value: 24.1 + reference: + - title: SSI 2019/29 reg 5(a)(v)(cc) + href: https://www.legislation.gov.uk/ssi/2019/29/regulation/5 + 2020-04-01: + value: 24.5 + reference: + - title: SSI 2020/25 reg 8(c)(v)(cc) + href: https://www.legislation.gov.uk/ssi/2020/25/regulation/8 + 2021-04-01: + value: 24.6 + reference: + - title: SSI 2021/51 reg 7(c)(v)(cc) + href: https://www.legislation.gov.uk/ssi/2021/51/regulation/7 + 2022-04-01: + value: 25.35 + reference: + - title: SSI 2022/52 reg 25(c)(v)(cc) + href: https://www.legislation.gov.uk/ssi/2022/52/regulation/25/made + 2023-04-01: + value: 27.9 + reference: + - title: SSI 2023/38 reg 20(i)(v)(cc) + href: https://www.legislation.gov.uk/ssi/2023/38/regulation/20 + 2024-04-01: + value: 29.75 + reference: + - title: SSI 2024/35 reg 17(i)(v)(cc) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/17 + 2025-04-01: + value: 30.25 + reference: + - title: SSI 2025/24 reg 16(i)(v)(cc) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/16 + 2026-04-01: + value: 31.4 + reference: + - title: SSI 2026/56 reg 14(i)(v)(cc) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + metadata: + label: Scotland working-age CTR enhanced disability premium, couple + unit: currency-GBP + period: week + uprating: gov.benefit_uprating_cpi + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 1 paras. 5 and 11-17 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1 +carer_premium: + description: Weekly carer premium for each claimant or partner who qualifies. + values: + 2013-04-01: + value: 33.3 + reference: + - title: SSI 2013/48 reg 14(f)(iv) + href: https://www.legislation.gov.uk/ssi/2013/48/regulation/14 + 2014-04-01: + value: 34.2 + reference: + - title: SSI 2014/35 reg 4(d)(iv) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2015-04-01: + value: 34.6 + reference: + - title: SSI 2015/46 reg 9(c)(iv) + href: https://www.legislation.gov.uk/ssi/2015/46/regulation/9 + 2017-04-01: + value: 34.95 + reference: + - title: SSI 2017/41 reg 10(a)(vi) + href: https://www.legislation.gov.uk/ssi/2017/41/regulation/10 + 2018-04-01: + value: 36.0 + reference: + - title: SSI 2018/69 reg 9(a)(iv) + href: https://www.legislation.gov.uk/ssi/2018/69/regulation/9 + 2019-04-01: + value: 36.85 + reference: + - title: SSI 2019/29 reg 5(a)(iv) + href: https://www.legislation.gov.uk/ssi/2019/29/regulation/5 + 2020-04-01: + value: 37.5 + reference: + - title: SSI 2020/25 reg 8(c)(iv) + href: https://www.legislation.gov.uk/ssi/2020/25/regulation/8 + 2021-04-01: + value: 37.7 + reference: + - title: SSI 2021/51 reg 7(c)(iv) + href: https://www.legislation.gov.uk/ssi/2021/51/regulation/7 + 2022-04-01: + value: 38.85 + reference: + - title: SSI 2022/52 reg 25(c)(ii) + href: https://www.legislation.gov.uk/ssi/2022/52/regulation/25/made + 2023-04-01: + value: 42.75 + reference: + - title: SSI 2023/38 reg 20(i)(ii) + href: https://www.legislation.gov.uk/ssi/2023/38/regulation/20 + 2024-04-01: + value: 45.6 + reference: + - title: SSI 2024/35 reg 17(i)(ii) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/17 + 2025-04-01: + value: 46.4 + reference: + - title: SSI 2025/24 reg 16(i)(ii) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/16 + 2026-04-01: + value: 48.15 + reference: + - title: SSI 2026/56 reg 14(i)(ii) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + metadata: + label: Scotland working-age CTR carer premium + unit: currency-GBP + period: week + uprating: gov.benefit_uprating_cpi + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 1 paras. 5 and 11-17 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1 +metadata: + label: Scotland working-age CTR adult premiums diff --git a/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/child_enhanced_disability_premium.yaml b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/child_enhanced_disability_premium.yaml new file mode 100644 index 0000000000..85c798a191 --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/child_enhanced_disability_premium.yaml @@ -0,0 +1,79 @@ +description: Weekly enhanced disability premium for each child or young person in a working-age applicant's + family who gets the highest rate of the care component of disability living allowance or the enhanced + daily living component of personal independence payment, under the Scottish council tax reduction scheme. +values: + 2013-04-01: + value: 23.45 + reference: + - title: SSI 2013/48 reg 14(f)(v)(aa) + href: https://www.legislation.gov.uk/ssi/2013/48/regulation/14 + 2014-04-01: + value: 24.08 + reference: + - title: SSI 2014/35 reg 4(d)(v)(aa) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2015-04-01: + value: 24.43 + reference: + - title: SSI 2015/46 reg 9(c)(v)(aa) + href: https://www.legislation.gov.uk/ssi/2015/46/regulation/9 + 2017-04-01: + value: 24.78 + reference: + - title: SSI 2017/41 reg 10(a)(vii) + href: https://www.legislation.gov.uk/ssi/2017/41/regulation/10 + 2018-04-01: + value: 25.48 + reference: + - title: SSI 2018/69 reg 9(a)(v)(aa) + href: https://www.legislation.gov.uk/ssi/2018/69/regulation/9 + 2019-04-01: + value: 26.04 + reference: + - title: SSI 2019/29 reg 5(a)(v)(aa) + href: https://www.legislation.gov.uk/ssi/2019/29/regulation/5 + 2020-04-01: + value: 26.6 + reference: + - title: SSI 2020/25 reg 8(c)(v)(aa) + href: https://www.legislation.gov.uk/ssi/2020/25/regulation/8 + 2021-04-01: + value: 26.67 + reference: + - title: SSI 2021/51 reg 7(c)(v)(aa) + href: https://www.legislation.gov.uk/ssi/2021/51/regulation/7 + 2022-04-01: + value: 27.44 + reference: + - title: SSI 2022/52 reg 25(c)(v)(aa) + href: https://www.legislation.gov.uk/ssi/2022/52/regulation/25/made + 2023-04-01: + value: 30.17 + reference: + - title: SSI 2023/38 reg 20(i)(v)(aa) + href: https://www.legislation.gov.uk/ssi/2023/38/regulation/20 + 2024-04-01: + value: 32.2 + reference: + - title: SSI 2024/35 reg 17(i)(v)(aa) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/17 + 2025-04-01: + value: 32.75 + reference: + - title: SSI 2025/24 reg 16(i)(v)(aa) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/16 + 2026-04-01: + value: 33.99 + reference: + - title: SSI 2026/56 reg 14(i)(v)(aa) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 +metadata: + label: Scotland working-age CTR child enhanced disability premium + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 1 paras. 3(b), 4(b) and 17 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1 + - title: The Council Tax Reduction (Scotland) Amendment Regulations 2026 reg. 14(i)(v) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + uprating: gov.benefit_uprating_cpi diff --git a/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/child_premium.yaml b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/child_premium.yaml new file mode 100644 index 0000000000..25c64fb4ff --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/child_premium.yaml @@ -0,0 +1,69 @@ +description: Weekly child premium for each child or young person in a working-age applicant's family under + the Scottish council tax reduction scheme. Scotland raised it 25% above the Housing Benefit child allowance + from 1 April 2017. +values: + 2013-04-01: + value: 65.62 + reference: + - title: SSI 2013/48 reg 14(c) + href: https://www.legislation.gov.uk/ssi/2013/48/regulation/14 + 2014-04-01: + value: 66.33 + reference: + - title: SSI 2014/35 reg 4(b) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2015-04-01: + value: 66.9 + reference: + - title: SSI 2015/46 reg 9(b) + href: https://www.legislation.gov.uk/ssi/2015/46/regulation/9 + 2017-04-01: + value: 83.63 + reference: + - title: SSI 2016/253 reg 8 + href: https://www.legislation.gov.uk/ssi/2016/253/regulation/8 + 2020-04-01: + value: 85.34 + reference: + - title: SSI 2020/25 reg 8(b) + href: https://www.legislation.gov.uk/ssi/2020/25/regulation/8 + 2021-04-01: + value: 85.75 + reference: + - title: SSI 2021/51 reg 7(b) + href: https://www.legislation.gov.uk/ssi/2021/51/regulation/7 + 2022-04-01: + value: 88.5 + reference: + - title: SSI 2022/52 reg 25(b) + href: https://www.legislation.gov.uk/ssi/2022/52/regulation/25/made + 2023-04-01: + value: 97.23 + reference: + - title: SSI 2023/38 reg 20(b) + href: https://www.legislation.gov.uk/ssi/2023/38/regulation/20 + 2024-04-01: + value: 104.05 + reference: + - title: SSI 2024/35 reg 17(b) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/17 + 2025-04-01: + value: 105.85 + reference: + - title: SSI 2025/24 reg 16(b) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/16 + 2026-04-01: + value: 109.85 + reference: + - title: SSI 2026/56 reg 14(b) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 +metadata: + label: Scotland working-age CTR child premium + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 reg. 35(b) and Sch. 1 para. 2 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1/paragraph/2 + - title: The Council Tax Reduction (Scotland) Amendment Regulations 2026 reg. 14(b) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + uprating: gov.benefit_uprating_cpi diff --git a/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/childcare.yaml b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/childcare.yaml new file mode 100644 index 0000000000..cec753c693 --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/childcare.yaml @@ -0,0 +1,119 @@ +description: Weekly caps on the relevant childcare charges deducted from a working-age applicant's income + under the Scottish council tax reduction scheme. +maximum_one_child: + description: Weekly cap on relevant childcare charges for an applicant without Universal Credit whose + family has one child with charges. + values: + 2013-04-01: 175 + metadata: + label: Scotland working-age CTR childcare cap, one child + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 reg. 38(4)(a) + href: https://www.legislation.gov.uk/ssi/2021/249/regulation/38 +maximum_two_or_more_children: + description: Weekly cap on relevant childcare charges for an applicant without Universal Credit whose + family has more than one child with charges. + values: + 2013-04-01: 300 + metadata: + label: Scotland working-age CTR childcare cap, two or more children + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 reg. 38(4)(b) + href: https://www.legislation.gov.uk/ssi/2021/249/regulation/38 +universal_credit_maximum_one_child: + description: Weekly cap on relevant childcare charges for an applicant with Universal Credit whose family + has one child with charges. + values: + 2022-04-01: + value: 175.0 + reference: + - title: SSI 2021/249 reg 42(4)(a) as made + href: https://www.legislation.gov.uk/ssi/2021/249/regulation/42/made + 2023-06-28: + value: 258.0 + reference: + - title: SSI 2023/197 reg 2(2)(a) + href: https://www.legislation.gov.uk/ssi/2023/197/regulation/2 + 2024-04-01: + value: 275.0 + reference: + - title: SSI 2024/35 reg 14(a) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/14 + 2025-04-01: + value: 280.0 + reference: + - title: SSI 2025/24 reg 13(a) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/13 + 2026-04-01: + value: 290.0 + reference: + - title: SSI 2026/56 reg 11(a) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/11 + metadata: + label: Scotland working-age CTR UC childcare cap, one child + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 reg. 42(4)(a) + href: https://www.legislation.gov.uk/ssi/2021/249/regulation/42 + - title: The Council Tax Reduction (Scotland) Amendment Regulations 2026 reg. 11(a) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/11 + uprating: gov.benefit_uprating_cpi +universal_credit_maximum_two_or_more_children: + description: Weekly cap on relevant childcare charges for an applicant with Universal Credit whose family + has more than one child with charges. + values: + 2022-04-01: + value: 300.0 + reference: + - title: SSI 2021/249 reg 42(4)(b) as made + href: https://www.legislation.gov.uk/ssi/2021/249/regulation/42/made + 2023-06-28: + value: 442.0 + reference: + - title: SSI 2023/197 reg 2(2)(b) + href: https://www.legislation.gov.uk/ssi/2023/197/regulation/2 + 2024-04-01: + value: 471.0 + reference: + - title: SSI 2024/35 reg 14(b) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/14 + 2025-04-01: + value: 479.0 + reference: + - title: SSI 2025/24 reg 13(b) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/13 + 2026-04-01: + value: 497.0 + reference: + - title: SSI 2026/56 reg 11(b) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/11 + metadata: + label: Scotland working-age CTR UC childcare cap, two or more children + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 reg. 42(4)(b) + href: https://www.legislation.gov.uk/ssi/2021/249/regulation/42 + - title: The Council Tax Reduction (Scotland) Amendment Regulations 2026 reg. 11(b) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/11 + uprating: gov.benefit_uprating_cpi +universal_credit_costs_covered: + description: Share of childcare costs that the Universal Credit childcare costs element covers. Relevant + childcare charges of an applicant with Universal Credit are the childcare costs element divided by + this share. + values: + 2013-04-01: 0.85 + metadata: + label: Scotland working-age CTR UC childcare costs element share + unit: /1 + period: year + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 reg. 78(3) + href: https://www.legislation.gov.uk/ssi/2021/249/regulation/78 +metadata: + label: Scotland working-age CTR childcare charges diff --git a/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/disabled_child_premium.yaml b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/disabled_child_premium.yaml new file mode 100644 index 0000000000..4fb826763e --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/disabled_child_premium.yaml @@ -0,0 +1,79 @@ +description: Weekly disabled child premium for each disabled child or young person in a working-age applicant's + family under the Scottish council tax reduction scheme. +values: + 2013-04-01: + value: 57.89 + reference: + - title: SSI 2013/48 reg 14(f)(iii) + href: https://www.legislation.gov.uk/ssi/2013/48/regulation/14 + 2014-04-01: + value: 59.5 + reference: + - title: SSI 2014/35 reg 4(d)(iii) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2015-04-01: + value: 60.06 + reference: + - title: SSI 2015/46 reg 9(c)(iii) + href: https://www.legislation.gov.uk/ssi/2015/46/regulation/9 + 2017-04-01: + value: 60.9 + reference: + - title: SSI 2017/41 reg 10(a)(v) + href: https://www.legislation.gov.uk/ssi/2017/41/regulation/10 + 2018-04-01: + value: 62.86 + reference: + - title: SSI 2018/69 reg 9(a)(iii) + href: https://www.legislation.gov.uk/ssi/2018/69/regulation/9 + 2019-04-01: + value: 64.19 + reference: + - title: SSI 2019/29 reg 5(a)(iii) + href: https://www.legislation.gov.uk/ssi/2019/29/regulation/5 + 2020-04-01: + value: 65.52 + reference: + - title: SSI 2020/25 reg 8(c)(iii) + href: https://www.legislation.gov.uk/ssi/2020/25/regulation/8 + 2021-04-01: + value: 65.94 + reference: + - title: SSI 2021/51 reg 7(c)(iii) + href: https://www.legislation.gov.uk/ssi/2021/51/regulation/7 + 2022-04-01: + value: 68.04 + reference: + - title: SSI 2022/52 reg 25(c)(i) + href: https://www.legislation.gov.uk/ssi/2022/52/regulation/25/made + 2023-04-01: + value: 74.69 + reference: + - title: SSI 2023/38 reg 20(i)(i) + href: https://www.legislation.gov.uk/ssi/2023/38/regulation/20 + 2024-04-01: + value: 80.01 + reference: + - title: SSI 2024/35 reg 17(i)(i) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/17 + 2025-04-01: + value: 81.37 + reference: + - title: SSI 2025/24 reg 16(i)(i) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/16 + 2026-04-01: + value: 84.46 + reference: + - title: SSI 2026/56 reg 14(i)(i) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 +metadata: + label: Scotland working-age CTR disabled child premium + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 reg. 35(c) and Sch. 1 paras. 3, 4 and + 17 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1 + - title: The Council Tax Reduction (Scotland) Amendment Regulations 2026 reg. 14(c)-(g), (i) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + uprating: gov.benefit_uprating_cpi diff --git a/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/earnings_disregard.yaml b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/earnings_disregard.yaml new file mode 100644 index 0000000000..ce5766be2c --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/earnings_disregard.yaml @@ -0,0 +1,105 @@ +description: Weekly earnings disregards for working-age applicants under the Scottish council tax reduction scheme. +single: + description: Weekly earnings disregard for a single applicant to whom no other disregard applies. + values: + 2013-04-01: 5 + metadata: + label: Scotland working-age CTR earnings disregard, single + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 3 para. 11 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/3 +couple: + description: Weekly earnings disregard for a couple, a member of which is in employment, to whom no higher disregard applies. + values: + 2013-04-01: 10 + metadata: + label: Scotland working-age CTR earnings disregard, couple + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 3 para. 8 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/3 +lone_parent: + description: Weekly earnings disregard for a lone parent. + values: + 2013-04-01: 25 + metadata: + label: Scotland working-age CTR earnings disregard, lone parent + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 3 para. 5 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/3 +disability_or_carer: + description: Weekly earnings disregard where the applicable amount includes a disability premium, severe disability premium or carer premium. + values: + 2013-04-01: 20 + metadata: + label: Scotland working-age CTR earnings disregard, disability or carer + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 3 paras. 4 and 6 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/3 +additional: + description: Additional weekly earnings disregard for applicants without Universal Credit who meet a work condition. + values: + 2013-04-01: 17.10 + metadata: + label: Scotland working-age CTR additional earnings disregard + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 3 para. 15 + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/3 +additional_full_time_hours: + description: Weekly hours of remunerative work from which an applicant aged 25 or over qualifies for the additional earnings disregard. + values: + 2013-04-01: 30 + metadata: + label: Scotland working-age CTR additional earnings disregard full-time hours + unit: hour + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 3 para. 15(2) + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/3 +additional_full_time_age: + description: Age from which an applicant working the full-time hours qualifies for the additional earnings disregard. + values: + 2013-04-01: 25 + metadata: + label: Scotland working-age CTR additional earnings disregard full-time age + unit: year + period: year + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 3 para. 15(2) + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/3 +additional_employed_earnings_only: + description: Whether the additional earnings disregard depends on employed earnings only (1) rather than all net earnings (0). From 1 April 2022 it applies where earnings are calculated under regulation 50 (employed earnings) and the employed earnings cover the other disregards, childcare charges and the additional amount. + values: + 2013-04-01: 0 + 2022-04-01: 1 + metadata: + label: Scotland working-age CTR additional disregard on employed earnings only + unit: bool + period: year + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 3 para. 15(1) + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/3 + - title: The Council Tax Reduction (Scotland) Regulations 2012 Sch. 3 para. 18(1) (net earnings, before 1 April 2022) + href: https://www.legislation.gov.uk/ssi/2012/303/schedule/3 +remunerative_work_hours: + description: Weekly hours from which a person is in remunerative work. + values: + 2013-04-01: 16 + metadata: + label: Scotland working-age CTR remunerative work hours + unit: hour + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 reg. 10(1) + href: https://www.legislation.gov.uk/ssi/2021/249/regulation/10 +metadata: + label: Scotland working-age CTR earnings disregards diff --git a/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/family_premium.yaml b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/family_premium.yaml new file mode 100644 index 0000000000..503cb981c7 --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/family_premium.yaml @@ -0,0 +1,21 @@ +description: Weekly family premium for a working-age applicant whose family includes a child or young person under the Scottish council tax reduction scheme. It was removed for new claims from 1 May 2016; families with an unbroken claim since then keep it as a transitional family premium, which the model does not track, so the model gives it to no one after that date. +values: + 2013-04-01: + value: 17.40 + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2012 Sch. 1 para. 4(1)(b) + href: https://www.legislation.gov.uk/ssi/2012/303/schedule/1/paragraph/4/made + 2014-04-01: + value: 17.45 + reference: + - title: SSI 2014/35 reg 4(c) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2016-05-01: + value: 0 + reference: + - title: The Council Tax Reduction (Scotland) Amendment Regulations 2016 (SSI 2016/81) regs. 2 and 5 + href: https://www.legislation.gov.uk/ssi/2016/81/regulation/5 +metadata: + label: Scotland working-age CTR family premium + unit: currency-GBP + period: week diff --git a/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/personal_allowance.yaml b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/personal_allowance.yaml new file mode 100644 index 0000000000..a0a314701d --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/scotland/council_tax_reduction/working_age/personal_allowance.yaml @@ -0,0 +1,269 @@ +description: Weekly personal allowances in the applicable amount of a working-age applicant under the + Scottish council tax reduction scheme. +single_under_25: + description: Weekly personal allowance for a single applicant aged under 25 with no child premium. + values: + 2013-04-01: + value: 56.8 + reference: + - title: SSI 2013/48 reg 14(a)(ii) + href: https://www.legislation.gov.uk/ssi/2013/48/regulation/14 + 2014-04-01: + value: 57.35 + reference: + - title: SSI 2014/35 reg 4(a)(ii) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2015-04-01: + value: 57.9 + reference: + - title: SSI 2015/46 reg 9(a)(ii) + href: https://www.legislation.gov.uk/ssi/2015/46/regulation/9 + 2020-04-01: + value: 58.9 + reference: + - title: SSI 2020/25 reg 8(a)(ii) + href: https://www.legislation.gov.uk/ssi/2020/25/regulation/8 + 2021-04-01: + value: 59.2 + reference: + - title: SSI 2021/51 reg 7(a)(ii) + href: https://www.legislation.gov.uk/ssi/2021/51/regulation/7 + 2022-04-01: + value: 61.05 + reference: + - title: SSI 2022/52 reg 25(a)(ii) + href: https://www.legislation.gov.uk/ssi/2022/52/regulation/25/made + 2023-04-01: + value: 67.2 + reference: + - title: SSI 2023/38 reg 20(a)(ii) + href: https://www.legislation.gov.uk/ssi/2023/38/regulation/20 + 2024-04-01: + value: 71.7 + reference: + - title: SSI 2024/35 reg 17(a)(i) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/17 + 2025-04-01: + value: 72.9 + reference: + - title: SSI 2025/24 reg 16(a)(i) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/16 + 2026-04-01: + value: 75.65 + reference: + - title: SSI 2026/56 reg 14(a)(i) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + metadata: + label: Scotland working-age CTR personal allowance, single under 25 + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 1 para. 1(1) + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1/paragraph/1 + - title: The Council Tax Reduction (Scotland) Amendment Regulations 2026 reg. 14(a)(i) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + uprating: gov.benefit_uprating_cpi +single_25_or_over: + description: Weekly personal allowance for a single applicant aged 25 or over, or a single applicant + of any age entitled to main phase employment and support allowance or with an award of Universal Credit + and limited capability for work. + values: + 2013-04-01: + value: 71.7 + reference: + - title: SSI 2013/48 reg 14(a)(i) + href: https://www.legislation.gov.uk/ssi/2013/48/regulation/14 + 2014-04-01: + value: 72.4 + reference: + - title: SSI 2014/35 reg 4(a)(i) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2015-04-01: + value: 73.1 + reference: + - title: SSI 2015/46 reg 9(a)(i) + href: https://www.legislation.gov.uk/ssi/2015/46/regulation/9 + 2020-04-01: + value: 74.35 + reference: + - title: SSI 2020/25 reg 8(a)(i) + href: https://www.legislation.gov.uk/ssi/2020/25/regulation/8 + 2021-04-01: + value: 74.7 + reference: + - title: SSI 2021/51 reg 7(a)(i) + href: https://www.legislation.gov.uk/ssi/2021/51/regulation/7 + 2022-04-01: + value: 77.0 + reference: + - title: SSI 2022/52 reg 25(a)(i) + href: https://www.legislation.gov.uk/ssi/2022/52/regulation/25/made + 2023-04-01: + value: 84.8 + reference: + - title: SSI 2023/38 reg 20(a)(i) + href: https://www.legislation.gov.uk/ssi/2023/38/regulation/20 + 2024-04-01: + value: 90.5 + reference: + - title: SSI 2024/35 reg 17(a)(ii) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/17 + 2025-04-01: + value: 92.05 + reference: + - title: SSI 2025/24 reg 16(a)(ii) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/16 + 2026-04-01: + value: 95.55 + reference: + - title: SSI 2026/56 reg 14(a)(ii) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + metadata: + label: Scotland working-age CTR personal allowance, single 25 or over + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 1 para. 1(1) + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1/paragraph/1 + - title: The Council Tax Reduction (Scotland) Amendment Regulations 2026 reg. 14(a)(ii) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + uprating: gov.benefit_uprating_cpi +lone_parent: + description: Weekly personal allowance for a lone parent of any age. + values: + 2013-04-01: + value: 71.7 + reference: + - title: SSI 2013/48 reg 14(a)(iii) + href: https://www.legislation.gov.uk/ssi/2013/48/regulation/14 + 2014-04-01: + value: 72.4 + reference: + - title: SSI 2014/35 reg 4(a)(iii) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2015-04-01: + value: 73.1 + reference: + - title: SSI 2015/46 reg 9(a)(iii) + href: https://www.legislation.gov.uk/ssi/2015/46/regulation/9 + 2020-04-01: + value: 74.35 + reference: + - title: SSI 2020/25 reg 8(a)(i) + href: https://www.legislation.gov.uk/ssi/2020/25/regulation/8 + 2021-04-01: + value: 74.7 + reference: + - title: SSI 2021/51 reg 7(a)(i) + href: https://www.legislation.gov.uk/ssi/2021/51/regulation/7 + 2022-04-01: + value: 77.0 + reference: + - title: SSI 2022/52 reg 25(a)(i) + href: https://www.legislation.gov.uk/ssi/2022/52/regulation/25/made + 2023-04-01: + value: 84.8 + reference: + - title: SSI 2023/38 reg 20(a)(i) + href: https://www.legislation.gov.uk/ssi/2023/38/regulation/20 + 2024-04-01: + value: 90.5 + reference: + - title: SSI 2024/35 reg 17(a)(ii) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/17 + 2025-04-01: + value: 92.05 + reference: + - title: SSI 2025/24 reg 16(a)(ii) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/16 + 2026-04-01: + value: 95.55 + reference: + - title: SSI 2026/56 reg 14(a)(ii) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + metadata: + label: Scotland working-age CTR personal allowance, lone parent + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 1 para. 1(1) + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1/paragraph/1 + - title: The Council Tax Reduction (Scotland) Amendment Regulations 2026 reg. 14(a)(ii) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + uprating: gov.benefit_uprating_cpi +couple: + description: Weekly personal allowance for a couple, whatever their ages. + values: + 2013-04-01: + value: 112.55 + reference: + - title: SSI 2013/48 reg 14(a)(iv) + href: https://www.legislation.gov.uk/ssi/2013/48/regulation/14 + 2014-04-01: + value: 113.7 + reference: + - title: SSI 2014/35 reg 4(a)(iv) + href: https://www.legislation.gov.uk/ssi/2014/35/regulation/4 + 2015-04-01: + value: 114.85 + reference: + - title: SSI 2015/46 reg 9(a)(iv) + href: https://www.legislation.gov.uk/ssi/2015/46/regulation/9 + 2020-04-01: + value: 116.8 + reference: + - title: SSI 2020/25 reg 8(a)(iii) + href: https://www.legislation.gov.uk/ssi/2020/25/regulation/8 + 2021-04-01: + value: 117.4 + reference: + - title: SSI 2021/51 reg 7(a)(iii) + href: https://www.legislation.gov.uk/ssi/2021/51/regulation/7 + 2022-04-01: + value: 121.05 + reference: + - title: SSI 2022/52 reg 25(a)(iii) + href: https://www.legislation.gov.uk/ssi/2022/52/regulation/25/made + 2023-04-01: + value: 133.3 + reference: + - title: SSI 2023/38 reg 20(a)(iii) + href: https://www.legislation.gov.uk/ssi/2023/38/regulation/20 + 2024-04-01: + value: 142.25 + reference: + - title: SSI 2024/35 reg 17(a)(iii) + href: https://www.legislation.gov.uk/ssi/2024/35/regulation/17 + 2025-04-01: + value: 144.65 + reference: + - title: SSI 2025/24 reg 16(a)(iii) + href: https://www.legislation.gov.uk/ssi/2025/24/regulation/16 + 2026-04-01: + value: 150.15 + reference: + - title: SSI 2026/56 reg 14(a)(iii) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + metadata: + label: Scotland working-age CTR personal allowance, couple + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 1 para. 1(1) + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1/paragraph/1 + - title: The Council Tax Reduction (Scotland) Amendment Regulations 2026 reg. 14(a)(iii) + href: https://www.legislation.gov.uk/ssi/2026/56/regulation/14 + uprating: gov.benefit_uprating_cpi +age_threshold: + description: Age from which a single applicant receives the higher personal allowance. + values: + 2013-04-01: 25 + metadata: + label: Scotland working-age CTR personal allowance age threshold + unit: year + period: year + reference: + - title: The Council Tax Reduction (Scotland) Regulations 2021 Sch. 1 para. 1(1) + href: https://www.legislation.gov.uk/ssi/2021/249/schedule/1/paragraph/1 +metadata: + label: Scotland working-age CTR personal allowances diff --git a/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/adult_premiums.yaml b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/adult_premiums.yaml new file mode 100644 index 0000000000..cee373b9c6 --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/adult_premiums.yaml @@ -0,0 +1,551 @@ +description: Weekly adult premiums in the applicable amount of a working-age applicant under the Wales + council tax reduction rules. +disability_premium: + description: Wales working-age CTR disability premium. + single: + description: Weekly disability premium for a single applicant or lone parent. + values: + 2013-04-01: + value: 31.0 + reference: + - title: W.S.I. 2013/112 reg 10(c)(i) + href: https://www.legislation.gov.uk/wsi/2013/112/regulation/10 + 2014-04-01: + value: 31.85 + reference: + - title: W.S.I. 2014/66 reg 10(d)(i) + href: https://www.legislation.gov.uk/wsi/2014/66/regulation/10/made + 2015-04-01: + value: 32.25 + reference: + - title: W.S.I. 2015/44 reg 11(d)(i) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2017-04-01: + value: 32.55 + reference: + - title: W.S.I. 2017/46 reg 6(c)(ii)(aa) + href: https://www.legislation.gov.uk/wsi/2017/46/regulation/6 + 2018-04-01: + value: 33.55 + reference: + - title: W.S.I. 2018/14 reg 10(c)(i) + href: https://www.legislation.gov.uk/wsi/2018/14/regulation/10 + 2019-04-01: + value: 34.35 + reference: + - title: W.S.I. 2019/11 reg 7(b)(i) + href: https://www.legislation.gov.uk/wsi/2019/11/regulation/7 + 2020-04-01: + value: 34.95 + reference: + - title: W.S.I. 2020/16 reg 10(b)(i) + href: https://www.legislation.gov.uk/wsi/2020/16/regulation/10 + 2021-04-01: + value: 35.1 + reference: + - title: W.S.I. 2021/34 reg 8(b)(i) + href: https://www.legislation.gov.uk/wsi/2021/34/regulation/8 + 2022-04-01: + value: 36.2 + reference: + - title: W.S.I. 2022/51 reg 8(d)(i) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 39.85 + reference: + - title: W.S.I. 2023/47 reg 9(d)(i) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 42.5 + reference: + - title: W.S.I. 2024/56 reg 8(d)(i) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 43.2 + reference: + - title: W.S.I. 2025/59 reg 9(d)(i) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 44.85 + reference: + - title: W.S.I. 2026/13 reg 11(d)(i) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + metadata: + label: Wales working-age CTR disability premium, single + unit: currency-GBP + period: week + uprating: gov.benefit_uprating_cpi + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 + Sch. 7 paras. 9-17 + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7 + couple: + description: Weekly disability premium for a couple. + values: + 2013-04-01: + value: 44.2 + reference: + - title: W.S.I. 2013/112 reg 10(c)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2013/112/regulation/10 + 2014-04-01: + value: 45.4 + reference: + - title: W.S.I. 2014/66 reg 10(d)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2014/66/regulation/10/made + 2015-04-01: + value: 45.95 + reference: + - title: W.S.I. 2015/44 reg 11(d)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2017-04-01: + value: 46.4 + reference: + - title: W.S.I. 2017/46 reg 6(c)(ii)(aa) (figure 2) + href: https://www.legislation.gov.uk/wsi/2017/46/regulation/6 + 2018-04-01: + value: 47.8 + reference: + - title: W.S.I. 2018/14 reg 10(c)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2018/14/regulation/10 + 2019-04-01: + value: 48.95 + reference: + - title: W.S.I. 2019/11 reg 7(b)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2019/11/regulation/7 + 2020-04-01: + value: 49.8 + reference: + - title: W.S.I. 2020/16 reg 10(b)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2020/16/regulation/10 + 2021-04-01: + value: 50.05 + reference: + - title: W.S.I. 2021/34 reg 8(b)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2021/34/regulation/8 + 2022-04-01: + value: 51.6 + reference: + - title: W.S.I. 2022/51 reg 8(d)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 56.8 + reference: + - title: W.S.I. 2023/47 reg 9(d)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 60.6 + reference: + - title: W.S.I. 2024/56 reg 8(d)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 61.65 + reference: + - title: W.S.I. 2025/59 reg 9(d)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 64.0 + reference: + - title: W.S.I. 2026/13 reg 11(d)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + metadata: + label: Wales working-age CTR disability premium, couple + unit: currency-GBP + period: week + uprating: gov.benefit_uprating_cpi + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 + Sch. 7 paras. 9-17 + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7 +severe_disability_premium: + description: Wales working-age CTR severe disability premium. + single: + description: Weekly severe disability premium where one person qualifies, or where someone is paid + a carer benefit for caring for a member of the couple. + values: + 2013-04-01: + value: 59.5 + reference: + - title: W.S.I. 2013/112 reg 10(c)(ii) + href: https://www.legislation.gov.uk/wsi/2013/112/regulation/10 + 2014-04-01: + value: 61.1 + reference: + - title: W.S.I. 2014/66 reg 10(d)(ii) + href: https://www.legislation.gov.uk/wsi/2014/66/regulation/10/made + 2015-04-01: + value: 61.85 + reference: + - title: W.S.I. 2015/44 reg 11(d)(ii) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2017-04-01: + value: 62.45 + reference: + - title: W.S.I. 2017/46 reg 6(c)(ii)(bb) + href: https://www.legislation.gov.uk/wsi/2017/46/regulation/6 + 2018-04-01: + value: 64.3 + reference: + - title: W.S.I. 2018/14 reg 10(c)(ii) + href: https://www.legislation.gov.uk/wsi/2018/14/regulation/10 + 2019-04-01: + value: 65.85 + reference: + - title: W.S.I. 2019/11 reg 7(b)(ii) + href: https://www.legislation.gov.uk/wsi/2019/11/regulation/7 + 2020-04-01: + value: 66.95 + reference: + - title: W.S.I. 2020/16 reg 10(b)(ii) + href: https://www.legislation.gov.uk/wsi/2020/16/regulation/10 + 2021-04-01: + value: 67.3 + reference: + - title: W.S.I. 2021/34 reg 8(b)(ii) + href: https://www.legislation.gov.uk/wsi/2021/34/regulation/8 + 2022-04-01: + value: 69.4 + reference: + - title: W.S.I. 2022/51 reg 8(d)(ii) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 76.4 + reference: + - title: W.S.I. 2023/47 reg 9(d)(ii) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 81.5 + reference: + - title: W.S.I. 2024/56 reg 8(d)(ii) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 82.9 + reference: + - title: W.S.I. 2025/59 reg 9(d)(ii) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 86.05 + reference: + - title: W.S.I. 2026/13 reg 11(d)(ii) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + metadata: + label: Wales working-age CTR severe disability premium, single + unit: currency-GBP + period: week + uprating: gov.benefit_uprating_cpi + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 + Sch. 7 paras. 9-17 + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7 + couple: + description: Weekly severe disability premium for a couple who both qualify and for whom no one is + paid a carer benefit. + values: + 2013-04-01: + value: 119.0 + reference: + - title: W.S.I. 2013/112 reg 10(c)(ii) (figure 2) + href: https://www.legislation.gov.uk/wsi/2013/112/regulation/10 + 2014-04-01: + value: 122.2 + reference: + - title: W.S.I. 2014/66 reg 10(d)(ii) (figure 2) + href: https://www.legislation.gov.uk/wsi/2014/66/regulation/10/made + 2015-04-01: + value: 123.7 + reference: + - title: W.S.I. 2015/44 reg 11(d)(ii) (figure 2) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2017-04-01: + value: 124.9 + reference: + - title: W.S.I. 2017/46 reg 6(c)(ii)(bb) (figure 2) + href: https://www.legislation.gov.uk/wsi/2017/46/regulation/6 + 2018-04-01: + value: 128.6 + reference: + - title: W.S.I. 2018/14 reg 10(c)(ii) (figure 2) + href: https://www.legislation.gov.uk/wsi/2018/14/regulation/10 + 2019-04-01: + value: 131.7 + reference: + - title: W.S.I. 2019/11 reg 7(b)(ii) (figure 2) + href: https://www.legislation.gov.uk/wsi/2019/11/regulation/7 + 2020-04-01: + value: 133.9 + reference: + - title: W.S.I. 2020/16 reg 10(b)(ii) (figure 2) + href: https://www.legislation.gov.uk/wsi/2020/16/regulation/10 + 2021-04-01: + value: 134.6 + reference: + - title: W.S.I. 2021/34 reg 8(b)(ii) (figure 2) + href: https://www.legislation.gov.uk/wsi/2021/34/regulation/8 + 2022-04-01: + value: 138.8 + reference: + - title: W.S.I. 2022/51 reg 8(d)(ii) (figure 2) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 152.8 + reference: + - title: W.S.I. 2023/47 reg 9(d)(ii) (figure 2) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 163.0 + reference: + - title: W.S.I. 2024/56 reg 8(d)(ii) (figure 2) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 165.8 + reference: + - title: W.S.I. 2025/59 reg 9(d)(ii) (figure 2) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 172.1 + reference: + - title: W.S.I. 2026/13 reg 11(d)(ii) (figure 2) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + metadata: + label: Wales working-age CTR severe disability premium, couple + unit: currency-GBP + period: week + uprating: gov.benefit_uprating_cpi + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 + Sch. 7 paras. 9-17 + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7 +enhanced_disability_premium: + description: Wales working-age CTR enhanced disability premium. + single: + description: Weekly enhanced disability premium for a single applicant or lone parent. + values: + 2013-04-01: + value: 15.15 + reference: + - title: W.S.I. 2013/112 reg 10(c)(v) (figure 2) + href: https://www.legislation.gov.uk/wsi/2013/112/regulation/10 + 2014-04-01: + value: 15.55 + reference: + - title: W.S.I. 2014/66 reg 10(d)(v) (figure 2) + href: https://www.legislation.gov.uk/wsi/2014/66/regulation/10/made + 2015-04-01: + value: 15.75 + reference: + - title: W.S.I. 2015/44 reg 11(d)(v) (figure 2) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2017-04-01: + value: 15.9 + reference: + - title: W.S.I. 2017/46 reg 6(c)(ii)(ee) (figure 2) + href: https://www.legislation.gov.uk/wsi/2017/46/regulation/6 + 2018-04-01: + value: 16.4 + reference: + - title: W.S.I. 2018/14 reg 10(c)(v) (figure 2) + href: https://www.legislation.gov.uk/wsi/2018/14/regulation/10 + 2019-04-01: + value: 16.8 + reference: + - title: W.S.I. 2019/11 reg 7(b)(v) (figure 2) + href: https://www.legislation.gov.uk/wsi/2019/11/regulation/7 + 2020-04-01: + value: 17.1 + reference: + - title: W.S.I. 2020/16 reg 10(b)(v) (figure 2) + href: https://www.legislation.gov.uk/wsi/2020/16/regulation/10 + 2021-04-01: + value: 17.2 + reference: + - title: W.S.I. 2021/34 reg 8(b)(v) (figure 2) + href: https://www.legislation.gov.uk/wsi/2021/34/regulation/8 + 2022-04-01: + value: 17.75 + reference: + - title: W.S.I. 2022/51 reg 8(d)(v) (figure 2) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 19.55 + reference: + - title: W.S.I. 2023/47 reg 9(d)(v) (figure 2) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 20.85 + reference: + - title: W.S.I. 2024/56 reg 8(d)(v) (figure 2) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 21.2 + reference: + - title: W.S.I. 2025/59 reg 9(d)(v) (figure 2) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 22.0 + reference: + - title: W.S.I. 2026/13 reg 11(d)(v) (figure 2) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + metadata: + label: Wales working-age CTR enhanced disability premium, single + unit: currency-GBP + period: week + uprating: gov.benefit_uprating_cpi + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 + Sch. 7 paras. 9-17 + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7 + couple: + description: Weekly enhanced disability premium for a couple. + values: + 2013-04-01: + value: 21.75 + reference: + - title: W.S.I. 2013/112 reg 10(c)(v) (figure 3) + href: https://www.legislation.gov.uk/wsi/2013/112/regulation/10 + 2014-04-01: + value: 22.35 + reference: + - title: W.S.I. 2014/66 reg 10(d)(v) (figure 3) + href: https://www.legislation.gov.uk/wsi/2014/66/regulation/10/made + 2015-04-01: + value: 22.6 + reference: + - title: W.S.I. 2015/44 reg 11(d)(v) (figure 3) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2017-04-01: + value: 22.85 + reference: + - title: W.S.I. 2017/46 reg 6(c)(ii)(ee) (figure 3) + href: https://www.legislation.gov.uk/wsi/2017/46/regulation/6 + 2018-04-01: + value: 23.55 + reference: + - title: W.S.I. 2018/14 reg 10(c)(v) (figure 3) + href: https://www.legislation.gov.uk/wsi/2018/14/regulation/10 + 2019-04-01: + value: 24.1 + reference: + - title: W.S.I. 2019/11 reg 7(b)(v) (figure 3) + href: https://www.legislation.gov.uk/wsi/2019/11/regulation/7 + 2020-04-01: + value: 24.5 + reference: + - title: W.S.I. 2020/16 reg 10(b)(v) (figure 3) + href: https://www.legislation.gov.uk/wsi/2020/16/regulation/10 + 2021-04-01: + value: 24.6 + reference: + - title: W.S.I. 2021/34 reg 8(b)(v) (figure 3) + href: https://www.legislation.gov.uk/wsi/2021/34/regulation/8 + 2022-04-01: + value: 25.35 + reference: + - title: W.S.I. 2022/51 reg 8(d)(v) (figure 3) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 27.9 + reference: + - title: W.S.I. 2023/47 reg 9(d)(v) (figure 3) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 29.75 + reference: + - title: W.S.I. 2024/56 reg 8(d)(v) (figure 3) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 30.25 + reference: + - title: W.S.I. 2025/59 reg 9(d)(v) (figure 3) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 31.4 + reference: + - title: W.S.I. 2026/13 reg 11(d)(v) (figure 3) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + metadata: + label: Wales working-age CTR enhanced disability premium, couple + unit: currency-GBP + period: week + uprating: gov.benefit_uprating_cpi + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 + Sch. 7 paras. 9-17 + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7 +carer_premium: + description: Weekly carer premium for each claimant or partner who qualifies. + values: + 2013-04-01: + value: 33.3 + reference: + - title: W.S.I. 2013/112 reg 10(c)(iv) + href: https://www.legislation.gov.uk/wsi/2013/112/regulation/10 + 2014-04-01: + value: 34.2 + reference: + - title: W.S.I. 2014/66 reg 10(d)(iv) + href: https://www.legislation.gov.uk/wsi/2014/66/regulation/10/made + 2015-04-01: + value: 34.6 + reference: + - title: W.S.I. 2015/44 reg 11(d)(iv) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2017-04-01: + value: 34.95 + reference: + - title: W.S.I. 2017/46 reg 6(c)(ii)(dd) + href: https://www.legislation.gov.uk/wsi/2017/46/regulation/6 + 2018-04-01: + value: 36.0 + reference: + - title: W.S.I. 2018/14 reg 10(c)(iv) + href: https://www.legislation.gov.uk/wsi/2018/14/regulation/10 + 2019-04-01: + value: 36.85 + reference: + - title: W.S.I. 2019/11 reg 7(b)(iv) + href: https://www.legislation.gov.uk/wsi/2019/11/regulation/7 + 2020-04-01: + value: 37.5 + reference: + - title: W.S.I. 2020/16 reg 10(b)(iv) + href: https://www.legislation.gov.uk/wsi/2020/16/regulation/10 + 2021-04-01: + value: 37.7 + reference: + - title: W.S.I. 2021/34 reg 8(b)(iv) + href: https://www.legislation.gov.uk/wsi/2021/34/regulation/8 + 2022-04-01: + value: 38.85 + reference: + - title: W.S.I. 2022/51 reg 8(d)(iv) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 42.75 + reference: + - title: W.S.I. 2023/47 reg 9(d)(iv) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 45.6 + reference: + - title: W.S.I. 2024/56 reg 8(d)(iv) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 46.4 + reference: + - title: W.S.I. 2025/59 reg 9(d)(iv) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 48.15 + reference: + - title: W.S.I. 2026/13 reg 11(d)(iv) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + metadata: + label: Wales working-age CTR carer premium + unit: currency-GBP + period: week + uprating: gov.benefit_uprating_cpi + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 7 paras. 9-17 + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7 +metadata: + label: Wales working-age CTR adult premiums diff --git a/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/child_amount.yaml b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/child_amount.yaml new file mode 100644 index 0000000000..dad491f329 --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/child_amount.yaml @@ -0,0 +1,55 @@ +description: Weekly amount for each child or young person in the family of an applicant who is not a pensioner + under the Welsh council tax reduction schemes. +values: + 2013-04-01: + value: 65.62 + reference: + - title: W.S.I. 2013/112 reg 10(b) + href: https://www.legislation.gov.uk/wsi/2013/112/regulation/10 + 2014-04-01: + value: 66.33 + reference: + - title: W.S.I. 2014/66 reg 10(b) + href: https://www.legislation.gov.uk/wsi/2014/66/regulation/10/made + 2015-04-01: + value: 66.9 + reference: + - title: W.S.I. 2015/44 reg 11(b) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2022-04-01: + value: 70.8 + reference: + - title: W.S.I. 2022/51 reg 8(b) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 77.78 + reference: + - title: W.S.I. 2023/47 reg 9(b) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 83.24 + reference: + - title: W.S.I. 2024/56 reg 8(b) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 84.66 + reference: + - title: W.S.I. 2025/59 reg 9(b) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 87.88 + reference: + - title: W.S.I. 2026/13 reg 11(b) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 +metadata: + label: Wales working-age CTR child or young person amount + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 6 para. 1(1)(b) and Sch. 7 para. 3(1) + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7/paragraph/3 + - title: The Council Tax Reduction Schemes (Prescribed Requirements and Default Scheme) (Miscellaneous + Amendments) (Wales) Regulations 2026 reg. 11(b) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + uprating: gov.benefit_uprating_cpi diff --git a/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/child_enhanced_disability_premium.yaml b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/child_enhanced_disability_premium.yaml new file mode 100644 index 0000000000..9887925a20 --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/child_enhanced_disability_premium.yaml @@ -0,0 +1,82 @@ +description: Weekly enhanced disability premium for each child or young person in the family of an applicant + who is not a pensioner and who gets the highest rate of the care component of disability living allowance + or the enhanced daily living component of personal independence payment, under the Welsh council tax + reduction schemes. +values: + 2013-04-01: + value: 23.45 + reference: + - title: W.S.I. 2013/112 reg 10(c)(v) + href: https://www.legislation.gov.uk/wsi/2013/112/regulation/10 + 2014-04-01: + value: 24.08 + reference: + - title: W.S.I. 2014/66 reg 10(d)(v) + href: https://www.legislation.gov.uk/wsi/2014/66/regulation/10/made + 2015-04-01: + value: 24.43 + reference: + - title: W.S.I. 2015/44 reg 11(d)(v) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2017-04-01: + value: 24.78 + reference: + - title: W.S.I. 2017/46 reg 6(c)(ii)(ee) + href: https://www.legislation.gov.uk/wsi/2017/46/regulation/6 + 2018-04-01: + value: 25.48 + reference: + - title: W.S.I. 2018/14 reg 10(c)(v) + href: https://www.legislation.gov.uk/wsi/2018/14/regulation/10 + 2019-04-01: + value: 26.04 + reference: + - title: W.S.I. 2019/11 reg 7(b)(v) + href: https://www.legislation.gov.uk/wsi/2019/11/regulation/7 + 2020-04-01: + value: 26.6 + reference: + - title: W.S.I. 2020/16 reg 10(b)(v) + href: https://www.legislation.gov.uk/wsi/2020/16/regulation/10 + 2021-04-01: + value: 26.67 + reference: + - title: W.S.I. 2021/34 reg 8(b)(v) + href: https://www.legislation.gov.uk/wsi/2021/34/regulation/8 + 2022-04-01: + value: 27.44 + reference: + - title: W.S.I. 2022/51 reg 8(d)(v) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 30.17 + reference: + - title: W.S.I. 2023/47 reg 9(d)(v) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 32.2 + reference: + - title: W.S.I. 2024/56 reg 8(d)(v) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 32.75 + reference: + - title: W.S.I. 2025/59 reg 9(d)(v) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 33.99 + reference: + - title: W.S.I. 2026/13 reg 11(d)(v) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 +metadata: + label: Wales working-age CTR child enhanced disability premium + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 7 paras. 12 and 17(5) + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7 + - title: The Council Tax Reduction Schemes (Prescribed Requirements and Default Scheme) (Miscellaneous + Amendments) (Wales) Regulations 2026 reg. 11(d) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + uprating: gov.benefit_uprating_cpi diff --git a/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/childcare.yaml b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/childcare.yaml new file mode 100644 index 0000000000..c0732e9dbb --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/childcare.yaml @@ -0,0 +1,34 @@ +description: Weekly caps on the relevant childcare charges deducted from the earnings of an applicant + who is not a pensioner under the Welsh council tax reduction schemes. +maximum_one_child: + description: Weekly cap on relevant childcare charges where the family has one child with charges. + values: + 2013-04-01: 175 + metadata: + label: Wales working-age CTR childcare cap, one child + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 6 para. 20(3)(a) + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/6/paragraph/20 + - &id001 + title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2012 (2013-14 + schemes) + href: https://www.legislation.gov.uk/wsi/2012/3144/contents/made +maximum_two_or_more_children: + description: Weekly cap on relevant childcare charges where the family has more than one child with + charges. + values: + 2013-04-01: 300 + metadata: + label: Wales working-age CTR childcare cap, two or more children + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 6 para. 20(3)(b) + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/6/paragraph/20 + - *id001 +metadata: + label: Wales working-age CTR childcare charges diff --git a/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/disabled_child_premium.yaml b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/disabled_child_premium.yaml new file mode 100644 index 0000000000..7bbad6081a --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/disabled_child_premium.yaml @@ -0,0 +1,80 @@ +description: Weekly disabled child premium for each disabled child or young person in the family of an + applicant who is not a pensioner, under the Welsh council tax reduction schemes. +values: + 2013-04-01: + value: 57.89 + reference: + - title: W.S.I. 2013/112 reg 10(c)(iii) + href: https://www.legislation.gov.uk/wsi/2013/112/regulation/10 + 2014-04-01: + value: 59.5 + reference: + - title: W.S.I. 2014/66 reg 10(d)(iii) + href: https://www.legislation.gov.uk/wsi/2014/66/regulation/10/made + 2015-04-01: + value: 60.06 + reference: + - title: W.S.I. 2015/44 reg 11(d)(iii) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2017-04-01: + value: 60.9 + reference: + - title: W.S.I. 2017/46 reg 6(c)(ii)(cc) + href: https://www.legislation.gov.uk/wsi/2017/46/regulation/6 + 2018-04-01: + value: 62.86 + reference: + - title: W.S.I. 2018/14 reg 10(c)(iii) + href: https://www.legislation.gov.uk/wsi/2018/14/regulation/10 + 2019-04-01: + value: 64.19 + reference: + - title: W.S.I. 2019/11 reg 7(b)(iii) + href: https://www.legislation.gov.uk/wsi/2019/11/regulation/7 + 2020-04-01: + value: 65.52 + reference: + - title: W.S.I. 2020/16 reg 10(b)(iii) + href: https://www.legislation.gov.uk/wsi/2020/16/regulation/10 + 2021-04-01: + value: 65.94 + reference: + - title: W.S.I. 2021/34 reg 8(b)(iii) + href: https://www.legislation.gov.uk/wsi/2021/34/regulation/8 + 2022-04-01: + value: 68.04 + reference: + - title: W.S.I. 2022/51 reg 8(d)(iii) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 74.69 + reference: + - title: W.S.I. 2023/47 reg 9(d)(iii) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 80.01 + reference: + - title: W.S.I. 2024/56 reg 8(d)(iii) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 81.37 + reference: + - title: W.S.I. 2025/59 reg 9(d)(iii) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 84.46 + reference: + - title: W.S.I. 2026/13 reg 11(d)(iii) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 +metadata: + label: Wales working-age CTR disabled child premium + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 7 paras. 13 and 17(3) + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7 + - title: The Council Tax Reduction Schemes (Prescribed Requirements and Default Scheme) (Miscellaneous + Amendments) (Wales) Regulations 2026 reg. 11(d) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + uprating: gov.benefit_uprating_cpi diff --git a/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/earnings_disregard.yaml b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/earnings_disregard.yaml new file mode 100644 index 0000000000..b5dfcc158f --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/earnings_disregard.yaml @@ -0,0 +1,115 @@ +description: Weekly earnings disregards for applicants who are not pensioners under the Welsh council + tax reduction schemes. +single: + description: Weekly earnings disregard where no other disregard applies. + values: + 2013-04-01: 5 + metadata: + label: Wales working-age CTR earnings disregard, single + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 8 para. 11 + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/8 + - &id001 + title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2012 (2013-14 + schemes) + href: https://www.legislation.gov.uk/wsi/2012/3144/contents/made +couple: + description: Weekly earnings disregard for a couple, a member of which is in employment, to whom no + higher disregard applies. + values: + 2013-04-01: 10 + metadata: + label: Wales working-age CTR earnings disregard, couple + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 8 para. 8 + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/8 + - *id001 +lone_parent: + description: Weekly earnings disregard for a lone parent. + values: + 2013-04-01: 25 + metadata: + label: Wales working-age CTR earnings disregard, lone parent + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 8 para. 5 + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/8 + - *id001 +disability_or_carer: + description: Weekly earnings disregard where the applicable amount includes a disability premium, severe + disability premium or carer premium. + values: + 2013-04-01: 20 + metadata: + label: Wales working-age CTR earnings disregard, disability or carer + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 8 paras. 4 and 6 + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/8 + - *id001 +additional: + description: Additional weekly earnings disregard for applicants who meet a work condition. + values: + 2013-04-01: 17.1 + metadata: + label: Wales working-age CTR additional earnings disregard + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 8 para. 18 + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/8 + - *id001 +additional_full_time_hours: + description: Weekly hours of remunerative work from which an applicant aged 25 or over qualifies for + the additional earnings disregard. + values: + 2013-04-01: 30 + metadata: + label: Wales working-age CTR additional earnings disregard full-time hours + unit: hour + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 8 para. 18(2) + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/8 + - *id001 +additional_full_time_age: + description: Age from which an applicant working the full-time hours qualifies for the additional earnings + disregard. + values: + 2013-04-01: 25 + metadata: + label: Wales working-age CTR additional earnings disregard full-time age + unit: year + period: year + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 8 para. 18(2) + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/8 + - *id001 +remunerative_work_hours: + description: Weekly hours from which a person is in remunerative work. + values: + 2013-04-01: 16 + metadata: + label: Wales working-age CTR remunerative work hours + unit: hour + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 reg. + 10(1) + href: https://www.legislation.gov.uk/wsi/2013/3029/regulation/10 + - *id001 +metadata: + label: Wales working-age CTR earnings disregards diff --git a/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/family_premium.yaml b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/family_premium.yaml new file mode 100644 index 0000000000..ba50cb1dee --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/family_premium.yaml @@ -0,0 +1,51 @@ +description: Weekly family premium for an applicant who is not a pensioner and whose family includes at + least one child or young person, under the Welsh council tax reduction schemes. The higher rate protected + for some lone parents since 1998 is not modelled. +values: + 2013-04-01: + value: 17.4 + reference: + - title: W.S.I. 2012/3144 Sch 7 para 4(1)(b) as made + href: https://www.legislation.gov.uk/wsi/2012/3144/schedule/7/paragraph/4/made + 2015-04-01: + value: 17.45 + reference: + - title: W.S.I. 2015/44 reg 11(c) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2022-04-01: + value: 17.85 + reference: + - title: W.S.I. 2022/51 reg 8(c) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 18.53 + reference: + - title: W.S.I. 2023/47 reg 9(c) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 19.15 + reference: + - title: W.S.I. 2024/56 reg 8(c) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 19.48 + reference: + - title: W.S.I. 2025/59 reg 9(c) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 20.22 + reference: + - title: W.S.I. 2026/13 reg 11(c) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 +metadata: + label: Wales working-age CTR family premium + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 6 para. 1(1)(c) and Sch. 7 para. 4(1)(b) + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7/paragraph/4 + - title: The Council Tax Reduction Schemes (Prescribed Requirements and Default Scheme) (Miscellaneous + Amendments) (Wales) Regulations 2026 reg. 11(c) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + uprating: gov.benefit_uprating_cpi diff --git a/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/personal_allowance.yaml b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/personal_allowance.yaml new file mode 100644 index 0000000000..59db1b6272 --- /dev/null +++ b/policyengine_uk/parameters/gov/local_authorities/wales/council_tax_reduction/working_age/personal_allowance.yaml @@ -0,0 +1,338 @@ +description: Weekly personal allowances in the applicable amount of an applicant who is not a pensioner + under the Welsh council tax reduction schemes. +single_under_25: + description: Weekly personal allowance for a single applicant aged 18 to 24 who is not entitled to main + phase employment and support allowance. + values: + 2013-04-01: + value: 56.8 + reference: + - title: W.S.I. 2013/112 reg 10(a)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2013/112/regulation/10 + 2014-04-01: + value: 57.35 + reference: + - title: W.S.I. 2014/66 reg 10(a)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2014/66/regulation/10/made + 2015-04-01: + value: 57.9 + reference: + - title: W.S.I. 2015/44 reg 11(a)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2017-04-01: + value: 58.5 + reference: + - title: W.S.I. 2017/46 reg 6(a)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2017/46/regulation/6 + 2018-04-01: + value: 60.25 + reference: + - title: W.S.I. 2018/14 reg 10(a)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2018/14/regulation/10 + 2019-04-01: + value: 61.7 + reference: + - title: W.S.I. 2019/11 reg 7(a)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2019/11/regulation/7 + 2020-04-01: + value: 62.75 + reference: + - title: W.S.I. 2020/16 reg 10(a)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2020/16/regulation/10 + 2021-04-01: + value: 63.05 + reference: + - title: W.S.I. 2021/34 reg 8(a)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2021/34/regulation/8 + 2022-04-01: + value: 65.0 + reference: + - title: W.S.I. 2022/51 reg 8(a)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 71.55 + reference: + - title: W.S.I. 2023/47 reg 9(a)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 76.35 + reference: + - title: W.S.I. 2024/56 reg 8(a)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 77.65 + reference: + - title: W.S.I. 2025/59 reg 9(a)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 80.6 + reference: + - title: W.S.I. 2026/13 reg 11(a)(i) (figure 2) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + metadata: + label: Wales working-age CTR personal allowance, single under 25 + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 7 para. 1(1) + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7/paragraph/1 + - title: The Council Tax Reduction Schemes (Prescribed Requirements and Default Scheme) (Miscellaneous + Amendments) (Wales) Regulations 2026 reg. 11(a) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + uprating: gov.benefit_uprating_cpi +single_25_or_over: + description: Weekly personal allowance for a single applicant aged 25 or over, or of any age if entitled + to main phase employment and support allowance. + values: + 2013-04-01: + value: 71.7 + reference: + - title: W.S.I. 2013/112 reg 10(a)(i) + href: https://www.legislation.gov.uk/wsi/2013/112/regulation/10 + 2014-04-01: + value: 72.4 + reference: + - title: W.S.I. 2014/66 reg 10(a)(i) + href: https://www.legislation.gov.uk/wsi/2014/66/regulation/10/made + 2015-04-01: + value: 73.1 + reference: + - title: W.S.I. 2015/44 reg 11(a)(i) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2017-04-01: + value: 73.85 + reference: + - title: W.S.I. 2017/46 reg 6(a)(i) + href: https://www.legislation.gov.uk/wsi/2017/46/regulation/6 + 2018-04-01: + value: 76.1 + reference: + - title: W.S.I. 2018/14 reg 10(a)(i) + href: https://www.legislation.gov.uk/wsi/2018/14/regulation/10 + 2019-04-01: + value: 77.9 + reference: + - title: W.S.I. 2019/11 reg 7(a)(i) + href: https://www.legislation.gov.uk/wsi/2019/11/regulation/7 + 2020-04-01: + value: 79.2 + reference: + - title: W.S.I. 2020/16 reg 10(a)(i) + href: https://www.legislation.gov.uk/wsi/2020/16/regulation/10 + 2021-04-01: + value: 79.6 + reference: + - title: W.S.I. 2021/34 reg 8(a)(i) + href: https://www.legislation.gov.uk/wsi/2021/34/regulation/8 + 2022-04-01: + value: 82.1 + reference: + - title: W.S.I. 2022/51 reg 8(a)(i) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 90.4 + reference: + - title: W.S.I. 2023/47 reg 9(a)(i) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 96.45 + reference: + - title: W.S.I. 2024/56 reg 8(a)(i) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 98.1 + reference: + - title: W.S.I. 2025/59 reg 9(a)(i) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 101.85 + reference: + - title: W.S.I. 2026/13 reg 11(a)(i) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + metadata: + label: Wales working-age CTR personal allowance, single 25 or over + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 7 paras. 1(1) and 2 + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7/paragraph/1 + - title: The Council Tax Reduction Schemes (Prescribed Requirements and Default Scheme) (Miscellaneous + Amendments) (Wales) Regulations 2026 reg. 11(a) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + uprating: gov.benefit_uprating_cpi +lone_parent: + description: Weekly personal allowance for a lone parent. + values: + 2013-04-01: + value: 71.7 + reference: + - title: W.S.I. 2013/112 reg 10(a)(ii) + href: https://www.legislation.gov.uk/wsi/2013/112/regulation/10 + 2014-04-01: + value: 72.4 + reference: + - title: W.S.I. 2014/66 reg 10(a)(ii) + href: https://www.legislation.gov.uk/wsi/2014/66/regulation/10/made + 2015-04-01: + value: 73.1 + reference: + - title: W.S.I. 2015/44 reg 11(a)(ii) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2017-04-01: + value: 73.85 + reference: + - title: W.S.I. 2017/46 reg 6(a)(ii) + href: https://www.legislation.gov.uk/wsi/2017/46/regulation/6 + 2018-04-01: + value: 76.1 + reference: + - title: W.S.I. 2018/14 reg 10(a)(ii) + href: https://www.legislation.gov.uk/wsi/2018/14/regulation/10 + 2019-04-01: + value: 77.9 + reference: + - title: W.S.I. 2019/11 reg 7(a)(ii) + href: https://www.legislation.gov.uk/wsi/2019/11/regulation/7 + 2020-04-01: + value: 79.2 + reference: + - title: W.S.I. 2020/16 reg 10(a)(ii) + href: https://www.legislation.gov.uk/wsi/2020/16/regulation/10 + 2021-04-01: + value: 79.6 + reference: + - title: W.S.I. 2021/34 reg 8(a)(ii) + href: https://www.legislation.gov.uk/wsi/2021/34/regulation/8 + 2022-04-01: + value: 82.1 + reference: + - title: W.S.I. 2022/51 reg 8(a)(ii) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 90.4 + reference: + - title: W.S.I. 2023/47 reg 9(a)(ii) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 96.45 + reference: + - title: W.S.I. 2024/56 reg 8(a)(ii) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 98.1 + reference: + - title: W.S.I. 2025/59 reg 9(a)(ii) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 101.85 + reference: + - title: W.S.I. 2026/13 reg 11(a)(ii) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + metadata: + label: Wales working-age CTR personal allowance, lone parent + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 7 para. 1(2) + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7/paragraph/1 + - title: The Council Tax Reduction Schemes (Prescribed Requirements and Default Scheme) (Miscellaneous + Amendments) (Wales) Regulations 2026 reg. 11(a) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + uprating: gov.benefit_uprating_cpi +couple: + description: Weekly personal allowance for a couple. + values: + 2013-04-01: + value: 112.55 + reference: + - title: W.S.I. 2013/112 reg 10(a)(iii) + href: https://www.legislation.gov.uk/wsi/2013/112/regulation/10 + 2014-04-01: + value: 113.7 + reference: + - title: W.S.I. 2014/66 reg 10(a)(iii) + href: https://www.legislation.gov.uk/wsi/2014/66/regulation/10/made + 2015-04-01: + value: 114.85 + reference: + - title: W.S.I. 2015/44 reg 11(a)(iii) + href: https://www.legislation.gov.uk/wsi/2015/44/regulation/11 + 2017-04-01: + value: 116.0 + reference: + - title: W.S.I. 2017/46 reg 6(a)(iii) + href: https://www.legislation.gov.uk/wsi/2017/46/regulation/6 + 2018-04-01: + value: 119.5 + reference: + - title: W.S.I. 2018/14 reg 10(a)(iii) + href: https://www.legislation.gov.uk/wsi/2018/14/regulation/10 + 2019-04-01: + value: 122.35 + reference: + - title: W.S.I. 2019/11 reg 7(a)(iii) + href: https://www.legislation.gov.uk/wsi/2019/11/regulation/7 + 2020-04-01: + value: 124.45 + reference: + - title: W.S.I. 2020/16 reg 10(a)(iii) + href: https://www.legislation.gov.uk/wsi/2020/16/regulation/10 + 2021-04-01: + value: 125.05 + reference: + - title: W.S.I. 2021/34 reg 8(a)(iii) + href: https://www.legislation.gov.uk/wsi/2021/34/regulation/8 + 2022-04-01: + value: 128.95 + reference: + - title: W.S.I. 2022/51 reg 8(a)(iii) + href: https://www.legislation.gov.uk/wsi/2022/51/regulation/8 + 2023-04-01: + value: 141.95 + reference: + - title: W.S.I. 2023/47 reg 9(a)(iii) + href: https://www.legislation.gov.uk/wsi/2023/47/regulation/9 + 2024-04-01: + value: 151.45 + reference: + - title: W.S.I. 2024/56 reg 8(a)(iii) + href: https://www.legislation.gov.uk/wsi/2024/56/regulation/8 + 2025-04-01: + value: 154.0 + reference: + - title: W.S.I. 2025/59 reg 9(a)(iii) + href: https://www.legislation.gov.uk/wsi/2025/59/regulation/9 + 2026-04-01: + value: 159.85 + reference: + - title: W.S.I. 2026/13 reg 11(a)(iii) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + metadata: + label: Wales working-age CTR personal allowance, couple + unit: currency-GBP + period: week + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 7 para. 1(3) + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7/paragraph/1 + - title: The Council Tax Reduction Schemes (Prescribed Requirements and Default Scheme) (Miscellaneous + Amendments) (Wales) Regulations 2026 reg. 11(a) + href: https://www.legislation.gov.uk/wsi/2026/13/regulation/11 + uprating: gov.benefit_uprating_cpi +age_threshold: + description: Age from which a single applicant receives the higher personal allowance. + values: + 2013-04-01: 25 + metadata: + label: Wales working-age CTR personal allowance age threshold + unit: year + period: year + reference: + - title: The Council Tax Reduction Schemes and Prescribed Requirements (Wales) Regulations 2013 Sch. + 7 para. 1(1) + href: https://www.legislation.gov.uk/wsi/2013/3029/schedule/7/paragraph/1 +metadata: + label: Wales working-age CTR personal allowances diff --git a/policyengine_uk/programs.yaml b/policyengine_uk/programs.yaml index 1de29aeacf..eece69c539 100644 --- a/policyengine_uk/programs.yaml +++ b/policyengine_uk/programs.yaml @@ -672,7 +672,7 @@ programs: variable: council_tax_reduction parameter_prefix: gov.local_authorities verified_start_year: 2013 - notes: First-pass national support for Scotland, Wales, and England pensioner schemes (including the Pension Credit guarantee credit disregard and savings-credit-only rules), with reported CTB/CTR retained for unsupported English working-age local schemes. + notes: National support for the Scotland and Wales schemes (working-age rules including the Universal Credit routes, the income-related benefit passport and devolved applicable amounts) and the England pensioner scheme (including the Pension Credit guarantee credit disregard and savings-credit-only rules), with reported CTB/CTR retained for unsupported English working-age local schemes. # --- Treasury programs --- - id: cost_of_living_support diff --git a/policyengine_uk/tests/policy/baseline/gov/dwp/legacy_means_tests/income_from_capital.yaml b/policyengine_uk/tests/policy/baseline/gov/dwp/legacy_means_tests/income_from_capital.yaml index fa88904dfb..272d0661ef 100644 --- a/policyengine_uk/tests/policy/baseline/gov/dwp/legacy_means_tests/income_from_capital.yaml +++ b/policyengine_uk/tests/policy/baseline/gov/dwp/legacy_means_tests/income_from_capital.yaml @@ -737,12 +737,13 @@ # The rent no longer counts, but the property counts as capital at 90% of # its value (WSI 2013/3029 Sch 6 para 28(a)): 9,000. Sch 6 para 33 treats it # as a weekly income of 1 for each 250, or part of 250, over 6,000: 12 a - # week, 624 a year. Earnings 9,000 are below the personal allowance and the - # NI threshold, but they leave 3,570 of the allowance for the rent of - # 5,200, which bears (5,200 - 3,570) x 20% = 326. Without the earnings the - # rent bears no tax, so the 326 is deducted. Income 9,000 - 326 + 624 = - # 9,298. With the applicable amount supplied as 6,000, CTR = 1,500 - 20% x - # (9,298 - 6,000) = 840.40. + # week, 624 a year. The devolved working-age route assesses the claim. It + # deducts only the tax on the pay (Sch 6 para 15(3)(a)), taking earnings + # as the lowest slice of income, so the 9,000 of pay bears none; the 326 + # the shared formula would deduct falls on the rent. Earnings 9,000 less + # the £5 single disregard (260) + 624 = 9,364. With the working-age + # applicable amount supplied as 6,000, CTR = 1,500 - 20% x (9,364 - 6,000) + # = 827.20. period: 2026 absolute_error_margin: 0.01 input: @@ -756,7 +757,7 @@ members: [person] claims_all_entitled_benefits: true would_claim_uc: false - council_tax_reduction_applicable_amount: 6_000 + council_tax_reduction_working_age_applicable_amount: 6_000 households: household: members: [person] @@ -767,20 +768,24 @@ council_tax: 1_500 other_residential_property_value: 10_000 output: + council_tax_reduction_devolved_working_age: true council_tax_reduction_assessable_capital: 9_000 council_tax_reduction_tariff_income: 624 legacy_means_test_deducted_income_tax: 326 - council_tax_reduction_applicable_income: 9_298 - council_tax_reduction: 840.40 + council_tax_reduction_working_age_earned_income: 9_000 + council_tax_reduction_working_age_applicable_income: 9_364 + council_tax_reduction: 827.20 - name: Scottish working-age assumed yield on a let property below the capital limit # SSI 2021/249 reg 70(1)(a) values the property less 10%: 9,000. Reg # 63(1)(b): a weekly income of 1 for each 250 over 6,000 and 1 for any part # of 250: 12 a week, 624 a year; reg 63(3) treats the actual rent as - # capital. The earnings leave 3,570 of the personal allowance for the rent - # of 5,200, which bears (5,200 - 3,570) x 19% (the Scottish starter rate) = - # 309.70, all caused by the earnings and deducted. Income 9,000 - 309.70 + - # 624 = 9,314.30. CTR = 1,500 - 20% x (9,314.30 - 6,000) = 837.14. + # capital. The devolved working-age route assesses the claim. It deducts + # only the tax deducted from the pay (reg 50(3)(a)), taking earnings as the + # lowest slice of income, so the 9,000 of pay bears none; the 309.70 the + # shared formula would deduct falls on the rent. Earnings 9,000 less the £5 + # single disregard (260) + 624 = 9,364. With the working-age applicable + # amount supplied as 6,000, CTR = 1,500 - 20% x (9,364 - 6,000) = 827.20. period: 2026 absolute_error_margin: 0.01 input: @@ -794,7 +799,7 @@ members: [person] claims_all_entitled_benefits: true would_claim_uc: false - council_tax_reduction_applicable_amount: 6_000 + council_tax_reduction_working_age_applicable_amount: 6_000 households: household: members: [person] @@ -805,11 +810,13 @@ council_tax: 1_500 other_residential_property_value: 10_000 output: + council_tax_reduction_devolved_working_age: true council_tax_reduction_assessable_capital: 9_000 council_tax_reduction_tariff_income: 624 legacy_means_test_deducted_income_tax: 309.70 - council_tax_reduction_applicable_income: 9_314.30 - council_tax_reduction: 837.14 + council_tax_reduction_working_age_earned_income: 9_000 + council_tax_reduction_working_age_applicable_income: 9_364 + council_tax_reduction: 827.20 - name: An English pensioner's let property valued less sale expenses stays within the limit # A 17,000 property is valued at 15,300 (SI 2012/2885 Sch 1 para 32(a)), so diff --git a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/applicant_or_partner.yaml b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/applicant_or_partner.yaml index 405fc1ffc3..42ee19cbed 100644 --- a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/applicant_or_partner.yaml +++ b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/applicant_or_partner.yaml @@ -411,8 +411,13 @@ council_tax_reduction_applicable_income: [10_000] # The couple rate where the elder is 18 or over: 150.15 * 52 = 7,807.80. council_tax_reduction_applicable_amount: [7_807.80] - # 1,800 - (10,000 - 7,807.80) * 20%. - simulated_council_tax_reduction_benunit: [1_361.56] + # Scotland's working-age route: the same couple rate, and the couple's + # £10 a week earnings disregard (SSI 2021/249 Sch 3), so income is + # 10,000 - 520 = 9,480. + council_tax_reduction_working_age_applicable_amount: [7_807.80] + council_tax_reduction_working_age_applicable_income: [9_480] + # 1,800 - (9,480 - 7,807.80) * 20%. + simulated_council_tax_reduction_benunit: [1_465.56] - name: A head under 18 with an adult partner claims through the partner, and the head's income counts period: 2026 @@ -451,7 +456,8 @@ is_council_tax_reduction_applicant_or_partner: [true, true] council_tax_reduction_applicable_income: [10_000] council_tax_reduction_applicable_amount: [7_807.80] - simulated_council_tax_reduction_benunit: [1_361.56] + council_tax_reduction_working_age_applicable_income: [9_480] + simulated_council_tax_reduction_benunit: [1_465.56] - name: A pensioner who is not the applicant or partner does not make a young couple's claim a pensioner's period: 2026 diff --git a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/claimant_family_scheme.yaml b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/claimant_family_scheme.yaml index ac49d27620..b323679c75 100644 --- a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/claimant_family_scheme.yaml +++ b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/claimant_family_scheme.yaml @@ -436,6 +436,7 @@ liable_for_share_of_household_rent: true would_claim_uc: false council_tax_reduction_applicable_income: 8_000 + council_tax_reduction_working_age_applicable_income: 8_000 households: home: members: [head, sharer] @@ -448,14 +449,17 @@ output: council_tax_reduction_pensioner: [true, false] council_tax_reduction_scheme_supported: [true, true] + council_tax_reduction_devolved_working_age: [false, true] + council_tax_reduction_working_age_applicable_amount: [5_296.20, 5_296.20] council_tax_reduction_applicant_has_non_dep_exemption: [true, false] - # Each family's own applicable amount: pension-age 256.00 a week, the - # working-age single 25 or over 95.55 a week. + # Each family's own applicable amount: pension-age 256.00 a week; the + # working-age family takes the devolved route and Wales's own single 25 + # or over allowance, 101.85 a week (W.S.I. 2026/13 reg 11). council_tax_reduction_applicable_amount: [13_312, 4_968.60] # 900 - 20% x (15,000 - 13,312) = 562.40; - # 900 - 20% x (8,000 - 4,968.60) = 293.72. - simulated_council_tax_reduction_benunit: [562.40, 293.72] - council_tax_reduction: 856.12 + # 900 - 20% x (8,000 - 5,296.20) = 359.24. + simulated_council_tax_reduction_benunit: [562.40, 359.24] + council_tax_reduction: 921.64 - name: Wales, working-age head and pension-age sharer are each assessed on their own family period: 2026 @@ -473,6 +477,7 @@ members: [head] would_claim_uc: false council_tax_reduction_applicable_income: 8_000 + council_tax_reduction_working_age_applicable_income: 8_000 sharer_family: members: [sharer] liable_for_share_of_household_rent: true @@ -490,10 +495,14 @@ output: council_tax_reduction_pensioner: [false, true] council_tax_reduction_scheme_supported: [true, true] + council_tax_reduction_devolved_working_age: [true, false] + council_tax_reduction_working_age_applicable_amount: [5_296.20, 5_296.20] council_tax_reduction_applicant_has_non_dep_exemption: [false, true] council_tax_reduction_applicable_amount: [4_968.60, 13_312] - simulated_council_tax_reduction_benunit: [293.72, 562.40] - council_tax_reduction: 856.12 + # The working-age family takes Wales's own allowance, 101.85 a week + # (W.S.I. 2026/13 reg 11): 900 - 20% x (8,000 - 5,296.20) = 359.24. + simulated_council_tax_reduction_benunit: [359.24, 562.40] + council_tax_reduction: 921.64 - name: Scotland, pension-age head and working-age sharer are each assessed on their own family period: 2026 @@ -516,6 +525,7 @@ liable_for_share_of_household_rent: true would_claim_uc: false council_tax_reduction_applicable_income: 8_000 + council_tax_reduction_working_age_applicable_income: 8_000 households: home: members: [head, sharer] @@ -528,6 +538,8 @@ output: council_tax_reduction_pensioner: [true, false] council_tax_reduction_scheme_supported: [true, true] + council_tax_reduction_devolved_working_age: [false, true] + council_tax_reduction_working_age_applicable_amount: [4_968.60, 4_968.60] council_tax_reduction_applicant_has_non_dep_exemption: [false, true] council_tax_reduction_applicable_amount: [13_312, 4_968.60] simulated_council_tax_reduction_benunit: [562.40, 293.72] @@ -549,6 +561,7 @@ members: [head] would_claim_uc: false council_tax_reduction_applicable_income: 8_000 + council_tax_reduction_working_age_applicable_income: 8_000 sharer_family: members: [sharer] liable_for_share_of_household_rent: true @@ -566,6 +579,8 @@ output: council_tax_reduction_pensioner: [false, true] council_tax_reduction_scheme_supported: [true, true] + council_tax_reduction_devolved_working_age: [true, false] + council_tax_reduction_working_age_applicable_amount: [4_968.60, 4_968.60] council_tax_reduction_applicant_has_non_dep_exemption: [true, false] council_tax_reduction_applicable_amount: [4_968.60, 13_312] simulated_council_tax_reduction_benunit: [293.72, 562.40] diff --git a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_carer_support_payment.yaml b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_carer_support_payment.yaml index f18404306e..45a9f2ec1f 100644 --- a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_carer_support_payment.yaml +++ b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_carer_support_payment.yaml @@ -12,16 +12,19 @@ # the supplement's tax does not reach Council Tax Reduction either: at working # age SSI 2021/249 deducts tax only from earnings, and at pension age SSI # 2012/319 reg 31(12) disregards the tax payable on income taken into -# account, which the supplement is not. The model deducts all income tax, so -# the taxable supplement reaches the model's Council Tax Reduction income -# through income tax and in no other way. +# account, which the supplement is not. The pension-age route deducts all +# income tax, so there the taxable supplement reaches the model's Council Tax +# Reduction income through income tax and in no other way. Scotland's +# working-age route deducts only the tax on earnings and counts unearned +# income gross (reg 57), so the supplement's tax does not reach it. # Neither instrument disregards CSP above the CA amount. # # Weekly rates. 2026: CSP and CA 86.45, Scottish Carer Supplement 11.70, # carer premium 48.15, personal allowance 95.55 (single, 25 or over), 256.00 # (single, pension age) and 383.35 (couple, pension age). 2025: CSP 83.30, no # supplement, carer premium 46.40 (SSI 2021/249 Sch 1 para 5(1), as in force on -# 1 April 2025), and personal allowance 92.05. 2024: CA +# 1 April 2025), and personal allowance 92.05. Wales's 2026 working-age +# personal allowance is its own, 101.85 (W.S.I. 2026/13 reg 11(a)). 2024: CA # 81.90, carer premium 45.60, personal allowance 90.50. Reduction is withdrawn # at 20% of income above the applicable amount. Council tax is 2,000 # throughout. @@ -85,10 +88,14 @@ savings: 0 output: carer_support_payment: 86.45 * 52 - council_tax_reduction_applicable_income: 7_000 + 86.45 * 52 + council_tax_reduction_working_age_applicable_income: 7_000 + 86.45 * 52 + council_tax_reduction_working_age_applicable_amount: (95.55 + 48.15) * 52 council_tax_reduction: 1_195.40 -- name: A Welsh carer on Carer's Allowance gets the same Council Tax Reduction as the Scottish carer +- name: A Welsh carer on Carer's Allowance has it counted in Council Tax Reduction + # Wales's working-age rules (W.S.I. 2026/13 reg 11): applicable amount + # (101.85 + 48.15 carer premium) x 52 = 7,800; income 7,000 pension + + # 4,495.40 Carer's Allowance; award 2,000 - 0.2 x 3,695.40 = 1,260.92. period: 2026 absolute_error_margin: 0.01 input: @@ -112,8 +119,9 @@ carers_allowance: 86.45 * 52 carer_support_payment: 0 scottish_carer_supplement: 0 - council_tax_reduction_applicable_income: 7_000 + 86.45 * 52 - council_tax_reduction: 1_195.40 + council_tax_reduction_working_age_applicable_income: 7_000 + 86.45 * 52 + council_tax_reduction_working_age_applicable_amount: (101.85 + 48.15) * 52 + council_tax_reduction: 1_260.92 - name: A Scottish carer who does not claim Carer Support Payment has none counted period: 2026 @@ -188,6 +196,10 @@ # applicable amount, and a full award of 2,000. council_tax_reduction_applicable_income: 5_000 + 86.45 * 52 council_tax_reduction_applicable_amount: (95.55 + 48.15) * 52 + # The working-age route counts the same amount. Scotland's 2026-27 + # amounts (SSI 2026/56 reg 14) equal these: 95.55 + 48.15 carer premium. + council_tax_reduction_working_age_applicable_income: 5_000 + 86.45 * 52 + council_tax_reduction_working_age_applicable_amount: (95.55 + 48.15) * 52 # 2,000 - 0.2 x (9,495.40 - 7,472.40) council_tax_reduction: 1_595.40 @@ -215,8 +227,8 @@ carers_allowance: 0 carer_support_payment: 83.30 * 52 scottish_carer_supplement: 0 - council_tax_reduction_applicable_income: 7_000 + 83.30 * 52 - council_tax_reduction_applicable_amount: (92.05 + 46.40) * 52 + council_tax_reduction_working_age_applicable_income: 7_000 + 83.30 * 52 + council_tax_reduction_working_age_applicable_amount: (92.05 + 46.40) * 52 # 2,000 - 0.2 x (11,331.60 - 7,199.40) = 1,173.56 council_tax_reduction: 2_000 - 0.2 * (7_000 + 83.30 * 52 - (92.05 + 46.40) * 52) diff --git a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_devolved_working_age.yaml b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_devolved_working_age.yaml new file mode 100644 index 0000000000..9005d13a41 --- /dev/null +++ b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_devolved_working_age.yaml @@ -0,0 +1,1566 @@ +# Scotland's working-age council tax reduction scheme (SSI 2021/249) and the +# Welsh rules for persons who are not pensioners (WSI 2013/3029). Expected +# values are worked from the 2026-27 weekly amounts times 52, the model's +# weeks in a year. Council tax is £1,800 and the taper is 20% of annual +# excess income. + +- name: Wales, Universal Credit, no earnings, gets the maximum reduction + # Sch 6 paras 3 and 9: the applicable amount is the UC maximum amount and + # income is the Secretary of State's income figure (nil) plus the award, + # which equals the maximum amount, so there is no excess income. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 35 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: true + households: + household: + members: [claimant] + region: WALES + country: WALES + council_tax: 1_800 + rent: 6_000 + savings: 0 + output: + council_tax_reduction_devolved_working_age: true + council_tax_reduction_working_age_has_universal_credit: true + simulated_council_tax_reduction_benunit: 1_800 + council_tax_reduction: 1_800 + +- name: Wales, Universal Credit, earnings with no work allowance + # Income = earnings E + award, and award = maximum - 0.55 E, so excess + # income = 0.45 E = 0.45 x 12,000 = 5,400. No income tax or NI below + # £12,570. Award = 1,800 - 0.2 x 5,400 = 720. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 35 + employment_income: 12_000 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: true + households: + household: + members: [claimant] + region: WALES + country: WALES + council_tax: 1_800 + rent: 6_000 + savings: 0 + output: + council_tax_reduction_working_age_earned_income: 12_000 + council_tax_reduction_working_age_earnings_disregard: 0 + simulated_council_tax_reduction_benunit: 720 + +- name: Wales, Universal Credit award does not depend on the housing costs element + # The same claimant with twice the rent: the housing costs element is in + # both the applicable amount and the award, so it cancels. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 35 + employment_income: 12_000 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: true + households: + household: + members: [claimant] + region: WALES + country: WALES + council_tax: 1_800 + rent: 12_000 + savings: 0 + output: + simulated_council_tax_reduction_benunit: 720 + +- name: Wales, couple with a child and no Universal Credit + # Sch 7: 159.85 couple + 87.88 child + 20.22 family premium = 267.95 a week, + # 13,933.40 a year. Earnings 20,000 less income tax 1,234 (1,486 less the + # 252 marriage allowance from the partner's unused personal allowance) and + # NI 594.40 = 18,171.60. Disregards: £10 (couple) + £17.10 (a 25+ member + # works 30 hours) = 27.10 a week, 1,409.20 a year. Child Benefit is + # disregarded (Sch 9 para 66). Income 16,762.40; excess 2,829; award + # 1,800 - 565.80. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 30 + employment_income: 20_000 + weekly_hours: 30 + council_tax_benefit_reported: 100 + partner: + age: 30 + child: + age: 5 + benunits: + benunit: + members: [claimant, partner, child] + would_claim_uc: false + households: + household: + members: [claimant, partner, child] + region: WALES + country: WALES + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_working_age_applicable_amount: 13_933.40 + income_tax: [1_234, 0, 0] + council_tax_reduction_working_age_earned_income: 18_171.60 + council_tax_reduction_working_age_earnings_disregard: 1_409.20 + council_tax_reduction_working_age_applicable_income: 16_762.40 + simulated_council_tax_reduction_benunit: 1_234.20 + +- name: Scotland, Universal Credit lone parent counts only the child element + # Reg 35: 95.55 lone parent + 109.85 child premium = 205.40 a week, + # 10,680.80 a year. Reg 57(1)(p): only the UC child element is income, + # which is below the applicable amount, so the maximum reduction is due. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 35 + council_tax_benefit_reported: 100 + child: + age: 5 + benunits: + benunit: + members: [parent, child] + would_claim_uc: true + households: + household: + members: [parent, child] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + rent: 6_000 + savings: 0 + output: + council_tax_reduction_working_age_applicable_amount: 10_680.80 + simulated_council_tax_reduction_benunit: 1_800 + +- name: Scotland, Universal Credit single earner without children + # No child element, so no UC counts (reg 57(2)(d)). Income = 12,000 less the + # £5 disregard (260 a year; no £17.10 with UC) = 11,740. Applicable amount + # 95.55 x 52 = 4,968.60. Excess 6,771.40; award 1,800 - 1,354.28 = 445.72. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 35 + employment_income: 12_000 + weekly_hours: 30 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: true + households: + household: + members: [claimant] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + rent: 6_000 + savings: 0 + output: + council_tax_reduction_relevant_universal_credit_payments: 0 + council_tax_reduction_working_age_earnings_disregard: 260 + council_tax_reduction_working_age_applicable_income: 11_740 + simulated_council_tax_reduction_benunit: 445.72 + +- name: Scotland, single aged 20 without Universal Credit gets the under-25 allowance + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 20 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + savings: 0 + output: + # 75.65 x 52 + council_tax_reduction_working_age_applicable_amount: 3_933.80 + simulated_council_tax_reduction_benunit: 1_800 + +- name: Wales, income-related ESA passports to the maximum reduction whatever the capital + # Sch 9 para 8 and Sch 10 para 8: the whole of the applicant's income and + # capital is disregarded. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + employment_income: 3_000 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + esa_income: 5_000 + households: + household: + members: [claimant] + region: WALES + country: WALES + council_tax: 1_800 + savings: 20_000 + output: + council_tax_reduction_working_age_passported: true + council_tax_reduction_working_age_applicable_income: 0 + council_tax_reduction_assessable_capital: 0 + simulated_council_tax_reduction_benunit: 1_800 + +- name: Scotland, income-related ESA passports to the maximum reduction + # Reg 13(11): a qualifying income-related benefit claimant gets the maximum + # reduction whatever their income. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + employment_income: 3_000 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + esa_income: 5_000 + households: + household: + members: [claimant] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_working_age_passported: true + simulated_council_tax_reduction_benunit: 1_800 + +- name: Scotland, a passported claimant still faces the capital limit + # Reg 13(1)(a) keeps the capital condition; reg 13(11) deems only the income + # conditions met. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + esa_income: 5_000 + households: + household: + members: [claimant] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + savings: 20_000 + output: + simulated_council_tax_reduction_benunit: 0 + +- name: Scotland, tariff income of £1 a week for each £250 or part above £6,000 + # Savings 10,100: 4,100 above £6,000 is 16.4 steps, rounded up to 17, so + # £17 a week, 884 a year. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + savings: 10_100 + output: + council_tax_reduction_tariff_income: 884 + +- name: Wales, a mixed-age couple on Universal Credit claims under the working-age rules + # WSI 2013/3029 reg 3(1)(b)(ii): a person over the qualifying age whose + # partner has an award of Universal Credit is not a pensioner. The two are + # 20 years apart, so the inputs name them as the couple. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + older: + age: 70 + is_claimant_or_partner: true + council_tax_benefit_reported: 100 + younger: + age: 50 + is_claimant_or_partner: true + benunits: + benunit: + members: [older, younger] + would_claim_uc: true + households: + household: + members: [older, younger] + region: WALES + country: WALES + council_tax: 1_800 + rent: 6_000 + savings: 0 + output: + council_tax_reduction_devolved_working_age: true + simulated_council_tax_reduction_benunit: 1_800 + +- name: Scotland 2015-16, lone parent without Universal Credit, before the family premium closed + # SSI 2012/303 as amended by SSI 2015/46: lone parent 73.10 + child 66.90 + + # family premium 17.45 (SSI 2014/35) = 157.45 a week, 8,187.40 a year. + period: 2015 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + child: + age: 4 + benunits: + benunit: + members: [parent, child] + would_claim_uc: false + households: + household: + members: [parent, child] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_200 + output: + council_tax_reduction_working_age_applicable_amount: 8_187.40 + +- name: Scotland 2018-19, child premium 25% above Housing Benefit and no family premium + # Lone parent 73.10 + child premium 83.63 (SSI 2016/253 reg 8); the family + # premium closed to new claims on 1 May 2016 (SSI 2016/81). 156.73 x 52. + period: 2018 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 30 + child: + age: 4 + benunits: + benunit: + members: [parent, child] + would_claim_uc: false + households: + household: + members: [parent, child] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_200 + output: + council_tax_reduction_working_age_applicable_amount: 8_149.96 + +- name: Wales 2016-17, couple with a child without Universal Credit + # WSI 2013/3029 as amended by WSI 2015/44 (unchanged in 2016): couple 114.85 + # + child 66.90 + family premium 17.45 = 199.20 a week, 10,358.40 a year. + period: 2016 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 30 + partner: + age: 30 + child: + age: 4 + benunits: + benunit: + members: [claimant, partner, child] + would_claim_uc: false + households: + household: + members: [claimant, partner, child] + region: WALES + country: WALES + council_tax: 1_200 + output: + council_tax_reduction_working_age_applicable_amount: 10_358.40 + +- name: Wales, carer disregard is £20 of the carer's earnings plus up to £10 of the partner's + # Sch 8 paras 6-7: the carer (Carer's Allowance, no earnings) contributes + # nothing, so only £10 of the working partner's earnings is disregarded + # (520 a year). Partner: 14,000 less tax 34 (after the 252 marriage + # allowance) and NI 114.40 = 13,851.60. Applicable amount (159.85 couple + + # 48.15 carer premium) x 52 = 10,816. Income 13,851.60 - 520 + 4,495.40 + # Carer's Allowance = 17,827; excess 7,011; award 1,800 - 1,402.20. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + carer: + age: 40 + care_hours: 35 + would_claim_carers_allowance: true + council_tax_benefit_reported: 100 + partner: + age: 40 + employment_income: 14_000 + weekly_hours: 20 + benunits: + benunit: + members: [carer, partner] + would_claim_uc: false + households: + household: + members: [carer, partner] + region: WALES + country: WALES + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_working_age_earnings_disregard: 520 + council_tax_reduction_working_age_applicable_income: 17_827 + simulated_council_tax_reduction_benunit: 397.80 + +- name: Wales, the £17.10 needs the disabled member of a couple to be the one in work + # Sch 8 para 18(2)(b)(v): the disabled claimant does not work, so only the + # £20 disability disregard applies (para 4), 1,040 a year. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + is_disabled_for_benefits: true + council_tax_benefit_reported: 100 + partner: + age: 40 + employment_income: 14_000 + weekly_hours: 20 + benunits: + benunit: + members: [claimant, partner] + would_claim_uc: false + households: + household: + members: [claimant, partner] + region: WALES + country: WALES + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_working_age_earnings_disregard: 1_040 + simulated_council_tax_reduction_benunit: 1_565.72 + +- name: Wales, tax on unearned income is disregarded + # Sch 9 para 4: income tax of 286 on a 14,000 private pension comes off + # unearned income. Income 13,714; applicable amount 101.85 x 52 = 5,296.20; + # award 2,000 - 0.2 x 8,417.80 = 316.44. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 60 + private_pension_income: 14_000 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: WALES + country: WALES + council_tax: 2_000 + savings: 0 + output: + council_tax_reduction_working_age_unearned_income_tax: 286 + council_tax_reduction_working_age_applicable_income: 13_714 + simulated_council_tax_reduction_benunit: 316.44 + +- name: Scotland, only the Carer Support Payment component counts, not the Carer Supplement + # SSI 2021/249 reg 4(1) (as amended by SSI 2025/340) and reg 57(1)(b)(iva): + # 86.45 x 52 = 4,495.40. Earnings 5,000 less the £20 carer disregard; + # applicable amount (95.55 + 48.15) x 52 = 7,472.40; income 8,455.40; + # award 1,800 - 196.60. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + carer: + age: 35 + care_hours: 40 + would_claim_carers_allowance: true + employment_income: 5_000 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [carer] + would_claim_uc: false + households: + household: + members: [carer] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_working_age_unearned_income: 4_495.40 + simulated_council_tax_reduction_benunit: 1_603.40 + +- name: Scotland, a carer premium for each partner who is a carer + # Sch 1 para 5(3): 2 x 48.15 x 52 = 5,007.60. Applicable amount 150.15 x 52 + # + 5,007.60 = 12,815.40. Income 6,000 - 1,040 + 2 x 4,495.40 = 13,950.80; + # award 1,800 - 0.2 x 1,135.40 = 1,572.92. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + carer_one: + age: 40 + care_hours: 40 + would_claim_carers_allowance: true + employment_income: 6_000 + weekly_hours: 10 + council_tax_benefit_reported: 100 + carer_two: + age: 40 + care_hours: 40 + would_claim_carers_allowance: true + benunits: + benunit: + members: [carer_one, carer_two] + would_claim_uc: false + # Each partner cares for a different severely disabled person. + partners_care_for_same_severely_disabled_person: false + households: + household: + members: [carer_one, carer_two] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_working_age_adult_premiums: 5_007.60 + council_tax_reduction_working_age_applicable_amount: 12_815.40 + simulated_council_tax_reduction_benunit: 1_572.92 + +- name: Scotland, statutory maternity pay is earnings on the Universal Credit route + # Reg 49(4): SMP counts as employed earnings, which takes this family's + # income well above its applicable amount. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 30 + employment_income: 15_000 + weekly_hours: 30 + council_tax_benefit_reported: 100 + partner: + age: 30 + statutory_maternity_pay: 9_000 + baby: + age: 0 + benunits: + benunit: + members: [claimant, partner, baby] + would_claim_uc: true + households: + household: + members: [claimant, partner, baby] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + rent: 6_000 + savings: 0 + output: + simulated_council_tax_reduction_benunit: 0 + +- name: Scotland, the £17.10 needs employed earnings from April 2022 + # Sch 3 para 15(1): a self-employed lone parent gets only the £25 disregard + # (1,300 a year). Without Universal Credit the profit is reduced by the + # prescribed notional deductions, not the tax paid (SSI 2021/249 reg 51(9); + # SSI 2012/303 reg 38): income tax at the basic rate, 20% x (15,000 - + # 12,570) = 486 (the 461.70 actually paid includes the 19% starter band), + # and Class 4, 6% x (15,000 - 12,570) = 145.80. Net profit 14,368.20; + # income 13,068.20; applicable amount (95.55 + 109.85) x 52 = 10,680.80; + # award 1,800 - 0.2 x 2,387.40 = 1,322.52. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 35 + self_employment_income: 15_000 + weekly_hours: 30 + council_tax_benefit_reported: 100 + child: + age: 5 + benunits: + benunit: + members: [parent, child] + would_claim_uc: false + households: + household: + members: [parent, child] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + savings: 0 + output: + income_tax: [461.70, 0] + council_tax_reduction_working_age_earned_income: 14_368.20 + council_tax_reduction_working_age_earnings_disregard: 1_300 + simulated_council_tax_reduction_benunit: 1_322.52 + +- name: Scotland, an employed lone parent working 30 hours gets the £17.10 + # (25 + 17.10) x 52 = 2,189.20. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 35 + employment_income: 15_000 + weekly_hours: 30 + council_tax_benefit_reported: 100 + child: + age: 5 + benunits: + benunit: + members: [parent, child] + would_claim_uc: false + households: + household: + members: [parent, child] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_working_age_earnings_disregard: 2_189.20 + +- name: Scotland 2025-26, the disability premium is the Scottish amount + # SSI 2025/24: £43.20 a week (2,246.40 a year), not the projected DWP rate. + period: 2025 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + is_disabled_for_benefits: true + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_working_age_adult_premiums: 2_246.40 + +- name: Wales, tax on a pension does not come off wages + # Only tax "deducted from those earnings" comes off earnings (Sch 6 para + # 15(3)(a)); tax on the pension is disregarded from the pension (Sch 9 para + # 4). Earnings are the lowest slice of income, so the £500 wages bear no tax + # and the 386 = 0.2 x (14,500 - 12,570) is all on the pension. Income: + # 500 - 260 (£5 disregard) + 14,000 - 386 = 13,854; applicable amount + # 101.85 x 52 = 5,296.20; award 1,800 - 0.2 x 8,557.80 = 88.44. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 60 + employment_income: 500 + private_pension_income: 14_000 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: WALES + country: WALES + council_tax: 1_800 + savings: 0 + output: + income_tax: 386 + council_tax_reduction_working_age_earned_income: 500 + council_tax_reduction_working_age_earnings_disregard: 260 + council_tax_reduction_working_age_unearned_income_tax: 386 + council_tax_reduction_working_age_applicable_income: 13_854 + simulated_council_tax_reduction_benunit: 88.44 + +- name: Wales, pension tax survives when childcare absorbs the wages + # Lone parent, child aged 3, £10,000 wages at 16 hours, £13,000 pension, + # £9,000 childcare (under the £175 a week cap). The wages bear no tax; the + # 2,086 = 0.2 x (23,000 - 12,570) is on the pension. Earnings 10,000 - + # 1,300 (£25 disregard) - 9,000 childcare = 0 (the £17.10 needs earnings to + # cover it). Pension 13,000 - 2,086 = 10,914, below the applicable amount + # (101.85 + 87.88 child + 20.22 family premium) x 52 = 10,917.40, so the + # award is the full 1,800. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 35 + employment_income: 10_000 + weekly_hours: 16 + private_pension_income: 13_000 + childcare_expenses: 9_000 + council_tax_benefit_reported: 100 + child: + age: 3 + benunits: + benunit: + members: [parent, child] + would_claim_uc: false + households: + household: + members: [parent, child] + region: WALES + country: WALES + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_working_age_earned_income: 10_000 + council_tax_reduction_working_age_earnings_disregard: 1_300 + council_tax_reduction_working_age_childcare_deduction: 9_000 + council_tax_reduction_working_age_unearned_income_tax: 2_086 + council_tax_reduction_working_age_applicable_amount: 10_917.40 + council_tax_reduction_working_age_applicable_income: 10_914 + simulated_council_tax_reduction_benunit: 1_800 + +- name: Scotland, a pension counts gross and its tax does not come off wages + # SSI 2021/249 reg 50(3)(a) deducts tax "deducted from" the earnings; reg 57 + # counts the pension gross. The £4,000 wages bear no tax (the 271.70 is on + # the pension). Income 4,000 - 260 + 10,000 = 13,740; applicable amount + # 95.55 x 52 = 4,968.60; award 1,800 - 0.2 x 8,771.40 = 45.72. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + employment_income: 4_000 + weekly_hours: 20 + private_pension_income: 10_000 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + savings: 0 + output: + income_tax: 271.70 + council_tax_reduction_working_age_earned_income: 4_000 + council_tax_reduction_working_age_applicable_income: 13_740 + simulated_council_tax_reduction_benunit: 45.72 + +- name: Wales, dividend tax does not come off wages + # £15,000 wages and £10,000 dividends. Only the tax and NI on the wages + # come off them: 0.2 x 2,430 = 486 income tax and 0.08 x 2,430 = 194.40 + # Class 1, leaving 14,319.60. The dividend tax (1,021.25) is not deducted + # from earnings, and the dividends are not on the closed income list. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + employment_income: 15_000 + weekly_hours: 37 + dividend_income: 10_000 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: WALES + country: WALES + council_tax: 1_800 + savings: 0 + output: + income_tax: 1_507.25 + council_tax_reduction_working_age_earned_income: 14_319.60 + council_tax_reduction_working_age_unearned_income: 0 + council_tax_reduction_working_age_unearned_income_tax: 0 + +- name: Wales, a carer premium on entitlement when an overlapping benefit takes the payment to nil + # Sch 7 para 14(1) needs the claimant to be "entitled to a carer's + # allowance"; contributory ESA of £6,000 overlaps it to nil. Applicable + # amount (101.85 + 48.15) x 52 = 7,800; income 6,000 ESA + 4,000 pension, + # untaxed; award 1,800 - 0.2 x 2,200 = 1,360. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + care_hours: 40 + esa_contrib_reported: 6_000 + private_pension_income: 4_000 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: WALES + country: WALES + council_tax: 1_800 + savings: 0 + output: + carers_allowance: 0 + council_tax_reduction_working_age_carers: 1 + council_tax_reduction_working_age_applicable_amount: 7_800 + council_tax_reduction_working_age_applicable_income: 10_000 + simulated_council_tax_reduction_benunit: 1_360 + +- name: Scotland, caring hours without a carer benefit or a Universal Credit award give no carer premium + # Sch 1 para 6(1)(c) needs "an award of universal credit which includes the + # carer element"; a potential element is not one. The claimant does not + # claim Carer Support Payment. £5 disregard; income 12,000 - 260 = 11,740; + # award 1,800 - 0.2 x (11,740 - 4,968.60) = 445.72. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + employment_income: 12_000 + weekly_hours: 20 + care_hours: 40 + would_claim_carers_allowance: false + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_working_age_carers: 0 + council_tax_reduction_working_age_earnings_disregard: 260 + simulated_council_tax_reduction_benunit: 445.72 + +- name: Scotland, a Universal Credit worker with LCWRA gets the £20 disregard + # Sch 3 para 4(3): the £20 also applies to a UC applicant with limited + # capability for work-related activity who is in employment and under + # pensionable age, with no disability premium. Earnings 12,000 (no tax or + # NI) - 1,040; no children, so no UC counts. Award 1,800 - 0.2 x (10,960 - + # 4,968.60) = 601.72. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 35 + employment_income: 12_000 + weekly_hours: 30 + uc_limited_capability_for_WRA: true + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: true + households: + household: + members: [claimant] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + rent: 6_000 + savings: 0 + output: + council_tax_reduction_working_age_has_universal_credit: true + council_tax_reduction_working_age_earnings_disregard: 1_040 + council_tax_reduction_working_age_applicable_income: 10_960 + simulated_council_tax_reduction_benunit: 601.72 + +- name: Scotland, voluntary Class 3 contributions do not come off earnings + # Reg 50(3)(a) deducts "primary Class 1 contributions"; voluntary Class 3 + # is not deductible. Same award as without them: 445.72. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 35 + employment_income: 12_000 + weekly_hours: 20 + ni_class_3: 500 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + savings: 0 + output: + national_insurance: 500 + council_tax_reduction_working_age_earned_income: 12_000 + simulated_council_tax_reduction_benunit: 445.72 + +- name: Wales, property income does not dilute the tax disregarded from a pension + # Sch 9 para 4 disregards the tax on income counted under Sch 6 para 17. + # Property income is taxed separately (property_income_tax) and is not in + # the tax on the pension: 0.2 x (14,000 - 12,570) = 286, all of it + # disregarded, as without the property income. Income 14,000 - 286 = + # 13,714 (the rent is treated as capital); applicable amount 101.85 x 52 = + # 5,296.20; award 2,000 - 0.2 x 8,417.80 = 316.44. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + private_pension_income: 14_000 + property_income: 6_000 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: WALES + country: WALES + council_tax: 2_000 + savings: 0 + output: + council_tax_reduction_working_age_unearned_income_tax: 286 + council_tax_reduction_working_age_applicable_income: 13_714 + simulated_council_tax_reduction_benunit: 316.44 + +- name: Scotland, the LCWRA £20 disregard where the younger partner has LCWRA and the older one works + # Sch 3 para 4(3): "either the applicant or the applicant's partner has not + # reached pensionable age and at least one of them is engaged in + # employment"; the two need not be the same person. A mixed-age couple on + # Universal Credit is on the working-age route. The two are 30 years + # apart, so the inputs name them as the couple. Earnings 12,000 (no tax, + # and no NI over State Pension age) - 1,040 = 10,960; no children, so no + # Universal Credit counts; applicable amount 150.15 x 52 = 7,807.80; award + # 1,800 - 0.2 x 3,152.20 = 1,169.56. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + is_claimant_or_partner: true + uc_limited_capability_for_WRA: true + council_tax_benefit_reported: 100 + partner: + age: 70 + is_claimant_or_partner: true + employment_income: 12_000 + weekly_hours: 20 + state_pension: 0 + benunits: + benunit: + members: [claimant, partner] + would_claim_uc: true + households: + household: + members: [claimant, partner] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + rent: 6_000 + savings: 0 + output: + council_tax_reduction_pensioner: false + council_tax_reduction_working_age_has_universal_credit: true + council_tax_reduction_working_age_earnings_disregard: 1_040 + council_tax_reduction_working_age_applicable_income: 10_960 + simulated_council_tax_reduction_benunit: 1_169.56 + +- name: Wales, a self-employed profit gets the notional tax deduction, not the tax paid + # WSI 2013/3029 Sch 6 paras 24(3) and 25: income tax at the basic rate on + # the profit less the personal allowance, as if the profit were the only + # income, and Class 4 on it. The £5,000 profit is below the allowance, so + # nothing comes off it, although the tax paid on it is 1,000 (the £12,570 + # pay takes the allowance). Pay 12,570, below the primary threshold, bears + # no tax or Class 1. Earnings 12,570 + 5,000 = 17,570. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + employment_income: 12_570 + self_employment_income: 5_000 + weekly_hours: 20 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: WALES + country: WALES + council_tax: 1_800 + savings: 0 + output: + income_tax: 1_000 + council_tax_reduction_working_age_earned_income: 17_570 + +- name: Scotland, a working-age household head who applies alone has her own pension counted + # #2078: the household head is liable but is not the benefit unit's + # claimant or partner, so she applies alone as a single person. SSI + # 2021/249 reg 36 counts her £100,000 private pension; the young parents' + # child and awards are theirs. 20% of the excess is far above the £1,800 + # bill, so there is no reduction. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + head: + age: 40 + is_household_head: true + private_pension_income: 100_000 + young_mother: + age: 17 + is_parent: true + is_household_head: false + young_father: + age: 17 + is_parent: true + is_household_head: false + baby: + age: 0 + is_household_head: false + benunits: + family: + members: [head, young_mother, young_father, baby] + claims_all_entitled_benefits: true + would_claim_uc: false + households: + home: + members: [head, young_mother, young_father, baby] + country: SCOTLAND + local_authority: CITY_OF_EDINBURGH + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_head_applies_alone: true + is_council_tax_reduction_applicant_or_partner: [true, false, false, false] + council_tax_reduction_devolved_working_age: true + council_tax_reduction_working_age_child_amounts: 0 + council_tax_reduction_working_age_applicable_amount: 95.55 * 52 + council_tax_reduction_working_age_applicable_income: 100_000 + simulated_council_tax_reduction_benunit: 0 + +- name: Scotland, the benefit unit's income-related ESA does not give a head who applies alone the higher single rate + # The household head, 22, applies alone; the young couple in her benefit + # unit are its claimant and partner, and their income-related ESA is + # theirs, not hers. She keeps the under-25 single allowance, 75.65 x 52 = + # 3,933.80 (SSI 2026/56 reg 14(a)(i)), and is not passported. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + head: + age: 22 + is_household_head: true + young_mother: + age: 17 + is_parent: true + is_household_head: false + young_father: + age: 17 + is_parent: true + is_household_head: false + baby: + age: 0 + is_household_head: false + benunits: + family: + members: [head, young_mother, young_father, baby] + claims_all_entitled_benefits: true + would_claim_uc: false + esa_income: 4_000 + households: + home: + members: [head, young_mother, young_father, baby] + country: SCOTLAND + local_authority: CITY_OF_EDINBURGH + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_head_applies_alone: true + council_tax_reduction_working_age_passported: false + council_tax_reduction_working_age_personal_allowance: 75.65 * 52 + +- name: Scotland, partners caring for the same person get one carer premium + # SSI 2021/249 Sch 1 para 5(3)-(4). Both partners care 35 hours for the + # same person. The model pays Carer Support Payment (86.45 x 52 = + # 4,495.40) to one of them, and the scheme gives one premium: + # (150.15 + 48.15) x 52 = 10,311.60. Income 10,000 pension + 4,495.40 = + # 14,495.40; award 3,000 - 0.2 x 4,183.80 = 2,163.24 (two premiums would + # give 2,664.00). + period: 2026 + absolute_error_margin: 0.01 + input: + people: + carer_one: + age: 40 + care_hours: 35 + private_pension_income: 10_000 + council_tax_benefit_reported: 100 + carer_two: + age: 40 + care_hours: 35 + benunits: + benunit: + members: [carer_one, carer_two] + would_claim_uc: false + partners_care_for_same_severely_disabled_person: true + households: + household: + members: [carer_one, carer_two] + region: SCOTLAND + country: SCOTLAND + council_tax: 3_000 + savings: 0 + output: + council_tax_reduction_working_age_carers: 1 + council_tax_reduction_working_age_applicable_amount: (150.15 + 48.15) * 52 + council_tax_reduction_working_age_applicable_income: 14_495.40 + simulated_council_tax_reduction_benunit: 2_163.24 + +- name: Scotland, partners caring for different people get a carer premium each + # The control: two premiums, (150.15 + 2 x 48.15) x 52 = 12,815.40; award + # 3,000 - 0.2 x (18,990.80 - 12,815.40) = 1,764.92. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + carer_one: + age: 40 + care_hours: 35 + private_pension_income: 10_000 + council_tax_benefit_reported: 100 + carer_two: + age: 40 + care_hours: 35 + benunits: + benunit: + members: [carer_one, carer_two] + would_claim_uc: false + partners_care_for_same_severely_disabled_person: false + households: + household: + members: [carer_one, carer_two] + region: SCOTLAND + country: SCOTLAND + council_tax: 3_000 + savings: 0 + output: + council_tax_reduction_working_age_carers: 2 + simulated_council_tax_reduction_benunit: 1_764.92 + +- name: Wales, primary Class 1 comes off pay in full; miscellaneous income is unearned + # £15,000 pay and £3,000 Part 5 miscellaneous income, 20 hours, no UC. + # Income tax 0.2 x (18,000 - 12,570) = 1,086, all on the two (the lowest + # slice), shared pro rata: 905 on pay, 181 on the miscellaneous income. + # Class 1 0.08 x (15,000 - 12,570) = 194.40, on pay only (Sch 6 para + # 15(3)(a)). Net pay 15,000 - 905 - 194.40 = 13,900.60, less the £5 + # disregard (260). The miscellaneous income is gross income other than + # earnings (Sch 6 para 17), less the tax on it (Sch 9 para 4): 2,819. + # Income 13,640.60 + 2,819 = 16,459.60; applicable amount 5,296.20; award + # 4,000 - 0.2 x 11,163.40 = 1,767.32. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + employment_income: 15_000 + miscellaneous_income: 3_000 + weekly_hours: 20 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: WALES + country: WALES + council_tax: 4_000 + savings: 0 + output: + income_tax: 1_086 + council_tax_reduction_working_age_earned_income: 13_900.60 + council_tax_reduction_working_age_unearned_income: 3_000 + council_tax_reduction_working_age_unearned_income_tax: 181 + council_tax_reduction_working_age_applicable_income: 16_459.60 + simulated_council_tax_reduction_benunit: 1_767.32 + +- name: Scotland, Part 5 miscellaneous income counts as unearned income + # SSI 2021/249 reg 57(1)(o): "income that ... is taxable under Part 5 of + # the Income Tax (Trading and Other Income) Act 2005", counted gross. No + # earnings. Income 6,000; applicable amount 95.55 x 52 = 4,968.60; award + # 2,000 - 0.2 x 1,031.40 = 1,793.72. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + miscellaneous_income: 6_000 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: SCOTLAND + country: SCOTLAND + council_tax: 2_000 + savings: 0 + output: + council_tax_reduction_working_age_earned_income: 0 + council_tax_reduction_working_age_unearned_income: 6_000 + council_tax_reduction_working_age_applicable_income: 6_000 + simulated_council_tax_reduction_benunit: 1_793.72 + +- name: Wales, the childcare cap counts only children with charges + # WSI 2013/3029 Sch 6 para 20(3): the £300 cap applies "where the + # applicant's family includes more than one child in respect of whom + # relevant child care charges are paid". Lone parent, children aged 5 and + # 10, charges of £12,000 on the five-year-old only, so the £175 cap applies: + # 175 x 52 = 9,100. Earnings 40,000 - 5,486 tax - 2,194.40 NI = 32,319.60; + # disregard (25 + 17.10) x 52 = 2,189.20; income 32,319.60 - 2,189.20 - + # 9,100 = 21,030.40. Applicable amount (101.85 + 2 x 87.88 + 20.22) x 52 = + # 15,487.16; award 3,000 - 0.2 x 5,543.24 = 1,891.35 (the £300 cap would + # deduct all 12,000 and pay 2,471.35). + period: 2026 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 35 + employment_income: 40_000 + weekly_hours: 30 + council_tax_benefit_reported: 100 + young_child: + age: 5 + childcare_expenses: 12_000 + older_child: + age: 10 + benunits: + benunit: + members: [parent, young_child, older_child] + would_claim_uc: false + households: + household: + members: [parent, young_child, older_child] + region: WALES + country: WALES + council_tax: 3_000 + savings: 0 + output: + council_tax_reduction_working_age_earned_income: 32_319.60 + council_tax_reduction_working_age_earnings_disregard: 2_189.20 + council_tax_reduction_working_age_childcare_deduction: 9_100 + council_tax_reduction_working_age_applicable_amount: 15_487.16 + council_tax_reduction_working_age_applicable_income: 21_030.40 + simulated_council_tax_reduction_benunit: 1_891.35 + council_tax_reduction: 1_891.35 + +- name: Wales, charges entered on the parent take the one-child cap + # The same family with the £12,000 of charges entered on the parent rather + # than on either child. The formula still deducts them, at the one-child cap + # of 175 x 52 = 9,100, so the award matches the case above: 1,891.35. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 35 + employment_income: 40_000 + weekly_hours: 30 + childcare_expenses: 12_000 + council_tax_benefit_reported: 100 + young_child: + age: 5 + older_child: + age: 10 + benunits: + benunit: + members: [parent, young_child, older_child] + would_claim_uc: false + households: + household: + members: [parent, young_child, older_child] + region: WALES + country: WALES + council_tax: 3_000 + savings: 0 + output: + council_tax_reduction_working_age_childcare_deduction: 9_100 + council_tax_reduction: 1_891.35 + +- name: Scotland without UC, the childcare cap counts only children with charges + # SSI 2021/249 reg 38(4): £175 a week where only one child has relevant + # childcare charges. Lone parent, children aged 5 and 10, £12,000 of + # charges on the five-year-old only: cap 175 x 52 = 9,100. Earnings + # 32,254.53 after tax and NI; disregard (25 + 17.10) x 52 = 2,189.20; + # income 32,254.53 - 2,189.20 - 9,100 = 20,965.33. Applicable amount + # (95.55 + 2 x 109.85) x 52 = 16,393; award 3,000 - 0.2 x 4,572.33 = + # 2,085.53 (the £300 cap would deduct all 12,000 and pay 2,665.53). + period: 2026 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 35 + employment_income: 40_000 + weekly_hours: 30 + council_tax_benefit_reported: 100 + young_child: + age: 5 + childcare_expenses: 12_000 + older_child: + age: 10 + benunits: + benunit: + members: [parent, young_child, older_child] + would_claim_uc: false + would_claim_tfc: false + households: + household: + members: [parent, young_child, older_child] + region: SCOTLAND + country: SCOTLAND + council_tax: 3_000 + savings: 0 + output: + council_tax_reduction_working_age_earned_income: 32_254.53 + council_tax_reduction_working_age_earnings_disregard: 2_189.20 + council_tax_reduction_working_age_childcare_deduction: 9_100 + council_tax_reduction_working_age_applicable_amount: 16_393 + council_tax_reduction_working_age_applicable_income: 20_965.33 + council_tax_reduction: 2_085.53 + +- name: Scotland with UC, the childcare cap counts only children with charges + # SSI 2021/249 reg 42(4): £290 a week in 2026 where only one child has + # relevant childcare charges. Lone parent on UC, children aged 5 and 10, + # £24,000 of charges on the five-year-old only. UC pays a childcare element + # of 0.85 x 24,000 = 20,400, which reg 78(3) grosses up to 24,000; cap 290 x + # 52 = 15,080. Earnings 17,959.27 on the UC measure; disregard 25 x 52 = + # 1,300; relevant UC payments min(7,869.84 + 20,400, award 28,177.04) = + # 28,177.04; income 17,959.27 - 1,300 + 28,177.04 - 15,080 = 29,756.31. + # Applicable amount 16,393; award 3,000 - 0.2 x 13,363.31 = 327.34 (the + # £497 cap would deduct all 24,000 and pay 2,111.34). + period: 2026 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 35 + employment_income: 20_000 + weekly_hours: 30 + council_tax_benefit_reported: 100 + young_child: + age: 5 + childcare_expenses: 24_000 + older_child: + age: 10 + benunits: + benunit: + members: [parent, young_child, older_child] + would_claim_tfc: false + households: + household: + members: [parent, young_child, older_child] + region: SCOTLAND + country: SCOTLAND + council_tax: 3_000 + savings: 0 + output: + council_tax_reduction_working_age_has_universal_credit: true + uc_childcare_element: 20_400 + council_tax_reduction_working_age_earned_income: 17_959.27 + council_tax_reduction_working_age_earnings_disregard: 1_300 + council_tax_reduction_relevant_universal_credit_payments: 28_177.04 + council_tax_reduction_working_age_childcare_deduction: 15_080 + council_tax_reduction_working_age_applicable_income: 29_756.31 + council_tax_reduction: 327.34 + +- name: Scotland without UC, childcare comes off after unearned income + # SSI 2021/249 reg 38(2): estimate earned income, add unearned income, then + # deduct relevant childcare charges. Lone parent aged 60, child aged 5, + # £5,000 self-employed profit from 30 hours (no notional tax or Class 4 on + # it), £15,000 private pension, £9,000 of charges (under the 175 x 52 = + # 9,100 cap). Income 5,000 - 1,300 (£25 lone parent disregard; the £17.10 + # needs employed earnings from April 2022) + 15,000 - 9,000 = 9,700, below + # the applicable amount (95.55 + 109.85) x 52 = 10,680.80, so the award is + # the full 1,800. Deducting the charges from earnings alone would count + # 15,000 and pay 936.16, with household net income 18,916.43. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + parent: + age: 60 + self_employment_income: 5_000 + weekly_hours: 30 + private_pension_income: 15_000 + council_tax_benefit_reported: 100 + child: + age: 5 + childcare_expenses: 9_000 + benunits: + benunit: + members: [parent, child] + would_claim_uc: false + would_claim_tfc: false + households: + household: + members: [parent, child] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_working_age_earned_income: 5_000 + council_tax_reduction_working_age_earnings_disregard: 1_300 + council_tax_reduction_working_age_unearned_income: 15_000 + council_tax_reduction_working_age_childcare_deduction: 9_000 + council_tax_reduction_working_age_applicable_amount: 10_680.80 + council_tax_reduction_working_age_applicable_income: 9_700 + council_tax_reduction: 1_800 + household_net_income: 19_780.27 + +- name: Wales, rent from a sub-tenant counts less £20 a week on the working-age route + # WSI 2013/3029 Sch 9 para 26 disregards £20 a week of the rent a + # sub-tenant pays (council_tax_reduction_home_letting_income): (200 - 20) x + # 52 = 9,360. No earnings. Applicable amount 101.85 x 52 = 5,296.20; award + # 1,800 - 0.2 x (9,360 - 5,296.20) = 987.24. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + sublet_income: 10_400 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: WALES + country: WALES + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_home_letting_income: 9_360 + council_tax_reduction_working_age_applicable_amount: 5_296.20 + council_tax_reduction_working_age_applicable_income: 9_360 + council_tax_reduction: 987.24 + +- name: Scotland, rent from a sub-tenant does not count on the working-age route from April 2022 + # SSI 2021/249 reg 57(1) has no head for it. Applicable amount 95.55 x 52 = + # 4,968.60 exceeds the nil income, so the award is the full 1,800. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + claimant: + age: 40 + sublet_income: 10_400 + council_tax_benefit_reported: 100 + benunits: + benunit: + members: [claimant] + would_claim_uc: false + households: + household: + members: [claimant] + region: SCOTLAND + country: SCOTLAND + council_tax: 1_800 + savings: 0 + output: + council_tax_reduction_working_age_applicable_income: 0 + council_tax_reduction: 1_800 diff --git a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_pension_credit.yaml b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_pension_credit.yaml index 033ddb88c5..21eda800bf 100644 --- a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_pension_credit.yaml +++ b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_pension_credit.yaml @@ -363,10 +363,14 @@ savings: 0 output: # Working age, so not eligible for Pension Credit: no guarantee credit. + # The Welsh working-age rules apply (WSI 2013/3029 Sch 6-8): applicable + # amount 101.85 x 52 = 5,296.20; income 10,000 less the £5 earnings + # disregard (260) = 9,740; award 2,000 - 0.2 x 4,443.80 = 1,111.24. guarantee_credit: 0 in_receipt_of_guarantee_credit: false - council_tax_reduction_applicable_income: 10_000 - council_tax_reduction: 993.72 + council_tax_reduction_working_age_applicable_amount: 5_296.20 + council_tax_reduction_working_age_applicable_income: 9_740 + council_tax_reduction: 1_111.24 - name: Scotland guarantee credit recipient gets maximum CTR above the capital limit period: 2026 diff --git a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_pensioner.yaml b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_pensioner.yaml index e1dbac5588..ea413c922d 100644 --- a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_pensioner.yaml +++ b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/council_tax_reduction_pensioner.yaml @@ -312,15 +312,14 @@ council_tax_reduction_pensioner: false council_tax_reduction_scheme_supported: true -- name: A capped Welsh mixed-age UC award does not use pensioner CTR allowances +- name: A capped Welsh mixed-age UC award takes the working-age UC route # WSI 2013/3029 reg 3 excludes a "person with an award of universal credit" - # from pensioner status; Sch 7 covers "persons who are not pensioners". - # The cap still lowers UC income: 30,000 + 3,000 - 22,020 = 10,980. - # Under the model's shared national means test, the working-age applicable - # amount is 7,807.80 and the remaining 22,020 income exhausts the reduction. - # This pins scheme selection, not a statutory Welsh UC award: Sch 6 paras - # 3 and 9 use UC's maximum amount and income calculation, which the shared - # formula does not yet implement. That separate gap is flagged for review. + # from pensioner status, so the Welsh route for Universal Credit applicants + # applies (Sch 6 paras 3 and 9): the applicable amount is the UC maximum + # amount (30,000) and income is the Secretary of State's income (nil) plus + # the award after the cap (cap 22,020 outside London; 30,000 + 3,000 - + # 22,020 = 10,980 off, leaving 19,020). Income is below the applicable + # amount, so the family gets the maximum reduction. period: 2026 absolute_error_margin: 0.01 input: @@ -336,6 +335,7 @@ benunits: benunit: members: [older, younger, child] + uc_maximum_amount: 30_000 universal_credit_pre_benefit_cap: 30_000 child_benefit: 3_000 uc_deductions: 0 @@ -350,7 +350,8 @@ output: benefit_cap_reduction: 10_980 universal_credit: 19_020 - council_tax_reduction_applicable_income: 22_020 council_tax_reduction_pensioner: false - council_tax_reduction_applicable_amount: 7_807.80 - council_tax_benefit: 0 + council_tax_reduction_devolved_working_age: true + council_tax_reduction_working_age_applicable_amount: 30_000 + council_tax_reduction_working_age_applicable_income: 19_020 + council_tax_benefit: 2_000 diff --git a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/ctr_takeup.yaml b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/ctr_takeup.yaml index be3dbcbc9c..d46e349bde 100644 --- a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/ctr_takeup.yaml +++ b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/ctr_takeup.yaml @@ -140,6 +140,11 @@ council_tax_reduction: 1_800 - name: Scottish working-age calculator household retains CTR without reports + # The household claims Universal Credit by default. The Scottish + # working-age scheme counts only an award's child and childcare elements + # (council_tax_reduction_relevant_universal_credit_payments, SSI 2021/249 + # reg 57), so with no children income is nil and the reduction is the full + # council tax. period: 2026 absolute_error_margin: 0.01 input: @@ -153,4 +158,4 @@ council_tax_benefit_reported: 0 claims_all_entitled_benefits: true would_claim_council_tax_reduction: true - council_tax_reduction: 633.96 + council_tax_reduction: 1_800 diff --git a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/severe_disability_premium_young_person.yaml b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/severe_disability_premium_young_person.yaml index 8e67b31977..cd84156576 100644 --- a/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/severe_disability_premium_young_person.yaml +++ b/policyengine_uk/tests/policy/baseline/gov/local_authorities/council_tax_reduction/severe_disability_premium_young_person.yaml @@ -2,7 +2,13 @@ # allowance95.55*52=4968.60; severe86.05*52=4474.60; withdrawal20%. # PIP qualifies SDP but generic disability flag is separately supplied/defaultfalse. # Pension12570:no tax; PIP disregarded; Child Benefit claim declined. -# CTR=2000-20%*(12570-allowance):479.72 or1374.64. +# CTR=2000-20%*(12570-allowance):479.72 under the shared formula. Where the +# student is a UC qualifying young person, Scotland's working-age route +# (council_tax_reduction_devolved_working_age) makes the applicant a lone +# parent with a child premium: (95.55 + 109.85 + 86.05 severe disability +# premium) * 52 = 15,155.40 (SSI 2026/56 reg 14), above the 12,570 income, +# so the award is the full 2,000. The shared council_tax_reduction_applicable_ +# amount (9,443.20) has no child amounts and no longer sets the award. # Annual UC terminal-date input represents unavailable assessment-period detail. # Reverse case supplies CB family status: input-contract composition, # not a naturally derived eligibility pair or full statutory rate audit. @@ -49,6 +55,8 @@ savings: 0 output: simulated_council_tax_reduction_benunit: 479.72 + is_council_tax_reduction_lone_parent: false + council_tax_reduction_working_age_applicable_amount: 4968.6 disability_premium: 0 enhanced_disability_premium: 0 severe_disability_premium: 4474.6 @@ -99,7 +107,12 @@ council_tax: 2000 savings: 0 output: - simulated_council_tax_reduction_benunit: 1374.64 + simulated_council_tax_reduction_benunit: 2000 + is_council_tax_reduction_lone_parent: true + council_tax_reduction_working_age_child_amounts: 109.85 * 52 + council_tax_reduction_working_age_adult_premiums: 4474.6 + council_tax_reduction_working_age_applicable_amount: (95.55 + 109.85 + 86.05) * 52 + council_tax_reduction_working_age_applicable_income: 12570 disability_premium: 0 enhanced_disability_premium: 0 severe_disability_premium: 4474.6 @@ -152,7 +165,12 @@ council_tax: 2000 savings: 0 output: - simulated_council_tax_reduction_benunit: 1374.64 + simulated_council_tax_reduction_benunit: 2000 + is_council_tax_reduction_lone_parent: true + council_tax_reduction_working_age_child_amounts: 109.85 * 52 + council_tax_reduction_working_age_adult_premiums: 4474.6 + council_tax_reduction_working_age_applicable_amount: (95.55 + 109.85 + 86.05) * 52 + council_tax_reduction_working_age_applicable_income: 12570 disability_premium: 0 enhanced_disability_premium: 0 severe_disability_premium: 0 diff --git a/policyengine_uk/tests/test_budget_totals_pinned.py b/policyengine_uk/tests/test_budget_totals_pinned.py index 2a2d5286e4..04fe355727 100644 --- a/policyengine_uk/tests/test_budget_totals_pinned.py +++ b/policyengine_uk/tests/test_budget_totals_pinned.py @@ -4,6 +4,11 @@ EXPECTED holds the three totals for thirteen hand-built households in four years under four reforms, computed with the lists that the formula modules held as literals at commit 46a60678ff52d829253572393abdcc6a03ceb6a7. The +baseline and uprating totals for scottish_lone_parent instead include what +Scotland's working-age Council Tax Reduction route pays (SSI 2021/249 regs 13, +35, 42 and 57). In 2026 it pays £1,100 less 20% of £666.48, the income of +£11,347.28 (£7,700 of pay after the £25 a week disregard, plus the £3,647.28 +Universal Credit child element) above the £10,680.80 applicable amount. The reforms switch on gov.contrib.abolish_council_tax, the two gov.contrib.benefit_uprating rates, and a flat basic income, which the uprating leaves out. The test compares with exact equality, because the @@ -191,7 +196,7 @@ def situation(year): # (reform, year, household): (household_tax, household_benefits, -# household_net_income), from commit 46a60678. +# household_net_income), from commit 46a60678, except as the docstring says. EXPECTED = { ("baseline", 2023, "single_renter_london"): ( 5636.60498046875, @@ -206,8 +211,8 @@ def situation(year): ("baseline", 2023, "pensioner_couple"): (2259.0, 22177.880859375, 19918.880859375), ("baseline", 2023, "scottish_lone_parent"): ( 1259.0, - 14060.240234375, - 21801.240234375, + 14866.3603515625, + 22607.359375, ), ("baseline", 2023, "welsh_working_family"): ( 14074.208984375, @@ -251,8 +256,8 @@ def situation(year): ("baseline", 2025, "pensioner_couple"): (2274.5, 22106.400390625, 19831.900390625), ("baseline", 2025, "scottish_lone_parent"): ( 1274.5, - 14044.3994140625, - 21769.8984375, + 14959.81640625, + 22685.31640625, ), ("baseline", 2025, "welsh_working_family"): ( 12575.306640625, @@ -294,7 +299,7 @@ def situation(year): 35014.81640625, ), ("baseline", 2026, "pensioner_couple"): (2280.0, 22386.83984375, 20106.83984375), - ("baseline", 2026, "scottish_lone_parent"): (1280.0, 14687.2802734375, 22407.28125), + ("baseline", 2026, "scottish_lone_parent"): (1280.0, 15653.984375, 23373.984375), ("baseline", 2026, "welsh_working_family"): ( 12580.806640625, 8410.099609375, @@ -333,8 +338,8 @@ def situation(year): ("baseline", 2028, "pensioner_couple"): (2280.0, 22573.318359375, 20293.318359375), ("baseline", 2028, "scottish_lone_parent"): ( 1280.0, - 15792.3837890625, - 23512.3828125, + 16857.82421875, + 24577.82421875, ), ("baseline", 2028, "welsh_working_family"): ( 12580.806640625, @@ -626,8 +631,8 @@ def situation(year): ("uprating", 2023, "pensioner_couple"): (2259.0, 23504.5625, 21245.5625), ("uprating", 2023, "scottish_lone_parent"): ( 1259.0, - 16169.2763671875, - 23910.27734375, + 17096.314453125, + 24837.314453125, ), ("uprating", 2023, "welsh_working_family"): ( 14074.208984375, @@ -675,8 +680,8 @@ def situation(year): ("uprating", 2025, "pensioner_couple"): (2274.5, 23422.359375, 21147.859375), ("uprating", 2025, "scottish_lone_parent"): ( 1274.5, - 16151.0595703125, - 23876.55859375, + 17203.7890625, + 24929.2890625, ), ("uprating", 2025, "welsh_working_family"): ( 12575.306640625, @@ -716,8 +721,8 @@ def situation(year): ("uprating", 2026, "pensioner_couple"): (2280.0, 23744.865234375, 21464.865234375), ("uprating", 2026, "scottish_lone_parent"): ( 1280.0, - 16890.373046875, - 24610.373046875, + 18002.08203125, + 25722.08203125, ), ("uprating", 2026, "welsh_working_family"): ( 12580.806640625, @@ -761,8 +766,8 @@ def situation(year): ("uprating", 2028, "pensioner_couple"): (2280.0, 23959.31640625, 21679.31640625), ("uprating", 2028, "scottish_lone_parent"): ( 1280.0, - 18161.240234375, - 25881.240234375, + 19386.498046875, + 27106.498046875, ), ("uprating", 2028, "welsh_working_family"): ( 12580.806640625, diff --git a/policyengine_uk/tests/test_council_tax_reduction_applicant_properties.py b/policyengine_uk/tests/test_council_tax_reduction_applicant_properties.py index e690a00ecf..13ef3b526b 100644 --- a/policyengine_uk/tests/test_council_tax_reduction_applicant_properties.py +++ b/policyengine_uk/tests/test_council_tax_reduction_applicant_properties.py @@ -374,6 +374,12 @@ def add_grandmother_household(people, benunits, homes, name, house, split): "council_tax_reduction_relevant_income_based_benefit", "council_tax_reduction_pensioner", "council_tax_reduction_applicant_has_non_dep_exemption", + # Scotland's and Wales's working-age route (#1966). + "council_tax_reduction_devolved_working_age", + "council_tax_reduction_working_age_applicable_income", + "council_tax_reduction_working_age_applicable_amount", + "council_tax_reduction_working_age_passported", + "council_tax_reduction_working_age_has_universal_credit", "simulated_council_tax_reduction_benunit", ] diff --git a/policyengine_uk/tests/test_council_tax_reduction_carer_income_properties.py b/policyengine_uk/tests/test_council_tax_reduction_carer_income_properties.py index 031f5b855e..b27915d2ef 100644 --- a/policyengine_uk/tests/test_council_tax_reduction_carer_income_properties.py +++ b/policyengine_uk/tests/test_council_tax_reduction_carer_income_properties.py @@ -62,6 +62,43 @@ Council Tax Reduction income is nil; where it is in receipt of savings credit only, it equals Pension Credit income plus the Pension Credit paid. +Invariants 1 to 4 concern claims that follow the shared formula (Council Tax +Reduction income and the Housing Benefit applicable amounts). A working-age +Scottish or Welsh claim (council_tax_reduction_devolved_working_age) follows +the devolved working-age route instead, which has its own income, applicable +amount and earnings disregards, so invariants 1 and 2 are checked there only +where council_tax_reduction_devolved_working_age is false, and these hold +where it is true: + +5. Counts the component on the devolved route: claiming Carer Support Payment + raises the working-age unearned income by exactly the Carer Support Payment + component before any overlapping-benefit reduction (SSI 2021/249 reg + 57(1)(b)(iva)), and, where the claim is not passported, raises the + working-age income less net earnings after the disregard by the same + amount: without children or Universal Credit that income is net earnings + less the disregard (never more than the earnings), plus unearned income, + plus tariff income, and the claim changes no capital. The working-age + applicable amount rises by exactly one Scottish carer premium (Sch 1 para + 6(1)). The reduction never rises, and where both awards are partial it + falls by 20% of the rise in working-age income less the rise in the + working-age applicable amount. +6. The supplement on the devolved route: setting the Scottish Carer + Supplement to zero leaves the working-age unearned income, the working-age + applicable amount, and the working-age income less net earnings after the + disregard unchanged. Reg 57(1) is a closed list that leaves the supplement + out, and the route counts unearned income gross (reg 57): it deducts income + tax only from earnings (reg 50(3)(a)), taking earnings as the lowest slice + of the earner's income. So where the net earnings are unchanged, the + income and the reduction are unchanged, and the supplement never lowers + the reduction. + + Net earnings can move: the model's marriage allowance transfers the + transferor's unused personal allowance, up to its cap + (partners_unused_personal_allowance), so a taxable supplement or Carer + Support Payment paid to a transferor shrinks the transfer and raises the + income tax the recipient partner pays on earnings. That is tax on the + partner's earnings, which the route deducts, not tax on the supplement. + These compare the model's own income measures, so they hold whatever carer's benefit the model pays. The model reduces Carer Support Payment by overlapping benefits such as State Pension (the Carer's Assistance (Carer @@ -77,6 +114,7 @@ from hypothesis import strategies as st from policyengine_uk import Simulation +from policyengine_uk.system import system YEAR = 2026 PENSIONS = np.arange(0, 40_001, 2_000) @@ -84,6 +122,12 @@ CARER_SUPPORT_PAYMENT = 86.45 * WEEKS SCOTTISH_CARER_SUPPLEMENT = 11.70 * WEEKS WITHDRAWAL_RATE = 0.2 +# A year of the Scottish working-age carer premium in the model year (SSI +# 2021/249 Sch 1, as uprated), read from the parameter the route uses. +_SCOTTISH_CTR = system.parameters( + str(YEAR) +).gov.local_authorities.scotland.council_tax_reduction +SCOTTISH_CARER_PREMIUM = _SCOTTISH_CTR.working_age.adult_premiums.carer_premium * WEEKS # The income tax Council Tax Reduction income deducts: the liability before # the winter fuel payment charge. INCOME_TAX = "income_tax_before_winter_fuel_payment_charge" @@ -125,6 +169,13 @@ "in_receipt_of_savings_credit_only", "pension_credit_income", "pension_credit", + "council_tax_reduction_devolved_working_age", + "council_tax_reduction_working_age_applicable_income", + "council_tax_reduction_working_age_applicable_amount", + "council_tax_reduction_working_age_unearned_income", + "council_tax_reduction_working_age_earnings_disregard", + "council_tax_reduction_working_age_earned_income", + "council_tax_reduction_working_age_passported", *OTHER_COUNTED_BENEFITS, ] PERSON_VARIABLES = [ @@ -256,6 +307,10 @@ def grid(families, reform=None): g["in_receipt_of_guarantee_credit"].astype(bool) | g["in_receipt_of_savings_credit_only"].astype(bool) ) + # Cells on the devolved working-age route, and those on the shared + # formula. + g["devolved"] = g["council_tax_reduction_devolved_working_age"].astype(bool) + g["shared"] = ~g["devolved"] return g @@ -265,6 +320,59 @@ def partial(g, i): return (award > 0.01) & (award < np.max(award) - 0.01) +def income_other_than_earnings(g): + """Working-age income less net earnings after the disregard.""" + return ( + g["council_tax_reduction_working_age_applicable_income"] + - g["council_tax_reduction_working_age_earned_income"] + + g["council_tax_reduction_working_age_earnings_disregard"] + ) + + +def check_devolved_carer_claim(g, i, fam): + """Invariant 5: claiming Carer Support Payment on the devolved + working-age route.""" + devolved = g["devolved"][i, :, 0] & g["devolved"][i, :, 1] + if not devolved.any(): + return + # The scheme follows the family's ages, not the claim. + assert np.all(g["devolved"][i, :, 0] == g["devolved"][i, :, 1]), fam + unearned = g["council_tax_reduction_working_age_unearned_income"][i] + assert np.allclose( + (unearned[:, 0] - unearned[:, 1])[devolved], + g["carer_support_payment_pre_overlap"][i, :, 0][devolved], + atol=0.01, + ), (fam, unearned) + assert np.allclose( + g["carer_support_payment_pre_overlap"][i, :, 0][devolved], + CARER_SUPPORT_PAYMENT, + atol=0.01, + ), fam + income = g["council_tax_reduction_working_age_applicable_income"][i] + passported = g["council_tax_reduction_working_age_passported"][i].astype(bool) + assessed = devolved & ~passported[:, 0] & ~passported[:, 1] + other_income = income_other_than_earnings(g)[i] + other_income_rise = other_income[:, 0] - other_income[:, 1] + assert np.allclose(other_income_rise[assessed], CARER_SUPPORT_PAYMENT, atol=0.05), ( + fam, + other_income_rise[assessed], + ) + amount = g["council_tax_reduction_working_age_applicable_amount"][i] + amount_rise = amount[:, 0] - amount[:, 1] + assert np.allclose(amount_rise[devolved], SCOTTISH_CARER_PREMIUM, atol=0.01), ( + fam, + amount_rise[devolved], + ) + award = g["council_tax_benefit"][i] + assert np.all((award[:, 0] <= award[:, 1] + 0.01)[devolved]), fam + both_partial = partial(g, i)[:, 0] & partial(g, i)[:, 1] & assessed + excess_rise = (income[:, 0] - amount[:, 0]) - (income[:, 1] - amount[:, 1]) + fall = award[:, 1] - award[:, 0] + assert np.allclose( + fall[both_partial], WITHDRAWAL_RATE * excess_rise[both_partial], atol=0.05 + ), (fam, fall[both_partial], excess_rise[both_partial]) + + @PROPERTY_SETTINGS @given(st.lists(family(), min_size=1, max_size=3)) @example([SAVINGS_CREDIT_CARER]) @@ -287,13 +395,17 @@ def test_council_tax_reduction_income_counts_the_carer_support_payment_component atol=0.01, ), fam assert np.all(g["carers_allowance"][i] == 0), fam - # Only where the zero floor on income does not bind in either run, and - # both runs follow the general rules. - general = g["general_rules"][i, :, 0] & g["general_rules"][i, :, 1] + # Invariant 1 on the shared formula: both runs on it, and only where + # the zero floor on income does not bind in either run and both runs + # follow the general rules. + shared = g["shared"][i, :, 0] & g["shared"][i, :, 1] + general = g["general_rules"][i, :, 0] & g["general_rules"][i, :, 1] & shared compared = (income[i, :, 0] > 0) & (income[i, :, 1] > 0) & general - # At the top of the pension grid every family follows the general - # rules with positive income, so the comparison is never empty. - assert compared.any(), fam + # At the top of the pension grid every family on the shared formula + # follows the general rules with positive income, so the comparison + # is never empty. + assert compared.any() or not shared.any(), fam + check_devolved_carer_claim(g, i, fam) rise = g["income_before_tax"][i, :, 0] - g["income_before_tax"][i, :, 1] assert np.allclose(rise[compared], CARER_SUPPORT_PAYMENT, atol=0.05), ( fam, @@ -338,13 +450,46 @@ def test_council_tax_reduction_income_ignores_the_scottish_carer_supplement( fam, variable, ) + # Invariant 6: on the devolved working-age route the supplement + # reaches neither the unearned income nor the applicable amount, and + # moves the income only through net earnings. + devolved = g["devolved"][i] & without["devolved"][i] + assert np.all(g["devolved"][i] == without["devolved"][i]), fam + for variable in [ + "council_tax_reduction_working_age_unearned_income", + "council_tax_reduction_working_age_applicable_amount", + ]: + assert np.allclose( + g[variable][i][devolved], without[variable][i][devolved], atol=0.01 + ), (fam, variable) + assert np.allclose( + income_other_than_earnings(g)[i][devolved], + income_other_than_earnings(without)[i][devolved], + atol=0.05, + ), fam + same_earnings = devolved & np.isclose( + g["council_tax_reduction_working_age_earned_income"][i], + without["council_tax_reduction_working_age_earned_income"][i], + atol=0.01, + ) + for variable in [ + "council_tax_reduction_working_age_applicable_income", + "council_tax_benefit", + ]: + assert np.allclose( + g[variable][i][same_earnings], + without[variable][i][same_earnings], + atol=0.01, + ), (fam, variable) + # Invariant 2 on the shared formula: both runs on it, and only where + # the zero floor on income does not bind in either run and both runs + # follow the general rules. + shared = g["shared"][i] & without["shared"][i] income = g["council_tax_reduction_applicable_income"][i] income_without = without["council_tax_reduction_applicable_income"][i] - # Only where the zero floor on income does not bind in either run, and - # both runs follow the general rules. - general = g["general_rules"][i] & without["general_rules"][i] + general = g["general_rules"][i] & without["general_rules"][i] & shared compared = (income > 0) & (income_without > 0) & general - assert compared.any(), fam + assert compared.any() or not shared.any(), fam assert np.allclose( (income + g[INCOME_TAX][i])[compared], (income_without + without[INCOME_TAX][i])[compared], @@ -364,7 +509,9 @@ def test_council_tax_reduction_income_ignores_the_scottish_carer_supplement( atol=0.05, ), fam # Without a claim there is no supplement, so nothing moves. - assert np.allclose(income[:, 1], income_without[:, 1], atol=0.01), fam + assert np.allclose( + income[:, 1][shared[:, 1]], income_without[:, 1][shared[:, 1]], atol=0.01 + ), fam @PROPERTY_SETTINGS diff --git a/policyengine_uk/tests/test_council_tax_reduction_devolved_working_age_properties.py b/policyengine_uk/tests/test_council_tax_reduction_devolved_working_age_properties.py new file mode 100644 index 0000000000..6a28465c01 --- /dev/null +++ b/policyengine_uk/tests/test_council_tax_reduction_devolved_working_age_properties.py @@ -0,0 +1,441 @@ +"""Properties of the Scottish and Welsh working-age council tax reduction. + +Invariants, for any working-age family in Scotland or Wales: + +1. The award is between 0 and the council tax liability. +2. Wales, Universal Credit: the award does not depend on the rent, given a + housing costs element. The element sits in both the applicable amount + (the UC maximum amount, WSI 2013/3029 Sch 6 para 3) and the income (the + award, para 9), so it cancels. Benefit-capped awards are excluded: the cap + lowers the award but not the maximum amount. A family without housing + costs is also excluded, intentionally: gaining a housing costs element + lowers the UC work allowance (UC Regs 2013 reg 22), which changes the + award by more than the element. +3. Universal Credit, both countries: the award never rises with the + claimant's earnings. In Wales excess income is the Secretary of State's + income plus the award less the maximum amount, which rises by at least 45p + for each £1 of net earnings. In Scotland only the child and childcare + elements of the award count (SSI 2021/249 reg 57(1)(p)), so income rises + by at least 45p for each £1 as well. +4. A claimant on income-related ESA and not on Universal Credit gets the + whole liability (SSI 2021/249 reg 13(11); WSI 2013/3029 Sch 9 para 8), + whatever their earnings. +5. The childcare cap depends on how many children have relevant childcare + charges paid in respect of them (WSI 2013/3029 Sch 6 para 20(3); SSI + 2021/249 regs 38(4) and 42(4)). So a family whose charges sit on one child + gets the same deduction however many other children it has. Without + Universal Credit the deduction stays the same; a Scottish family with + Universal Credit never deducts more than the one-child cap. +6. Scotland, without Universal Credit: the applicant's income falls by + exactly the childcare deduction while it stays above zero, so the + deduction reduces unearned income as well as earnings (SSI 2021/249 reg + 38(2)). The only other effect of the charges is through the earnings + disregard: the £17.10 additional disregard needs earnings that cover the + charges, and from April 2022 only employed earnings qualify, so the + disregard never changes for a family with no employed earnings. + +Each example puts every family and its variants in one simulation, so the +formulas also run on arrays with several benefit units and households. +""" + +import numpy as np +from hypothesis import HealthCheck, given, settings +from hypothesis import strategies as st + +from policyengine_uk import Simulation + +YEAR = 2026 +REGIONS = ["SCOTLAND", "WALES"] + + +@st.composite +def families(draw): + region = draw(st.sampled_from(REGIONS)) + couple = draw(st.booleans()) + children = draw(st.integers(0, 3)) + people = [ + { + "age": draw(st.integers(18, 60)), + "employment_income": draw(st.floats(0, 40_000)), + "weekly_hours": draw(st.sampled_from([0, 10, 20, 35])), + "council_tax_benefit_reported": 100, + } + ] + if couple: + people.append( + { + "age": draw(st.integers(18, 60)), + "employment_income": draw(st.floats(0, 20_000)), + } + ) + for _ in range(children): + people.append({"age": draw(st.integers(0, 15))}) + return { + "region": region, + "people": people, + "would_claim_uc": draw(st.booleans()), + "rent": draw(st.floats(0, 12_000)), + "council_tax": draw(st.floats(500, 3_500)), + "savings": draw(st.floats(0, 15_000)), + "esa_income": 0, + } + + +def situation(units): + people, benunits, households = {}, {}, {} + for i, unit in enumerate(units): + names = [] + for j, inputs in enumerate(unit["people"]): + name = f"p{i}_{j}" + people[name] = {k: {YEAR: v} for k, v in inputs.items()} + names.append(name) + benunits[f"b{i}"] = { + "members": names, + "would_claim_uc": {YEAR: unit["would_claim_uc"]}, + "esa_income": {YEAR: unit["esa_income"]}, + } + households[f"h{i}"] = { + "members": names, + "region": {YEAR: unit["region"]}, + "country": {YEAR: unit["region"]}, + "rent": {YEAR: unit["rent"]}, + "council_tax": {YEAR: unit["council_tax"]}, + "savings": {YEAR: unit["savings"]}, + } + return {"people": people, "benunits": benunits, "households": households} + + +def with_earnings_raised(unit, amount): + people = [dict(p) for p in unit["people"]] + people[0]["employment_income"] = people[0]["employment_income"] + amount + return {**unit, "people": people} + + +SETTINGS = settings( + max_examples=20, + deadline=None, + derandomize=True, + suppress_health_check=[HealthCheck.too_slow, HealthCheck.data_too_large], +) + + +@SETTINGS +@given(st.lists(families(), min_size=1, max_size=5), st.floats(100, 5_000)) +def test_devolved_working_age_award_properties(units, raise_by): + n = len(units) + variants = ( + units + + [{**u, "rent": u["rent"] * 2 + 1_000} for u in units] + + [with_earnings_raised(u, raise_by) for u in units] + ) + sim = Simulation(situation=situation(variants)) + award = sim.calculate("simulated_council_tax_reduction_benunit", YEAR) + working_age = sim.calculate("council_tax_reduction_devolved_working_age", YEAR) + has_uc = sim.calculate( + "council_tax_reduction_working_age_has_universal_credit", YEAR + ) + capped = sim.calculate("benefit_cap_reduction", YEAR) > 0 + housing = sim.calculate("uc_housing_costs_element", YEAR) > 0 + liability = sim.calculate( + "council_tax_reduction_maximum_eligible_liability", YEAR, map_to="benunit" + ) + for i in range(n): + assert working_age[i], units[i] + # 1. Bounds. + assert -0.01 <= award[i] <= liability[i] + 0.01, units[i] + # 2. Wales UC: the rent cancels. + rent_i = n + i + if ( + units[i]["region"] == "WALES" + and housing[i] + and housing[rent_i] + and has_uc[i] + and has_uc[rent_i] + and not capped[i] + and not capped[rent_i] + ): + assert abs(award[i] - award[rent_i]) < 0.01, units[i] + # 3. UC: more earnings never raise the award. + earn_i = 2 * n + i + if has_uc[i] and has_uc[earn_i] and not capped[i] and not capped[earn_i]: + assert award[earn_i] <= award[i] + 0.01, units[i] + + +@SETTINGS +@given(st.lists(families(), min_size=1, max_size=5)) +def test_income_related_esa_passports_to_the_full_liability(units): + passported = [ + {**u, "would_claim_uc": False, "esa_income": 4_000, "savings": 0} for u in units + ] + sim = Simulation(situation=situation(passported)) + award = sim.calculate("simulated_council_tax_reduction_benunit", YEAR) + liability = sim.calculate( + "council_tax_reduction_maximum_eligible_liability", YEAR, map_to="benunit" + ) + flag = sim.calculate("council_tax_reduction_working_age_passported", YEAR) + assert flag.all() + assert np.allclose(award, liability, atol=0.01) + + +def welsh_universal_credit_family(earnings, rent, statutory_maternity_pay=0): + return { + "region": "WALES", + "people": [ + { + "age": 30, + "employment_income": earnings, + "weekly_hours": 30, + "council_tax_benefit_reported": 100, + }, + {"age": 30, "statutory_maternity_pay": statutory_maternity_pay}, + {"age": 0}, + ], + "would_claim_uc": True, + "rent": rent, + "council_tax": 1_800, + "savings": 0, + "esa_income": 0, + } + + +def test_welsh_universal_credit_uses_the_universal_credit_income_figure(): + """Wales with Universal Credit (WSI 2013/3029 Sch 6 paras 3 and 9). + + The applicable amount is the UC maximum amount, and income is the + Secretary of State's income figure for the award plus the award. Earnings + are therefore whatever the UC model counts, statutory pay included or + not, so CTR and UC can never disagree on them. Differential check against + the UC variables, with and without statutory maternity pay. + """ + units = [ + welsh_universal_credit_family(6_000, 6_000), + welsh_universal_credit_family(6_000, 6_000, statutory_maternity_pay=5_000), + welsh_universal_credit_family(8_000, 6_000), + ] + sim = Simulation(situation=situation(units)) + earnings = sim.calculate("council_tax_reduction_working_age_earned_income", YEAR) + uc_earnings = sim.calculate("uc_individual_earned_income", YEAR, map_to="benunit") + award = sim.calculate( + "council_tax_reduction_working_age_universal_credit_award", YEAR + ) + income = sim.calculate("council_tax_reduction_working_age_applicable_income", YEAR) + applicable_amount = sim.calculate( + "council_tax_reduction_working_age_applicable_amount", YEAR + ) + assert sim.calculate( + "council_tax_reduction_working_age_has_universal_credit", YEAR + ).all() + assert np.allclose(earnings, uc_earnings, atol=0.01) + assert np.allclose( + income, + earnings + sim.calculate("uc_unearned_income", YEAR) + award, + atol=0.01, + ) + assert np.allclose( + applicable_amount, sim.calculate("uc_maximum_amount", YEAR), atol=0.01 + ) + + +def test_welsh_universal_credit_partial_award_does_not_depend_on_rent(): + """A targeted case for property 2, where the award is partial. + + Couple with a baby, £11,000 earnings (above the benefit cap's earnings + exemption) and rent of £6,000 or £13,000. The housing element raises both + the maximum amount and the award, so excess income, 0.45 x 11,000 + 0.55 + x 5,124 work allowance = 7,768.20, and the award, 1,800 - 0.2 x 7,768.20 + = 246.36, are the same at either rent. + """ + units = [ + welsh_universal_credit_family(11_000, 6_000), + welsh_universal_credit_family(11_000, 13_000), + ] + sim = Simulation(situation=situation(units)) + award = sim.calculate("simulated_council_tax_reduction_benunit", YEAR) + assert sim.calculate("benefit_cap_reduction", YEAR).max() == 0 + assert np.allclose(award, 246.36, atol=0.01) + + +def test_welsh_fixed_amounts_start_with_the_2013_scheme(): + """Wales's fixed working-age amounts apply from 1 April 2013, when the + Council Tax Reduction Schemes (Prescribed Requirements) (Wales) + Regulations 2012 (W.S.I. 2012/3144) set them. A parameter read before its + first date takes its earliest value, so check the first dates.""" + from policyengine_uk.system import system + + wales = system.parameters.gov.local_authorities.wales.council_tax_reduction + first = { + "working_age.earnings_disregard.single": 5, + "working_age.earnings_disregard.couple": 10, + "working_age.earnings_disregard.lone_parent": 25, + "working_age.earnings_disregard.disability_or_carer": 20, + "working_age.earnings_disregard.additional": 17.10, + "means_test.tariff_income.working_age.threshold": 6_000, + "means_test.tariff_income.working_age.step": 250, + "means_test.tariff_income.working_age.amount": 1, + "working_age.childcare.maximum_one_child": 175, + "working_age.childcare.maximum_two_or_more_children": 300, + } + for name, value in first.items(): + parameter = wales.get_child(name) + earliest = parameter.values_list[-1] + assert earliest.instant_str == "2013-04-01", name + assert earliest.value == value, name + + +def test_welsh_universal_credit_rent_cancels_only_given_housing_costs(): + """Property 2's boundary, executed: an 18-year-old lone parent with a baby + and £21,462 earnings on Universal Credit in Wales. At rents of £1,000 and + £6,000 the housing costs element cancels and the award is the same; with + no rent the work allowance is the higher one (UC Regs 2013 reg 22), the + award is larger and so is the income CTR counts, so the reduction is + lower. Intended, not a defect.""" + + def family(rent): + return { + "region": "WALES", + "people": [ + { + "age": 18, + "employment_income": 21_462, + "council_tax_benefit_reported": 100, + }, + {"age": 0}, + ], + "would_claim_uc": True, + "rent": rent, + "council_tax": 2_400, + "savings": 0, + "esa_income": 0, + } + + sim = Simulation(situation=situation([family(0), family(1_000), family(6_000)])) + award = sim.calculate("simulated_council_tax_reduction_benunit", YEAR) + work_allowance = sim.calculate("uc_work_allowance", YEAR) + assert work_allowance[0] > work_allowance[1] == work_allowance[2] + assert abs(award[1] - award[2]) < 0.01 + assert award[0] < award[1] + + +@st.composite +def childcare_families(draw, region=None, universal_credit=None): + region = region or draw(st.sampled_from(REGIONS)) + couple = draw(st.booleans()) + hours = st.sampled_from([0, 16, 30, 40]) + people = [ + { + "age": draw(st.integers(25, 60)), + "employment_income": draw(st.sampled_from([0, 4_000, 15_000, 35_000])), + "self_employment_income": draw(st.floats(0, 25_000)), + "private_pension_income": draw(st.floats(0, 20_000)), + "weekly_hours": draw(hours), + "council_tax_benefit_reported": 100, + } + ] + if couple: + people.append( + { + "age": draw(st.integers(25, 60)), + "employment_income": draw(st.floats(0, 20_000)), + "weekly_hours": draw(hours), + } + ) + people.append( + { + "age": draw(st.integers(0, 12)), + "childcare_expenses": draw(st.floats(0, 30_000)), + } + ) + return { + "region": region, + "people": people, + "would_claim_uc": ( + draw(st.booleans()) if universal_credit is None else universal_credit + ), + "rent": 0, + "council_tax": draw(st.floats(500, 3_500)), + "savings": draw(st.floats(0, 15_000)), + "esa_income": 0, + } + + +def with_other_children(unit, ages): + return {**unit, "people": unit["people"] + [{"age": age} for age in ages]} + + +def without_charges(unit): + people = [dict(p) for p in unit["people"]] + people[-1]["childcare_expenses"] = 0 + return {**unit, "people": people} + + +@SETTINGS +@given( + st.lists(childcare_families(), min_size=1, max_size=5), + st.lists(st.integers(0, 15), min_size=1, max_size=3), +) +def test_childcare_cap_ignores_children_without_charges(units, other_ages): + n = len(units) + variants = units + [with_other_children(u, other_ages) for u in units] + sim = Simulation(situation=situation(variants)) + deduction = sim.calculate( + "council_tax_reduction_working_age_childcare_deduction", YEAR + ) + has_uc = sim.calculate( + "council_tax_reduction_working_age_has_universal_credit", YEAR + ) + p = sim.tax_benefit_system.parameters(YEAR).gov.local_authorities + scottish_uc_one_child_cap = ( + p.scotland.council_tax_reduction.working_age.childcare.universal_credit_maximum_one_child + * 52 + ) + for i in range(n): + j = n + i + if has_uc[i] != has_uc[j]: + continue + if not has_uc[i]: + # 5. Without UC, the other children leave the deduction as it is. + assert abs(deduction[j] - deduction[i]) < 0.01, (units[i], other_ages) + elif units[i]["region"] == "SCOTLAND": + # 5. With UC, the one-child cap holds whatever the family size. + assert deduction[j] <= scottish_uc_one_child_cap + 0.01, ( + units[i], + other_ages, + ) + + +@SETTINGS +@given( + st.lists( + childcare_families(region="SCOTLAND", universal_credit=False), + min_size=1, + max_size=5, + ) +) +def test_scottish_childcare_comes_off_earned_and_unearned_income(units): + n = len(units) + variants = units + [without_charges(u) for u in units] + sim = Simulation(situation=situation(variants)) + income = sim.calculate("council_tax_reduction_working_age_applicable_income", YEAR) + deduction = sim.calculate( + "council_tax_reduction_working_age_childcare_deduction", YEAR + ) + disregard = sim.calculate( + "council_tax_reduction_working_age_earnings_disregard", YEAR + ) + has_uc = sim.calculate( + "council_tax_reduction_working_age_has_universal_credit", YEAR + ) + passported = sim.calculate("council_tax_reduction_working_age_passported", YEAR) + for i in range(n): + j = n + i + if has_uc[i] or passported[i]: + continue + employed = sum(p.get("employment_income", 0) for p in units[i]["people"]) + if employed == 0: + assert abs(disregard[i] - disregard[j]) < 0.01, units[i] + # 6. Income falls by the deduction, net of any change in the + # disregard, while it stays above zero; it never falls below zero. + assert income[i] >= 0, units[i] + if income[i] > 0.01: + expected = deduction[i] + disregard[i] - disregard[j] + assert abs((income[j] - income[i]) - expected) < 0.02, units[i] diff --git a/policyengine_uk/tests/test_council_tax_reduction_pension_credit_properties.py b/policyengine_uk/tests/test_council_tax_reduction_pension_credit_properties.py index 9afdf55140..6a5bebcbaa 100644 --- a/policyengine_uk/tests/test_council_tax_reduction_pension_credit_properties.py +++ b/policyengine_uk/tests/test_council_tax_reduction_pension_credit_properties.py @@ -46,6 +46,33 @@ 8. Under the Pension Credit freeze, receipt and the savings credit payable follow the frozen (baseline) award, even where the reform alone would change which credit is received. + +Invariants 2 to 4 and 7's assessment under invariant 4 are the shared +formula's, so they apply where council_tax_reduction_devolved_working_age is +false. A Scottish or Welsh claim that is not a pensioner's takes the devolved +working-age route instead, where these hold: + +9. Scheme: in Scotland and Wales a claim takes the working-age route exactly + when no applicant or partner has reached the qualifying age for State + Pension Credit, or one has but the family has an award of Universal Credit + with a member under that age, or is on Income Support, income-based JSA or + income-related ESA (WSI 2013/3029 reg 3; SSI 2021/249 reg 3). So a + mixed-age couple on Universal Credit takes it. Recomputed here from the + generated ages (67 or over, or 60 or under) and Universal Credit + entitlement. +10. No Pension Credit route: a working-age claim is never in receipt of a + guarantee credit or of savings credit only. +11. Taper on the route's own measures: CTR is max(0, L - 0.2 x max(0, I_wa - + A_wa) - ND) when the assessable capital is within 16,000, and nothing + otherwise, where I_wa and A_wa are the working-age income and applicable + amount. +12. Passport: a claimant on Income Support, income-based JSA or + income-related ESA without Universal Credit has nil working-age income + (SSI 2021/249 reg 13(11); WSI 2013/3029 Sch 9 and 10 para 8). +13. Welsh Universal Credit: a Welsh claim with Universal Credit counts the + Secretary of State's earned income plus Universal Credit unearned income + plus the award, against the Universal Credit maximum amount (WSI + 2013/3029 Sch 6 paras 3 and 9). """ import numpy as np @@ -270,7 +297,18 @@ def situation( "pension_credit_income", "pension_credit_assessable_capital", "council_tax_reduction_pensioner", + "council_tax_reduction_devolved_working_age", + "council_tax_reduction_working_age_applicable_amount", + "council_tax_reduction_working_age_applicable_income", + "council_tax_reduction_assessable_capital", + "council_tax_reduction_working_age_passported", + "council_tax_reduction_working_age_has_universal_credit", + "council_tax_reduction_working_age_earned_income", + "council_tax_reduction_working_age_universal_credit_award", "council_tax_reduction_relevant_income_based_benefit", + "is_uc_entitled", + "uc_unearned_income", + "uc_maximum_amount", "universal_credit", "uc_assessable_capital", "claims_universal_credit", @@ -496,11 +534,58 @@ def test_savings_credit_only_awards_use_the_pension_credit_assessment(units): check_routes(units, values) +def check_devolved_route(unit, values, i): + """Invariants 9 to 13 for a Scottish or Welsh claim.""" + pension_age = any(age >= 67 for age in unit["ages"]) + working_age = any(age <= 60 for age in unit["ages"]) + universal_credit = bool(values["is_uc_entitled"][i]) + income_based = bool( + values["council_tax_reduction_relevant_income_based_benefit"][i] + ) + expected = not pension_age or (universal_credit and working_age) or income_based + devolved = bool(values["council_tax_reduction_devolved_working_age"][i]) + assert devolved == expected, (unit, devolved) + if not devolved: + return + assert not values["in_receipt_of_guarantee_credit"][i], unit + assert not values["in_receipt_of_savings_credit_only"][i], unit + ctr = values["simulated_council_tax_reduction_benunit"][i] + liability = values["council_tax_reduction_maximum_eligible_liability"][i] + non_dep = values["council_tax_reduction_non_dep_deductions"][i] + income = values["council_tax_reduction_working_age_applicable_income"][i] + amount = values["council_tax_reduction_working_age_applicable_amount"][i] + has_universal_credit = values[ + "council_tax_reduction_working_age_has_universal_credit" + ][i] + if values["council_tax_reduction_working_age_passported"][i]: + assert not has_universal_credit, unit + assert income == 0, unit + if unit["country"] == "WALES" and has_universal_credit: + assert ( + abs( + income + - values["council_tax_reduction_working_age_earned_income"][i] + - values["uc_unearned_income"][i] + - values["council_tax_reduction_working_age_universal_credit_award"][i] + ) + < 0.01 + ), unit + assert abs(amount - values["uc_maximum_amount"][i]) < 0.01, unit + expected_ctr = tapered(liability, income, amount, non_dep) * ( + values["council_tax_reduction_assessable_capital"][i] <= CAPITAL_LIMIT + ) + assert abs(ctr - expected_ctr) < 0.01, (unit, ctr, expected_ctr) + + def check_routes(units, values): check_structural(values) for i, unit in enumerate(units): if not values["national"][i]: continue + if unit["country"] != "ENGLAND": + check_devolved_route(unit, values, i) + if values["council_tax_reduction_devolved_working_age"][i]: + continue ctr = values["simulated_council_tax_reduction_benunit"][i] liability = values["council_tax_reduction_maximum_eligible_liability"][i] non_dep = values["council_tax_reduction_non_dep_deductions"][i] diff --git a/policyengine_uk/tests/test_council_tax_reduction_pensioner_children_tariff_properties.py b/policyengine_uk/tests/test_council_tax_reduction_pensioner_children_tariff_properties.py index fc8e207c69..15c9896e4c 100644 --- a/policyengine_uk/tests/test_council_tax_reduction_pensioner_children_tariff_properties.py +++ b/policyengine_uk/tests/test_council_tax_reduction_pensioner_children_tariff_properties.py @@ -41,11 +41,13 @@ report no Child Tax Credit, so none has an award. 3. A pensioner with no child and capital up to £10,000 gets no child amount, family premium or tariff income, and a working-age family gets no child - amount or family premium, so their applicable amount, applicable income - and award match main. An English working-age family also gets no tariff - income here, because its local scheme sets its own. - test_matches_origin_main_on_unchanged_households checks that against - values computed on main. + amount or family premium, so their applicable amount and applicable income + match main. Their awards match main too, except that Scottish and Welsh + working-age families take theirs from the working-age route + (council_tax_reduction_devolved_working_age). An English working-age family + also gets no tariff income here, because its local scheme sets its own. + test_matches_origin_main_on_unchanged_households checks that against values + computed on main and, for those awards, by hand. """ import math @@ -342,7 +344,12 @@ def test_northern_ireland_gets_no_new_amounts(): # applicable amount, applicable income and council_tax_benefit. In Scotland # and Wales the working-age families with savings of 12,000, 16,000 and 8,000 # have working-age tariff income of 1 a week for each 250, or part, over -# 6,000: 24 * 52 = 1,248, 40 * 52 = 2,080 and 8 * 52 = 416 a year. +# 6,000: 24 * 52 = 1,248, 40 * 52 = 2,080 and 8 * 52 = 416 a year. Their awards +# come from the working-age route, which sets its own amount and income: 2,000 +# less 20% of the excess of net earnings after the earnings disregard, plus that +# tariff income, over the personal allowance and child amounts. For example, the +# Welsh family with savings of 8,000 in 2026 has 9,000 - 5 * 52 + 416 = 9,156 +# against 101.85 * 52 = 5,296.20, so an award of 1,228.04. ORIGIN_MAIN = { 2019: [ (9_412, 12_000, 1_482.4), @@ -354,15 +361,15 @@ def test_northern_ireland_gets_no_new_amounts(): (9_412, 12_000, 1_482.4), (14_071.2, 17_170, 1_380.24), (9_412, 9_592.34, 1_963.93), - (3_801.2, 16_080.24, 0), - (5_972.2, 24_674.64, 0), - (3_801.2, 9_371.84, 885.87), + (3_801.2, 16_080.24, 889.22), + (5_972.2, 24_674.64, 460.78), + (3_801.2, 9_371.84, 937.87), (9_412, 12_000, 1_482.4), (14_071.2, 17_150, 1_384.24), (9_412, 9_592.34, 1_963.93), - (3_801.2, 16_060.24, 0), - (5_972.2, 24_654.64, 0), - (3_801.2, 9_371.84, 885.87), + (3_801.2, 16_060.24, 950.63), + (5_972.2, 24_654.64, 376.27), + (3_801.2, 9_371.84, 987.79), (3_801.2, 12_672.24, 225.79), (3_801.2, 12_672.24, 0), (3_801.2, 12_672.24, 0), @@ -379,15 +386,15 @@ def test_northern_ireland_gets_no_new_amounts(): (12_230.4, 12_000, 2_000), (18_304, 17_189.06, 2_000), (12_230.4, 0, 2_000), - (4_706, 16_921.86, 0), - (7_397, 26_087.26, 0), - (4_706, 9_416, 1_058), + (4_706, 16_921.86, 1_165.19), + (7_397, 26_087.26, 972.71), + (4_706, 9_416, 1_110), (12_230.4, 12_000, 2_000), (18_304, 17_166, 2_000), (12_230.4, 0, 2_000), - (4_706, 16_898.8, 0), - (7_397, 26_064.2, 0), - (4_706, 9_416, 1_058), + (4_706, 16_898.8, 1_214.42), + (7_397, 26_064.2, 839.31), + (4_706, 9_416, 1_171.88), (4_706, 13_331.2, 274.96), (4_706, 13_331.2, 0), (4_706, 13_331.2, 0), @@ -404,15 +411,15 @@ def test_northern_ireland_gets_no_new_amounts(): (13_312, 12_000, 2_000), (19_934.2, 17_205.67, 2_000), (13_312, 0, 2_000), - (4_968.6, 16_998.5, 0), - (7_807.8, 26_228.67, 0), - (4_968.6, 9_416, 1_110.52), + (4_968.6, 16_998.5, 1_277.78), + (7_807.8, 26_228.67, 1_172.19), + (4_968.6, 9_416, 1_162.52), (13_312, 12_000, 2_000), (19_934.2, 17_166, 2_000), (13_312, 0, 2_000), - (4_968.6, 16_974.2, 0), - (7_807.8, 26_189, 0), - (4_968.6, 9_416, 1_110.52), + (4_968.6, 16_974.2, 1_329.96), + (7_807.8, 26_189, 1_034.31), + (4_968.6, 9_416, 1_228.04), (4_968.6, 13_406.6, 312.4), (4_968.6, 13_406.6, 0), (4_968.6, 13_406.6, 0), diff --git a/policyengine_uk/tests/test_means_test_income_properties.py b/policyengine_uk/tests/test_means_test_income_properties.py index b6a102cbc0..3115de9124 100644 --- a/policyengine_uk/tests/test_means_test_income_properties.py +++ b/policyengine_uk/tests/test_means_test_income_properties.py @@ -7,8 +7,8 @@ example an 18- or 19-year-old presumed the claimant's child but not in education, a 16-year-old outside education and past the 1 September following their 16th birthday, or a third adult) never changes a means - test's income. The UC, HB, IS, tax credit, CTR and Pension Credit income - totals are covered. + test's income. The UC, HB, IS, tax credit, CTR (including the Scottish and + Welsh working-age income) and Pension Credit income totals are covered. 2. Giving income to the family's own child or young person never changes it either (HB Regs 2006 reg 25(3); IS Regs 1987 reg 23(2); Tax Credits (Definition and Calculation of Income) Regs 2002 reg 3(1); SSI 2021/249 reg @@ -37,6 +37,7 @@ "income_support_applicable_income", "tax_credits_applicable_income", "council_tax_reduction_applicable_income", + "council_tax_reduction_working_age_applicable_income", "pension_credit_income", ] EDUCATIONS = ["NOT_IN_EDUCATION", "UPPER_SECONDARY", "TERTIARY"] diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/council_tax_reduction_pension_contribution_deduction_rate.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/council_tax_reduction_pension_contribution_deduction_rate.py index d926d7ebc6..e8399c4cc2 100644 --- a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/council_tax_reduction_pension_contribution_deduction_rate.py +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/council_tax_reduction_pension_contribution_deduction_rate.py @@ -38,12 +38,14 @@ class council_tax_reduction_pension_contribution_deduction_rate(Variable): "on the Secretary of State's Universal Credit figures. DWP deducts " "relievable pension contributions in full when it calculates those " "figures (UC Regs 2013 reg 55(5)(a) for employed earnings and reg " - "57(2) step 4 for self-employed earnings). The model has no such " - "route for Wales and " - "Scotland yet (#1962), so the share here reaches those applicants " - "too. Merton, Kingston upon Thames, Newham and Westminster assess " - "them on Universal Credit income (_legacy.py), so the share here does " - "not reach their awards. Oxford assesses them on its Appendix 3 income " + "57(2) step 4 for self-employed earnings). Welsh and Scottish " + "working-age applicants take the devolved working-age route " + "(council_tax_reduction_devolved_working_age), which takes those " + "figures from the Universal Credit model, so the share here does not " + "reach their awards. Merton, Kingston upon Thames, Newham and " + "Westminster assess them on Universal Credit income (_legacy.py), so " + "the share here does not reach their awards. Oxford assesses them on " + "its Appendix 3 income " "(oxford_council_tax_reduction_universal_credit_income) from April " "2026, the scheme the model holds; in earlier years the share reaches " "them too." diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/council_tax_reduction_pensioner.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/council_tax_reduction_pensioner.py index 575bc99c72..3bddc3d317 100644 --- a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/council_tax_reduction_pensioner.py +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/council_tax_reduction_pensioner.py @@ -26,10 +26,11 @@ class council_tax_reduction_pensioner(Variable): "and each claims, a working-age family is assessed under the " "working-age rules even if the household head's family is " "pension-age, and the reverse. The shared applicable allowance uses " - "this test, as does English scheme selection, the choice between the " - "pensioner and working-age tariff income from capital, and the " - "Scottish income rules; Welsh and Scottish award formulas retain " - "their existing approximations." + "this test, as does scheme selection: English claims that fail it " + "fall to the local schemes, and Welsh and Scottish claims that fail it " + "take the working-age rules (council_tax_reduction_devolved_working_age). " + "The choice between the pensioner and working-age tariff income from " + "capital, and the Scottish income rules, use it too." ) definition_period = YEAR reference = ( diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/simulated_council_tax_reduction_benunit.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/simulated_council_tax_reduction_benunit.py index f660dc749c..6aa0a0c700 100644 --- a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/simulated_council_tax_reduction_benunit.py +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/simulated_council_tax_reduction_benunit.py @@ -45,8 +45,21 @@ def formula(benunit, period, parameters): liability = benunit.household( "council_tax_reduction_maximum_eligible_liability", period ) * benunit("council_tax_reduction_joint_liability_share", period) - applicable_amount = benunit("council_tax_reduction_applicable_amount", period) - applicable_income = benunit("council_tax_reduction_applicable_income", period) + # Scotland's working-age scheme and the Welsh rules for persons who + # are not pensioners have their own applicable amounts and income. + devolved_working_age = benunit( + "council_tax_reduction_devolved_working_age", period + ) + applicable_amount = where( + devolved_working_age, + benunit("council_tax_reduction_working_age_applicable_amount", period), + benunit("council_tax_reduction_applicable_amount", period), + ) + applicable_income = where( + devolved_working_age, + benunit("council_tax_reduction_working_age_applicable_income", period), + benunit("council_tax_reduction_applicable_income", period), + ) non_dep_deductions = benunit("council_tax_reduction_non_dep_deductions", period) max_support = select( diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/_applicant.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/_applicant.py new file mode 100644 index 0000000000..a244de2cd3 --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/_applicant.py @@ -0,0 +1,107 @@ +"""Who the working-age council tax reduction assessment covers. + +The applicant is the person liable for the council tax, and the means test +covers the applicant and their partner (SSI 2021/249 reg 36; WSI 2013/3029 +Sch 6 para 7): is_council_tax_reduction_applicant_or_partner. Where the +household head is liable but is not the benefit unit's claimant or partner +(council_tax_reduction_head_applies_alone), the head applies as a single +person with no partner or children, and the benefit unit's awards (Universal +Credit, Income Support, income-based JSA, income-related ESA, tax credits) +and children are its claimant's, not hers. +""" + +from policyengine_uk.model_api import * + + +def working_age_applicant_or_partner(person, period): + """The applicant and partner whose means are assessed.""" + return person("is_council_tax_reduction_applicant_or_partner", period) + + +def applicant_family(benunit, period): + """Whether the benefit unit's partner, children and awards are the + applicant's: false where the household head applies alone.""" + return ~benunit("council_tax_reduction_head_applies_alone", period) + + +def working_age_child(person, period): + """A child or young person in the applicant's family, under the scheme's + own young person definition (the Universal Credit one in Scotland's + working-age scheme from 2022-23, Child Benefit's elsewhere).""" + return person( + "is_child_or_young_person_for_council_tax_reduction", period + ) & ~person.benunit("council_tax_reduction_head_applies_alone", period) + + +def working_age_couple(benunit, period): + return applicant_family(benunit, period) & benunit("is_couple", period) + + +def working_age_lone_parent(benunit, period): + return applicant_family(benunit, period) & benunit( + "is_council_tax_reduction_lone_parent", period + ) + + +def working_age_adult_premium_conditions(benunit, period, parameters): + """Whether the applicant's family qualifies for the disability, enhanced + disability and severe disability premiums, and whether the severe + disability premium is at the double rate. + + Who qualifies follows the model's legacy premium variables, with Council + Tax Reduction's own severe disability premium family test + (council_tax_reduction_severe_disability_premium). Where the household + head applies alone, the conditions are the head's own as a single person, + as in council_tax_reduction_premiums. + """ + dwp = parameters(period).gov.dwp.disability_premia + disability = benunit("disability_premium", period) > 0 + enhanced = benunit("enhanced_disability_premium", period) > 0 + severe_weekly = ( + benunit("council_tax_reduction_severe_disability_premium", period) + / WEEKS_IN_YEAR + ) + severe = severe_weekly > 0 + # The legacy variable pays either the single or the double rate; follow + # whichever it chose. + severe_double = severe_weekly > (dwp.severe_single + dwp.severe_couple) / 2 + + head_applies_alone = ~applicant_family(benunit, period) + person = benunit.members + head = working_age_applicant_or_partner(person, period) & benunit.project( + head_applies_alone + ) + + def head_has(condition): + return benunit.any(head & condition) + + # The severe disability premium's non-dependants, as in + # council_tax_reduction_premiums: every resident aged 18 or over outside + # the head's family (the head alone) who neither receives a qualifying + # benefit nor is blind. + counted = ( + (person("age", period) >= dwp.severe_non_dependant_age) + & ~person("receives_severe_disability_premium_qualifying_benefit", period) + & ~person("is_blind", period) + ) + others_counted = benunit.max(person.household.sum(counted)) - benunit.sum( + counted & head + ) + head_severe = head_has( + person("receives_severe_disability_premium_qualifying_benefit", period) + & ~person("is_cared_for_by_carer_benefit_recipient", period) + ) & (others_counted == 0) + return ( + where( + head_applies_alone, + head_has(person("is_disabled_for_benefits", period)), + disability, + ), + where( + head_applies_alone, + head_has(person("is_enhanced_disabled_for_benefits", period)), + enhanced, + ), + where(head_applies_alone, head_severe, severe), + ~head_applies_alone & severe_double, + ) diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/_earnings.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/_earnings.py new file mode 100644 index 0000000000..dca397211a --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/_earnings.py @@ -0,0 +1,199 @@ +from policyengine_uk.model_api import * +from policyengine_uk.utils.class_2 import class_2_contribution_weeks, class_2_liable +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.config import ( + is_wales_scheme, +) + +STATUTORY_PAY = [ + "statutory_sick_pay", + "statutory_maternity_pay", + "statutory_paternity_pay", +] + +# Taxable income in earned_income_tax's base, other than earnings, that the +# working-age schemes do not count as unearned income. Property income is +# outside that base (property_income_tax), as are savings and dividends. +NOT_COUNTED_TAXABLE_UNEARNED = ["scottish_carer_supplement"] + + +def _self_employed_net_profit(person, period, parameters): + """Net profit of a self-employed earner without Universal Credit, before + the pension deduction. + + The profit less an amount for income tax and contributions that the + schemes prescribe, not the tax actually paid (SSI 2012/303 regs 37(3)(b) + and 38, applied by SSI 2021/249 reg 51(9); WSI 2013/3029 Sch 6 paras 24(3) + and 25): + - income tax at the basic rate on the profit less the personal allowance, + as if the profit were the only income (Wales also allows the blind + person's allowance; the marriage and married couple's allowances are not + modelled); + - Class 4 at the main rate on the profit between the profits limits; + - until 5 April 2024, Class 2 at the weekly rate where it was payable. + A trading loss counts as nil, and is not set against other earnings + (SSI 2012/303 reg 37(10)). + """ + p = parameters(period).gov.hmrc + income_tax = p.income_tax + class_4 = p.national_insurance.class_4 + class_2 = p.national_insurance.class_2 + profit = max_(0, person("self_employment_income", period)) + wales = is_wales_scheme(person.household("country", period)) + allowances = income_tax.allowances.personal_allowance.amount + where( + wales, person("blind_persons_allowance", period), 0 + ) + # The basic rate is the first band of the rest-of-UK scale (ITA 2007 + # s. 6(2)) and the second of the Scottish scale, after the starter rate, + # as in carers_allowance_earnings. + scottish_scale = person.simulation.tax_benefit_system.parameters.gov.hmrc.income_tax.rates.scotland.rates + basic_rate = where( + person("pays_scottish_income_tax", period), + scottish_scale.brackets[1].rate(period.start), + income_tax.rates.uk.rates[0], + ) + notional_tax = basic_rate * max_(0, profit - allowances) + notional_class_4 = ( + person("ni_class_4_liable", period) + * class_4.rates.main + * max_( + 0, + min_(profit, class_4.thresholds.upper_profits_limit) + - class_4.thresholds.lower_profits_limit, + ) + ) + # Omitted from 6 April 2024 (SI 2024/377); the flat rate is nil from + # 2024-25. + notional_class_2 = ( + person("ni_liable", period) + * class_2_liable(profit, class_2) + * class_2.flat_rate + * class_2_contribution_weeks(period.start.year) + ) + return max_(0, profit - notional_tax - notional_class_4 - notional_class_2) + + +def _pay_and_miscellaneous_tax(person, period): + """Income tax and primary Class 1 on pay, and income tax on + miscellaneous income. + + The Universal Credit split of a person's income tax + (uc_income_tax_on_earnings, less the part on any trade) covers pay, + statutory sick, maternity and paternity pay and Part 5 miscellaneous + income together. The schemes count miscellaneous income as unearned + income (SSI 2021/249 reg 57(1)(o); WSI 2013/3029 Sch 6 para 17), so that + tax is shared between pay and miscellaneous income pro rata. Primary + Class 1 falls on pay only and comes off it in full. + Returns (tax on pay, Class 1 on pay, tax on miscellaneous income). + """ + pay = person("employment_income", period) + add(person, period, STATUTORY_PAY) + miscellaneous = max_(0, person("taxable_miscellaneous_income", period)) + income_tax = person("uc_income_tax_on_earnings", period) - person( + "uc_income_tax_on_trade", period + ) + class_1 = person("uc_national_insurance_on_earnings", period) - person( + "uc_national_insurance_on_trade", period + ) + miscellaneous_share = np.divide( + miscellaneous, + pay + miscellaneous, + out=np.zeros_like(pay, dtype=float), + where=(pay + miscellaneous) > 0, + ) + miscellaneous_tax = income_tax * miscellaneous_share + return income_tax - miscellaneous_tax, class_1, miscellaneous_tax + + +def working_age_earnings(person, period, parameters): + """Net earnings and the employed part of them, per person. + + With an award of Universal Credit: + - Wales uses the Secretary of State's figure for the award, which is the + model's Universal Credit earned income before the work allowance, after + the minimum income floor (WSI 2013/3029 Sch 6 para 9); + - Scotland calculates earnings on the Universal Credit basis (SSI 2021/249 + regs 49 and 51(2)): employed earnings including statutory sick, + maternity and paternity pay, and self-employed profit, less the income + tax and National Insurance paid in respect of them and relievable + pension contributions, with no minimum income floor. Miscellaneous + income, which the Universal Credit model counts as earnings, is + unearned income here (reg 57(1)(o)), so it comes out, net of its share + of the tax. + Without Universal Credit: + - employed earnings are pay and statutory sick, maternity and paternity + pay, less the income tax and primary Class 1 contributions in respect of + the employment (SSI 2021/249 reg 50(3)(a); WSI 2013/3029 Sch 6 para + 15(3)(a)). The tax is the model's Universal Credit split of the person's + income tax (earnings taken as the lowest slice of non-savings income), + less the part on any trade, shared pro rata with miscellaneous income + (_pay_and_miscellaneous_tax); Class 1 comes off in full; + - self-employed earnings are the net profit with the prescribed notional + tax and contributions (_self_employed_net_profit); + - one half of pension contributions comes off + (council_tax_reduction_pension_contribution_deduction_rate). + Voluntary Class 3 contributions never come off. + Returns (net earnings, net employed earnings). + """ + has_universal_credit = person.benunit( + "council_tax_reduction_working_age_has_universal_credit", period + ) + wales = is_wales_scheme(person.household("country", period)) + wales_universal_credit = person("uc_individual_earned_income", period) + pay_tax, class_1, miscellaneous_tax = _pay_and_miscellaneous_tax(person, period) + miscellaneous = max_(0, person("taxable_miscellaneous_income", period)) + scotland_universal_credit = max_( + 0, + person("uc_individual_earned_income_before_mif", period) + - (miscellaneous - miscellaneous_tax), + ) + + pay = person("employment_income", period) + add(person, period, STATUTORY_PAY) + employed = max_(0, pay - pay_tax - class_1) + self_employed = _self_employed_net_profit(person, period, parameters) + pension_rate = person.benunit( + "council_tax_reduction_pension_contribution_deduction_rate", period + ) + pension = pension_rate * person("pension_contributions", period) + legacy = max_(0, employed + self_employed - pension) + legacy_employed = np.divide( + legacy * employed, + employed + self_employed, + out=np.zeros_like(legacy, dtype=float), + where=(employed + self_employed) > 0, + ) + + universal_credit = where(wales, wales_universal_credit, scotland_universal_credit) + # The £17.10 additional disregard, the only reader of the employed part, + # does not apply with Universal Credit. + net = where(has_universal_credit, universal_credit, legacy) + net_employed = where(has_universal_credit, 0, legacy_employed) + return net, net_employed + + +def working_age_unearned_income_tax(person, period): + """Income tax on the person's counted taxable unearned income. + + earned_income_tax is the tax on non-savings income other than property + income: earnings, pensions and taxable social security benefits. Less the + tax on earnings (uc_income_tax_on_earnings, earnings being the lowest + slice), the rest is tax on pensions and benefits, shared pro rata with the + taxable ones the schemes do not count (the Scottish Carer Supplement). + The tax on miscellaneous income, which the schemes count as unearned + income, is added (_pay_and_miscellaneous_tax). + """ + other_non_savings_tax = max_( + 0, + person("earned_income_tax", period) + - person("uc_income_tax_on_earnings", period), + ) + base = add( + person, period, ["taxable_pension_income", "taxable_social_security_income"] + ) + not_counted = add(person, period, NOT_COUNTED_TAXABLE_UNEARNED) + counted_share = np.divide( + max_(0, base - not_counted), + base, + out=np.ones_like(base, dtype=float), + where=base > 0, + ) + _, _, miscellaneous_tax = _pay_and_miscellaneous_tax(person, period) + return other_non_savings_tax * counted_share + miscellaneous_tax diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_devolved_working_age.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_devolved_working_age.py new file mode 100644 index 0000000000..962d744202 --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_devolved_working_age.py @@ -0,0 +1,29 @@ +from policyengine_uk.model_api import * +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.config import ( + is_scotland_scheme, + is_wales_scheme, +) + + +class council_tax_reduction_devolved_working_age(Variable): + value_type = bool + entity = BenUnit + label = "Claims under the Scottish or Welsh working-age council tax reduction rules" + documentation = ( + "Whether the family lives in Scotland or Wales and is not a pensioner " + "for council tax reduction. Scotland's working-age scheme and the " + "Welsh rules for persons who are not pensioners have their own " + "applicable amounts, income rules and Universal Credit route." + ) + definition_period = YEAR + reference = ( + "https://www.legislation.gov.uk/ssi/2021/249/regulation/3", + "https://www.legislation.gov.uk/wsi/2013/3029/regulation/3", + ) + + def formula(benunit, period, parameters): + country = benunit.household("country", period) + devolved = is_scotland_scheme(country) | is_wales_scheme(country) + # The same per-claim scheme flag the national formula routes on. + pensioner = benunit("council_tax_reduction_pensioner", period) + return devolved & ~pensioner diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_relevant_universal_credit_payments.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_relevant_universal_credit_payments.py new file mode 100644 index 0000000000..f6dfaea86f --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_relevant_universal_credit_payments.py @@ -0,0 +1,41 @@ +from policyengine_uk.model_api import * + + +class council_tax_reduction_relevant_universal_credit_payments(Variable): + value_type = float + entity = BenUnit + label = "Relevant Universal Credit payments for Scottish council tax reduction" + documentation = ( + "The part of a Universal Credit award that Scotland's working-age " + "council tax reduction scheme counts as income: the child element, " + "including the disabled child additions, plus the childcare costs " + "element, or the whole award if lower. An award with no child element " + "counts nothing. The standard allowance and the housing, carer and " + "limited capability elements are never income." + ) + definition_period = YEAR + unit = GBP + reference = "https://www.legislation.gov.uk/ssi/2021/249/regulation/57" + + def formula(benunit, period, parameters): + child_element = benunit("uc_child_element", period) + disabled_child_additions = add( + benunit, + period, + [ + "uc_individual_disabled_child_element", + "uc_individual_severely_disabled_child_element", + ], + ) + childcare_element = benunit("uc_childcare_element", period) + award = benunit( + "council_tax_reduction_working_age_universal_credit_award", period + ) + has_child_element = child_element > 0 + counted = min_( + child_element + disabled_child_additions + childcare_element, award + ) + has_universal_credit = benunit( + "council_tax_reduction_working_age_has_universal_credit", period + ) + return where(has_universal_credit & has_child_element, counted, 0) diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_adult_premiums.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_adult_premiums.py new file mode 100644 index 0000000000..4ac8bbbe35 --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_adult_premiums.py @@ -0,0 +1,76 @@ +from policyengine_uk.model_api import * +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.working_age._applicant import ( + working_age_adult_premium_conditions, + working_age_couple, +) +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.config import ( + is_scotland_scheme, +) + + +class council_tax_reduction_working_age_adult_premiums(Variable): + value_type = float + entity = BenUnit + label = "Working-age council tax reduction adult premiums" + documentation = ( + "Annual disability, severe disability, enhanced disability and carer " + "premiums in a working-age applicable amount in Scotland or Wales, at " + "each country's own amounts. Who qualifies follows the model's " + "legacy-benefit premium variables (disability_premium, " + "enhanced_disability_premium) and Council Tax Reduction's own severe " + "disability premium test (council_tax_reduction_severe_disability_" + "premium), including whether that premium is at the single or couple " + "rate; where the household head applies alone, the conditions are her " + "own, as in council_tax_reduction_premiums. The carer premium is paid " + "for each qualifying applicant or partner, once where partners care " + "for the same person. The employment and support allowance components, and the " + "disability premium's exclusion for limited capability for work, are " + "not modelled." + ) + definition_period = YEAR + unit = GBP + reference = ( + "https://www.legislation.gov.uk/ssi/2021/249/schedule/1/paragraph/17", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/7/paragraph/17", + ) + + def formula(benunit, period, parameters): + p = parameters(period).gov.local_authorities + scotland = is_scotland_scheme(benunit.household("country", period)) + scot = p.scotland.council_tax_reduction.working_age.adult_premiums + wales = p.wales.council_tax_reduction.working_age.adult_premiums + + def amount(node, field=None): + s = getattr(scot, node) + w = getattr(wales, node) + if field is not None: + s, w = getattr(s, field), getattr(w, field) + return where(scotland, s, w) + + couple = working_age_couple(benunit, period) + disability, enhanced, severe, severe_double = ( + working_age_adult_premium_conditions(benunit, period, parameters) + ) + weekly = ( + disability + * where( + couple, + amount("disability_premium", "couple"), + amount("disability_premium", "single"), + ) + + enhanced + * where( + couple, + amount("enhanced_disability_premium", "couple"), + amount("enhanced_disability_premium", "single"), + ) + + severe + * where( + severe_double, + amount("severe_disability_premium", "couple"), + amount("severe_disability_premium", "single"), + ) + + benunit("council_tax_reduction_working_age_carers", period) + * amount("carer_premium") + ) + return weekly * WEEKS_IN_YEAR diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_applicable_amount.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_applicable_amount.py new file mode 100644 index 0000000000..fa80ffc541 --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_applicable_amount.py @@ -0,0 +1,50 @@ +from policyengine_uk.model_api import * +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.config import ( + is_wales_scheme, +) + + +class council_tax_reduction_working_age_applicable_amount(Variable): + value_type = float + entity = BenUnit + label = "Working-age council tax reduction applicable amount" + documentation = ( + "Annual applicable amount of a working-age applicant in Scotland or " + "Wales. In Wales, an applicant with an award of Universal Credit uses " + "the Universal Credit maximum amount, including the housing costs " + "element (WSI 2013/3029 Sch 6 para 3; monthly amounts times 12/52 " + "give the same annual total). Otherwise, and for every Scottish " + "applicant including those on Universal Credit, it is the personal " + "allowance, the amounts for children, and the adult disability, " + "severe disability, enhanced disability and carer premiums at each " + "country's own amounts. The employment and support allowance " + "components are not modelled." + ) + definition_period = YEAR + unit = GBP + reference = ( + "https://www.legislation.gov.uk/ssi/2021/249/regulation/35", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/6/paragraph/1", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/6/paragraph/3", + ) + + def formula(benunit, period, parameters): + wales = is_wales_scheme(benunit.household("country", period)) + has_universal_credit = benunit( + "council_tax_reduction_working_age_has_universal_credit", period + ) + universal_credit_route = wales & has_universal_credit + own_amount = add( + benunit, + period, + [ + "council_tax_reduction_working_age_personal_allowance", + "council_tax_reduction_working_age_child_amounts", + "council_tax_reduction_working_age_adult_premiums", + ], + ) + return where( + universal_credit_route, + benunit("uc_maximum_amount", period), + own_amount, + ) diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_applicable_income.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_applicable_income.py new file mode 100644 index 0000000000..0d42fcac43 --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_applicable_income.py @@ -0,0 +1,121 @@ +from policyengine_uk.model_api import * +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.config import ( + is_scotland_scheme, + is_wales_scheme, +) + + +class council_tax_reduction_working_age_applicable_income(Variable): + value_type = float + entity = BenUnit + label = "Working-age council tax reduction income" + documentation = ( + "Annual income of a working-age applicant in Scotland or Wales, " + "compared with the applicable amount. An applicant on Income Support, " + "income-based Jobseeker's Allowance or income-related Employment and " + "Support Allowance, and not on Universal Credit, has no income for " + "this purpose and gets the maximum reduction. A Welsh applicant with " + "Universal Credit counts the Secretary of State's Universal Credit " + "income figure (earnings before the work allowance, plus Universal " + "Credit unearned income) plus the Universal Credit award. Everyone " + "else counts net earnings less disregards, unearned income (in " + "Wales, less tax on it), tariff income from capital " + "(council_tax_reduction_tariff_income), rent for letting part of the " + "home (council_tax_reduction_home_letting_income) where the scheme " + "counts it and, in Scotland, the relevant Universal Credit payments, " + "less relevant childcare " + "charges. Wales deducts the charges from earnings, so they never take " + "earnings below zero or reduce other income (WSI 2013/3029 Sch 6 para " + "20(1)(c)). Scotland deducts them from the total of earned and " + "unearned income, with or without Universal Credit (SSI 2021/249 " + "regs 38(2) and 42(2)). Income never falls below zero." + ) + definition_period = YEAR + unit = GBP + reference = ( + "https://www.legislation.gov.uk/ssi/2021/249/regulation/13", + "https://www.legislation.gov.uk/ssi/2021/249/regulation/38", + "https://www.legislation.gov.uk/ssi/2021/249/regulation/42", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/6/paragraph/9", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/6/paragraph/20", + ) + + def formula(benunit, period, parameters): + country = benunit.household("country", period) + wales = is_wales_scheme(country) + scotland = is_scotland_scheme(country) + has_universal_credit = benunit( + "council_tax_reduction_working_age_has_universal_credit", period + ) + passported = benunit("council_tax_reduction_working_age_passported", period) + earnings = benunit("council_tax_reduction_working_age_earned_income", period) + award = benunit( + "council_tax_reduction_working_age_universal_credit_award", period + ) + wales_universal_credit_income = ( + earnings + benunit("uc_unearned_income", period) + award + ) + disregard = benunit( + "council_tax_reduction_working_age_earnings_disregard", period + ) + childcare = benunit( + "council_tax_reduction_working_age_childcare_deduction", period + ) + # Wales deducts childcare charges "from any earnings" (WSI 2013/3029 + # Sch 6 para 20(1)(c)), after the disregards. Scotland estimates + # earned income, adds unearned income and then deducts the charges + # (SSI 2021/249 reg 38(2) without Universal Credit, reg 42(2) with + # it), so they can reduce unearned income too. + from_earnings = wales & ~has_universal_credit + earnings_after_deductions = max_( + 0, earnings - disregard - where(from_earnings, childcare, 0) + ) + unearned = benunit("council_tax_reduction_working_age_unearned_income", period) + # Wales disregards tax on unearned income (Sch 9 para 4); Scotland + # counts unearned income gross (reg 57). + unearned_tax = where( + wales & ~has_universal_credit, + min_( + benunit( + "council_tax_reduction_working_age_unearned_income_tax", period + ), + unearned, + ), + 0, + ) + # Rent for letting part of the home counts without Universal Credit, + # in Wales and in Scotland before SSI 2021/249 (whose reg 57(1) list + # has no head for it); the Universal Credit routes take income from + # the Secretary of State's assessment, which does not count it. + p_scotland = parameters( + period + ).gov.local_authorities.scotland.council_tax_reduction.means_test + counts_home_letting = ~has_universal_credit & ( + wales | (scotland & p_scotland.working_age_counts_home_letting_income) + ) + home_letting = where( + counts_home_letting, + benunit("council_tax_reduction_home_letting_income", period), + 0, + ) + own_rules_income = ( + earnings_after_deductions + + unearned + - unearned_tax + + home_letting + + add( + benunit, + period, + [ + "council_tax_reduction_tariff_income", + "council_tax_reduction_relevant_universal_credit_payments", + ], + ) + - where(from_earnings, 0, childcare) + ) + income = where( + wales & has_universal_credit, + wales_universal_credit_income, + own_rules_income, + ) + return where(passported, 0, max_(0, income)) diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_carers.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_carers.py new file mode 100644 index 0000000000..4ae02293f5 --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_carers.py @@ -0,0 +1,46 @@ +from policyengine_uk.model_api import * +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.working_age._applicant import ( + working_age_applicant_or_partner, +) +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.config import ( + is_scotland_scheme, +) + + +class council_tax_reduction_working_age_carers(Variable): + value_type = int + entity = BenUnit + label = "Claimants and partners qualifying for the working-age CTR carer premium" + documentation = ( + "The number of applicants and partners who qualify for the working-age " + "carer premium: entitled to Carer's Allowance or, in Scotland, Carer " + "Support Payment, whether or not an overlapping benefit reduces the " + "payment to nil; partners caring for the same severely disabled " + "person count once. In Scotland an award of Universal Credit that " + "includes the carer element also qualifies; when no one in the family " + "is entitled to a carer benefit, it counts as one carer." + ) + definition_period = YEAR + reference = ( + "https://www.legislation.gov.uk/ssi/2021/249/schedule/1/paragraph/6", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/7/paragraph/14", + ) + + def formula(benunit, period, parameters): + person = benunit.members + claimant_or_partner = working_age_applicant_or_partner(person, period) + entitled = person("is_entitled_to_carer_benefit", period) + carers = benunit.sum(claimant_or_partner & entitled) + # Partners caring for the same severely disabled person get one + # premium (SSI 2021/249 Sch 1 para 5(3)-(4); SSCBA s.70(7ZA) allows + # one Carer's Allowance per cared-for person), as in carer_premium. + same_person = benunit("partners_care_for_same_severely_disabled_person", period) + carers = where(same_person, min_(carers, 1), carers) + scotland = is_scotland_scheme(benunit.household("country", period)) + # An award of Universal Credit that includes the carer element + # (SSI 2021/249 Sch 1 para 6(1)(c)); uc_carer_element alone is the + # potential element. + uc_carer_element = (benunit("uc_carer_element", period) > 0) & benunit( + "council_tax_reduction_working_age_has_universal_credit", period + ) + return carers + (scotland & uc_carer_element & (carers == 0)) diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_child_amounts.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_child_amounts.py new file mode 100644 index 0000000000..853aa0ee2c --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_child_amounts.py @@ -0,0 +1,73 @@ +from policyengine_uk.model_api import * +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.working_age._applicant import ( + working_age_child, +) +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.config import ( + is_scotland_scheme, +) + + +class council_tax_reduction_working_age_child_amounts(Variable): + value_type = float + entity = BenUnit + label = "Working-age council tax reduction amounts for children" + documentation = ( + "Annual amounts in a working-age applicable amount in Scotland or " + "Wales for the children and young persons in the family: the child " + "premium (Scotland) or child or young person amount (Wales) for each " + "one, the family premium, and the disabled child premium and " + "child enhanced disability premium. There is no limit on the number " + "of children. A child or young person with a disability benefit or " + "who is blind gets the disabled child premium; one with the highest " + "rate of the care component of disability living allowance or the " + "enhanced daily living component of personal independence payment " + "also gets the enhanced disability premium, the same test the model " + "uses for Universal Credit's higher disabled child addition. " + "Scotland removed the family premium for new claims from 1 May " + "2016; it survives only as a transitional premium for families with " + "an unbroken claim since then, which the model does not track." + ) + definition_period = YEAR + unit = GBP + reference = ( + "https://www.legislation.gov.uk/ssi/2021/249/regulation/35", + "https://www.legislation.gov.uk/ssi/2021/249/schedule/1/paragraph/2", + "https://www.legislation.gov.uk/ssi/2021/249/schedule/1/paragraph/3", + "https://www.legislation.gov.uk/ssi/2021/249/schedule/1/paragraph/4", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/6/paragraph/1", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/7", + ) + + def formula(benunit, period, parameters): + p = parameters(period).gov.local_authorities + scot = p.scotland.council_tax_reduction.working_age + wales = p.wales.council_tax_reduction.working_age + scotland = is_scotland_scheme(benunit.household("country", period)) + person = benunit.members + child = working_age_child(person, period) + disabled = person("is_disabled_for_benefits", period) | person( + "is_blind", period + ) + severely_disabled = person("is_severely_disabled_for_benefits", period) + children = benunit.sum(child) + disabled_children = benunit.sum(child & (disabled | severely_disabled)) + severely_disabled_children = benunit.sum(child & severely_disabled) + per_child = where(scotland, scot.child_premium, wales.child_amount) + family_premium = (children > 0) * where( + scotland, scot.family_premium, wales.family_premium + ) + disabled_child_premium = where( + scotland, scot.disabled_child_premium, wales.disabled_child_premium + ) + child_enhanced_disability_premium = where( + scotland, + scot.child_enhanced_disability_premium, + wales.child_enhanced_disability_premium, + ) + weekly = ( + children * per_child + + family_premium + + disabled_children * disabled_child_premium + + severely_disabled_children * child_enhanced_disability_premium + ) + return weekly * WEEKS_IN_YEAR diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_childcare_deduction.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_childcare_deduction.py new file mode 100644 index 0000000000..5801e7904f --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_childcare_deduction.py @@ -0,0 +1,111 @@ +from policyengine_uk.model_api import * +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.working_age._applicant import ( + working_age_applicant_or_partner, + working_age_child, +) +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.config import ( + is_scotland_scheme, +) + + +class council_tax_reduction_working_age_childcare_deduction(Variable): + value_type = float + entity = BenUnit + label = "Working-age council tax reduction childcare charges deduction" + documentation = ( + "Annual relevant childcare charges deducted from a working-age " + "applicant's income in Scotland or Wales. Without Universal Credit, " + "the formula deducts the charges, up to a weekly maximum, where a " + "lone parent, or both members of a couple, work 16 hours or more a " + "week (remunerative work). Wales deducts " + "them from earnings after the earnings disregards (never below zero); " + "Scotland deducts them from earnings plus unearned income " + "(council_tax_reduction_working_age_applicable_income). A Scottish " + "applicant with Universal Credit deducts the Universal Credit " + "childcare costs element grossed up to the full cost, up to higher " + "caps. A Welsh applicant with Universal Credit uses the Secretary of " + "State's income figure, which has no childcare deduction. Each cap " + "depends on how many children in the family have relevant childcare " + "charges paid in respect of them: the formula counts the children " + "with positive childcare_expenses, and takes the two-or-more-children " + "cap only where at least two of them have charges. Where the family's " + "charges sit on an adult rather than on any child, the formula still " + "deducts them, at the one-child cap. The formula does not model the " + "incapacity, hospital and " + "prison cases for couples." + ) + definition_period = YEAR + unit = GBP + reference = ( + "https://www.legislation.gov.uk/ssi/2021/249/regulation/38", + "https://www.legislation.gov.uk/ssi/2021/249/regulation/42", + "https://www.legislation.gov.uk/ssi/2021/249/regulation/77", + "https://www.legislation.gov.uk/ssi/2021/249/regulation/78", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/6/paragraph/20", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/6/paragraph/21", + ) + + def formula(benunit, period, parameters): + p = parameters(period).gov.local_authorities + scot = p.scotland.council_tax_reduction.working_age + wales = p.wales.council_tax_reduction.working_age + scotland = is_scotland_scheme(benunit.household("country", period)) + person = benunit.members + claimant_or_partner = working_age_applicant_or_partner(person, period) + child = working_age_child(person, period) + children = benunit.sum(child) + # Each cap depends on the children "in respect of whom relevant + # childcare charges are paid" (WSI 2013/3029 Sch 6 para 20(3); SSI + # 2021/249 regs 38(4) and 42(4)), not on all the family's children. + # Charges entered on an adult count towards the deduction at the + # one-child cap. + expenses = person("childcare_expenses", period) + children_with_charges = benunit.sum(child & (expenses > 0)) + two_or_more = children_with_charges >= 2 + has_universal_credit = benunit( + "council_tax_reduction_working_age_has_universal_credit", period + ) + # Without Universal Credit: charges paid, capped, where the lone parent + # or both members of the couple are in remunerative work. + hours_threshold = where( + scotland, + scot.earnings_disregard.remunerative_work_hours, + wales.earnings_disregard.remunerative_work_hours, + ) + in_work = person("weekly_hours", period) >= benunit.project(hours_threshold) + all_claimants_in_work = benunit.sum(claimant_or_partner & ~in_work) == 0 + charges = benunit.sum(expenses) + weekly_cap = where( + scotland, + where( + two_or_more, + scot.childcare.maximum_two_or_more_children, + scot.childcare.maximum_one_child, + ), + where( + two_or_more, + wales.childcare.maximum_two_or_more_children, + wales.childcare.maximum_one_child, + ), + ) + legacy = where( + (children > 0) & all_claimants_in_work, + min_(charges, weekly_cap * WEEKS_IN_YEAR), + 0, + ) + # Scotland, with Universal Credit: the childcare costs element grossed + # up to the full charge. + uc_charges = benunit("uc_childcare_element", period) / ( + scot.childcare.universal_credit_costs_covered + ) + uc_weekly_cap = where( + two_or_more, + scot.childcare.universal_credit_maximum_two_or_more_children, + scot.childcare.universal_credit_maximum_one_child, + ) + scotland_uc = min_(uc_charges, uc_weekly_cap * WEEKS_IN_YEAR) + return where( + has_universal_credit, + where(scotland, scotland_uc, 0), + legacy, + ) diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_earned_income.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_earned_income.py new file mode 100644 index 0000000000..dc4075fb8b --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_earned_income.py @@ -0,0 +1,16 @@ +from policyengine_uk.model_api import * + + +class council_tax_reduction_working_age_earned_income(Variable): + value_type = float + entity = BenUnit + label = "Working-age council tax reduction net earned income" + documentation = ( + "Annual net earnings of the applicant and partner for a working-age " + "council tax reduction claim in Scotland or Wales, before earnings " + "disregards: the sum of each person's net earnings (see " + "council_tax_reduction_working_age_person_earned_income)." + ) + definition_period = YEAR + unit = GBP + adds = ["council_tax_reduction_working_age_person_earned_income"] diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_earnings_disregard.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_earnings_disregard.py new file mode 100644 index 0000000000..ba665ac0ea --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_earnings_disregard.py @@ -0,0 +1,182 @@ +from policyengine_uk.model_api import * +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.working_age._applicant import ( + working_age_adult_premium_conditions, + working_age_applicant_or_partner, + working_age_child, + working_age_couple, + working_age_lone_parent, +) +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.config import ( + is_scotland_scheme, +) + + +class council_tax_reduction_working_age_earnings_disregard(Variable): + value_type = float + entity = BenUnit + label = "Working-age council tax reduction earnings disregard" + documentation = ( + "Annual earnings disregarded in a working-age council tax reduction " + "claim in Scotland or Wales. One weekly disregard applies: £25 for a " + "lone parent; otherwise £20 of the family's earnings where the " + "applicable amount includes a disability or severe disability " + "premium (in Scotland also for a Universal Credit applicant with " + "limited capability for work, where the applicant or partner is under " + "pensionable age and one of them is in employment); otherwise, with a " + "carer benefit in payment, £20 of the carers' own " + "earnings, plus up to £10 of a non-carer partner's earnings within the " + "same £20. In Scotland, where the carer premium is included but no " + "one in the family has a carer benefit in payment (an award of " + "Universal Credit with the carer element, or a carer benefit an " + "overlapping benefit reduces to nil), the £20 is approximated against " + "the family's earnings, which can exceed the £10 limit on a non-carer " + "partner's earnings. Otherwise £10 for a couple and £5 for a single " + "applicant. " + "Applicants without Universal Credit who meet a work condition have " + "£17.10 more disregarded if their earnings cover the other disregard, " + "their childcare charges and the £17.10; for a couple's disability " + "condition, the disabled member must be the one in remunerative work, " + "and in Scotland from April 2022 only employed earnings count. " + "Scotland applies the disregards to Universal Credit earnings too, " + "without the £17.10. A Welsh applicant with Universal Credit uses the " + "Secretary of State's income figure, which has no disregards. The " + "disregard is never more than the earnings. The £20 disregards for " + "special occupations and permitted work are not modelled." + ) + definition_period = YEAR + unit = GBP + reference = ( + "https://www.legislation.gov.uk/ssi/2021/249/schedule/3", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/8", + ) + + def formula(benunit, period, parameters): + p = parameters(period).gov.local_authorities + scotland = is_scotland_scheme(benunit.household("country", period)) + scot = p.scotland.council_tax_reduction.working_age.earnings_disregard + wales = p.wales.council_tax_reduction.working_age.earnings_disregard + + def rate(name): + return where(scotland, getattr(scot, name), getattr(wales, name)) + + person = benunit.members + claimant_or_partner = working_age_applicant_or_partner(person, period) + weekly_person_earnings = ( + person("council_tax_reduction_working_age_person_earned_income", period) + / WEEKS_IN_YEAR + ) + earnings = benunit("council_tax_reduction_working_age_earned_income", period) + weekly_earnings = earnings / WEEKS_IN_YEAR + + lone_parent = working_age_lone_parent(benunit, period) + couple = working_age_couple(benunit, period) + has_universal_credit = benunit( + "council_tax_reduction_working_age_has_universal_credit", period + ) + # Scotland also gives the £20 to a Universal Credit applicant with + # limited capability for work (or for work and work-related + # activity) where "either the applicant or the applicant's partner + # has not reached pensionable age and at least one of them is engaged + # in employment" (SSI 2021/249 Sch 3 para 4(3)): the member under + # pensionable age and the member in employment need not be the same + # person. Either member of a couple may be the applicant. + scottish_uc_limited_capability = ( + scotland + & has_universal_credit + & benunit.any( + claimant_or_partner & person("uc_limited_capability_for_WRA", period) + ) + & benunit.any(claimant_or_partner & ~person("is_SP_age", period)) + & benunit.any(claimant_or_partner & (weekly_person_earnings > 0)) + ) + has_disability_premium, _, has_severe_disability_premium, _ = ( + working_age_adult_premium_conditions(benunit, period, parameters) + ) + disability = ( + has_disability_premium + | has_severe_disability_premium + | scottish_uc_limited_capability + ) + # The carer disregard needs a carer benefit in payment (Wales Sch 8 + # para 6: "in receipt of carer's allowance"); in Scotland an award of + # Universal Credit with the carer element also qualifies. + carers = benunit("council_tax_reduction_working_age_carers", period) + # Carer disregard: £20 of the carers' own earnings, plus up to £10 of a + # non-carer partner's earnings within the £20 (Wales Sch 8 paras 6-7; + # Scotland Sch 3 paras 6-7). Carers are identified by carer benefit + # receipt. A Scottish carer premium with no carer benefit in payment + # in the family (a UC carer element, or a benefit overlapped to nil) + # falls back to the family's earnings, an approximation. + is_carer = claimant_or_partner & person("receives_carer_benefit", period) + carer_earnings = benunit.sum(is_carer * weekly_person_earnings) + other_earnings = benunit.sum( + (claimant_or_partner & ~is_carer) * weekly_person_earnings + ) + named_carers = benunit.sum(is_carer) + carer_cap = rate("disability_or_carer") + partner_cap = rate("couple") + carer_disregard = where( + named_carers == 0, + min_(carer_cap, weekly_earnings), + where( + couple & (named_carers == 1), + min_(carer_cap, carer_earnings + min_(partner_cap, other_earnings)), + min_(carer_cap, carer_earnings), + ), + ) + base = select( + [ + lone_parent, + disability, + (named_carers > 0) | (scotland & (carers > 0)), + couple, + ], + [ + min_(rate("lone_parent"), weekly_earnings), + min_(rate("disability_or_carer"), weekly_earnings), + carer_disregard, + min_(rate("couple"), weekly_earnings), + ], + min_(rate("single"), weekly_earnings), + ) + + hours = person("weekly_hours", period) + age = person("age", period) + remunerative = hours >= benunit.project(rate("remunerative_work_hours")) + in_work = benunit.any(claimant_or_partner & remunerative) + full_time_25_or_over = benunit.any( + claimant_or_partner + & (hours >= benunit.project(rate("additional_full_time_hours"))) + & (age >= benunit.project(rate("additional_full_time_age"))) + ) + # For a couple, the member in remunerative work must be the one who + # meets the disability premium conditions (Wales Sch 8 para + # 18(2)(b)(v); Scotland Sch 3 para 15(2)(b)(iv)). + disabled_worker = benunit.any( + claimant_or_partner + & person("is_disabled_for_benefits", period) + & remunerative + ) + children = benunit.sum(working_age_child(person, period)) + work_condition = ( + full_time_25_or_over + | (couple & (children > 0) & in_work) + | (lone_parent & in_work) + | (has_disability_premium & disabled_worker) + ) + childcare = benunit( + "council_tax_reduction_working_age_childcare_deduction", period + ) + additional = rate("additional") + employed_only = scotland & (scot.additional_employed_earnings_only > 0) + employed = benunit( + "council_tax_reduction_working_age_employed_earned_income", period + ) + tested_earnings = where(employed_only, employed, earnings) + covers_additional = (tested_earnings > 0) & ( + tested_earnings >= (base + additional) * WEEKS_IN_YEAR + childcare + ) + additional_applies = work_condition & covers_additional & ~has_universal_credit + weekly = base + additional * additional_applies + weekly = where(has_universal_credit & ~scotland, 0, weekly) + return min_(earnings, weekly * WEEKS_IN_YEAR) diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_employed_earned_income.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_employed_earned_income.py new file mode 100644 index 0000000000..0fd83c5798 --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_employed_earned_income.py @@ -0,0 +1,28 @@ +from policyengine_uk.model_api import * +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.working_age._applicant import ( + working_age_applicant_or_partner, +) +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.working_age._earnings import ( + working_age_earnings, +) + + +class council_tax_reduction_working_age_employed_earned_income(Variable): + value_type = float + entity = BenUnit + label = "Working-age council tax reduction net employed earnings" + documentation = ( + "The employed part of the applicant's and partner's net earnings: " + "employment income and statutory sick, maternity and paternity pay, " + "sharing each person's deductions pro rata with their self-employed " + "earnings. Scotland's additional £17.10 earnings disregard turns on " + "employed earnings from April 2022." + ) + definition_period = YEAR + unit = GBP + reference = "https://www.legislation.gov.uk/ssi/2021/249/schedule/3" + + def formula(benunit, period, parameters): + person = benunit.members + _, employed = working_age_earnings(person, period, parameters) + return benunit.sum(working_age_applicant_or_partner(person, period) * employed) diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_has_universal_credit.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_has_universal_credit.py new file mode 100644 index 0000000000..a3a2feb449 --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_has_universal_credit.py @@ -0,0 +1,27 @@ +from policyengine_uk.model_api import * +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.working_age._applicant import ( + applicant_family, +) + + +class council_tax_reduction_working_age_has_universal_credit(Variable): + value_type = bool + entity = BenUnit + label = "Has a Universal Credit award for working-age council tax reduction" + documentation = ( + "Whether the applicant or partner has an award of Universal Credit " + "(not a household head who applies alone, whose benefit unit's award " + "is its claimant's), " + "which moves a working-age council tax reduction claim onto the " + "Universal Credit income rules in Scotland and Wales." + ) + definition_period = YEAR + reference = ( + "https://www.legislation.gov.uk/ssi/2021/249/regulation/42", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/6/paragraph/9", + ) + + def formula(benunit, period, parameters): + # Universal Credit is the benefit unit's claimant's and partner's, + # not a household head's who applies alone. + return benunit("is_uc_entitled", period) & applicant_family(benunit, period) diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_passported.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_passported.py new file mode 100644 index 0000000000..442f5dc178 --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_passported.py @@ -0,0 +1,32 @@ +from policyengine_uk.model_api import * + + +class council_tax_reduction_working_age_passported(Variable): + value_type = bool + entity = BenUnit + label = "Passported to the maximum working-age council tax reduction" + documentation = ( + "Whether the applicant or partner is on Income Support, income-based " + "Jobseeker's Allowance or income-related Employment and Support " + "Allowance and has no award of Universal Credit " + "(council_tax_reduction_universal_credit_award). In Scotland such an " + "applicant gets the maximum reduction (SSI 2021/249 reg 13(11)); in " + "Wales the scheme disregards the whole of their income and capital " + "(WSI 2013/3029 " + "Sch 9 para 8, Sch 10 para 8)." + ) + definition_period = YEAR + reference = ( + "https://www.legislation.gov.uk/ssi/2021/249/regulation/13", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/9/paragraph/8", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/10/paragraph/8", + ) + + def formula(benunit, period, parameters): + income_related_benefit = benunit( + "council_tax_reduction_relevant_income_based_benefit", period + ) + universal_credit_award = benunit( + "council_tax_reduction_universal_credit_award", period + ) + return income_related_benefit & ~universal_credit_award diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_person_earned_income.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_person_earned_income.py new file mode 100644 index 0000000000..75c9586932 --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_person_earned_income.py @@ -0,0 +1,40 @@ +from policyengine_uk.model_api import * +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.working_age._applicant import ( + working_age_applicant_or_partner, +) +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.working_age._earnings import ( + working_age_earnings, +) + + +class council_tax_reduction_working_age_person_earned_income(Variable): + value_type = float + entity = Person + label = "Working-age council tax reduction net earned income (person)" + documentation = ( + "An applicant's or partner's annual net earnings for a working-age " + "council tax reduction claim in Scotland or Wales, before earnings " + "disregards. Only income tax and National Insurance in respect of the " + "employment or trade are deducted (not tax on pensions, benefits, " + "property, savings or dividends, nor voluntary Class 3 " + "contributions). With Universal Credit, Wales uses the Universal " + "Credit earned income the award is based on, after the minimum income " + "floor, and Scotland the Universal Credit measure without the floor. " + "Without Universal Credit, self-employed profit is reduced by the " + "schemes' notional basic-rate tax and Class 4 (and, before April " + "2024, Class 2) contributions rather than the tax paid, and half of " + "pension contributions are deducted. Children's and other members' " + "earnings do not count." + ) + definition_period = YEAR + unit = GBP + reference = ( + "https://www.legislation.gov.uk/ssi/2021/249/regulation/49", + "https://www.legislation.gov.uk/ssi/2021/249/regulation/50", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/6/paragraph/9", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/6/paragraph/15", + ) + + def formula(person, period, parameters): + net, _ = working_age_earnings(person, period, parameters) + return working_age_applicant_or_partner(person, period) * net diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_personal_allowance.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_personal_allowance.py new file mode 100644 index 0000000000..a7479b93e4 --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_personal_allowance.py @@ -0,0 +1,78 @@ +from policyengine_uk.model_api import * +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.working_age._applicant import ( + applicant_family, + working_age_applicant_or_partner, + working_age_couple, + working_age_lone_parent, +) +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.config import ( + is_scotland_scheme, +) + + +class council_tax_reduction_working_age_personal_allowance(Variable): + value_type = float + entity = BenUnit + label = "Working-age council tax reduction personal allowance" + documentation = ( + "Annual personal allowance in the applicable amount of a working-age " + "applicant in Scotland or Wales. A couple and a lone parent get one " + "rate at any age. A single applicant under 25 gets the lower rate " + "unless entitled to main phase Employment and Support Allowance or, " + "in Scotland, on Universal Credit with limited capability for work. " + "Receipt of Employment and Support Allowance stands in for the main " + "phase, and the model's limited-capability-for-work-related-activity " + "flag for limited capability for work." + ) + definition_period = YEAR + unit = GBP + reference = ( + "https://www.legislation.gov.uk/ssi/2021/249/schedule/1/paragraph/1", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/7/paragraph/1", + ) + + def formula(benunit, period, parameters): + p = parameters(period).gov.local_authorities + country = benunit.household("country", period) + scotland = is_scotland_scheme(country) + scot = p.scotland.council_tax_reduction.working_age.personal_allowance + wales = p.wales.council_tax_reduction.working_age.personal_allowance + couple = working_age_couple(benunit, period) + lone_parent = working_age_lone_parent(benunit, period) + person = benunit.members + claimant_or_partner = working_age_applicant_or_partner(person, period) + age = benunit.max(where(claimant_or_partner, person("age", period), -np.inf)) + # The applicant's or partner's own ESA: contributory ESA is personal; + # income-related ESA is the benefit unit's claimant's and partner's, + # not a household head's who applies alone. + on_esa = ( + add_for_members(benunit, period, ["esa_contrib"], claimant_or_partner) + + applicant_family(benunit, period) + * benunit("claimant_or_partner_esa_income", period) + ) > 0 + has_universal_credit = benunit( + "council_tax_reduction_working_age_has_universal_credit", period + ) + limited_capability = benunit.any( + claimant_or_partner & person("uc_limited_capability_for_WRA", period) + ) + scotland_higher_single = ( + (age >= scot.age_threshold) + | on_esa + | (has_universal_credit & limited_capability) + ) + wales_higher_single = (age >= wales.age_threshold) | on_esa + scotland_single = where( + scotland_higher_single, scot.single_25_or_over, scot.single_under_25 + ) + wales_single = where( + wales_higher_single, wales.single_25_or_over, wales.single_under_25 + ) + scotland_amount = select( + [couple, lone_parent], [scot.couple, scot.lone_parent], scotland_single + ) + wales_amount = select( + [couple, lone_parent], [wales.couple, wales.lone_parent], wales_single + ) + pa = where(scotland, scotland_amount, wales_amount) + return pa * WEEKS_IN_YEAR diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_unearned_income.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_unearned_income.py new file mode 100644 index 0000000000..562b8f868a --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_unearned_income.py @@ -0,0 +1,73 @@ +from policyengine_uk.model_api import * +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.working_age._applicant import ( + working_age_applicant_or_partner, + applicant_family, +) + + +class council_tax_reduction_working_age_unearned_income(Variable): + value_type = float + entity = BenUnit + label = "Working-age council tax reduction unearned income" + documentation = ( + "Annual unearned income of the applicant and partner counted in a " + "working-age council tax reduction claim in Scotland or Wales, other " + "than Universal Credit and tariff income from capital. Retirement " + "pensions, contributory Jobseeker's Allowance and Employment and " + "Support Allowance, carer's allowance, carer support payment (the " + "Carer Support Payment component before any overlapping-benefit " + "reduction, as the pension-age route counts it; the Scottish Carer " + "Supplement is a separate variable that does not count), " + "maternity allowance, industrial injuries benefit, incapacity benefit, " + "severe disablement allowance, Part 5 miscellaneous income and " + "working and child tax credits count. Child Benefit, the " + "income-related benefits, disability benefits, Housing Benefit and " + "child maintenance do not. Actual savings interest, dividends and rent " + "are treated as capital, which yields tariff income instead. Scotland " + "counts a closed list (SSI 2021/249 reg 57(1)); Wales counts gross " + "income other than earnings less the Sch 9 disregards (WSI 2013/3029 " + "Sch 6 para 17), of which the model counts the sources above." + ) + definition_period = YEAR + unit = GBP + reference = ( + "https://www.legislation.gov.uk/ssi/2021/249/regulation/57", + "https://www.legislation.gov.uk/ssi/2021/249/regulation/63", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/6/paragraph/17", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/9", + ) + + def formula(benunit, period, parameters): + person = benunit.members + members = working_age_applicant_or_partner(person, period) + income = add_for_members( + benunit, + period, + [ + "state_pension", + "private_pension_income", + "jsa_contrib", + "esa_contrib", + "carers_allowance", + "carer_support_payment_pre_overlap", + "maternity_allowance", + "iidb", + "incapacity_benefit", + "sda", + # Part 5 miscellaneous income (SSI 2021/249 reg 57(1)(o); in + # Wales, gross income other than earnings, Sch 6 para 17). + "taxable_miscellaneous_income", + ], + members, + ) + # Tax credits are the benefit unit's claimant's and partner's. + tax_credits = applicant_family(benunit, period) * add( + benunit, period, ["working_tax_credit", "child_tax_credit"] + ) + bi = parameters(period).gov.contrib.ubi_center.basic_income + basic_income = ( + add_for_members(benunit, period, ["basic_income"], members) + if bi.interactions.include_in_means_tests + else 0 + ) + return income + tax_credits + basic_income diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_unearned_income_tax.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_unearned_income_tax.py new file mode 100644 index 0000000000..3306f7986d --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_unearned_income_tax.py @@ -0,0 +1,31 @@ +from policyengine_uk.model_api import * +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.working_age._applicant import ( + working_age_applicant_or_partner, +) +from policyengine_uk.variables.gov.local_authorities.council_tax_reduction.working_age._earnings import ( + working_age_unearned_income_tax, +) + + +class council_tax_reduction_working_age_unearned_income_tax(Variable): + value_type = float + entity = BenUnit + label = "Working-age council tax reduction tax on counted unearned income" + documentation = ( + "Income tax of the applicant and partner on the taxable unearned " + "income the working-age schemes count (pensions, State Pension and " + "taxable benefits): their non-savings income tax other than on " + "property income (earned_income_tax) less the tax on their earnings, " + "shared pro rata with taxable income the schemes do not count (the " + "Scottish Carer Supplement). Wales disregards it from unearned income " + "(WSI 2013/3029 Sch 9 para 4); Scotland counts unearned income gross " + "(SSI 2021/249 reg 57)." + ) + definition_period = YEAR + unit = GBP + reference = "https://www.legislation.gov.uk/wsi/2013/3029/schedule/9/paragraph/4" + + def formula(benunit, period, parameters): + person = benunit.members + tax = working_age_unearned_income_tax(person, period) + return benunit.sum(working_age_applicant_or_partner(person, period) * tax) diff --git a/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_universal_credit_award.py b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_universal_credit_award.py new file mode 100644 index 0000000000..849829c7e8 --- /dev/null +++ b/policyengine_uk/variables/gov/local_authorities/council_tax_reduction/working_age/council_tax_reduction_working_age_universal_credit_award.py @@ -0,0 +1,27 @@ +from policyengine_uk.model_api import * + + +class council_tax_reduction_working_age_universal_credit_award(Variable): + value_type = float + entity = BenUnit + label = "Universal Credit award for working-age council tax reduction" + documentation = ( + "The Universal Credit award after any benefit cap reduction and before " + "deductions from payment, such as advance or third-party deductions. " + "The benefit cap reduces the award (UC Regs 2013 reg 81), while " + "deductions from payment do not." + ) + definition_period = YEAR + unit = GBP + reference = ( + "https://www.legislation.gov.uk/ssi/2021/249/regulation/57", + "https://www.legislation.gov.uk/wsi/2013/3029/schedule/6/paragraph/9", + ) + + def formula(benunit, period, parameters): + award_before_cap = benunit("universal_credit_pre_benefit_cap", period) + cap_reduction = benunit("benefit_cap_reduction", period) + has_universal_credit = benunit( + "council_tax_reduction_working_age_has_universal_credit", period + ) + return has_universal_credit * max_(0, award_before_cap - cap_reduction)