Skip to content

UC rebalancing reforms don't take effect unless the Scenario applies before the data load #2252

Closed

Description

@MaxGhenis

What's wrong

Simulation.__init__ runs the Universal Credit rebalancing modifier (scenarios/uc_reform.py) after building the simulation. A Scenario whose parameter_changes apply after the data load (the default) is applied later, so the modifier has already set uc_LCWRA_element from the baseline parameters. As a result, reforms of these parameters silently do nothing:

  • gov.dwp.universal_credit.rebalancing.new_claimant_health_element;
  • gov.dwp.universal_credit.rebalancing.active;
  • any parameter the protected amount reads.

Reproducer (main e89b8abc)

There are 40 identical single LCWRA claimants in one situation; on main, the draw gives 5 of them the new-claimant rate. The reform sets the new-claimant rate to £250 from 2026-27 ({"2026": 250}).

Scenario 2026-27 monthly LCWRA element
applied_before_data_load=False (default) 5 × £217.26, 35 × £426.51 (the reform has no effect)
applied_before_data_load=True 5 × £250.00, 35 × £426.51

The documentation example in docs/book/policy/uc-rebalancing.md ("Changing the health element amount for new claimants") also keys the change "2026-01-01". A single-day key never reaches the 30 April fiscal-year sampling date, so the example does nothing in either mode. #2242 fixes the same key problem in the standard allowance example.

Expected

A reform of a rebalancing parameter should change the health element whichever way the Scenario is applied. One option is to compute the element in the uc_LCWRA_element formula, from the claimant's status (#2250) and the parameters, rather than overwriting it with set_input at build time.

Found while reviving the UK leg of PolicyBench, alongside #2247 and #2250.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions