From f4e3b33ff072c9ac59b72f6ce03bb01ad5b9024b Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 13 Aug 2026 12:49:42 -0400 Subject: [PATCH 1/5] Document review findings on UC deductions scope and bias direction From the post-merge methodology review on #1815: the protected floor binds on all deduction categories including last resort and child maintenance (JRF's briefing does not state their intent for those); the rate distribution is national and validated for 2024-2025, with earlier years an uncalibrated extrapolation under higher caps; cap-lowering reforms overstate newly constrained households while cap raises rest on the observed 25%-cap distribution; annual amounts are upper bounds for spell-limited types. Adds a graceful-degradation test for zeroed combination shares and promotes the aggregate-caseload caveat to the changelog with pointers to policyengine-uk-data#452 and #450. Co-Authored-By: Claude Fable 5 --- .../uc-deductions-review-notes.changed.md | 1 + .../deductions/protected_floor.yaml | 2 +- .../latent_rate_distribution.yaml | 2 +- policyengine_uk/tests/test_uc_deductions.py | 24 +++++++++++++++++++ .../deductions/uc_deductions.py | 4 +++- uv.lock | 2 +- 6 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 changelog.d/uc-deductions-review-notes.changed.md diff --git a/changelog.d/uc-deductions-review-notes.changed.md b/changelog.d/uc-deductions-review-notes.changed.md new file mode 100644 index 000000000..f23ba9c5a --- /dev/null +++ b/changelog.d/uc-deductions-review-notes.changed.md @@ -0,0 +1 @@ +UC deductions documentation from review: aggregate reform estimates (poverty counts, costs of floor-style reforms) run roughly 40% low because the model's UC caseload falls short of administrative counts (policyengine-uk-data#452 tracks the calibration fix; #450 tracks moving deduction imputation to the dataset build) - per-household statistics are the validated, quotable layer. Also documented: the protected floor binds on all deduction categories including last resort and child maintenance; the rate distribution is national (regional factors scale incidence only) and validated for 2024-2025; cap-lowering reforms overstate newly constrained households while cap-raising reforms rest on the observed 25%-cap distribution; annual amounts are upper bounds for spell-limited deduction types. diff --git a/policyengine_uk/parameters/gov/dwp/universal_credit/deductions/protected_floor.yaml b/policyengine_uk/parameters/gov/dwp/universal_credit/deductions/protected_floor.yaml index 50fbf3aca..1fdf0ddd1 100644 --- a/policyengine_uk/parameters/gov/dwp/universal_credit/deductions/protected_floor.yaml +++ b/policyengine_uk/parameters/gov/dwp/universal_credit/deductions/protected_floor.yaml @@ -1,4 +1,4 @@ -description: Protected minimum floor in Universal Credit, as a fraction of the standard allowance. When above zero, combined deductions and benefit cap reductions are limited to (1 - floor) times the standard allowance, following JRF's proposal design (their worked example limits the reduction itself to 15% of the standard allowance). Zero - the value under current law, which has no such floor - leaves reductions unlimited. Setting 0.85 models JRF's proposal; this reform-lever parameter encodes no current-law value other than zero. The modeled floor binds on all deductions, including the above-cap excess that current law exempts from the deductions cap (last resort and child maintenance deductions) - JRF's briefing does not state whether their floor exempts those categories, and its worked example involves only cappable deductions and the benefit cap, so treating the floor as binding on everything is a modeling choice rather than a stated feature of the proposal. +description: Protected minimum floor in Universal Credit, as a fraction of the standard allowance. When above zero, combined deductions and benefit cap reductions are limited to (1 - floor) times the standard allowance, following JRF's proposal design (their worked example limits the reduction itself to 15% of the standard allowance). Zero - the value under current law, which has no such floor - leaves reductions unlimited. Setting 0.85 models JRF's proposal; this reform-lever parameter encodes no current-law value other than zero. The modeled floor binds on all deductions, including the last resort and child maintenance categories that current law allows above the cap; JRF's briefing does not state whether their design exempts those categories. The modeled floor binds on all deductions, including the above-cap excess that current law exempts from the deductions cap (last resort and child maintenance deductions) - JRF's briefing does not state whether their floor exempts those categories, and its worked example involves only cappable deductions and the benefit cap, so treating the floor as binding on everything is a modeling choice rather than a stated feature of the proposal. values: 2015-04-01: 0 metadata: diff --git a/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml b/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml index 02542f65d..74f2109df 100644 --- a/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml +++ b/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml @@ -1,4 +1,4 @@ -description: Distribution of latent Universal Credit deduction demand, as a share of all UC claims in each deduction-rate band (rates as a fraction of the standard allowance). Simple average of the observed March to May 2025 distribution (Table 2), the last full months under the 25% cap, rounded to three decimals; the cap parameter reproduces observed post-cap distributions when applied. Bands sum to the share of UC claims with any deduction (0.467). Observed 2025 and applied to all model years as a constancy assumption (published deductions statistics begin March 2025). Treating the at-25% pileup as latent demand of at least 25%, and observations above 25% as above-cap deductions (last resort and child maintenance categories) with a 30% modeled upper edge, are modeling assumptions, not source facts. Validated for 2024 (25% cap regime) and 2025 (15% cap regime) only - earlier years apply this 2025-shaped demand distribution under the higher caps then in force (40% to October 2019, 30% to April 2021), which the published statistics cannot check. Demand is held fixed when the cap changes, so reforms that lower the cap below 15% overstate the number of constrained households and hence the gains from raising it back, while reforms that raise the cap toward 25% sit inside the observed window and are on firmer ground. +description: Distribution of latent Universal Credit deduction demand, as a share of all UC claims in each deduction-rate band (rates as a fraction of the standard allowance). Simple average of the observed March to May 2025 distribution (Table 2), the last full months under the 25% cap, rounded to three decimals; the cap parameter reproduces observed post-cap distributions when applied. Bands sum to the share of UC claims with any deduction (0.467). Observed 2025 and applied to all model years as a constancy assumption (published deductions statistics begin March 2025). Treating the at-25% pileup as latent demand of at least 25%, and observations above 25% as above-cap deductions (last resort and child maintenance categories) with a 30% modeled upper edge, are modeling assumptions, not source facts. The rate distribution is national: regional factors scale incidence only, so regional composition differences (e.g. advance shares) are not modeled. Validated against 2024-2025 observations; earlier years inherit this distribution under their higher caps as an uncalibrated extrapolation. Because latent demand is held fixed under cap changes, reforms lowering the cap further overstate the number of newly constrained households and their gains; reforms raising the cap rest on the distribution observed under the higher 25% cap and are firmer. Validated for 2024 (25% cap regime) and 2025 (15% cap regime) only - earlier years apply this 2025-shaped demand distribution under the higher caps then in force (40% to October 2019, 30% to April 2021), which the published statistics cannot check. Demand is held fixed when the cap changes, so reforms that lower the cap below 15% overstate the number of constrained households and hence the gains from raising it back, while reforms that raise the cap toward 25% sit inside the observed window and are on firmer ground. UNDER_5: description: Share of UC households with deductions between 0% and 5% of the standard allowance. values: diff --git a/policyengine_uk/tests/test_uc_deductions.py b/policyengine_uk/tests/test_uc_deductions.py index ffab86dfe..7fbe024e0 100644 --- a/policyengine_uk/tests/test_uc_deductions.py +++ b/policyengine_uk/tests/test_uc_deductions.py @@ -215,6 +215,30 @@ def test_zeroing_every_type_share_leaves_a_valid_enum_array(self): assert isinstance(stored, EnumArray) assert reform.calculate("uc_deductions", YEAR)[0] == 0 + def test_zeroing_all_combination_shares_degrades_gracefully(self): + # With every combination share reformed to zero, the combination + # falls back to NONE and deductions compute to zero without error. + situation = make_situation( + uc_latent_deduction_rate={YEAR: 0.10}, + ) + prefix = "gov.simulation.uc_deductions.type_combination" + reform = Simulation( + situation=situation, + reform={ + f"{prefix}.{combo}": {"2025-01-01.2025-12-31": 0} + for combo in [ + "ADVANCE_ONLY", + "THIRD_PARTY_ONLY", + "GOVERNMENT_ONLY", + "ADVANCE_AND_GOVERNMENT", + "ADVANCE_AND_THIRD_PARTY", + "THIRD_PARTY_AND_GOVERNMENT", + "ALL_THREE", + ] + }, + ) + assert reform.calculate("uc_deductions", YEAR)[0] == 0 + def test_abolishing_all_types_removes_deductions(self): situation = make_situation( uc_latent_deduction_rate={YEAR: 0.25}, diff --git a/policyengine_uk/variables/gov/dwp/universal_credit/deductions/uc_deductions.py b/policyengine_uk/variables/gov/dwp/universal_credit/deductions/uc_deductions.py index 6425ae533..0ef750fec 100644 --- a/policyengine_uk/variables/gov/dwp/universal_credit/deductions/uc_deductions.py +++ b/policyengine_uk/variables/gov/dwp/universal_credit/deductions/uc_deductions.py @@ -11,7 +11,9 @@ class uc_deductions(Variable): "SI 2013/380). Per-household statistics are validated against the " "DWP deductions statistics; weighted aggregates are not, because " "they scale with the model's UC caseload, which falls short of the " - "administrative count." + "administrative count. Annualized from the surveyed monthly rate: " + "for deduction types with spells shorter than a year (e.g. advance " + "recovery), annual per-household amounts are upper bounds." ) entity = BenUnit definition_period = YEAR diff --git a/uv.lock b/uv.lock index b98afea1e..d94313409 100644 --- a/uv.lock +++ b/uv.lock @@ -1584,7 +1584,7 @@ wheels = [ [[package]] name = "policyengine-uk" -version = "2.90.1" +version = "2.90.2" source = { editable = "." } dependencies = [ { name = "microdf-python", marker = "python_full_version >= '3.11'" }, From 9627106a9ac86568d182689d293c82db5b6fa20a Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 13 Aug 2026 12:50:26 -0400 Subject: [PATCH 2/5] Fix YAML colon in latent distribution description Co-Authored-By: Claude Fable 5 --- .../gov/simulation/uc_deductions/latent_rate_distribution.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml b/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml index 74f2109df..56801b89a 100644 --- a/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml +++ b/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml @@ -1,4 +1,4 @@ -description: Distribution of latent Universal Credit deduction demand, as a share of all UC claims in each deduction-rate band (rates as a fraction of the standard allowance). Simple average of the observed March to May 2025 distribution (Table 2), the last full months under the 25% cap, rounded to three decimals; the cap parameter reproduces observed post-cap distributions when applied. Bands sum to the share of UC claims with any deduction (0.467). Observed 2025 and applied to all model years as a constancy assumption (published deductions statistics begin March 2025). Treating the at-25% pileup as latent demand of at least 25%, and observations above 25% as above-cap deductions (last resort and child maintenance categories) with a 30% modeled upper edge, are modeling assumptions, not source facts. The rate distribution is national: regional factors scale incidence only, so regional composition differences (e.g. advance shares) are not modeled. Validated against 2024-2025 observations; earlier years inherit this distribution under their higher caps as an uncalibrated extrapolation. Because latent demand is held fixed under cap changes, reforms lowering the cap further overstate the number of newly constrained households and their gains; reforms raising the cap rest on the distribution observed under the higher 25% cap and are firmer. Validated for 2024 (25% cap regime) and 2025 (15% cap regime) only - earlier years apply this 2025-shaped demand distribution under the higher caps then in force (40% to October 2019, 30% to April 2021), which the published statistics cannot check. Demand is held fixed when the cap changes, so reforms that lower the cap below 15% overstate the number of constrained households and hence the gains from raising it back, while reforms that raise the cap toward 25% sit inside the observed window and are on firmer ground. +description: Distribution of latent Universal Credit deduction demand, as a share of all UC claims in each deduction-rate band (rates as a fraction of the standard allowance). Simple average of the observed March to May 2025 distribution (Table 2), the last full months under the 25% cap, rounded to three decimals; the cap parameter reproduces observed post-cap distributions when applied. Bands sum to the share of UC claims with any deduction (0.467). Observed 2025 and applied to all model years as a constancy assumption (published deductions statistics begin March 2025). Treating the at-25% pileup as latent demand of at least 25%, and observations above 25% as above-cap deductions (last resort and child maintenance categories) with a 30% modeled upper edge, are modeling assumptions, not source facts. The rate distribution is national - regional factors scale incidence only, so regional composition differences (e.g. advance shares) are not modeled. Validated against 2024-2025 observations; earlier years inherit this distribution under their higher caps as an uncalibrated extrapolation. Because latent demand is held fixed under cap changes, reforms lowering the cap further overstate the number of newly constrained households and their gains; reforms raising the cap rest on the distribution observed under the higher 25% cap and are firmer. Validated for 2024 (25% cap regime) and 2025 (15% cap regime) only - earlier years apply this 2025-shaped demand distribution under the higher caps then in force (40% to October 2019, 30% to April 2021), which the published statistics cannot check. Demand is held fixed when the cap changes, so reforms that lower the cap below 15% overstate the number of constrained households and hence the gains from raising it back, while reforms that raise the cap toward 25% sit inside the observed window and are on firmer ground. UNDER_5: description: Share of UC households with deductions between 0% and 5% of the standard allowance. values: From b0826b739e183494c81ef5e21267cd0e2a828357 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 13 Aug 2026 22:33:08 -0400 Subject: [PATCH 3/5] Trim duplicated notes; correct validated-years wording Main already carried a fuller floor-binding note and a stronger zero-shares test; drop the redundant additions. State validation correctly: model years 2024-2025 are validated against the March 2025 to February 2026 observations (which begin March 2025). Co-Authored-By: Claude Fable 5 --- .../uc-deductions-review-notes.changed.md | 2 +- .../deductions/protected_floor.yaml | 2 +- .../latent_rate_distribution.yaml | 2 +- policyengine_uk/tests/test_uc_deductions.py | 24 ------------------- 4 files changed, 3 insertions(+), 27 deletions(-) diff --git a/changelog.d/uc-deductions-review-notes.changed.md b/changelog.d/uc-deductions-review-notes.changed.md index f23ba9c5a..50193d6c5 100644 --- a/changelog.d/uc-deductions-review-notes.changed.md +++ b/changelog.d/uc-deductions-review-notes.changed.md @@ -1 +1 @@ -UC deductions documentation from review: aggregate reform estimates (poverty counts, costs of floor-style reforms) run roughly 40% low because the model's UC caseload falls short of administrative counts (policyengine-uk-data#452 tracks the calibration fix; #450 tracks moving deduction imputation to the dataset build) - per-household statistics are the validated, quotable layer. Also documented: the protected floor binds on all deduction categories including last resort and child maintenance; the rate distribution is national (regional factors scale incidence only) and validated for 2024-2025; cap-lowering reforms overstate newly constrained households while cap-raising reforms rest on the observed 25%-cap distribution; annual amounts are upper bounds for spell-limited deduction types. +UC deductions documentation from review: aggregate reform estimates (poverty counts, costs of floor-style reforms) run roughly 40% low because the model's UC caseload falls short of administrative counts (policyengine-uk-data#452 tracks the calibration fix; #450 tracks moving deduction imputation to the dataset build) - per-household statistics are the validated, quotable layer. Also documented: the rate distribution is national and validated for model years 2024-2025 against the March 2025 to February 2026 observations; cap-lowering reforms overstate newly constrained households while cap-raising reforms rest on the observed 25%-cap distribution; annual amounts are upper bounds for spell-limited deduction types. diff --git a/policyengine_uk/parameters/gov/dwp/universal_credit/deductions/protected_floor.yaml b/policyengine_uk/parameters/gov/dwp/universal_credit/deductions/protected_floor.yaml index 1fdf0ddd1..50fbf3aca 100644 --- a/policyengine_uk/parameters/gov/dwp/universal_credit/deductions/protected_floor.yaml +++ b/policyengine_uk/parameters/gov/dwp/universal_credit/deductions/protected_floor.yaml @@ -1,4 +1,4 @@ -description: Protected minimum floor in Universal Credit, as a fraction of the standard allowance. When above zero, combined deductions and benefit cap reductions are limited to (1 - floor) times the standard allowance, following JRF's proposal design (their worked example limits the reduction itself to 15% of the standard allowance). Zero - the value under current law, which has no such floor - leaves reductions unlimited. Setting 0.85 models JRF's proposal; this reform-lever parameter encodes no current-law value other than zero. The modeled floor binds on all deductions, including the last resort and child maintenance categories that current law allows above the cap; JRF's briefing does not state whether their design exempts those categories. The modeled floor binds on all deductions, including the above-cap excess that current law exempts from the deductions cap (last resort and child maintenance deductions) - JRF's briefing does not state whether their floor exempts those categories, and its worked example involves only cappable deductions and the benefit cap, so treating the floor as binding on everything is a modeling choice rather than a stated feature of the proposal. +description: Protected minimum floor in Universal Credit, as a fraction of the standard allowance. When above zero, combined deductions and benefit cap reductions are limited to (1 - floor) times the standard allowance, following JRF's proposal design (their worked example limits the reduction itself to 15% of the standard allowance). Zero - the value under current law, which has no such floor - leaves reductions unlimited. Setting 0.85 models JRF's proposal; this reform-lever parameter encodes no current-law value other than zero. The modeled floor binds on all deductions, including the above-cap excess that current law exempts from the deductions cap (last resort and child maintenance deductions) - JRF's briefing does not state whether their floor exempts those categories, and its worked example involves only cappable deductions and the benefit cap, so treating the floor as binding on everything is a modeling choice rather than a stated feature of the proposal. values: 2015-04-01: 0 metadata: diff --git a/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml b/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml index 56801b89a..ac2e5564c 100644 --- a/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml +++ b/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml @@ -1,4 +1,4 @@ -description: Distribution of latent Universal Credit deduction demand, as a share of all UC claims in each deduction-rate band (rates as a fraction of the standard allowance). Simple average of the observed March to May 2025 distribution (Table 2), the last full months under the 25% cap, rounded to three decimals; the cap parameter reproduces observed post-cap distributions when applied. Bands sum to the share of UC claims with any deduction (0.467). Observed 2025 and applied to all model years as a constancy assumption (published deductions statistics begin March 2025). Treating the at-25% pileup as latent demand of at least 25%, and observations above 25% as above-cap deductions (last resort and child maintenance categories) with a 30% modeled upper edge, are modeling assumptions, not source facts. The rate distribution is national - regional factors scale incidence only, so regional composition differences (e.g. advance shares) are not modeled. Validated against 2024-2025 observations; earlier years inherit this distribution under their higher caps as an uncalibrated extrapolation. Because latent demand is held fixed under cap changes, reforms lowering the cap further overstate the number of newly constrained households and their gains; reforms raising the cap rest on the distribution observed under the higher 25% cap and are firmer. Validated for 2024 (25% cap regime) and 2025 (15% cap regime) only - earlier years apply this 2025-shaped demand distribution under the higher caps then in force (40% to October 2019, 30% to April 2021), which the published statistics cannot check. Demand is held fixed when the cap changes, so reforms that lower the cap below 15% overstate the number of constrained households and hence the gains from raising it back, while reforms that raise the cap toward 25% sit inside the observed window and are on firmer ground. +description: Distribution of latent Universal Credit deduction demand, as a share of all UC claims in each deduction-rate band (rates as a fraction of the standard allowance). Simple average of the observed March to May 2025 distribution (Table 2), the last full months under the 25% cap, rounded to three decimals; the cap parameter reproduces observed post-cap distributions when applied. Bands sum to the share of UC claims with any deduction (0.467). Observed 2025 and applied to all model years as a constancy assumption (published deductions statistics begin March 2025). Treating the at-25% pileup as latent demand of at least 25%, and observations above 25% as above-cap deductions (last resort and child maintenance categories) with a 30% modeled upper edge, are modeling assumptions, not source facts. The rate distribution is national - regional factors scale incidence only, so regional composition differences (e.g. advance shares) are not modeled. Model years 2024 and 2025 are validated against the March 2025 to February 2026 observations; earlier years inherit the distribution under their higher caps as an uncalibrated extrapolation. Because latent demand is held fixed under cap changes, reforms lowering the cap further overstate the number of newly constrained households and their gains; reforms raising the cap rest on the distribution observed under the 25% cap. Validated for 2024 (25% cap regime) and 2025 (15% cap regime) only - earlier years apply this 2025-shaped demand distribution under the higher caps then in force (40% to October 2019, 30% to April 2021), which the published statistics cannot check. Demand is held fixed when the cap changes, so reforms that lower the cap below 15% overstate the number of constrained households and hence the gains from raising it back, while reforms that raise the cap toward 25% sit inside the observed window and are on firmer ground. UNDER_5: description: Share of UC households with deductions between 0% and 5% of the standard allowance. values: diff --git a/policyengine_uk/tests/test_uc_deductions.py b/policyengine_uk/tests/test_uc_deductions.py index 7fbe024e0..ffab86dfe 100644 --- a/policyengine_uk/tests/test_uc_deductions.py +++ b/policyengine_uk/tests/test_uc_deductions.py @@ -215,30 +215,6 @@ def test_zeroing_every_type_share_leaves_a_valid_enum_array(self): assert isinstance(stored, EnumArray) assert reform.calculate("uc_deductions", YEAR)[0] == 0 - def test_zeroing_all_combination_shares_degrades_gracefully(self): - # With every combination share reformed to zero, the combination - # falls back to NONE and deductions compute to zero without error. - situation = make_situation( - uc_latent_deduction_rate={YEAR: 0.10}, - ) - prefix = "gov.simulation.uc_deductions.type_combination" - reform = Simulation( - situation=situation, - reform={ - f"{prefix}.{combo}": {"2025-01-01.2025-12-31": 0} - for combo in [ - "ADVANCE_ONLY", - "THIRD_PARTY_ONLY", - "GOVERNMENT_ONLY", - "ADVANCE_AND_GOVERNMENT", - "ADVANCE_AND_THIRD_PARTY", - "THIRD_PARTY_AND_GOVERNMENT", - "ALL_THREE", - ] - }, - ) - assert reform.calculate("uc_deductions", YEAR)[0] == 0 - def test_abolishing_all_types_removes_deductions(self): situation = make_situation( uc_latent_deduction_rate={YEAR: 0.25}, From e2dd16ee4e2772ddb53ccfe60c7142bc778649fe Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 13 Aug 2026 22:36:01 -0400 Subject: [PATCH 4/5] Keep only the additions main lacks Main gained fuller validated-years and bias-direction notes in parallel; this branch now adds only the national-composition sentence, the annualization upper-bound note, and the promoted changelog caveat. Co-Authored-By: Claude Fable 5 --- changelog.d/uc-deductions-review-notes.changed.md | 2 +- .../gov/simulation/uc_deductions/latent_rate_distribution.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog.d/uc-deductions-review-notes.changed.md b/changelog.d/uc-deductions-review-notes.changed.md index 50193d6c5..fa49dd590 100644 --- a/changelog.d/uc-deductions-review-notes.changed.md +++ b/changelog.d/uc-deductions-review-notes.changed.md @@ -1 +1 @@ -UC deductions documentation from review: aggregate reform estimates (poverty counts, costs of floor-style reforms) run roughly 40% low because the model's UC caseload falls short of administrative counts (policyengine-uk-data#452 tracks the calibration fix; #450 tracks moving deduction imputation to the dataset build) - per-household statistics are the validated, quotable layer. Also documented: the rate distribution is national and validated for model years 2024-2025 against the March 2025 to February 2026 observations; cap-lowering reforms overstate newly constrained households while cap-raising reforms rest on the observed 25%-cap distribution; annual amounts are upper bounds for spell-limited deduction types. +UC deductions documentation: promote the aggregate caveat - reform aggregates (poverty counts, floor-reform costs) run roughly 40% low because the model's UC caseload falls short of administrative counts (policyengine-uk-data#452 tracks the calibration fix; #450 tracks moving deduction imputation to the dataset build); per-household statistics are the validated, quotable layer. Also note the rate distribution is national (regional factors scale incidence only, so regional composition differences are not modeled) and that annual per-household amounts are upper bounds for spell-limited deduction types. diff --git a/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml b/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml index ac2e5564c..150c4cec5 100644 --- a/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml +++ b/policyengine_uk/parameters/gov/simulation/uc_deductions/latent_rate_distribution.yaml @@ -1,4 +1,4 @@ -description: Distribution of latent Universal Credit deduction demand, as a share of all UC claims in each deduction-rate band (rates as a fraction of the standard allowance). Simple average of the observed March to May 2025 distribution (Table 2), the last full months under the 25% cap, rounded to three decimals; the cap parameter reproduces observed post-cap distributions when applied. Bands sum to the share of UC claims with any deduction (0.467). Observed 2025 and applied to all model years as a constancy assumption (published deductions statistics begin March 2025). Treating the at-25% pileup as latent demand of at least 25%, and observations above 25% as above-cap deductions (last resort and child maintenance categories) with a 30% modeled upper edge, are modeling assumptions, not source facts. The rate distribution is national - regional factors scale incidence only, so regional composition differences (e.g. advance shares) are not modeled. Model years 2024 and 2025 are validated against the March 2025 to February 2026 observations; earlier years inherit the distribution under their higher caps as an uncalibrated extrapolation. Because latent demand is held fixed under cap changes, reforms lowering the cap further overstate the number of newly constrained households and their gains; reforms raising the cap rest on the distribution observed under the 25% cap. Validated for 2024 (25% cap regime) and 2025 (15% cap regime) only - earlier years apply this 2025-shaped demand distribution under the higher caps then in force (40% to October 2019, 30% to April 2021), which the published statistics cannot check. Demand is held fixed when the cap changes, so reforms that lower the cap below 15% overstate the number of constrained households and hence the gains from raising it back, while reforms that raise the cap toward 25% sit inside the observed window and are on firmer ground. +description: Distribution of latent Universal Credit deduction demand, as a share of all UC claims in each deduction-rate band (rates as a fraction of the standard allowance). Simple average of the observed March to May 2025 distribution (Table 2), the last full months under the 25% cap, rounded to three decimals; the cap parameter reproduces observed post-cap distributions when applied. Bands sum to the share of UC claims with any deduction (0.467). Observed 2025 and applied to all model years as a constancy assumption (published deductions statistics begin March 2025). Treating the at-25% pileup as latent demand of at least 25%, and observations above 25% as above-cap deductions (last resort and child maintenance categories) with a 30% modeled upper edge, are modeling assumptions, not source facts. Validated for 2024 (25% cap regime) and 2025 (15% cap regime) only - earlier years apply this 2025-shaped demand distribution under the higher caps then in force (40% to October 2019, 30% to April 2021), which the published statistics cannot check. Demand is held fixed when the cap changes, so reforms that lower the cap below 15% overstate the number of constrained households and hence the gains from raising it back, while reforms that raise the cap toward 25% sit inside the observed window and are on firmer ground. The rate distribution is national - regional factors scale incidence only, so regional composition differences (e.g. advance shares) are not modeled. UNDER_5: description: Share of UC households with deductions between 0% and 5% of the standard allowance. values: From 7ebf97e35f2ec438e5821213dbc97aa3357866d5 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 13 Aug 2026 22:36:14 -0400 Subject: [PATCH 5/5] Restore untouched lockfile Co-Authored-By: Claude Fable 5 --- uv.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uv.lock b/uv.lock index d94313409..b98afea1e 100644 --- a/uv.lock +++ b/uv.lock @@ -1584,7 +1584,7 @@ wheels = [ [[package]] name = "policyengine-uk" -version = "2.90.2" +version = "2.90.1" source = { editable = "." } dependencies = [ { name = "microdf-python", marker = "python_full_version >= '3.11'" },