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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/followups-1909-1945.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Note that the council tax reduction (CTR) capital-route loss in #1909 is an artefact of the `corporate_wealth` proxy, so CTR offsets in pension costings that rest on it should not be read as real effects. A pensioner whose Pension Credit award is savings credit only is tested against the CTR capital limit on Pension Credit's capital (`council_tax_reduction_assessable_capital`), and Pension Credit's capital sources count `corporate_wealth` but not `private_pension_wealth`. In datasets built before the `private_pension_wealth` split, `corporate_wealth` also holds imputed pension wealth, which Pension Credit disregards (State Pension Credit Regulations 2002 Sch V paras 22 and 23), so these pensioners can fail the £16,000 limit on pension wealth that is not countable capital. A benefit unit that records `pension_credit_reported_capital` bypasses the proxy. See #1837 and #1936. Two CTR test cases pin the route, and a new Housing Benefit case pins the savings-credit-only route of #1945 for a household built from age, pensions, rent, tenure and capital alone.
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,13 @@
# reached it before April 2016, so can have savings credit, and pays no
# National Insurance.
#
# Robustness to the other open Housing Benefit fixes: the tenants rent from
# the council, so the Local Housing Allowance order cannot apply; every case
# sets housing_benefit_applicable_income_disregard to the value the earnings
# disregard fix (PolicyEngine/policyengine-uk#1908) gives, 0 for a family with
# no earnings; and no claimant has a disability benefit, so the severe
# disability premium fix (#1938) does not change the applicable amount.
# Robustness to the other Housing Benefit fixes: the tenants rent from the
# council, so the Local Housing Allowance order cannot apply; cases 1 to 8
# set housing_benefit_applicable_income_disregard to the value the earnings
# disregard fix (PolicyEngine/policyengine-uk#1908, merged) gives, 0 for a
# family with no earnings, and case 9 leaves it to the model; and no claimant
# has a disability benefit, so the severe disability premium fix (#1938) does
# not change the applicable amount.

- name: Case 1, savings credit only, the savings credit payable is added to the Pension Credit income.
period: 2026
Expand Down Expand Up @@ -325,3 +326,78 @@
# 12,914, below the applicable amount of 13,312.
housing_benefit_applicable_income: 12_914
housing_benefit: 7_800

- name: Case 9, savings credit only, no earnings, built from age, pensions, rent, tenure and capital alone, with nothing overridden.
period: 2026
absolute_error_margin: 0.01
# A regression guard for the integrated route (reviewer request on #1945, 1
# and 5 October 2026). The inputs are only age, pensions, rent, tenure and
# savings: no Housing Benefit disregard, no childcare, and no Pension Credit
# or Housing Benefit income intermediate is set, so every figure below is
# the model's own. Cases 1 to 8 set the earnings disregard directly.
#
# Law, SI 2006/214 reg 27 (NI: SR 2006/406 reg 25), read on
# legislation.gov.uk on 5 October 2026: (1) the authority uses the Secretary
# of State's calculation of income and capital for the savings-credit-only
# award; (4) it modifies the net income "only in so far as necessary to take
# into account" (a) the savings credit payable, (b) childcare charges, (c)
# and (d) the higher earnings and additional disregards, (e) to (g) items
# outside this household; (5) its own income rules, tariff income included,
# do not apply to the Secretary of State's figure; (6) capital is the
# Secretary of State's, with the £16,000 limit applied to it.
#
# 2026 parameters, as in the cases above: minimum guarantee £238.00 a week
# single (12,376 a year); savings credit threshold £208.07 (10,819.64),
# phase-in 60% and withdrawal 40%; Housing Benefit aged personal allowance
# £256.00 (13,312); taper 65%; personal allowance 12,570 and basic rate 20%.
input:
people:
person1:
age: 83
state_pension: 10_200
private_pension_income: 3_100
benunits:
benunit:
members: [person1]
households:
household:
members: [person1]
rent: 6_240
tenure_type: RENT_FROM_COUNCIL
savings: 13_900
output:
# (10,200 + 3,100 - 12,570) x 0.2 = 730 x 0.2 = 146.
income_tax: 146
# (13,900 - 10,000) / 500 = 7.8, so 8 steps of £1 a week; 8 x 52 = 416.
pension_credit_assessable_capital: 13_900
pension_credit_deemed_income: 416
# The Secretary of State's net income: 13,300 - 146 + 416 = 13,570. Above
# the minimum guarantee of 12,376, so no guarantee credit.
pension_credit_income: 13_570
guarantee_credit: 0
# Savings credit payable: the maximum is 0.6 x (12,376 - 10,819.64) =
# 933.816, below 0.6 x (13,570 - 10,819.64) = 1,650.216, so it is the
# maximum; less 0.4 x (13,570 - 12,376) = 477.60; 933.816 - 477.60 =
# 456.216.
savings_credit: 456.22
pension_credit: 456.22
in_receipt_of_savings_credit_only: true
# The reg 27(4) modification to the net income of 13,570: (a) adds the
# savings credit payable, 456.216. There is no (b) childcare, and with no
# earnings no (c) or (d) disregard, so the modification is +456.216.
housing_benefit_applicable_income_childcare_element: 0
housing_benefit_applicable_income_disregard: 0
# 13,570 + 456.216 - 0 - 0 = 14,026.216. Without (a) it would be 13,570.
housing_benefit_savings_credit_only_income: 14_026.22
# Reg 27(5): no Housing Benefit tariff income on top of the deemed income
# inside the 13,570.
housing_benefit_tariff_income: 0
housing_benefit_applicable_income: 14_026.22
housing_benefit_applicable_amount: 13_312
# Reg 27(6): the Secretary of State's capital, 13,900, within the limit.
housing_benefit_assessable_capital: 13_900
housing_benefit_eligible: true
# 6,240 - 0.65 x (14,026.216 - 13,312) = 6,240 - 0.65 x 714.216 =
# 6,240 - 464.2404 = 5,775.7596. Without (a), 6,240 - 0.65 x (13,570 -
# 13,312) = 6,240 - 167.70 = 6,072.30.
housing_benefit: 5_775.76
Original file line number Diff line number Diff line change
Expand Up @@ -616,3 +616,91 @@
in_receipt_of_savings_credit_only: true
council_tax_reduction_assessable_capital: 16_000.01
council_tax_reduction: 0

# The next two cases pin the route behind the capital-route loss of #1909, so
# that the loss is not read as a real effect (see also #1837 and #1936). A
# savings-credit-only recipient is tested against the CTR capital limit on the
# Pension Credit figure, and Pension Credit's capital sources count
# `corporate_wealth` but not `private_pension_wealth`: State Pension Credit
# Regulations 2002 Sch V paras 22 and 23 disregard the value of a right to
# receive income from an occupational or personal pension scheme or under a
# retirement annuity contract. In datasets built before the
# `private_pension_wealth` split, `corporate_wealth` also holds imputed pension
# wealth, so there the first case's exclusion rests on pension wealth that
# Pension Credit does not count. The rule in the first case counts
# `corporate_wealth` whatever it holds, and stays as written once a dataset
# splits the column; what changes is the value the dataset gives
# `corporate_wealth`.

- name: Savings credit only, corporate_wealth counts as Pension Credit capital, so a pensioner with nil household savings is over the CTR capital limit
period: 2026
absolute_error_margin: 0.01
input:
people:
pensioner:
age: 90
state_pension: 12_000
private_pension_income: 1_500
benunits:
benunit:
members: [pensioner]
claims_all_entitled_benefits: true
households:
household:
members: [pensioner]
country: ENGLAND
local_authority: MAIDSTONE
tenure_type: OWNED_OUTRIGHT
council_tax: 2_000
savings: 0
corporate_wealth: 20_000
output:
# (12,000 + 1,500 - 12,570) x 0.2 = 186. (20,000 - 10,000) / 500 = 20
# steps of £1 a week; 20 x 52 = 1,040 of deemed income.
pension_credit_assessable_capital: 20_000
pension_credit_deemed_income: 1_040
# 13,500 - 186 + 1,040 = 14,354, above the minimum guarantee of 12,376.
pension_credit_income: 14_354
guarantee_credit: 0
# 933.816 - 0.4 x (14,354 - 12,376) = 933.816 - 791.20 = 142.616.
savings_credit: 142.62
in_receipt_of_savings_credit_only: true
# The Pension Credit capital is 20,000, over 16,000, with nil savings in
# the household. The same pensioner with 20,000 of private_pension_wealth
# keeps CTR in the next case.
council_tax_reduction_assessable_capital: 20_000
council_tax_reduction: 0

- name: Savings credit only, private_pension_wealth is not Pension Credit capital, so it does not take the pensioner over the CTR capital limit
period: 2026
absolute_error_margin: 0.01
input:
people:
pensioner:
age: 90
state_pension: 12_000
private_pension_income: 1_500
benunits:
benunit:
members: [pensioner]
claims_all_entitled_benefits: true
households:
household:
members: [pensioner]
country: ENGLAND
local_authority: MAIDSTONE
tenure_type: OWNED_OUTRIGHT
council_tax: 2_000
savings: 0
private_pension_wealth: 20_000
output:
# No capital counts, so no deemed income: as with no wealth at all,
# 13,500 - 186 = 13,314 and 933.816 - 0.4 x (13,314 - 12,376) = 558.616.
pension_credit_assessable_capital: 0
pension_credit_deemed_income: 0
pension_credit_income: 13_314
savings_credit: 558.62
in_receipt_of_savings_credit_only: true
council_tax_reduction_assessable_capital: 0
# 2,000 - 0.2 x (13,314 + 558.616 - 13,312) = 2,000 - 112.1232 = 1,887.8768.
council_tax_reduction: 1_887.88
Loading