Skip to content

Share one helper for the HHS state median income LIHEAP limit #10005

Closed

Description

@hua7450

Problem

Four state LIHEAP income-limit formulas compute the same HHS state median income (SMI) limit, each with its own copy of the household-size adjustment and rounding:

State File Status Size factor
Mississippi policyengine_us/variables/gov/states/ms/mdhs/liheap/ms_liheap_income_limit.py on main recomputed from gov.hhs.smi.household_size_adjustment
Ohio policyengine_us/variables/gov/states/oh/odjfs/liheap/eligibility/oh_liheap_income_limit.py #9975 same lines as Mississippi, plus a one-year SMI lag
Georgia policyengine_us/variables/gov/states/ga/dfcs/liheap/eligibility/ga_liheap_income_limit.py #9968 smi() divided by the four-person SMI
Florida policyengine_us/variables/gov/states/fl/commerce/liheap/eligibility/fl_liheap_income_limit.py #9969 smi() divided by the four-person SMI, behind truncates_smi_limit

Each formula floors the state's rate (60%) times the four-person SMI, multiplies by the size factor, and floors again. That order reproduces the published limits: all 20 Mississippi rows, Georgia's 16 FY2026 limits, Florida's FY2026 sizes 1-12, and every HHS FFY2025 and FFY2026 Ohio amount. The size factor also repeats the calculation inside smi() in policyengine_us/variables/gov/hhs/hhs_smi.py.

HHS describes the calculation in the footnote to its SMI table: "60 percent of each state's estimated median income for a four-person family is multiplied by the following percentages to adjust for household size for LIHEAP" (LIHEAP IM 2025-02, Attachment 4). The footnote does not state a rounding order; the floor-then-floor order is a reconciliation against the printed tables.

Proposed change

  • Add a size-factor helper to hhs_smi.py, for example smi_size_factor(unit_size, period, parameters), and have smi() call it.
  • Add a helper that returns the LIHEAP SMI limit: floor the rate times the four-person SMI, multiply by the size factor, floor again. Let the caller pass the date for the SMI lookup, since Ohio reads the prior year's SMI from the 2026-27 season (smi_year_lag).
  • Move Mississippi, Ohio, Georgia and Florida onto the helper. Florida's FY2025 branch, which rounds the unfloored amount, keeps its own path.
  • co_ccap_smi.py also reads household_size_adjustment directly and can use the size-factor helper.

Acceptance criteria

  • Every existing test expectation in the four programs stays the same.
  • No new parameters.
  • Ohio, Georgia and Florida move onto the helper after their PRs merge.

Activity

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