Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
18377c9
Add a national LIHEAP total and LIHEAP cooling registry notes
hua7450 Nov 9, 2026
de37d67
Add Kentucky LIHEAP regular cooling assistance
hua7450 Nov 9, 2026
d86e596
Merge branch 'liheap-aggregate' into ky-liheap-cooling
hua7450 Nov 9, 2026
95ab357
Count Kentucky LIHEAP cooling in the national LIHEAP total
hua7450 Nov 9, 2026
77e0f84
Guard the LIHEAP payment list and reword the Rhode Island cooling note
hua7450 Nov 10, 2026
5ffaa98
Merge remote-tracking branch 'upstream/main' into liheap-aggregate
hua7450 Nov 10, 2026
33ecc63
Pay Kentucky LIHEAP cooling to renters with utilities in rent
hua7450 Nov 10, 2026
4f96a11
Merge branch 'liheap-aggregate' into ky-liheap-cooling
hua7450 Nov 10, 2026
e5a2a6c
Make state LIHEAP formulas run in a microsimulation
hua7450 Nov 12, 2026
d4401d7
Merge remote-tracking branch 'upstream/main' into liheap-aggregate
hua7450 Nov 12, 2026
6bee540
Drop the options=[ADD] code-health check
hua7450 Nov 12, 2026
1326ebe
Merge remote-tracking branch 'upstream/liheap-aggregate' into ky-lihe…
hua7450 Nov 12, 2026
4625f4e
Pin the Michigan, California and Illinois list entries and add the pr…
hua7450 Nov 12, 2026
09de01d
Merge PR 10730's final head (4625f4e59a) into ky-liheap-cooling
hua7450 Nov 12, 2026
799669b
Merge upstream/main (c65b162782) into ky-liheap-cooling
hua7450 Nov 12, 2026
8bb7c15
Merge remote-tracking branch 'upstream/main' into ky-liheap-cooling
hua7450 Nov 13, 2026
27080d3
Fix issues from review: rent-route cases and fuel condition
hua7450 Nov 13, 2026
7c47ff9
Merge remote-tracking branch 'upstream/main' into ky-liheap-cooling
hua7450 Nov 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/ky-liheap-cooling.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add Kentucky LIHEAP regular cooling assistance (the one-time electric cooling subsidy).
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ values:
- in_eap # Indiana EAP
- ks_liheap # Kansas LIEAP
- ky_liheap # Kentucky LIHEAP
- ky_liheap_cooling # Kentucky LIHEAP cooling
- la_liheap # Louisiana LIHEAP
- ma_liheap # Massachusetts LIHEAP
- md_meap # Maryland MEAP
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
description: Kentucky uses the federal poverty guidelines from this many years before the federal fiscal year's ending year for the cooling subsidy income limit under the Low Income Home Energy Assistance Program.
# The summer fact sheet's limits are 150% of the 2026 guidelines:
# 15,960 * 1.5 / 12 = 1,995 for one person, and 5,680 * 1.5 / 12 = 710 for
# each additional member. Heating in the same federal fiscal year uses the
# 2025 guidelines (fpg_year_lag), and so do the cooling income bands, whose
# FY2026 workbook ranges match the heating ranges.
values:
2025-10-01: 0
metadata:
unit: year
period: year
label: Kentucky LIHEAP cooling federal poverty guideline year lag
reference:
- title: Kentucky LIHEAP Summer Cooling Subsidy Component FFY 2026 fact sheet, eligibility
href: https://www.capky.org/wp-content/uploads/2026/07/FY26-LIHEAP-Summer-Cooling-Subsidy-Fact-Sheet.pdf
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
description: Kentucky provides this amount per heating payment point, rounded up to whole dollars, under the Low Income Home Energy Assistance Program.
description: Kentucky provides this amount per heating or cooling payment point, rounded up to whole dollars, under the Low Income Home Energy Assistance Program.
values:
2024-10-01: 16.66
metadata:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
description: Kentucky sets these heating payment points by primary heating fuel under the Low Income Home Energy Assistance Program.
description: Kentucky sets these heating and cooling payment points by fuel under the Low Income Home Energy Assistance Program.
UNSPECIFIED:
2024-10-01: 0
ELECTRICITY:
Expand All @@ -24,7 +24,7 @@ NONE:
metadata:
unit: /1
period: year
label: Kentucky LIHEAP heating fuel points
label: Kentucky LIHEAP fuel points
breakdown:
- heating_type
reference:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
description: Kentucky uses these federal poverty guideline shares as the upper boundaries of its first three heating payment income bands under the Low Income Home Energy Assistance Program.
description: Kentucky uses these federal poverty guideline shares as the upper boundaries of its first three heating and cooling payment income bands under the Low Income Home Energy Assistance Program.
values:
2024-10-01: [0.75, 1, 1.25]
metadata:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
description: Kentucky provides this share of the point-based heating payment to households in subsidized housing under the Low Income Home Energy Assistance Program.
description: Kentucky provides this share of the point-based heating or cooling payment to households in subsidized housing under the Low Income Home Energy Assistance Program.
values:
2024-10-01: 0.3
metadata:
Expand Down
10 changes: 9 additions & 1 deletion policyengine_us/programs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1214,7 +1214,15 @@ programs:
variable: ky_liheap
parameter_prefix: gov.states.ky.dcbs.liheap
verified_years: "2025-2026"
notes: FY2025-FY2026 regular heating only, from the published benefit workbooks. Crisis and cooling assistance are out of scope.
notes: FY2025-FY2026 regular heating only, from the published benefit workbooks; the cooling subsidy is the separate Kentucky LIHEAP cooling entry. Crisis assistance is out of scope.
- state: KY
status: partial
name: Kentucky LIHEAP cooling
full_name: Kentucky Low Income Home Energy Assistance Program cooling subsidy
variable: ky_liheap_cooling
parameter_prefix: gov.states.ky.dcbs.liheap
verified_years: "2026"
notes: FY2026 one-time electric cooling subsidy from the heating point schedule with electric fuel points, including electricity paid through rent, under a current-year poverty guideline income limit, paid once a year although FY2026 ran spring and summer rounds. Air conditioners and crisis assistance are out of scope.
- state: LA
status: partial
name: Louisiana LIHEAP
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,232 @@
# Sources: Kentucky FY2026 state plan Sections 3.1-3.6, the FY2026 heat-cool
# benefit workbook (cooling column equals the electricity heating column), and
# the FFY 2026 Summer Cooling Subsidy fact sheet (150% of the 2026 guidelines).
# The cooling limit uses the 2026 guidelines: one person 15,960 a year, each added
# person 5,680. The income bands use the 2025 guidelines, as heating and the
# workbook's income ranges do: one person 15,650 a year (1,304.17 a month), each
# added person 5,500.
# Points: size (capped at 5) + income points + 6 electric points; amount =
# ceil(points * 16.66); subsidized housing = ceil(amount * 0.3).
# Wages are hourly pay times hours; the 7.25 rate is the federal minimum wage
# that Kentucky applies. Electric bills of 1,560 are 130 a month.

- name: Case 1, a gas-heated home receives the electric cooling amount.
period: 2026
absolute_error_margin: 0.01
input:
people:
person1:
age: 40
# 7.25 an hour, 20 hours a week: 7.25 * 1_040 = 7_540.
employment_income_before_lsr: 7_540
spm_units:
spm_unit:
members: [person1]
heating_type: NATURAL_GAS
gas_expense: 720
pre_subsidy_electricity_expense: 1_560
has_cooling_expense: true
receives_housing_assistance: false
households:
household:
members: [person1]
state_code: KY
is_in_public_housing: false
output:
# 7_540 / 12 = 628.33 a month.
ky_liheap_cooling_eligible: true
# Both seasons: 628.33 <= ceil(15_650 / 12 * 0.75 = 978.13) = 979, the
# 0-75% band (4 points).
# Cooling uses the electric points: 1 + 4 + 6 = 11 points;
# ceil(11 * 16.66 = 183.26) = 184.
ky_liheap_cooling: 184
# Heating keeps the natural gas points: 1 + 4 + 3 = 8 points;
# ceil(8 * 16.66 = 133.28) = 134.
ky_liheap: 134
# The national LIHEAP total adds both: 134 + 184.
liheap: 318

- name: Case 2, a public housing tenant receives the subsidized electric amount.
period: 2026
absolute_error_margin: 0.01
input:
people:
person1:
age: 40
employment_income_before_lsr: 7_540
spm_units:
spm_unit:
members: [person1]
heating_type: ELECTRICITY
pre_subsidy_electricity_expense: 1_560
has_cooling_expense: true
receives_housing_assistance: false
households:
household:
members: [person1]
state_code: KY
is_in_public_housing: true
output:
# 0-75% band, subsidized income points 1: 1 + 1 + 6 = 8 points;
# ceil(8 * 16.66 = 133.28) = 134; ceil(134 * 0.3 = 40.2) = 41, the plan's
# $41 minimum.
ky_liheap_cooling: 41

- name: Case 3, a family of five in the lowest band receives the 250 maximum.
period: 2026
absolute_error_margin: 0.01
input:
people:
person1:
age: 38
# 11.00 an hour, 40 hours a week: 11 * 2_080 = 22_880.
employment_income_before_lsr: 22_880
person2:
age: 36
person3:
age: 12
person4:
age: 9
person5:
age: 6
spm_units:
spm_unit:
members: [person1, person2, person3, person4, person5]
heating_type: ELECTRICITY
pre_subsidy_electricity_expense: 1_560
has_cooling_expense: true
receives_housing_assistance: false
# The household does not receive K-TAP.
tanf: 0
households:
household:
members: [person1, person2, person3, person4, person5]
state_code: KY
is_in_public_housing: false
output:
# 2026 guideline for five: 15_960 + 4 * 5_680 = 38_680.
# Limit: 38_680 * 1.5 / 12 = 4_835, the fact sheet's amount for five.
ky_liheap_cooling_eligible: true
# 2025 guideline for five: 15_650 + 4 * 5_500 = 37_650, or 3_137.50 a month.
# 22_880 / 12 = 1_906.67 <= ceil(3_137.50 * 0.75 = 2_353.13) = 2_354, so
# 0-75%. 5 + 4 + 6 = 15 points; ceil(15 * 16.66 = 249.9) = 250, the plan's
# $250 maximum.
ky_liheap_cooling: 250

- name: Case 4, the lowest band ends at 75 percent of the 2025 guideline.
period: 2026
absolute_error_margin: 0.01
input:
people:
person1:
age: 40
# 979.00 a month.
employment_income_before_lsr: 11_748
person2:
age: 40
# 979.01 a month.
employment_income_before_lsr: 11_748.12
spm_units:
spm_unit1:
members: [person1]
heating_type: ELECTRICITY
pre_subsidy_electricity_expense: 1_560
has_cooling_expense: true
receives_housing_assistance: false
spm_unit2:
members: [person2]
heating_type: ELECTRICITY
pre_subsidy_electricity_expense: 1_560
has_cooling_expense: true
receives_housing_assistance: false
households:
household1:
members: [person1]
state_code: KY
is_in_public_housing: false
household2:
members: [person2]
state_code: KY
is_in_public_housing: false
output:
# The 0-75% band ends at ceil(15_650 / 12 * 0.75 = 978.13) = 979, the
# workbook's printed range end for one person.
# Household 1: 979.00 is in it: 1 + 4 + 6 = 11 points = 184.
# Household 2: 979.01 is in 75.01-100% (3 points): 1 + 3 + 6 = 10 points;
# ceil(10 * 16.66 = 166.6) = 167.
ky_liheap_cooling: [184, 167]

- name: Case 5, income above the 2025 heating limit but within the 2026 cooling limit.
period: 2026
absolute_error_margin: 0.01
input:
people:
person1:
age: 40
# 11.40 an hour, 40 hours a week: 11.40 * 2_080 = 23_712.
employment_income_before_lsr: 23_712
spm_units:
spm_unit:
members: [person1]
heating_type: ELECTRICITY
pre_subsidy_electricity_expense: 1_560
has_cooling_expense: true
receives_housing_assistance: false
households:
household:
members: [person1]
state_code: KY
is_in_public_housing: false
output:
# 23_712 / 12 = 1_976 a month.
# Heating limit: ceil(15_650 * 1.5 / 12 = 1_956.25) = 1_957, so 1_976 is over.
ky_liheap_income_eligible: false
ky_liheap: 0
# Cooling limit: 15_960 * 1.5 / 12 = 1_995, so 1_976 qualifies.
ky_liheap_cooling_eligible: true
# 1_976 > ceil(1_304.17 * 1.25 = 1_630.21) = 1_631, the top band
# (1 point). 1 + 1 + 6 = 8 points; ceil(8 * 16.66 = 133.28) = 134.
ky_liheap_cooling: 134

- name: Case 6, a home without heating and a home with an unspecified fuel both receive cooling.
period: 2026
absolute_error_margin: 0.01
input:
people:
person1:
age: 40
employment_income_before_lsr: 7_540
person2:
age: 40
employment_income_before_lsr: 7_540
spm_units:
spm_unit1:
members: [person1]
heating_type: NONE
pre_subsidy_electricity_expense: 1_560
has_cooling_expense: true
receives_housing_assistance: false
spm_unit2:
members: [person2]
heating_type: UNSPECIFIED
pre_subsidy_electricity_expense: 1_560
has_cooling_expense: true
receives_housing_assistance: false
households:
household1:
members: [person1]
state_code: KY
is_in_public_housing: false
household2:
members: [person2]
state_code: KY
is_in_public_housing: false
output:
# The cooling subsidy uses the electric points whatever the home heats
# with: 1 + 4 + 6 = 11 points = 184.
# Was [true, false], now [true, true]: cooling has no heating-fuel condition.
ky_liheap_cooling_eligible: [true, true]
# Was [184, 0], now [184, 184]: cooling has no heating-fuel condition.
ky_liheap_cooling: [184, 184]
# Neither home has a heating benefit.
ky_liheap: [0, 0]
Loading
Loading