diff --git a/policyengine_us/parameters/gov/hhs/smi/amount.yaml b/policyengine_us/parameters/gov/hhs/smi/amount.yaml index 6cd104004a4..0da50afd551 100644 --- a/policyengine_us/parameters/gov/hhs/smi/amount.yaml +++ b/policyengine_us/parameters/gov/hhs/smi/amount.yaml @@ -4,210 +4,262 @@ AK: 2021-10-01: 104_070 2022-10-01: 109_805 2023-10-01: 112_227 + 2024-10-01: 121_634 AL: 2021-10-01: 80_762 2022-10-01: 83_791 2023-10-01: 88_407 + 2024-10-01: 95_455 AR: 2021-10-01: 71_485 2022-10-01: 74_456 2023-10-01: 78_985 + 2024-10-01: 86_577 AZ: 2021-10-01: 82_227 2022-10-01: 86_079 2023-10-01: 92_454 + 2024-10-01: 101_783 CA: 2021-10-01: 98_644 2022-10-01: 103_856 2023-10-01: 110_879 + 2024-10-01: 121_926 CO: 2021-10-01: 106_120 2022-10-01: 110_786 2023-10-01: 118_538 + 2024-10-01: 130_104 CT: 2021-10-01: 125_087 2022-10-01: 127_443 2023-10-01: 133_184 + 2024-10-01: 145_853 DC: 2021-10-01: 137_563 2022-10-01: 152_043 2023-10-01: 159_662 + 2024-10-01: 184_525 DE: 2021-10-01: 103_900 2022-10-01: 105_076 2023-10-01: 111_871 + 2024-10-01: 120_963 FL: 2021-10-01: 81_077 2022-10-01: 83_452 2023-10-01: 88_895 + 2024-10-01: 98_038 GA: 2021-10-01: 84_851 2022-10-01: 89_932 2023-10-01: 95_238 + 2024-10-01: 105_893 HI: 2021-10-01: 108_498 2022-10-01: 112_242 2023-10-01: 119_285 + 2024-10-01: 129_108 IA: 2021-10-01: 94_221 2022-10-01: 97_935 2023-10-01: 104_510 + 2024-10-01: 113_549 ID: 2021-10-01: 79_820 2022-10-01: 81_293 2023-10-01: 86_721 + 2024-10-01: 97_325 IL: 2021-10-01: 102_167 2022-10-01: 106_151 2023-10-01: 112_679 + 2024-10-01: 122_136 IN: 2021-10-01: 86_578 2022-10-01: 89_193 2023-10-01: 95_373 + 2024-10-01: 103_324 KS: 2021-10-01: 90_284 2022-10-01: 92_146 2023-10-01: 98_343 + 2024-10-01: 107_363 KY: 2021-10-01: 80_407 2022-10-01: 82_499 2023-10-01: 87_555 + 2024-10-01: 96_305 LA: 2021-10-01: 81_779 2022-10-01: 83_464 2023-10-01: 86_934 + 2024-10-01: 95_801 MA: 2021-10-01: 131_252 2022-10-01: 135_936 2023-10-01: 145_491 + 2024-10-01: 157_680 MD: 2021-10-01: 124_807 2022-10-01: 127_853 2023-10-01: 136_443 + 2024-10-01: 149_249 ME: 2021-10-01: 93_560 2022-10-01: 98_914 2023-10-01: 104_719 + 2024-10-01: 113_259 MI: 2021-10-01: 93_492 2022-10-01: 96_917 2023-10-01: 103_103 + 2024-10-01: 111_699 MN: 2021-10-01: 112_942 2022-10-01: 117_587 2023-10-01: 125_645 + 2024-10-01: 137_690 MO: 2021-10-01: 88_519 2022-10-01: 91_159 2023-10-01: 97_499 + 2024-10-01: 105_825 MS: 2021-10-01: 68_871 2022-10-01: 70_961 2023-10-01: 75_300 + 2024-10-01: 82_331 MT: 2021-10-01: 87_442 2022-10-01: 90_180 2023-10-01: 95_501 + 2024-10-01: 102_893 NC: 2021-10-01: 84_549 2022-10-01: 88_855 2023-10-01: 95_852 + 2024-10-01: 104_937 ND: 2021-10-01: 104_087 2022-10-01: 107_076 2023-10-01: 114_503 + 2024-10-01: 123_092 NE: 2021-10-01: 93_660 2022-10-01: 95_903 2023-10-01: 102_274 + 2024-10-01: 112_961 NH: 2021-10-01: 120_821 2022-10-01: 124_902 2023-10-01: 133_449 + 2024-10-01: 146_582 NJ: 2021-10-01: 128_786 2022-10-01: 133_238 2023-10-01: 141_384 + 2024-10-01: 153_514 NM: 2021-10-01: 67_949 2022-10-01: 71_118 2023-10-01: 76_101 + 2024-10-01: 81_873 NV: 2021-10-01: 82_509 2022-10-01: 85_150 2023-10-01: 89_325 + 2024-10-01: 96_026 NY: 2021-10-01: 104_972 2022-10-01: 109_716 2023-10-01: 116_765 + 2024-10-01: 127_802 OH: 2021-10-01: 91_185 2022-10-01: 93_649 2023-10-01: 100_106 + 2024-10-01: 109_319 OK: 2021-10-01: 76_142 2022-10-01: 78_027 2023-10-01: 83_103 + 2024-10-01: 90_026 OR: 2021-10-01: 94_050 2022-10-01: 100_210 2023-10-01: 107_136 + 2024-10-01: 117_983 PA: 2021-10-01: 100_995 2022-10-01: 104_230 2023-10-01: 111_335 + 2024-10-01: 121_268 PR: 2021-10-01: 32_843 2022-10-01: 33_705 2023-10-01: 35_747 + 2024-10-01: 39_438 RI: 2021-10-01: 107_837 2022-10-01: 109_100 2023-10-01: 114_343 + 2024-10-01: 125_328 SC: 2021-10-01: 80_973 2022-10-01: 83_778 2023-10-01: 89_725 + 2024-10-01: 98_172 SD: 2021-10-01: 88_721 2022-10-01: 91_281 2023-10-01: 96_351 + 2024-10-01: 105_723 TN: 2021-10-01: 80_773 2022-10-01: 84_838 2023-10-01: 90_197 + 2024-10-01: 98_377 TX: 2021-10-01: 85_391 2022-10-01: 88_783 2023-10-01: 94_466 + 2024-10-01: 103_213 UT: 2021-10-01: 90_542 2022-10-01: 93_679 2023-10-01: 100_752 + 2024-10-01: 111_554 VA: 2021-10-01: 108_955 2022-10-01: 114_081 2023-10-01: 121_130 + 2024-10-01: 134_005 VT: 2021-10-01: 99_184 2022-10-01: 101_554 2023-10-01: 110_661 + 2024-10-01: 125_336 WA: 2021-10-01: 107_085 2022-10-01: 112_299 2023-10-01: 120_416 + 2024-10-01: 131_054 WI: 2021-10-01: 99_688 2022-10-01: 102_898 2023-10-01: 108_490 + 2024-10-01: 117_736 WV: 2021-10-01: 77_096 2022-10-01: 78_811 2023-10-01: 84_092 + 2024-10-01: 90_661 WY: 2021-10-01: 95_814 2022-10-01: 98_354 2023-10-01: 104_110 + 2024-10-01: 111_736 metadata: unit: currency-USD @@ -218,5 +270,7 @@ metadata: href: https://www.acf.hhs.gov/sites/default/files/documents/ocs/COMM_LIHEAP_Att1SMITable_FY2023.pdf - title: State Median Income (SMI) by Household Size for Mandatory Use in LIHWAP for FY 2024 href: https://www.acf.hhs.gov/sites/default/files/documents/ocs/COMM_LIHWAP_Att1SMITable_FY2023.pdf + - title: State Median Income (SMI) by Household Size for Optional Use in FFY 2024 and Mandatory Use in LIHEAP for FY 25 + href: https://www.acf.hhs.gov/sites/default/files/documents/ocs/COMM_LIHEAP_IM%202024-02_Att4SMITable_0.pdf#page=2 period: year uprating: calibration.gov.cbo.income_by_source.adjusted_gross_income diff --git a/policyengine_us/parameters/gov/states/or/liheap/income_rate.yaml b/policyengine_us/parameters/gov/states/or/liheap/income_rate.yaml new file mode 100644 index 00000000000..0777cba407b --- /dev/null +++ b/policyengine_us/parameters/gov/states/or/liheap/income_rate.yaml @@ -0,0 +1,14 @@ +description: Oregon provides assistance for households with adjusted gross income below this percentage of the state median income through the LIHEAP program. +values: + 2021-01-01: 0.6 +metadata: + period: year + unit: /1 + label: Oregon LIHEAP eligibility threshold + reference: + # Legal code points to the program manual + - title: Oregon Administrative Rules, Chapter 813, Division 200 + href: https://oregon.public.law/rules/oar_813-200-0020 + - title: Oregon Department of Housing and Community Services, Utility Bill Payment Assistance Programs + href: https://www.oregon.gov/ohcs/energy-weatherization/pages/utility-bill-payment-assistance.aspx + diff --git a/policyengine_us/parameters/gov/states/or/liheap/payout_region1.yaml b/policyengine_us/parameters/gov/states/or/liheap/payout_region1.yaml new file mode 100644 index 00000000000..f4882bdea0b --- /dev/null +++ b/policyengine_us/parameters/gov/states/or/liheap/payout_region1.yaml @@ -0,0 +1,189 @@ +description: Payout from LIHEAP for Region 1 counties in the state of Oregon + +2021-10-01: + spm_unit: 1 + IncomeRange: 1: + Electricity_Heating: 410 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 435 + WoodPellets: 465 + Electricity_Cooling: 410 + IncomeRange: 2: + Electricity_Heating: 320 + HeatingOil: 600 + LiquidGas: 550 + NaturalGas: 340 + WoodPellets: 360 + Electricity_Cooling: 320 + IncomeRange: 3: + Electricity_Heating: 265 + HeatingOil: 560 + LiquidGas: 460 + NaturalGas: 280 + WoodPellets: 350 + Electricity_Cooling: 265 + IncomeRange: 4: + Electricity_Heating: 200 + HeatingOil: 405 + LiquidGas: 330 + NaturalGas: 200 + WoodPellets: 350 + Electricity_Cooling: 200 + + spm_unit: 2 + IncomeRange: 1: + Electricity_Heating: 530 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 560 + WoodPellets: 600 + Electricity_Cooling: 530 + IncomeRange: 2: + Electricity_Heating: 410 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 435 + WoodPellets: 465 + Electricity_Cooling: 410 + IncomeRange: 3: + Electricity_Heating: 345 + HeatingOil: 600 + LiquidGas: 590 + NaturalGas: 365 + WoodPellets: 390 + Electricity_Cooling: 345 + IncomeRange: 4: + Electricity_Heating: 245 + HeatingOil: 520 + LiquidGas: 425 + NaturalGas: 260 + WoodPellets: 350 + Electricity_Cooling: 245 + + spm_unit: 3 + IncomeRange: 1: + Electricity_Heating: 530 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 560 + WoodPellets: 600 + Electricity_Cooling: 530 + IncomeRange: 2: + Electricity_Heating: 410 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 435 + WoodPellets: 465 + Electricity_Cooling: 410 + IncomeRange: 3: + Electricity_Heating: 345 + HeatingOil: 600 + LiquidGas: 590 + NaturalGas: 365 + WoodPellets: 390 + Electricity_Cooling: 345 + IncomeRange: 4: + Electricity_Heating: 245 + HeatingOil: 520 + LiquidGas: 425 + NaturalGas: 260 + WoodPellets: 350 + Electricity_Cooling: 245 + + spm_unit: 4 + IncomeRange: 1: + Electricity_Heating: 600 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 600 + WoodPellets: 600 + Electricity_Cooling: 600 + IncomeRange: 2: + Electricity_Heating: 480 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 510 + WoodPellets: 545 + Electricity_Cooling: 480 + IncomeRange: 3: + Electricity_Heating: 400 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 425 + WoodPellets: 450 + Electricity_Cooling: 400 + IncomeRange: 4: + Electricity_Heating: 285 + HeatingOil: 600 + LiquidGas: 495 + NaturalGas: 305 + WoodPellets: 350 + Electricity_Cooling: 285 + + spm_unit: 5 + IncomeRange: 1: + Electricity_Heating: 600 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 600 + WoodPellets: 600 + Electricity_Cooling: 600 + IncomeRange: 2: + Electricity_Heating: 535 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 565 + WoodPellets: 600 + Electricity_Cooling: 535 + IncomeRange: 3: + Electricity_Heating: 445 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 470 + WoodPellets: 506 + Electricity_Cooling: 445 + IncomeRange: 4: + Electricity_Heating: 320 + HeatingOil: 600 + LiquidGas: 550 + NaturalGas: 340 + WoodPellets: 360 + Electricity_Cooling: 320 + + spm_unit: ">=6" + IncomeRange: 1: + Electricity_Heating: 600 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 600 + WoodPellets: 600 + Electricity_Cooling: 600 + IncomeRange: 2: + Electricity_Heating: 600 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 600 + WoodPellets: 600 + Electricity_Cooling: 600 + IncomeRange: 3: + Electricity_Heating: 500 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 530 + WoodPellets: 570 + Electricity_Cooling: 500 + IncomeRange: 4: + Electricity_Heating: 360 + HeatingOil: 600 + LiquidGas: 600 + NaturalGas: 380 + WoodPellets: 410 + Electricity_Cooling: 360 + +metadata: + period: year + unit: currency-USD + reference: + - title: LIHEAP and OEAP Energy Assistance Intake Operations Manual for Program Year 2021 + href: https://www.oregon.gov/ohcs/energy-weatherization/Documents/2021-Energy-Assistance-Manual.pdf#Pg=55 diff --git a/policyengine_us/parameters/gov/states/or/liheap/region1_counties.yaml b/policyengine_us/parameters/gov/states/or/liheap/region1_counties.yaml new file mode 100644 index 00000000000..22acb43c335 --- /dev/null +++ b/policyengine_us/parameters/gov/states/or/liheap/region1_counties.yaml @@ -0,0 +1,29 @@ +description: Oregon LIHEAP lists these counties in the State as Region 1 and all other counties as Region 2. + +metadata: + unit: list + period: year + label: Oregon Region 1 counties + reference: + - title: LIHEAP and OEAP Energy Assistance Intake Operations Manual for Program Year 2021 + href: https://www.oregon.gov/ohcs/energy-weatherization/Documents/2021-Energy-Assistance-Manual.pdf#Pg=55 +values: + 2021-01-01: + - BENTON_COUNTY_OR + - CLACKAMAS_COUNTY_OR + - CLATSOP_COUNTY_OR + - COLUMBIA_COUNTY_OR + - COOS_COUNTY_OR + - CURRY_COUNTY_OR + - DOUGLAS_COUNTY_OR + - JACKSON_COUNTY_OR + - JOSEPHINE_COUNTY_OR + - LANE_COUNTY_OR + - LINCOLN_COUNTY_OR + - LINN_COUNTY_OR + - MARION_COUNTY_OR + - MULTNOMAH_COUNTY_OR + - POLK_COUNTY_OR + - TILLAMOOK_COUNTY_OR + - WASHINGTON_COUNTY_OR + - YAMHILL_COUNTY_OR \ No newline at end of file diff --git a/policyengine_us/tests/policy/baseline/gov/hhs/hhs_smi.yaml b/policyengine_us/tests/policy/baseline/gov/hhs/hhs_smi.yaml index 75f7816f5b0..48c31f7aa63 100644 --- a/policyengine_us/tests/policy/baseline/gov/hhs/hhs_smi.yaml +++ b/policyengine_us/tests/policy/baseline/gov/hhs/hhs_smi.yaml @@ -37,7 +37,7 @@ spm_unit_size: 4 state_code_str: NY output: - hhs_smi: 116_765 * 1.0654 # includes CBO uprating from 2023-10-01 to 2024 + hhs_smi: 116_765 - name: 2024 Household size 1, State NY period: 2024 @@ -46,7 +46,7 @@ spm_unit_size: 1 state_code_str: NY output: - hhs_smi: 0.52 * 116_765 * 1.0654 # includes CBO uprating from 2023-10-01 to 2024 + hhs_smi: 0.52 * 116_765 - name: 2024 Household size 6, State NY period: 2024 @@ -55,7 +55,7 @@ spm_unit_size: 6 state_code_str: NY output: - hhs_smi: 1.32 * 116_765 * 1.0654 # includes CBO uprating from 2023-10-01 to 2024 + hhs_smi: 1.32 * 116_765 - name: 2024 Household size 7, State NY period: 2024 @@ -64,4 +64,4 @@ spm_unit_size: 7 state_code_str: NY output: - hhs_smi: 1.35 * 116_765 * 1.0654 # includes CBO uprating from 2023-10-01 to 2024 + hhs_smi: 1.35 * 116_765 diff --git a/policyengine_us/tests/policy/baseline/gov/states/or/tax/income/or_liheap_eligibility.yaml b/policyengine_us/tests/policy/baseline/gov/states/or/tax/income/or_liheap_eligibility.yaml new file mode 100644 index 00000000000..85698fdbb52 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/or/tax/income/or_liheap_eligibility.yaml @@ -0,0 +1,26 @@ +- name: oregon liheap eligibility 2021 eligible single household + period: 2021 + input: + spm_unit_size: 1 + state_code: OR + adjusted_gross_income: 25_000 + output: + or_liheap_eligibility: true + +- name: oregon liheap eligibility 2023 ineligible two-person household + period: 2023 + input: + spm_unit_size: 2 + state_code: OR + adjusted_gross_income: 90_000 + output: + or_liheap_eligibility: false + +- name: oregon liheap eligibility 2024 eligible four-person household + period: 2024 + input: + spm_unit_size: 4 + state_code: OR + adjusted_gross_income: 60_000 + output: + or_liheap_eligibility: true diff --git a/policyengine_us/tests/policy/baseline/gov/states/or/tax/income/or_liheap_income_threshold.yaml b/policyengine_us/tests/policy/baseline/gov/states/or/tax/income/or_liheap_income_threshold.yaml new file mode 100644 index 00000000000..64ee2a9f5ec --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/states/or/tax/income/or_liheap_income_threshold.yaml @@ -0,0 +1,28 @@ +- name: oregon smi 2021 single household + period: 2021 + absolute_error_margin: 0.01 + input: + spm_unit_size: 1 # Single-person household + state_code: OR # Oregon state code + hhs_smi: 48_906 # State Median Income for a single-person household in Oregon for 2021 + output: + or_liheap_income_threshold: 29_343.6 # 0.6 * $48_906 + +- name: oregon smi 2023 two-person household + period: 2023 + input: + spm_unit_size: 2 # Two-person household + state_code: OR # Oregon state code + hhs_smi: 72_852.48 # State Median Income for Oregon in 2023 + output: + or_liheap_income_threshold: 43_711.488 # 0.6 * $72_852.48 + +- name: oregon smi 2024 four-person household + period: 2024 + absolute_error_margin: 0.01 + input: + spm_unit_size: 4 # Four-person household + state_code: OR # Oregon state code + hhs_smi: 117_983 # State Median Income for Oregon in 2024 + output: + or_liheap_income_threshold: 70_789.8 # 0.6 * $117_983 diff --git a/policyengine_us/variables/gov/states/or/tax/income/liheap/or_liheap_eligibility.py b/policyengine_us/variables/gov/states/or/tax/income/liheap/or_liheap_eligibility.py new file mode 100644 index 00000000000..c4bd416975e --- /dev/null +++ b/policyengine_us/variables/gov/states/or/tax/income/liheap/or_liheap_eligibility.py @@ -0,0 +1,15 @@ +from policyengine_us.model_api import * + + +class or_liheap_eligibility(Variable): + value_type = bool + entity = SPMUnit + label = "Oregon LIHEAP eligibility" + definition_period = YEAR + reference = "https://liheapch.acf.hhs.gov/profiles/Oregon.htm" + defined_for = StateCode.OR + + def formula(spm_unit, period, parameters): + income = add(spm_unit, period, ["adjusted_gross_income"]) + threshold = spm_unit("or_liheap_income_threshold", period) + return income <= threshold diff --git a/policyengine_us/variables/gov/states/or/tax/income/liheap/or_liheap_income_threshold.py b/policyengine_us/variables/gov/states/or/tax/income/liheap/or_liheap_income_threshold.py new file mode 100644 index 00000000000..30fa07e2291 --- /dev/null +++ b/policyengine_us/variables/gov/states/or/tax/income/liheap/or_liheap_income_threshold.py @@ -0,0 +1,17 @@ +from policyengine_us.model_api import * + + +class or_liheap_income_threshold(Variable): + value_type = float + entity = SPMUnit + label = "Income threshold for Oregon LIHEAP eligibility" + unit = USD + definition_period = YEAR + reference = "https://liheapch.acf.hhs.gov/profiles/Oregon.htm" + + defined_for = StateCode.OR + + def formula(spm_unit, period, parameters): + state_median_income = spm_unit("hhs_smi", period) + p = parameters(period).gov.states["or"].liheap.income_rate + return state_median_income * p