Skip to content

Use April dates for uprating indices to align with UK fiscal year #1437

@MaxGhenis

Description

@MaxGhenis

Context

UK benefits and tax thresholds are typically uprated in April (fiscal year start), based on September CPI of the prior year. However, the current uprating system uses January 1 dates throughout.

Current Implementation

  1. OBR indices stored at January 1 dates (annual calendar year forecasts) in yoy_growth.yaml
  2. create_economic_assumption_indices.py generates indices at January 1 dates (line 53: f"{year}-01-01")
  3. uprate_parameters in policyengine-core adds new parameter values at the same dates as the uprating index
  4. convert_to_fiscal_year_parameters post-processes by sampling at April 30 and setting that as the year value

This works for annual simulations but has limitations:

  • Intra-year queries don't reflect the actual April uprating date
  • The fiscal year conversion is a workaround rather than correct modeling
  • Parameters show January 1 dates in values_list even though actual policy changes April 6

Ideal Approach

  1. Store/generate uprating indices at April 1 or April 6 dates (representing fiscal years)
  2. Uprating would then naturally produce values at April dates
  3. Remove the fiscal year conversion post-processing step

This would:

  • Be more accurate (uprating happens at the correct date)
  • Eliminate the convert_to_fiscal_year_parameters workaround
  • Handle mid-year policy changes correctly by default
  • Allow specific date queries to work properly (e.g., param("2026-03-15") vs param("2026-05-15"))

Implementation Notes

Would require changes to:

  1. policyengine_uk/parameters/gov/economic_assumptions/yoy_growth.yaml - change dates from January 1 to April 1/6
  2. policyengine_uk/parameters/gov/economic_assumptions/create_economic_assumption_indices.py - generate at April dates
  3. Potentially policyengine-core's uprate_parameters if any assumptions about January dates
  4. Remove or modify convert_to_fiscal_year_parameters in utils/parameters.py

Priority

Low - current approach works correctly for annual simulations after PR #1435 extended the fiscal year conversion range. This is an enhancement for more accurate intra-year modeling.

Related

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