Skip to content

Value means-tested capital less 10% sale expenses and secured debt (UC reg 49 and legacy equivalents) - #1969

Open
MaxGhenis wants to merge 3 commits into
mainfrom
uc-capital-sale-expenses
Open

MaxGhenis wants to merge 3 commits into
mainfrom
uc-capital-sale-expenses

Conversation

@MaxGhenis

@MaxGhenis MaxGhenis commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #1960.

Universal Credit and every legacy means test counted each capital source at full value. The regulations value capital "at its current market value or surrender value less— (a) where there would be expenses attributable to sale, 10%; and (b) the amount of any encumbrances secured on it" (UC Regs 2013 reg 49(1)). This PR applies that valuation to UC, Housing Benefit, Income Support, income-based JSA, income-related ESA and Pension Credit.

The law

Programme Provision (GB) Northern Ireland
Universal Credit UC Regs 2013 reg 49(1) S.R. 2016/216 reg 49(1)
Housing Benefit HB Regs 2006 reg 47; HB (SPC) Regs 2006 reg 45 S.R. 2006/405 reg 44; S.R. 2006/406 reg 43
Income Support IS Regs 1987 reg 49 S.R. 1987/459 reg 49
Income-based JSA JSA Regs 1996 reg 111 S.R. 1996/198 reg 111
Income-related ESA ESA Regs 2008 reg 113 S.R. 2008/280 reg 113
Pension Credit SPC Regs 2002 reg 19 S.R. 2003/28 reg 19
  • All the legacy provisions say the same thing, in older wording ("10 per cent", "encumbrance/incumbrance").
  • The GB provisions were substituted on 1.10.2007 (SI 2007/2618). The as-made JSA 1996, SPC 2002 and HB 2006 texts already carried the 10% and encumbrance rule, plus a National Savings Certificate special case that the substitution removed. So each rate parameter starts on the date its sources parameter starts.
  • The texts were fetched from legislation.gov.uk /data.xml on 2026-09-30. An independent re-fetch confirmed the regulation numbers: JSA is reg 111, not 109; ESA is reg 113, not 112.

The DWP guidance sets the order and scope of the deductions:

  • The flat 10% applies only where selling needs an agent, broker, auctioneer, solicitor or accountant, whatever the actual costs (ADM H1604-H1605).
  • Real property always has costs of sale (H1606).
  • The 10% comes off gross value, before encumbrances (H1608; DMG 29624; MH v Waltham Forest [2016] UKUT 161 (AAC) para 43).
  • A secured debt is deducted only from the asset it is secured on; unsecured debt is not deducted (H1615-H1616).

What changes

  • capital.sale_expenses for each programme, next to its existing capital.sources:
    • rate is 0.1.
    • sources lists the capital sources whose sale incurs expenses. Each cites that programme's regulation and guidance (ADM for UC, DMG ch 29 for IS/JSA, DMG ch 84 for PC, HBGM BW1/BP1 for HB).
  • policyengine_uk/utils/capital_valuation.py adds valued_capital(). For each source it takes 10% of gross value where the source is listed, then subtracts the debt secured on that source, and floors each encumbered source at nil. Negative equity in one asset therefore never reduces another.
  • The six *_assessable_capital variables call the helper instead of sum(...). The allocation proxies (adult shares, reported-claim paths) and the uc_reported_capital override are unchanged. Reported capital is taken as already assessed.
  • Three household inputs, defaulting to 0 and registered in uprating_indices.yaml next to the values they offset:
    • other_residential_property_secured_debt
    • non_residential_property_secured_debt
    • owned_land_secured_debt
  • Council tax reduction. The national schemes on main test only household savings, so nothing changes there. Kingston, Westminster, Merton and Newham use uc_assessable_capital for UC claimants, so they inherit the UC valuation. That is what the prescribed schemes' UC pass-throughs require (2886 para 37(6); WSI 3029 Sch 6 para 9(6)).

Which sources take the 10%

Source 10%? Authority
savings (bank and building society balances, cash ISAs) No Inferred, not stated in terms: an account is valued at "the balance in the account" (ADM H1675, DMG 29685, DMG 84731), and the incidental costs of withdrawing money are not costs of sale (H1607). No guidance paragraph says "cash has no costs of sale".
owned_land, other_residential_property_value, non_residential_property_value Yes, always Real property (ADM H1606). The WAS round 8 variables behind these are gross values ("Total value of other houses/buildings/UK land"), so the 10% applies to the right base.
corporate_wealth Yes Quoted shares take 10% (ADM H1665). Unit trusts do not: "no costs of sale ... even if persons use an agent" (H1674). ISAs are valued at withdrawal value (H1656).

The corporate_wealth row is a judgement, and the parameter descriptions say so:

  • The variable bundles shares with unit trusts and stocks-and-shares ISAs.
  • From WAS round 8 aggregates with an HMRC ISA look-through (Table 9.6), about 46% of the share-like holdings carry sale costs. That makes the correct deduction about 4.6% of value: about 6.3% among households near the £16,000 limit, where direct shareholdings dominate.
  • A flat 10% overstates the correct deduction by about 1.6× near the limit. Leaving corporate_wealth unlisted would understate it by the full 6.3 points.
  • The proper fix is a data split (see follow-ups).

Invariants

These hold for every input and are tested as properties (policyengine_uk/tests/test_capital_valuation_properties.py, Hypothesis). The first two were also checked on every Enhanced FRS record in every year of the impact runs below.

  1. Non-increasing. Every programme's assessable capital is at most its value with the deduction off (rate 0, no debt).
  2. Cash only. A household holding only savings has the same capital with the deduction on or off.
  3. Differential. Capital equals an independent implementation of the regulation: savings + Σ max(0, 90% × value − secured debt), over each programme's own source list.
  4. Monotone. A higher rate, or more secured debt, never raises capital.
  5. Isolation. Debt secured on one asset never takes capital below the value of the household's other assets, and capital is never negative.

Tests

  • New policyengine_uk/tests/policy/baseline/gov/dwp/capital_valuation.yaml has thirteen cases, each worked by hand from the provisions above:
    • UC:
      • the ADM H1602 example: £125,000 − £12,500 − £100,500 = £12,000, so tariff income is 24 × £4.35 × 12 = £1,252.80;
      • cash savings at face value;
      • shares that bring capital under the limit: £5,000 + 90% × £12,000 = £15,800;
      • negative equity that doesn't reach savings;
      • sale expenses taken before the encumbrance;
      • each encumbered source floored on its own: a second home in negative equity plus premises worth £10,000 gives £9,000, where netting the debts across both would give nil.
    • HB:
      • encumbered land;
      • mortgaged second homes and premises: £1,000 + (£45,000 − £30,000) + max(0, £18,000 − £25,000) = £16,000;
      • pension-age HB under HB (SPC) reg 45: 90% × £200,000 − £50,000 = £130,000. Deemed income of 240 × £52 = £12,480 exceeds the guarantee, so no guarantee credit disregards it.
    • IS, JSA, ESA and PC: one case each with secured debt or shares.
  • Updated existing expectations, each with the arithmetic in a comment:
    • IS, JSA and ESA, the cases that ignore the main residence: £10,500 becomes £1,000 + 90% × £9,500 = £9,550.
    • The private-pension disregard cases: £3,000 becomes £2,800.
    • UC and HB £50,000 property and wealth cases: £45,000.
    • The HB and PC land cases keep their intent by raising the input: 90% × £17,780 = £16,002 stays over the HB limit. A new HB case shows that land worth £16,001 now falls within it.
    • Pension Credit cases 4 and 5 are recomputed in full:
      • Case 4: capital £50,288, deemed income 81 × £52 = £4,212. Savings credit is now 60% × (£12,376 − £208.07 × 52) − 40% × (£14,688 − £12,376) = £9.02.
      • Case 5: capital £98,670, deemed income 178 × £52 = £9,256, guarantee credit £3,120.
    • test_stock_capital_periods.py now also gives the second home a £5,000 mortgage: £12,000 + (£10,800 − £5,000) + £10,800 = £28,600, the same for a month as for the year.
  • test_capital_valuation_properties.py (Hypothesis, 20-200 households per example). The oracle fixes which assets take the 10%, and the 10% itself, from the law, rather than reading the parameters. Removing HB's two property sources from its list makes these tests fail.
  • CI: all six checks passed on the first push (7a5076c), including the microsimulation reform-impact fixtures.

Enhanced FRS impact

Setup:

  • Real Microsimulation runs on a private copy of enhanced_frs_2024_25.h5 (sha256 e433e532…; the build before the private-pension split), for 2025-26 to 2030-31. Aggregates only.
  • main is 44240bd8d; the branch is 7a5076c4a. Later commits change only text and tests; parameter values and code paths are identical, so these runs still describe the head.
  • Each run records its git head and a clean tracked tree.
  • Scripts and outputs: dataset_impact.py, compare_impact.py and poverty_compare.py in the reviewer's evidence folder.

Branch vs main

Year UC Pension Credit Housing Benefit ESA (IR) Household net income UC gainers UC losers New UC awards AHC poverty
2025-26 +61m +136m +267m +60m +530m 749k 20.0k (24 records) 14.1k -0.12pp
2026-27 +476m +161m +41m +32m +708m 727k 17.2k (21 records) 33.6k -0.25pp
2027-28 +585m +162m +44m +32m +821m 807k 9.5k (15 records) 33.1k -0.17pp
2028-29 +312m +171m +11m +4m +498m 802k 6.2k (15 records) 20.1k -0.07pp
2029-30 +608m +156m +309m +5m +1,082m 821k 10.4k (9 records) 47.2k -0.15pp
2030-31 +1,018m +167m +322m +4m +1,505m 787k 4.3k (6 records) 59.1k -0.16pp

Stacked on #1950 (#1950 alone vs #1950 + this branch)

Year UC Pension Credit Housing Benefit ESA (IR) Household net income UC gainers UC losers New UC awards AHC poverty
2025-26 +193m +136m +267m +60m +662m 769k 0.0k (0 records) 14.3k -0.12pp
2026-27 +611m +161m +41m +32m +843m 744k 0.0k (0 records) 33.5k -0.25pp
2027-28 +633m +162m +44m +32m +869m 816k 0.0k (0 records) 33.5k -0.17pp
2028-29 +340m +171m +11m +4m +526m 807k 0.0k (0 records) 20.0k -0.07pp
2029-30 +615m +156m +309m +5m +1,090m 831k 0.0k (0 records) 47.1k -0.15pp
2030-31 +1,022m +167m +322m +4m +1,510m 791k 0.0k (0 records) 59.1k -0.16pp

How to read these numbers. None of these figures is a fiscal estimate of reg 49. They are the effect of this code change on the current dataset, whose corporate_wealth is mostly pension wealth that should not count at all.

  • All of the effect comes through corporate_wealth. A real run with corporate_wealth removed from every sale-expense list (property and land only) leaves every award in every year bit-identical to main. The reform did apply: UC-assessed capital fell on over 5,000 records. But in this dataset no benefit unit on UC, HB, ESA, IS, JSA or PC holds non-home property or land, and property holders average about £500,000 of it. That holds only while corporate_wealth counts in full. Taking it out of main's UC capital leaves roughly 10-20 property-holding records a year (a linear approximation) with capital between £6,000 and £17,778, where the 10% could bind. So re-measure after the pension split.
  • corporate_wealth here is mostly pension wealth.
    • In this build it still includes non-DB private pension wealth, about 85% of the bundle in the WAS donor (Exclude corporate_wealth from Universal Credit countable capital pending a pension split #1837, policyengine-uk-data#452). Pension rights are disregarded outright (UC Sch 10 para 10).
    • On this dataset the legally correct 10% would reach only about 7% of corporate_wealth. The branch moves counted capital towards the truth, but mostly by trimming pension wealth.
    • The pension split, not this PR, is what matters for the numbers. The effect on countable shares, property and land can be measured once policyengine-uk-data separates them (in progress).
  • A few records carry each figure.
    • UC: about 700-740 benefit-unit records change each year, and the top 5 give 47-75% of the change.
    • Pension Credit: the top record gives 68-75% of the change every year.
    • Housing Benefit: the top record gives 95-96% of the change in 2025-26, 2029-30 and 2030-31, so those HB figures are single-record results.
    • The year-to-year swings are cohorts of 55-72 records that sit just above the £16,000 limit on main and just below it on the branch (2026 medians: £16,408 on main, £14,932 on the branch). The limit has been £16,000 since 2013, while capital uprates with GDP per capita, so a different few dozen records drift across it each year. Don't read the rise from +£61m to +£1.0bn as a trend.
  • On main, 6 to 24 records a year lose UC. In 2026 that is 21 records, 17k benefit units and −£132m, traced component by component.
    • For every such unit, in every year, UC tariff income falls from above nil to nil.
    • uc_unearned_income excludes interest, dividends and property income only while tariff income applies (uc_unearned_income.py:15, 29). Main then counts that income again.
    • Their own HB, ESA, IS, JSA, PC and CTR are unchanged. So UC in the main comparison is gross gains less these cliff losses: 2025-26 is +£191m less £130m, and 2026-27 is +£608m less £132m.
    • Stop counting interest, dividends and rent as Universal Credit unearned income #1950 removes the cliff. Stacked on it, no unit loses UC in any year.
  • The poverty change should not be quoted as an estimate. The 2026 AHC fall of 172k people (child AHC −0.74pp) comes from 62 person records in 39 benefit units. The top 5 units carry 97% of the weight, and most leavers gain a whole UC award (median equivalised gain about £10,900).

Coordination

axiom: TheAxiomFoundation/rulespec-uk#395 queued

  • Reg 49 is not encoded in rulespec-uk: UC 46, 47, 48, 18 and 72 take valued capital as an opaque leaf.
  • None of these provisions is in the pinned signed corpus release, so the encoder route is blocked until they are ingested. The queued issue carries the verbatim law, corpus state, landing path, a pasteable review_finding and hand-computed companion tests (ADM H1602 and H1616).

Follow-ups (chips filed)

  • Export secured debt on other property (WAS DVHseDebtR8_sum, DVBldDebtR8_sum, DVLUKDebtR8_sum; buy-to-let DVBltValR8_sum/DVBLtDebtR8_sum is being checked too), the pension split and a share / fund / ISA split of corporate_wealth from policyengine-uk-data. In progress as Split pensions, shares, trusts, ISAs and secured debt out of WAS wealth policyengine-uk-data#501 (draft). It exports private_pension_wealth, directly_held_shares, unit_and_investment_trusts, stocks_and_shares_isa, cash_isa and the three *_secured_debt columns, and adds buy-to-let to other_residential_property_value. A model-side follow-up stacked on this PR will name the split variables in the sale-expense lists, so that unit trusts and stocks-and-shares ISAs are exempt.
  • National CTR schemes count only savings and apply no tariff income; they should count all capital, with the UC and PC pass-throughs.
  • UC capital sources omit owned_land, which every legacy test counts (from Add Universal Credit capital limits #1572, no stated reason).
  • axiom-oracles' capital surfaces feed PE assessable capital into the Axiom side, so they can never catch a valuation error.
  • rulespec-uk's composed UC pipeline ends entitlement at exactly £16,000 (>=); the Act says "not greater than".

🤖 Generated with Claude Code

UC Regs 2013 reg. 49(1) and its legacy equivalents (HB Regs 2006 reg. 47,
HB (SPC) Regs 2006 reg. 45, IS Regs 1987 reg. 49, JSA Regs 1996 reg. 111,
ESA Regs 2008 reg. 113, SPC Regs 2002 reg. 19) calculate capital at market
or surrender value less 10% where a sale would incur expenses and less any
encumbrance secured on it. The model summed every capital source at full
value.

Each programme gets a capital.sale_expenses node (rate 0.1 and the sources
whose sale incurs expenses: land, property and corporate_wealth, not cash
savings). A shared helper applies the 10% before the encumbrance and never
values an encumbered asset below nil. New household inputs carry debt
secured on other residential property, non-residential property and land;
the Enhanced FRS has none, so they default to zero.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis and others added 2 commits September 30, 2026 22:07
- Each programme's sale-expense parameters now cite its GB and NI
  regulations, the guidance paragraph that orders the 10% before the
  encumbrance, and per-asset guidance with exact PDF page anchors (DMG ch 52
  for ESA, HBGM Annex F for HB savings, H1656/H1665/H1673-H1675 for UC).
- The source-list descriptions and changelog say plainly that
  corporate_wealth also holds unit trusts, ISAs, employee share options and,
  in datasets built before the pension split, non-DB pension wealth.
- The helper and secured-debt docs say debts net within a source category.
- The property-test oracle fixes the sale-expense assets and the 10% itself
  instead of reading the parameters, checks pension-age HB, and runs on
  larger populations. New hand-computed cases cover HB second homes and
  premises, per-source flooring between two encumbered sources, pension-age
  HB, and a monthly secured debt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
HBGM W1.430 states only the general 10% rule; the rule that real property
always has costs of sale comes from R(IS) 21/93, as DMG 29622 applies it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@MaxGhenis

Copy link
Copy Markdown
Collaborator Author

Coordination note from #1950 (UC capital income). If this PR lands after #1950, please update the "reg 49 is #1960" notes #1950 adds:

  • in uc_income_from_capital.yaml, the header and both let-property cases (GB and NI);
  • in uc_unearned_income.yaml, the savings-0 let-property case.

Those cases enter £10,000 of property as capital. At 90% that is 12 tariff steps, not 16, so either update the expected values or restate the input as a property value of £11,111.11. If #1950 lands second, I'll do it on rebase. #1950's merge is waiting on a decision from Max (over the £1bn/yr line).

🤖 Generated with Claude Code

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

UC capital ignores reg 49 valuation (10% sale costs and secured debts)

1 participant