Skip to content

Commit aa4c486

Browse files
Restrict legacy benefits to reported claimants, add parameter impact tests
- Legacy benefits (HB, CTC, WTC, IS) now restricted to reported claimants only — no new entrants via ENR paths, consistent with current policy that new entitlements go through UC - Remove take_up.{housing_benefit,child_tax_credit,working_tax_credit, income_support} from TakeUpRates (unused after policy change) - Remove housing_cost_contribution from UC params and all YAMLs (no non-dependant deduction model) - Add 44 parameter impact tests for benefits (all UC, CB, SP, PC, HB, TC, benefit cap, SCP, take-up and UC migration params) - Add 25 parameter impact tests for income tax and NI (all IT and NI params) - Fix test scenarios: correct income levels for HICBC, HB allowances, work allowance, dividend allowance and savings starter rate band - Zero compiler warnings
1 parent e2e3802 commit aa4c486

11 files changed

Lines changed: 1132 additions & 37 deletions

File tree

parameters/2023_24.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ universal_credit:
5151
work_allowance_higher: 631.0
5252
work_allowance_lower: 379.0
5353
child_limit: 2
54-
housing_cost_contribution: 85.73
5554

5655
child_benefit:
5756
# SI 2023/237 — Child Benefit (Rates) Regs as amended

parameters/2024_25.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ universal_credit:
5252
work_allowance_higher: 673.0
5353
work_allowance_lower: 404.0
5454
child_limit: 2
55-
housing_cost_contribution: 91.47
5655

5756
child_benefit:
5857
# SI 2024/247 — Child Benefit (Rates) Regs as amended

parameters/2025_26.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ universal_credit:
8585
work_allowance_lower: 411.0 # With housing costs (monthly)
8686
child_limit: 2
8787
# Housing cost contributions: Sch.4 para.14(1) — £93.02/month
88-
housing_cost_contribution: 93.02
8988

9089
child_benefit:
9190
# Child Benefit (Rates) Regs 2006 (SI 2006/965) reg.2

parameters/2026_27.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ universal_credit:
5454
work_allowance_higher: 707.0
5555
work_allowance_lower: 425.0
5656
child_limit: 2
57-
housing_cost_contribution: 96.18
5857

5958
child_benefit:
6059
eldest_weekly: 26.94 # Uprated by CPI

parameters/2027_28.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ universal_credit:
5353
work_allowance_higher: 721.0
5454
work_allowance_lower: 434.0
5555
child_limit: 2
56-
housing_cost_contribution: 98.12
5756

5857
child_benefit:
5958
eldest_weekly: 27.48

parameters/2028_29.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ universal_credit:
5454
work_allowance_higher: 735.0
5555
work_allowance_lower: 443.0
5656
child_limit: 2
57-
housing_cost_contribution: 100.08
5857

5958
child_benefit:
6059
eldest_weekly: 28.02

parameters/2029_30.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ universal_credit:
5353
work_allowance_higher: 750.0
5454
work_allowance_lower: 452.0
5555
child_limit: 2
56-
housing_cost_contribution: 102.12
5756

5857
child_benefit:
5958
eldest_weekly: 28.58

src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -635,8 +635,8 @@ mod obr_validation {
635635
let cb = weighted_bu_sum!(child_benefit);
636636
let sp = weighted_bu_sum!(state_pension);
637637
let pc = weighted_bu_sum!(pension_credit);
638-
let hb = weighted_bu_sum!(housing_benefit);
639-
let tc = weighted_bu_sum!(child_tax_credit) + weighted_bu_sum!(working_tax_credit);
638+
let _hb = weighted_bu_sum!(housing_benefit);
639+
let _tc = weighted_bu_sum!(child_tax_credit) + weighted_bu_sum!(working_tax_credit);
640640
// Caseloads
641641
let it_payers = person_caseload!(income_tax);
642642
let uc_claimants = bu_caseload!(universal_credit);

src/parameters/mod.rs

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,27 +25,26 @@ pub struct Parameters {
2525
pub tax_credits: Option<TaxCreditsParams>,
2626
#[serde(default)]
2727
pub scottish_child_payment: Option<ScottishChildPaymentParams>,
28-
pub growth_factors: GrowthFactors,
2928
#[serde(default = "TakeUpRates::default")]
3029
pub take_up: TakeUpRates,
3130
#[serde(default = "UcMigrationRates::default")]
3231
pub uc_migration: UcMigrationRates,
3332
}
3433

3534
/// Take-up rates for means-tested benefits.
36-
/// Each rate is the fraction of eligible families that actually claim.
35+
///
36+
/// Legacy benefits (HB, CTC, WTC, IS) are received only by reported claimants —
37+
/// no new entrants to the legacy system under current policy. Their take-up
38+
/// rates are therefore not modelled here.
39+
///
3740
/// Source: DWP Income-Related Benefits Estimates of Take-Up.
3841
#[derive(Debug, Clone, Serialize, Deserialize)]
3942
pub struct TakeUpRates {
4043
pub universal_credit: f64,
4144
pub child_benefit: f64,
4245
pub pension_credit: f64,
43-
pub housing_benefit: f64,
44-
pub child_tax_credit: f64,
45-
pub working_tax_credit: f64,
46-
pub income_support: f64,
4746
/// Take-up rate for genuinely new entrants (not ENRs) when a reform expands
48-
/// eligibility. Models partial behavioural response to new entitlement.
47+
/// UC eligibility. Models partial behavioural response to new entitlement.
4948
#[serde(default = "TakeUpRates::default_new_entrant_rate")]
5049
pub new_entrant_rate: f64,
5150
}
@@ -56,10 +55,6 @@ impl Default for TakeUpRates {
5655
universal_credit: 0.80,
5756
child_benefit: 0.93,
5857
pension_credit: 0.63,
59-
housing_benefit: 0.80,
60-
child_tax_credit: 0.83,
61-
working_tax_credit: 0.67,
62-
income_support: 0.85,
6358
new_entrant_rate: 0.3,
6459
}
6560
}
@@ -172,7 +167,6 @@ pub struct UniversalCreditParams {
172167
pub work_allowance_higher: f64,
173168
pub work_allowance_lower: f64,
174169
pub child_limit: usize,
175-
pub housing_cost_contribution: f64,
176170
}
177171

178172
#[derive(Debug, Clone, Serialize, Deserialize)]
@@ -250,13 +244,6 @@ pub struct ScottishChildPaymentParams {
250244
pub max_age: f64,
251245
}
252246

253-
#[derive(Debug, Clone, Serialize, Deserialize)]
254-
pub struct GrowthFactors {
255-
pub cpi_rate: f64,
256-
pub gdp_deflator: f64,
257-
pub earnings_growth: f64,
258-
}
259-
260247
/// Convert a fiscal year start year (e.g. 2029) to the YAML filename format
261248
fn fiscal_year_filename(year: u32) -> String {
262249
format!("{}_{:02}.yaml", year, (year + 1) % 100)

0 commit comments

Comments
 (0)