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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions