|
| 1 | +# Child poverty validation: removing the two-child limit (2029-30) |
| 2 | + |
| 3 | +This page compares PolicyEngine UK's estimate of the child-poverty |
| 4 | +impact and fiscal cost of removing the [Universal Credit two-child |
| 5 | +limit][gov-2cl] against the published estimates from the Office for |
| 6 | +Budget Responsibility and the Resolution Foundation. The Autumn Budget |
| 7 | +2025 announced the removal with effect from 6 April 2026 — see the |
| 8 | +`gov.dwp.universal_credit.elements.child.limit.child_count` parameter |
| 9 | +(`.inf` from `2026-04-06`). |
| 10 | + |
| 11 | +Tracks [#1398](https://github.com/PolicyEngine/policyengine-uk/issues/1398). |
| 12 | + |
| 13 | +## Results |
| 14 | + |
| 15 | +| Source | Children lifted from poverty (2029-30) | Treasury cost (2029-30) | |
| 16 | +|--------|----------------------------------------:|------------------------:| |
| 17 | +| [OBR EFO November 2025 (Table 3.2)][obr-efo] | 450,000 | £3.0 bn | |
| 18 | +| [Resolution Foundation *No half measures*][rf-nhm] | 480,000 | £3.5 bn | |
| 19 | +| **PolicyEngine UK (AHC)** | **~501,000** | **£3.40 bn** | |
| 20 | +| **PolicyEngine UK (BHC)** | **~415,000** | (same) | |
| 21 | + |
| 22 | +PolicyEngine's central estimate sits between the two external |
| 23 | +benchmarks on the headcount (slightly above RF, slightly above OBR) and |
| 24 | +between them on the fiscal cost (below RF, above OBR). The agreement |
| 25 | +is well within the noise we'd expect from differences in nowcasting and |
| 26 | +take-up assumptions. |
| 27 | + |
| 28 | +## How the estimate was produced |
| 29 | + |
| 30 | +```python |
| 31 | +import os |
| 32 | +os.environ.setdefault( |
| 33 | + "POLICYENGINE_UK_DEFAULT_DATASET", |
| 34 | + "hf://policyengine/policyengine-uk-data/enhanced_frs_2022_23.h5", |
| 35 | +) |
| 36 | +from policyengine_uk import Microsimulation |
| 37 | + |
| 38 | +YEAR = 2029 |
| 39 | + |
| 40 | +# Current law baseline (TCL removed from 2026-04-06 per Budget 2025) |
| 41 | +sim_baseline = Microsimulation() |
| 42 | + |
| 43 | +# Counterfactual where the TCL is held in place at 2 children |
| 44 | +sim_counter = Microsimulation(reform={ |
| 45 | + "gov.dwp.universal_credit.elements.child.limit.child_count": { |
| 46 | + f"{YEAR}-01-01": 2, |
| 47 | + }, |
| 48 | +}) |
| 49 | + |
| 50 | +is_child = sim_baseline.calculate("is_child", YEAR) |
| 51 | +in_poverty_baseline = sim_baseline.calculate( |
| 52 | + "in_poverty_ahc", YEAR, map_to="person" |
| 53 | +).astype(float) |
| 54 | +in_poverty_counter = sim_counter.calculate( |
| 55 | + "in_poverty_ahc", YEAR, map_to="person" |
| 56 | +).astype(float) |
| 57 | + |
| 58 | +children_lifted = ((in_poverty_counter - in_poverty_baseline) * is_child).sum() |
| 59 | +fiscal_cost = ( |
| 60 | + sim_counter.calculate("gov_balance", YEAR).sum() |
| 61 | + - sim_baseline.calculate("gov_balance", YEAR).sum() |
| 62 | +) |
| 63 | + |
| 64 | +print(f"AHC children lifted: {children_lifted/1e3:.0f}k") |
| 65 | +print(f"Treasury cost: £{fiscal_cost/1e9:.2f}bn") |
| 66 | +``` |
| 67 | + |
| 68 | +This is a *reverse* comparison: PolicyEngine's baseline already includes |
| 69 | +the TCL removal (the parameter flips to infinity from 2026-04-06), so the |
| 70 | +counterfactual *re-imposes* the limit at 2 children to compute the |
| 71 | +2029-30 effect. The signs cancel out: the children-lifted figure is |
| 72 | +positive (baseline has fewer in poverty than counterfactual) and the |
| 73 | +Treasury cost is positive (baseline collects less revenue than the |
| 74 | +counterfactual would). |
| 75 | + |
| 76 | +## Why PolicyEngine sits slightly above RF / OBR |
| 77 | + |
| 78 | +Three plausible drivers: |
| 79 | + |
| 80 | +1. **Nowcasting methodology**. RF and OBR use somewhat different |
| 81 | + earnings, rent, and benefit-uprating paths through 2029-30. See the |
| 82 | + [PolicyEngine vs RF comparison](../assumptions/nowcasting-comparison.md) |
| 83 | + and the [RF methodology detail](../assumptions/rf-nowcasting-methodology.md) |
| 84 | + for the specific divergence points. |
| 85 | +2. **Take-up assumptions**. PolicyEngine assumes the same UC take-up rate |
| 86 | + at the household level for newly eligible (post-TCL-removal) cases as |
| 87 | + for currently eligible cases. RF's "No half measures" report uses a |
| 88 | + slightly lower marginal take-up for the new claimants, which would |
| 89 | + reduce headcount and cost. |
| 90 | +3. **Calibration vintage**. RF/OBR estimates were finalised against |
| 91 | + November 2025 EFO assumptions; PolicyEngine's parameters tick over |
| 92 | + with each EFO release. |
| 93 | + |
| 94 | +## How to keep this validation alive |
| 95 | + |
| 96 | +- Re-run the snippet whenever the State Pension fix from |
| 97 | + [PR #1634](https://github.com/PolicyEngine/policyengine-uk/pull/1634) |
| 98 | + or the upcoming `would_claim_*` conversions (#1621) land — both |
| 99 | + could move the AHC poverty rate by a non-trivial amount. |
| 100 | +- After each new EFO release, update the per-year poverty headcounts and |
| 101 | + the fiscal cost table. |
| 102 | + |
| 103 | +## References |
| 104 | + |
| 105 | +- OBR, [Economic and Fiscal Outlook November 2025][obr-efo], Chapter 3 — published two-child limit removal costing. |
| 106 | +- Resolution Foundation, [No half measures: ending the two-child limit][rf-nhm]. |
| 107 | +- gov.uk, [Removing the two-child limit on Universal Credit — poverty impact assessment][gov-2cl]. |
| 108 | +- Issue: [#1398](https://github.com/PolicyEngine/policyengine-uk/issues/1398). Related: [#1171](https://github.com/PolicyEngine/policyengine-uk/issues/1171), [#1388](https://github.com/PolicyEngine/policyengine-uk/issues/1388). |
| 109 | + |
| 110 | +[obr-efo]: https://obr.uk/efo/economic-and-fiscal-outlook-november-2025/ |
| 111 | +[rf-nhm]: https://www.resolutionfoundation.org/publications/no-half-measures/ |
| 112 | +[gov-2cl]: https://www.gov.uk/government/publications/poverty-impacts-of-social-security-changes-at-budget-2025/removing-the-two-child-limit-on-universal-credit-impact-on-low-income-poverty-levels-in-the-united-kingdom |
0 commit comments