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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/1957.fixed.md
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
Expand Up @@ -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/
Original file line number Diff line number Diff line change
Expand Up @@ -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/
Original file line number Diff line number Diff line change
@@ -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
91 changes: 91 additions & 0 deletions policyengine_uk/tests/test_scottish_carer_supplement_uprating.py
Original file line number Diff line number Diff line change
@@ -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)
Loading