Conversation
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>
- 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>
This was referenced Oct 1, 2026
25 tasks
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:
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
sourcesparameter starts./data.xmlon 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:
What changes
capital.sale_expensesfor each programme, next to its existingcapital.sources:rateis 0.1.sourceslists 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.pyaddsvalued_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.*_assessable_capitalvariables call the helper instead ofsum(...). The allocation proxies (adult shares, reported-claim paths) and theuc_reported_capitaloverride are unchanged. Reported capital is taken as already assessed.uprating_indices.yamlnext to the values they offset:other_residential_property_secured_debtnon_residential_property_secured_debtowned_land_secured_debtsavings, so nothing changes there. Kingston, Westminster, Merton and Newham useuc_assessable_capitalfor 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%
savings(bank and building society balances, cash ISAs)owned_land,other_residential_property_value,non_residential_property_valuecorporate_wealthThe
corporate_wealthrow is a judgement, and the parameter descriptions say so:corporate_wealthunlisted would understate it by the full 6.3 points.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.Tests
policyengine_uk/tests/policy/baseline/gov/dwp/capital_valuation.yamlhas thirteen cases, each worked by hand from the provisions above:test_stock_capital_periods.pynow 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.Enhanced FRS impact
Setup:
Microsimulationruns on a private copy ofenhanced_frs_2024_25.h5(sha256e433e532…; the build before the private-pension split), for 2025-26 to 2030-31. Aggregates only.44240bd8d; the branch is7a5076c4a. Later commits change only text and tests; parameter values and code paths are identical, so these runs still describe the head.dataset_impact.py,compare_impact.pyandpoverty_compare.pyin the reviewer's evidence folder.Branch vs main
Stacked on #1950 (#1950 alone vs #1950 + this branch)
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_wealthis mostly pension wealth that should not count at all.corporate_wealth. A real run withcorporate_wealthremoved 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 whilecorporate_wealthcounts 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_wealthhere is mostly pension wealth.corporate_wealth. The branch moves counted capital towards the truth, but mostly by trimming pension wealth.uc_unearned_incomeexcludes interest, dividends and property income only while tariff income applies (uc_unearned_income.py:15, 29). Main then counts that income again.Coordination
corporate_wealthfrom UC sources pending the pension split). Compatible: sale-expense lists are keyed by source name. Oncecorporate_wealthleaves UC'ssources, the UC listing has no effect.uc_income_from_capital.yaml,uc_unearned_income.yaml) and its let-property expectations (12 steps, not 16) need updating on rebase. Its author has agreed to do that if this lands first.returnofuc_assessable_capital.py. The only expected conflict is the docstring; whichever PR merges second resolves it. The capital a person is deemed to possess under reg 77(2) stays outside the reg 49 helper:uc_company_holding_disregardat full value, while this PR counts the holding (insidecorporate_wealth) at 90%. The holding should come off at the rate its source was counted at, 1 −sale_expenses.rate, in both places Model Universal Credit reg 77 for owner-managers of a company #1965 subtracts it: the unreported household pool and a reporting benefit unit'suc_reported_capital.axiom: TheAxiomFoundation/rulespec-uk#395 queued
review_findingand hand-computed companion tests (ADM H1602 and H1616).Follow-ups (chips filed)
DVHseDebtR8_sum,DVBldDebtR8_sum,DVLUKDebtR8_sum; buy-to-letDVBltValR8_sum/DVBLtDebtR8_sumis being checked too), the pension split and a share / fund / ISA split ofcorporate_wealthfrom policyengine-uk-data. In progress as Split pensions, shares, trusts, ISAs and secured debt out of WAS wealth policyengine-uk-data#501 (draft). It exportsprivate_pension_wealth,directly_held_shares,unit_and_investment_trusts,stocks_and_shares_isa,cash_isaand the three*_secured_debtcolumns, and adds buy-to-let toother_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.owned_land, which every legacy test counts (from Add Universal Credit capital limits #1572, no stated reason).>=); the Act says "not greater than".🤖 Generated with Claude Code