Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Child poverty validation: removing the two-child limit (2029-30)

This page compares PolicyEngine UK’s estimate of the child-poverty impact and fiscal cost of removing the Universal Credit two-child limit against the published estimates from the Department for Work and Pensions, the Office for Budget Responsibility and the Resolution Foundation. Budget 2025 announced the removal with effect from 6 April 2026, which the gov.dwp.universal_credit.elements.child.limit.child_count parameter encodes (.inf from 2026-04-06).

Tracks #1398.

Results

SourceChildren lifted from relative low income (2029-30)Treasury cost (2029-30)
DWP poverty impact assessment (children); Budget 2025, Table 1.2 (cost, OBR-certified)450,000 (AHC); 300,000 (BHC)£3.1 bn
Resolution Foundation No half measures480,000 (AHC)£3.5 bn
PolicyEngine UK, Microcosm UK 2024-25 (AHC)~548,000£3.21 bn
PolicyEngine UK, Microcosm UK 2024-25 (BHC)~460,000(same)

All the figures are relative low income: below 60% of the contemporary median. The PolicyEngine rows count HBAI dependent children (is_hbai_dependent_child), as DWP does, and were run on 23 October 2026 on policyengine-uk 2.148.3 (main at c65bced64) with the certified Microcosm UK 2024-25 national release (microcosm-uk-2024-25-national-20261019T083323Z-6cba5d71, SHA-256 810ba980…). On that run PolicyEngine’s headcounts are above DWP’s and the Resolution Foundation’s, and its cost sits between the Budget 2025 and Resolution Foundation figures.

On absolute low income the same run lifts ~549,000 children after housing costs and ~325,000 before, against DWP’s 250,000 on both measures (Tables 3 and 4). These are not like for like: PolicyEngine’s absolute line is 60% of the FYE 2025 median held constant in real terms, the reference year HBAI adopted in March 2026, while DWP’s note predates that change and cites the FYE 2024 HBAI methodology, whose line is 60% of the FYE 2011 median.

Earlier versions of this page reported ~463,000 (AHC) and ~336,000 (BHC) children and £3.26 bn on an earlier Microcosm UK release (SHA-256 aa31bdf6…, policyengine-uk 2.123.7), and ~501,000, ~415,000 and £3.40 bn on the Enhanced FRS 2022-23 in May 2026. The snippet those versions showed computed only the after-housing-costs figure, using in_poverty_ahc (absolute low income) and counting children with is_child (everyone under 18), so at least those figures are not comparable with the relative benchmarks above; the code for the before-housing-costs figures was not shown.

How the estimate was produced

from policyengine_uk import Microsimulation

# Local path to the Microcosm UK 2024-25 national release file.
DATASET = "microcosm_uk_2024_25.h5"
YEAR = 2029  # fiscal year 2029-30

# Current law baseline (TCL removed from 2026-04-06 per Budget 2025)
sim_baseline = Microsimulation(dataset=DATASET)

# Counterfactual where the TCL is held in place at 2 children
sim_counter = Microsimulation(
    dataset=DATASET,
    reform={
        "gov.dwp.universal_credit.elements.child.limit.child_count": {
            f"{YEAR}-01-01": 2,
        },
    },
)

# HBAI dependent children, as in DWP's statistics.
is_child = sim_baseline.calculate("is_hbai_dependent_child", YEAR)

for measure in ["in_relative_poverty_ahc", "in_relative_poverty_bhc"]:
    baseline = sim_baseline.calculate(measure, YEAR, map_to="person")
    counter = sim_counter.calculate(measure, YEAR, map_to="person")
    lifted = ((counter.astype(float) - baseline.astype(float)) * is_child).sum()
    print(f"{measure} children lifted: {lifted / 1e3:.0f}k")

fiscal_cost = (
    sim_counter.calculate("gov_balance", YEAR).sum()
    - sim_baseline.calculate("gov_balance", YEAR).sum()
)
print(f"Treasury cost: £{fiscal_cost / 1e9:.2f}bn")

This is a reverse comparison: PolicyEngine’s baseline already includes the TCL removal (the parameter flips to infinity from 2026-04-06), so the counterfactual re-imposes the limit at 2 children to compute the 2029-30 effect. The signs cancel out: the children-lifted figure is positive (baseline has fewer in poverty than counterfactual) and the Treasury cost is positive (the baseline pays more Universal Credit, so its gov_balance, tax less spending, is lower than the counterfactual’s).

Why the estimates differ

Three plausible drivers of the remaining differences:

  1. Nowcasting methodology. RF projects incomes with its own nowcast, with private rents rising in line with average earnings after a 12-month lag and its own after-housing-costs deflator; DWP uses its static Policy Simulation Model on the FRS for FYE 2022 to 2024 with its caseload forecasts. See the PolicyEngine vs RF comparison and the RF methodology detail for where PolicyEngine’s nowcasting differs from RF’s.

  2. Take-up assumptions. PolicyEngine decides Universal Credit claims with flags set in the data, which do not respond to the reform: a family claims if would_claim_uc is true, or if DWP has moved it off a closed legacy benefit it reports (tax credits, Income Support or income-based Jobseeker’s Allowance; legacy_benefits_closed, which leaves out families sent to Pension Credit instead) and would_claim_uc_at_legacy_closure is true. The data set would_claim_uc for every family that reports Universal Credit and draw it at a residual rate for the rest, so newly entitled families claim at that residual rate unless they reported a closed legacy benefit. A source that assumes lower take-up among newly entitled families would show a smaller headcount and cost.

  3. Data and calibration vintage. The DWP and OBR estimates were finalised against the OBR’s November 2025 forecast, and RF’s (30 October 2025) against the OBR’s March 2025 earnings forecast and the Bank of England’s August 2025 inflation forecast; PolicyEngine’s parameters tick over with each EFO release. The Microcosm release is built from FRS 2024-25, with take-up anchored on reported receipt.

How to keep this validation alive

References