diff --git a/changelog.d/1957.fixed.md b/changelog.d/1957.fixed.md new file mode 100644 index 0000000000..00de766f20 --- /dev/null +++ b/changelog.d/1957.fixed.md @@ -0,0 +1 @@ +- Uprate the Scottish Carer Supplement from 2027-28 with `gov.benefit_uprating_cpi`, the benefit uprating index the Carer Support Payment component already uses as its proxy for the previous September's CPI, instead of holding it at £11.70 a week. diff --git a/policyengine_uk/parameters/gov/social_security_scotland/carer_support_payment/rate.yaml b/policyengine_uk/parameters/gov/social_security_scotland/carer_support_payment/rate.yaml index 1aee85e056..c3efc0c2be 100644 --- a/policyengine_uk/parameters/gov/social_security_scotland/carer_support_payment/rate.yaml +++ b/policyengine_uk/parameters/gov/social_security_scotland/carer_support_payment/rate.yaml @@ -13,3 +13,7 @@ metadata: href: https://www.mygov.scot/carer-support-payment - title: The Social Security (Up-rating) (Miscellaneous Amendments) (Scotland) Regulations 2026 reg. 12(3)(a) href: https://www.legislation.gov.uk/ssi/2026/170/regulation/12/made + - title: Social Security (Scotland) Act 2018 s. 86B (duty to uprate assistance) + href: https://www.legislation.gov.uk/asp/2018/9/section/86B + - title: Social Security Assistance in Scotland - up-rating for inflation in 2026-27, section 3 (12 months to September CPI) + href: https://www.gov.scot/publications/social-security-assistance-scotland-up-rating-inflation-2026-27/pages/4/ diff --git a/policyengine_uk/parameters/gov/social_security_scotland/carer_support_payment/supplement.yaml b/policyengine_uk/parameters/gov/social_security_scotland/carer_support_payment/supplement.yaml index d375e1ac37..79e97cf390 100644 --- a/policyengine_uk/parameters/gov/social_security_scotland/carer_support_payment/supplement.yaml +++ b/policyengine_uk/parameters/gov/social_security_scotland/carer_support_payment/supplement.yaml @@ -7,10 +7,17 @@ metadata: period: week unit: currency-GBP label: Scottish Carer Supplement rate + uprating: gov.benefit_uprating_cpi reference: - - title: New rates for carer and disability payments in 2026 - href: https://www.socialsecurity.gov.scot/news-events/news/new-payment-rates-from-april-2026 - title: The Carer's Assistance (Miscellaneous and Consequential Amendments, Revocation, Transitional and Saving Provisions) (Scotland) Regulations 2025 reg. 3 href: https://www.legislation.gov.uk/ssi/2025/340/made - title: The Social Security (Up-rating) (Miscellaneous Amendments) (Scotland) Regulations 2026 reg. 12(3)(b) href: https://www.legislation.gov.uk/ssi/2026/170/regulation/12/made + - title: Social Security (Scotland) Act 2018 s. 86A (inflation-adjusted level) + href: https://www.legislation.gov.uk/asp/2018/9/section/86A + - title: Social Security (Scotland) Act 2018 s. 86B (duty to uprate assistance) + href: https://www.legislation.gov.uk/asp/2018/9/section/86B + - title: Social Security Assistance in Scotland - up-rating for inflation in 2026-27, section 3 (12 months to September CPI) + href: https://www.gov.scot/publications/social-security-assistance-scotland-up-rating-inflation-2026-27/pages/4/ + - title: Social Security Assistance in Scotland - up-rating for inflation in 2026-27, table 5 (2026-27 rates) + href: https://www.gov.scot/publications/social-security-assistance-scotland-up-rating-inflation-2026-27/pages/7/ diff --git a/policyengine_uk/tests/policy/baseline/gov/social_security_scotland/scottish_carer_supplement.yaml b/policyengine_uk/tests/policy/baseline/gov/social_security_scotland/scottish_carer_supplement.yaml new file mode 100644 index 0000000000..0a2765052b --- /dev/null +++ b/policyengine_uk/tests/policy/baseline/gov/social_security_scotland/scottish_carer_supplement.yaml @@ -0,0 +1,56 @@ +# Social Security (Scotland) Act 2018 s.86B requires Scottish Ministers to +# bring forward legislation raising the Scottish Carer Supplement and the +# Carer Support Payment component to at least their s.86A inflation-adjusted +# levels; their measure is the 12 months to September CPI (Social Security +# Assistance in Scotland: up-rating for inflation in 2026-27, section 3). +# From 2027 the model uprates both with gov.benefit_uprating_cpi, its proxy +# for that measure, which is 184.3803432 in 2026, 188.6206824 in 2027 and +# 192.3927984 in 2028 under the OBR March 2026 EFO. The model does not round +# to the nearest 5p as Ministers do. + +- name: Scottish Carer Supplement is 11.70 a week in 2026 + period: 2026 + absolute_error_margin: 0.01 + input: + age: 35 + care_hours: 40 + country: SCOTLAND + output: + # SSI 2026/170 reg. 12(3)(b): 11.70 x 52. + scottish_carer_supplement: 608.40 + carer_support_payment: 86.45 * 52 + +- name: Scottish Carer Supplement rises with gov.benefit_uprating_cpi in 2027 + period: 2027 + absolute_error_margin: 0.01 + input: + age: 35 + care_hours: 40 + country: SCOTLAND + output: + # 11.70 x 188.6206824 / 184.3803432 x 52 = 622.39, up from 608.40. + scottish_carer_supplement: 11.70 * 188.6206824 / 184.3803432 * 52 + # The Carer Support Payment component rises by the same factor. + carer_support_payment: 86.45 * 188.6206824 / 184.3803432 * 52 + +- name: Scottish Carer Supplement keeps rising in 2028 + period: 2028 + absolute_error_margin: 0.01 + input: + age: 35 + care_hours: 40 + country: SCOTLAND + output: + # 11.70 x 192.3927984 / 184.3803432 x 52 = 634.84. + scottish_carer_supplement: 11.70 * 192.3927984 / 184.3803432 * 52 + +- name: Carer in England gets no Scottish Carer Supplement in 2027 + period: 2027 + absolute_error_margin: 0 + input: + age: 35 + care_hours: 40 + country: ENGLAND + output: + scottish_carer_supplement: 0 + carer_support_payment: 0 diff --git a/policyengine_uk/tests/test_scottish_carer_supplement_uprating.py b/policyengine_uk/tests/test_scottish_carer_supplement_uprating.py new file mode 100644 index 0000000000..802c0a8451 --- /dev/null +++ b/policyengine_uk/tests/test_scottish_carer_supplement_uprating.py @@ -0,0 +1,91 @@ +"""Uprating of the Scottish Carer Supplement. + +Social Security (Scotland) Act 2018 s.86B requires Scottish Ministers to bring +forward legislation raising each figure of assistance given under Chapter 2 of +Part 2, carer's assistance included, to at least its s.86A inflation-adjusted +level. Their measure is the 12 months to September CPI, rounded to the nearest +5p (Social Security Assistance in Scotland: up-rating for inflation in +2026-27, sections 2 and 3). SSI 2026/170 reg 12(3) raised the Carer Support +Payment component from 83.30 to 86.45 and the Scottish Carer Supplement from +11.29 to 11.70: both are the 3.8% September 2025 rate, rounded to 5p. The +supplement had no uprating metadata, so the model froze it at 11.70 a week from +2027 while the Carer Support Payment component kept rising. + +Invariants, for every year from 2027 to 2039, the last year of the uprating +index: + +1. Differential: the supplement and the Carer Support Payment component grow + by the same factor from their April 2026 rates. +2. That factor is gov.benefit_uprating_cpi relative to 2026, so the supplement + never falls while the index does not. +3. Metamorphic: setting CPI growth in the year before to g scales both + components by 1 + g on the year, to within the rounding of the index. + +The YAML tests in tests/policy/baseline/gov/social_security_scotland check +that a Carer Support Payment recipient in Scotland gets 52 weeks of the rate. +""" + +import pytest +from hypothesis import HealthCheck, given, settings +from hypothesis import strategies as st + +from policyengine_uk import CountryTaxBenefitSystem + +BASE_YEAR = 2026 +YEARS = range(BASE_YEAR + 1, 2040) +SUPPLEMENT_2026 = 11.70 +CSP_RATE_2026 = 86.45 + + +@pytest.fixture(scope="module") +def parameters(): + return CountryTaxBenefitSystem().parameters + + +@pytest.mark.parametrize("year", YEARS) +def test_supplement_uprates_with_carer_support_payment(parameters, year): + csp = parameters.gov.social_security_scotland.carer_support_payment + index = parameters.gov.benefit_uprating_cpi + factor = index(str(year)) / index(str(BASE_YEAR)) + + assert csp.supplement(str(BASE_YEAR)) == SUPPLEMENT_2026 + assert csp.rate(str(BASE_YEAR)) == CSP_RATE_2026 + assert csp.supplement(str(year)) / SUPPLEMENT_2026 == pytest.approx( + csp.rate(str(year)) / CSP_RATE_2026, rel=1e-12 + ) + assert csp.supplement(str(year)) == pytest.approx( + SUPPLEMENT_2026 * factor, rel=1e-12 + ) + if index(str(year)) >= index(str(year - 1)): + assert csp.supplement(str(year)) >= csp.supplement(str(year - 1)) + + +@settings( + max_examples=8, + deadline=None, + derandomize=True, + suppress_health_check=[HealthCheck.too_slow], +) +@given( + year=st.integers(min_value=BASE_YEAR + 1, max_value=2035), + growth=st.floats(min_value=0, max_value=0.12), +) +def test_supplement_follows_prior_year_cpi(year, growth): + system = CountryTaxBenefitSystem() + system.reset_parameters() + cpi = system.parameters.gov.economic_assumptions.yoy_growth.obr + shocked = [ + value_at_instant + for value_at_instant in cpi.consumer_price_index.values_list + if value_at_instant.instant_str == f"{year - 1}-01-01" + ] + assert len(shocked) == 1 + shocked[0].value = growth + system.process_parameters() + + csp = system.parameters.gov.social_security_scotland.carer_support_payment + supplement_growth = csp.supplement(str(year)) / csp.supplement(str(year - 1)) + rate_growth = csp.rate(str(year)) / csp.rate(str(year - 1)) + + assert supplement_growth == pytest.approx(1 + growth, abs=1e-4) + assert supplement_growth == pytest.approx(rate_growth, rel=1e-12)