Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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/wy-ssp-2026.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Add Wyoming's State Supplemental Payment for residents whose sole income is SSI, verified for 2026.
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ values:
- tx_ssi_state_supplement
# Virginia benefits
- va_child_care_subsidies
# Wyoming benefits
- wy_ssp
# Massachusetts benefits
- ma_eaedc
# DC benefits
Expand Down Expand Up @@ -175,6 +177,8 @@ values:
- va_child_care_subsidies
# West Virginia benefits
- wv_child_care_subsidies
# Wyoming benefits
- wy_ssp
# North Carolina benefits
- nc_child_care_subsidies
# South Carolina benefits
Expand Down Expand Up @@ -281,6 +285,8 @@ values:
- va_child_care_subsidies
# West Virginia benefits
- wv_child_care_subsidies
# Wyoming benefits
- wy_ssp
# North Carolina benefits
- nc_child_care_subsidies
# South Carolina benefits
Expand Down Expand Up @@ -388,6 +394,8 @@ values:
- va_child_care_subsidies
# West Virginia benefits
- wv_child_care_subsidies
# Wyoming benefits
- wy_ssp
# North Carolina benefits
- nc_child_care_subsidies
# South Carolina benefits
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ values:
- ssi
- nj_ssp
- pa_ssp
- wy_ssp
- general_assistance
- total_unemployment_compensation
- child_support_received
Expand Down
17 changes: 17 additions & 0 deletions policyengine_us/parameters/gov/states/wy/health/ssp/amount.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
description: Wyoming provides this amount as the monthly payment under the State Supplemental Payment program.
values:
2021-07-01: 20

metadata:
unit: currency-USD
period: month
label: Wyoming SSP amount
reference:
- title: Wyoming Eligibility Online Manual M1804, State Supplemental Payments
href: https://ecom.wyo.gov/m1800-other-programs/m1804-state-supplemental-payments
- title: W.S. 42-2-103(d)
href: https://wyoleg.gov/statutes/compress/title42.pdf#page=7
- title: 2024 Wyoming Budget Act HB0001 (Enrolled Act 50), Section 2, Section 048, footnote 2
href: https://wyoleg.gov/2024/Enroll/HB0001.pdf#page=21
- title: "2026 Wyoming Budget Act SF0001 (Enrolled Act 27), Section 2, Section 048, footnote 2 #page 21-22"
href: https://wyoleg.gov/2026/Enroll/SF0001.pdf#page=21
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ values:
- sc_ssi_state_supplement
- tx_ssi_state_supplement
- wa_ssp
- wy_ssp
# Listed elsewhere: ca_state_supplement is an SPM unit variable with no
# person-level counterpart. policyengine-core projects a group value onto
# every member, so listing it here would count it once per person in the
Expand Down
10 changes: 10 additions & 0 deletions policyengine_us/programs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1117,6 +1117,16 @@ programs:
homes, plus the institutional Supplement for Personal Needs.
Mandatory grandfathered and essential-person supplements and
ancillary facility subsidies are not modeled.
- state: WY
status: partial
name: Wyoming SSP
full_name: Wyoming State Supplemental Payment
variable: wy_ssp
parameter_prefix: gov.states.wy.health.ssp
verified_years: "2026"
notes: >-
Models the 2026 flat payment for Wyoming residents who receive SSI
and have no other income.

- id: social_security
name: Social Security
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
- name: Case 1, Wyoming supplement enters state benefit and SNAP income totals.
period: 2026-01
input:
state_code: WY
age: 65
output:
wy_ssp_eligible: true
wy_ssp: 20
snap_unearned_income: 1_014
household_state_benefits: 20

- name: Case 2, eligible couple receives twenty dollars each.
period: 2026-01
input:
people:
person1:
age: 65
person2:
age: 65
marital_units:
couple:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: WY
output:
ssi: [745.5, 745.5]
wy_ssp: [20, 20]
household_state_benefits: 40

- name: Case 3, annual Wyoming supplement counts as HUD income.
period: 2026
input:
state_code: WY
age: 65
output:
wy_ssp: 240
# SSI $994 * 12 = $11,928, plus the $240 supplement = $12,168.
hud_annual_income: 12_168
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
# Wyoming EOM M1804: $20 monthly, with SSI as the sole income source.
- name: Case 1, aged recipient with only SSI.
period: 2026-01
input:
state_code: WY
age: 65
output:
ssi: 994
wy_ssp: 20

- name: Case 2, income excluded from federal SSI still defeats the sole income rule.
period: 2026-01
input:
state_code: WY
age: 65
# $1,500 in savings, under the $2,000 SSI resource limit, earning the FDIC
# national savings rate of 0.37% (September 2026): $1,500 * 0.0037 = $5.55.
bank_account_assets: 1_500
taxable_interest_income: 5.55
output:
# $5.55 / 12 = $0.4625 interest a month, all absorbed by the $20 general
# exclusion: countable income $0, so $994 - $0 = $994.
ssi: 994
# $0.4625 > $0 is other income in the month, so the sole income rule fails.
wy_ssp: 0

- name: Case 3, part-time earnings still defeat the sole income rule.
period: 2026-01
input:
state_code: WY
age: 65
# 10 hours a week at the Wyoming retail salesperson median wage of $16.50
# (BLS OEWS May 2025): $16.50 * 10 * 52 = $8,580 a year.
employment_income: 8_580
output:
# $8,580 / 12 = $715 a month; ($715 - $20 - $65) * 0.5 = $315 countable;
# $994 - $315 = $679.
ssi: 679
# $715 of wages is other income in the month, so the sole income rule fails.
wy_ssp: 0

- name: Case 4, no SSI receipt.
period: 2026-01
input:
state_code: WY
age: 65
takes_up_ssi_if_eligible: false
output:
wy_ssp: 0

- name: Case 5, outside Wyoming.
period: 2026-01
input:
state_code: UT
age: 65
output:
wy_ssp: 0

- name: Case 6, institutional SSI also qualifies.
period: 2026-01
input:
state_code: WY
age: 65
ssi_lives_in_medical_treatment_facility: true
ssi_medicaid_pays_majority_of_care: true
output:
ssi: 30
wy_ssp: 20

- name: Case 7, losses cannot offset other income for sole source eligibility.
period: 2026-01
input:
state_code: WY
age: 65
self_employment_income: -12_000
social_security_retirement: 120
output:
wy_ssp: 0

- name: Case 8, a disabled child living with working parents may qualify.
period: 2026-01
absolute_error_margin: 0.01
input:
people:
person1:
age: 40
own_children_in_household: 1
# Full-time work at the Wyoming median annual wage (BLS OEWS May 2025).
employment_income: 50_270
person2:
age: 38
own_children_in_household: 1
person3:
age: 12
meets_ssi_disability_criteria: true
tax_units:
tax_unit:
members: [person1, person2, person3]
marital_units:
marital_unit:
members: [person1, person2]
households:
household:
members: [person1, person2, person3]
state_code: WY
output:
# Parents: $50,270 / 12 = $4,189.17 a month; ($4,189.17 - $20 - $65) * 0.5
# = $2,052.08; less the two-parent allocation of $1,491 = $561.08 deemed.
ssi_unearned_income_deemed_from_ineligible_parent: [0, 0, 561.08]
# Child: $561.08 - $20 general exclusion = $541.08 countable;
# $994 - $541.08 = $452.92. The parents are not aged, blind or disabled.
ssi: [0, 0, 452.92]
# The sole income rule reads only the child's own sources, which are $0;
# deemed parental income is not one of them.
wy_ssp: [0, 0, 20]

- name: Case 9, annual total includes twelve payments.
period: 2026
input:
state_code: WY
age: 65
output:
wy_ssp: 240

- name: Case 10, a self-employment loss alone is not other income.
period: 2026-01
input:
state_code: WY
age: 65
self_employment_income: -12_000
output:
# SSI floors earned income at $0: countable income $0, so $994 - $0 = $994.
ssi: 994
# -$12,000 / 12 = -$1,000 a month is not above $0, so no source is other
# income: $20.
wy_ssp: 20

- name: Case 11, reported SSI receipt qualifies when modeled SSI is zero.
period: 2026-01
input:
state_code: WY
age: 40
receives_ssi: true
output:
# No disability input, so the model finds no aged, blind or disabled
# status and computes $0 SSI.
ssi: 0
# Reported receipt meets the SSI condition and there is no other income: $20.
wy_ssp: 20

- name: Case 12, in an eligible couple only the spouse with other income loses the supplement.
period: 2026-01
input:
people:
person1:
age: 67
# $100 a month of Social Security retirement: $100 * 12 = $1,200 a year.
social_security_retirement: 1_200
person2:
age: 66
marital_units:
marital_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: WY
output:
# Couple: $100 - $20 general exclusion = $80 countable;
# ($1,491 - $80) / 2 = $705.50 each.
ssi: [705.5, 705.5]
# person1 has $100 of own income; person2's own sources are $0, so the
# spouse's income does not count against person2: $20.
wy_ssp: [0, 20]

- name: Case 13, income deemed from an ineligible spouse does not defeat the sole income rule.
period: 2026-01
input:
people:
person1:
age: 67
person2:
age: 45
# 14 hours a week at the Wyoming retail salesperson median wage of
# $16.50 (BLS OEWS May 2025): $16.50 * 14 * 52 = $12,012 a year.
employment_income: 12_012
marital_units:
marital_unit:
members: [person1, person2]
households:
household:
members: [person1, person2]
state_code: WY
output:
# $12,012 / 12 = $1,001 a month of spouse wages, above the $497 difference
# between the couple and individual rates, so deeming applies:
# ($1,001 - $20 - $65) * 0.5 = $458 deemed; $1,491 - $458 = $1,033,
# capped at the $994 individual rate. person2 is not aged, blind or disabled.
ssi: [994, 0]
# person1's own sources are $0; deemed spouse income is not one of them: $20.
wy_ssp: [20, 0]
15 changes: 15 additions & 0 deletions policyengine_us/variables/gov/states/wy/health/ssp/wy_ssp.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from policyengine_us.model_api import *


class wy_ssp(Variable):
value_type = float
entity = Person
label = "Wyoming State Supplemental Payment"
definition_period = MONTH
unit = USD
defined_for = "wy_ssp_eligible"
reference = (
"https://ecom.wyo.gov/m1800-other-programs/m1804-state-supplemental-payments",
"https://wyoleg.gov/statutes/compress/title42.pdf#page=7",
)
adds = ["gov.states.wy.health.ssp.amount"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from policyengine_us.model_api import *


class wy_ssp_eligible(Variable):
value_type = bool
entity = Person
label = "Eligible for Wyoming State Supplemental Payment"
definition_period = MONTH
defined_for = StateCode.WY
reference = (
"https://ecom.wyo.gov/m1800-other-programs/m1804-state-supplemental-payments",
"https://wyoleg.gov/statutes/compress/title42.pdf#page=7",
)

def formula(person, period, parameters):
receives_ssi = (person("ssi", period) > 0) | person("receives_ssi", period)
p = parameters(period).gov.ssa.ssi.income.sources
# W.S. 42-2-103(d) requires no other income in the month. The test
# precedes SSI exclusions, and only positive amounts count, so a loss
# in one source cannot offset a positive payment from another source.
# NOTE: noncash support and income sources absent from the federal SSI
# income model are not separately evaluated.
# NOTE: only the person's own sources count. Income deemed from a parent
# or an ineligible spouse, and the other spouse's income in an eligible
# couple, are not treated as the person's other income. The statute does
# not define "income", and EOM M1804 lists child cases in a parent's
# household (living arrangement C) among its pay-rate codes.
sources = list(p.earned) + list(p.unearned)
has_other_income = np.zeros_like(receives_ssi)
for source in sources:
has_other_income = has_other_income | (person(source, period) > 0)
return receives_ssi & ~has_other_income
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ def formula(spm_unit, period, parameters):
"fl_oss",
"nj_ssp", # New Jersey benefits
"pa_ssp", # Pennsylvania benefits
"wy_ssp", # Wyoming benefits
"ks_sspp", # Kansas benefits
"hi_oss",
"la_oss", # Louisiana benefits
Expand Down
Loading