From f3a302d3065ddeca33d2175fcd04d8cb1658144e Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Wed, 30 Sep 2026 07:53:07 -0400 Subject: [PATCH 1/4] Add California's 2026 SSI/SSP payment standards The California state supplement payment standards stopped at 2025-01-01, so 2026 reused the 2025 amounts (e.g. $1,206.94 instead of $1,233.94 for an aged individual living independently). Add 2026-01-01 entries to all ten payment-standard parameters from CDSS "SSI Total Monthly Payment Amounts 2026" and SSA POMS SI 01415.058 (California, January 2026). The two sources agree on every row except couple non-medical out-of-home care: POMS and the CDSS 2026 May Revision give $3,252.14 (twice the $1,626.07 individual rate), while the CDSS monthly table lists $3,239.14. The out-of-home care allowance uses $3,252.14. Add 2026 YAML cases, a grid property test of the 2026 supplement, and update two tests whose 2026 expectations used the 2025 standard. Co-Authored-By: Claude Opus 5.5 --- .../ca-ssp-2026-payment-standards.fixed.md | 1 + .../aged_or_disabled/amount/married.yaml | 5 + .../aged_or_disabled/amount/single.yaml | 5 + .../allowance/food/married.yaml | 5 + .../allowance/food/single.yaml | 5 + .../allowance/medical_care_facility.yaml | 5 + .../allowance/out_of_home_care.yaml | 9 + .../blind/married/one_blind.yaml | 5 + .../blind/married/two_blind.yaml | 5 + .../payment_standard/blind/single.yaml | 5 + .../payment_standard/dependent/amount.yaml | 5 + policyengine_us/programs.yaml | 2 + .../state_supplement/ca_state_supplement.yaml | 105 +++++++++++ ...pplement_medical_care_facility_amount.yaml | 20 ++ ...ment_out_of_home_care_facility_amount.yaml | 20 ++ .../ca/cdss/state_supplement/integration.yaml | 176 ++++++++++++++++++ ...unearned_income_state_ssi_supplements.yaml | 8 +- .../income/spm_unit/spm_unit_benefits.yaml | 10 +- ...est_ca_state_supplement_2026_properties.py | 124 ++++++++++++ 19 files changed, 511 insertions(+), 9 deletions(-) create mode 100644 changelog.d/ca-ssp-2026-payment-standards.fixed.md create mode 100644 policyengine_us/tests/unit/test_ca_state_supplement_2026_properties.py diff --git a/changelog.d/ca-ssp-2026-payment-standards.fixed.md b/changelog.d/ca-ssp-2026-payment-standards.fixed.md new file mode 100644 index 00000000000..14d70f50ebc --- /dev/null +++ b/changelog.d/ca-ssp-2026-payment-standards.fixed.md @@ -0,0 +1 @@ +Add California's 2026 SSI/SSP payment standards (effective January 1, 2026) so 2026 no longer reuses the 2025 amounts. diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/married.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/married.yaml index 9aa1e773658..03e9fbb5a81 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/married.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/married.yaml @@ -8,6 +8,11 @@ metadata: href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=12200 - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 + - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California couple payment levels + href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2b values: 1991-01-01: 1_167 2025-01-01: 2_057.83 + 2026-01-01: 2_098.83 diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/single.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/single.yaml index 6df2c9e37ca..9ce89ed8a09 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/single.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/single.yaml @@ -8,6 +8,11 @@ metadata: href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=12200 - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 + - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California recipient payment levels + href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2a values: 1991-01-01: 630 2025-01-01: 1_206.94 + 2026-01-01: 1_233.94 diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/married.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/married.yaml index 422688b9a69..ef2656066c0 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/married.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/married.yaml @@ -8,6 +8,11 @@ metadata: href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=12200 - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 + - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California couple payment levels + href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2b values: 1991-01-01: 136 2025-01-01: 257.74 # $2,315.57 - $2,057.83 + 2026-01-01: 257.74 # $2,356.57 - $2,098.83 diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/single.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/single.yaml index 3b126f88e17..9f1ad7fa9ac 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/single.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/single.yaml @@ -8,6 +8,11 @@ metadata: href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=12200 - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 + - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California recipient payment levels + href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2a values: 1991-01-01: 68 2025-01-01: 128.87 # $1,335.81 - $1,206.94 + 2026-01-01: 128.87 # $1,362.81 - $1,233.94 diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/medical_care_facility.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/medical_care_facility.yaml index e3afbee8378..3407b8e7c27 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/medical_care_facility.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/medical_care_facility.yaml @@ -8,6 +8,11 @@ metadata: href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=12200 - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 + - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California recipient payment levels + href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2a values: 1991-01-01: 42 # $30 + $12 2025-01-01: 62 + 2026-01-01: 62 diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/out_of_home_care.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/out_of_home_care.yaml index bff0851588e..d3de2d6dd52 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/out_of_home_care.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/out_of_home_care.yaml @@ -8,6 +8,15 @@ metadata: href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=12200 - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 + - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California couple payment levels + href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2b + - title: California Department of Social Services, Local Assistance Estimates, 2026 May Revision reference documents, SSI/SSP Payment Standards + href: https://cdss.ca.gov/Portals/9/Additional-Resources/Fiscal-and-Financial-Information/LOcal-Assistance-Estimates/2026-27/Revisions/2026-may-revision-reference-documents.pdf#page=26 values: 1991-01-01: 709 2025-01-01: 1_140.31 # $3,198.14 - $2,057.83 + # The couple rate is twice the individual rate, 2 x $1,626.07 = $3,252.14, per SSA POMS + # and the CDSS 2026 May Revision; the CDSS monthly payment amounts table lists $3,239.14. + 2026-01-01: 1_153.31 # $3,252.14 - $2,098.83 diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/one_blind.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/one_blind.yaml index 7bcdfa2f523..75d8084bd97 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/one_blind.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/one_blind.yaml @@ -8,6 +8,11 @@ metadata: href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=12200 - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 + - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California couple payment levels + href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2b values: 1991-01-01: 1_295 2025-01-01: 2_197.44 + 2026-01-01: 2_238.44 diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/two_blind.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/two_blind.yaml index 555defbf261..e5a1bf4addd 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/two_blind.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/two_blind.yaml @@ -8,6 +8,11 @@ metadata: href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=12200 - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 + - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California couple payment levels + href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2b values: 1991-01-01: 1_372 2025-01-01: 2_283.35 + 2026-01-01: 2_324.35 diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/single.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/single.yaml index 3f02ce00a55..846a4f86490 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/single.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/single.yaml @@ -8,6 +8,11 @@ metadata: href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=12200 - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 + - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California recipient payment levels + href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2a values: 1991-01-01: 704 2025-01-01: 1_291.32 + 2026-01-01: 1_318.32 diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/dependent/amount.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/dependent/amount.yaml index 9b5a509983e..70214b69eee 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/dependent/amount.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/dependent/amount.yaml @@ -8,6 +8,11 @@ metadata: href: https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=WIC§ionNum=12200 - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 + - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California recipient payment levels + href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2a values: 1991-01-01: 499 2025-01-01: 1_064.27 + 2026-01-01: 1_091.27 diff --git a/policyengine_us/programs.yaml b/policyengine_us/programs.yaml index 81c10bc47b6..99c02ef56bf 100644 --- a/policyengine_us/programs.yaml +++ b/policyengine_us/programs.yaml @@ -868,6 +868,8 @@ programs: name: California SSP full_name: California State Supplementary Payment variable: ca_state_supplement + parameter_prefix: gov.states.ca.cdss.state_supplement + verified_years: "2025-2026" - state: CT status: complete name: Connecticut SSP diff --git a/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement.yaml b/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement.yaml index 25476660edf..974b608d332 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement.yaml @@ -39,3 +39,108 @@ output: ca_state_supplement_eligible_person: true ca_state_supplement: 4_101.72 + +# 2026: federal SSI is $994 (individual) and $1,491 (couple); the California +# payment standard is $1,233.94 (individual) and $2,098.83 (couple), per CDSS, +# SSI Total Monthly Payment Amounts 2026, and SSA POMS SI 01415.058. +- name: 2026 aged individual living independently with no income + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + immigration_status: CITIZEN + spm_units: + spm_unit: + members: [person1] + households: + household: + members: [person1] + state_code: CA + living_arrangements_allow_for_food_preparation: true + output: + ssi: 11_928 # 994 * 12 + ca_state_supplement_payment_standard: 14_807.28 # 1,233.94 * 12 + ca_state_supplement: 2_879.28 # (1,233.94 - 994) * 12 + +- name: 2026 aged couple living independently with no income + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + immigration_status: CITIZEN + person2: + age: 68 + is_tax_unit_spouse: true + immigration_status: CITIZEN + tax_units: + tax_unit: + members: [person1, person2] + marital_units: + marital_unit: + members: [person1, person2] + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + living_arrangements_allow_for_food_preparation: true + output: + ssi: [8_946, 8_946] # 1,491 * 12 / 2 + ca_state_supplement_payment_standard: 25_185.96 # 2,098.83 * 12 + ca_state_supplement: 7_293.96 # (2,098.83 - 1,491) * 12 + +- name: 2026 aged individual with Social Security below the federal benefit rate + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + immigration_status: CITIZEN + social_security_retirement: 6_000 # 500 a month + spm_units: + spm_unit: + members: [person1] + households: + household: + members: [person1] + state_code: CA + living_arrangements_allow_for_food_preparation: true + output: + # Countable income is 500 - 20 = 480 a month, so SSI is 994 - 480 = 514. + ssi: 6_168 # 514 * 12 + # The supplement is 1,233.94 - 514 - 480 = 239.94 a month. + ca_state_supplement: 2_879.28 # 239.94 * 12 + +- name: 2026 aged individual with Social Security above the federal benefit rate + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + immigration_status: CITIZEN + social_security_retirement: 13_200 # 1,100 a month + spm_units: + spm_unit: + members: [person1] + households: + household: + members: [person1] + state_code: CA + living_arrangements_allow_for_food_preparation: true + output: + # Countable income is 1,100 - 20 = 1,080 a month, above the 994 federal + # benefit rate, so SSI is 0 and the supplement is 1,233.94 - 1,080 = 153.94. + ssi: 0 + ca_state_supplement: 1_847.28 # 153.94 * 12 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement_medical_care_facility_amount.yaml b/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement_medical_care_facility_amount.yaml index 00999dd4c97..54788888e2d 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement_medical_care_facility_amount.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement_medical_care_facility_amount.yaml @@ -57,3 +57,23 @@ state_code: CA output: ca_state_supplement_medical_care_facility_amount: 0 + +- name: 2026 one person in medical care facility + period: 2026-01 + input: + people: + person1: + ca_in_medical_care_facility: true + ca_state_supplement_eligible_person: true + person2: + ca_in_medical_care_facility: false + ca_state_supplement_eligible_person: true + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + output: + ca_state_supplement_medical_care_facility_amount: 62 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement_out_of_home_care_facility_amount.yaml b/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement_out_of_home_care_facility_amount.yaml index 796fd177569..e5776e8e252 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement_out_of_home_care_facility_amount.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement_out_of_home_care_facility_amount.yaml @@ -57,3 +57,23 @@ state_code: CA output: ca_state_supplement_out_of_home_care_facility_amount: 0 + +- name: 2026 one person in out of home care facility + period: 2026-01 + input: + people: + person1: + in_out_of_home_care_facility: true + ca_state_supplement_eligible_person: true + person2: + in_out_of_home_care_facility: false + ca_state_supplement_eligible_person: true + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + output: + ca_state_supplement_out_of_home_care_facility_amount: 1_153.31 # 3,252.14 - 2,098.83 diff --git a/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/integration.yaml b/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/integration.yaml index 616e929440b..41c32a8b50b 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/integration.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/integration.yaml @@ -162,3 +162,179 @@ living_arrangements_allow_for_food_preparation: true output: ca_state_supplement_payment_standard: 2_057.83 + +# 2026 payment standards: CDSS, SSI Total Monthly Payment Amounts 2026, and +# SSA POMS SI 01415.058 (California, January 2026). +- name: 2026 single aged person living independently + period: 2026-01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + spm_units: + spm_unit: + members: [person1] + households: + household: + members: [person1] + state_code: CA + living_arrangements_allow_for_food_preparation: true + output: + ca_state_supplement_payment_standard: 1_233.94 + +- name: 2026 single aged person living independently without cooking facilities + period: 2026-01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + spm_units: + spm_unit: + members: [person1] + households: + household: + members: [person1] + state_code: CA + living_arrangements_allow_for_food_preparation: false + output: + ca_state_supplement_food_allowance: 128.87 + ca_state_supplement_payment_standard: 1_362.81 # 1,233.94 + 128.87 + +- name: 2026 single blind person living independently + period: 2026-01 + input: + people: + person1: + age: 40 + is_tax_unit_head: true + is_blind: true + spm_units: + spm_unit: + members: [person1] + households: + household: + members: [person1] + state_code: CA + living_arrangements_allow_for_food_preparation: true + output: + ca_state_supplement_payment_standard: 1_318.32 + +- name: 2026 aged couple living independently + period: 2026-01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + person2: + age: 68 + is_tax_unit_spouse: true + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: CA + living_arrangements_allow_for_food_preparation: true + output: + ca_state_supplement_payment_standard: 2_098.83 + +- name: 2026 aged couple living independently without cooking facilities + period: 2026-01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + person2: + age: 68 + is_tax_unit_spouse: true + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: CA + living_arrangements_allow_for_food_preparation: false + output: + ca_state_supplement_food_allowance: 257.74 + ca_state_supplement_payment_standard: 2_356.57 # 2,098.83 + 257.74 + +- name: 2026 couple, both blind, living independently + period: 2026-01 + input: + people: + person1: + age: 50 + is_tax_unit_head: true + is_blind: true + person2: + age: 48 + is_tax_unit_spouse: true + is_blind: true + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: CA + living_arrangements_allow_for_food_preparation: true + output: + ca_state_supplement_payment_standard: 2_324.35 + +- name: 2026 blind person with an aged spouse, living independently + period: 2026-01 + input: + people: + person1: + age: 60 + is_tax_unit_head: true + is_blind: true + person2: + age: 70 + is_tax_unit_spouse: true + spm_units: + spm_unit: + members: [person1, person2] + spm_unit_is_married: true + households: + household: + members: [person1, person2] + state_code: CA + living_arrangements_allow_for_food_preparation: true + output: + ca_state_supplement_payment_standard: 2_238.44 + +- name: 2026 single disabled parent with a disabled child + period: 2026-01 + input: + people: + person1: + age: 30 + is_tax_unit_head: true + is_disabled: true + meets_ssi_disability_criteria: true + person2: + age: 4 + is_tax_unit_dependent: true + is_disabled: true + meets_ssi_disability_criteria: true + spm_units: + spm_unit: + members: [person1, person2] + households: + household: + members: [person1, person2] + state_code: CA + living_arrangements_allow_for_food_preparation: true + output: + ca_state_supplement_dependent_amount: 1_091.27 + ca_state_supplement_payment_standard: 2_325.21 # 1,233.94 + 1,091.27 diff --git a/policyengine_us/tests/policy/baseline/gov/usda/snap/income/snap_unearned_income_state_ssi_supplements.yaml b/policyengine_us/tests/policy/baseline/gov/usda/snap/income/snap_unearned_income_state_ssi_supplements.yaml index 239100abd10..1d0a59b185f 100644 --- a/policyengine_us/tests/policy/baseline/gov/usda/snap/income/snap_unearned_income_state_ssi_supplements.yaml +++ b/policyengine_us/tests/policy/baseline/gov/usda/snap/income/snap_unearned_income_state_ssi_supplements.yaml @@ -16,10 +16,10 @@ state_name: CA output: ssi: 994 - ca_state_supplement: 341.81 + ca_state_supplement: 368.81 # 1,233.94 + 128.87 - 994 # Without the supplement the household's SNAP unearned income would be the # $994 federal SSI benefit alone, and SNAP would be $143. - snap_unearned_income: 1_335.81 + snap_unearned_income: 1_362.81 snap: 24 - name: Massachusetts state supplement counts as SNAP unearned income. @@ -62,8 +62,8 @@ members: [person1, person2] state_name: CA output: - ca_state_supplement: 341.81 - snap_unearned_income: 1_335.81 + ca_state_supplement: 368.81 # 1,233.94 + 128.87 - 994 + snap_unearned_income: 1_362.81 # Indiana pays its Residential Care Assistance Program supplement to the # facility as a per diem. 273.9(b)(2)(i) counts assistance "even if provided in diff --git a/policyengine_us/tests/policy/baseline/household/income/spm_unit/spm_unit_benefits.yaml b/policyengine_us/tests/policy/baseline/household/income/spm_unit/spm_unit_benefits.yaml index 93ecfde2fb4..04f80f558dc 100644 --- a/policyengine_us/tests/policy/baseline/household/income/spm_unit/spm_unit_benefits.yaml +++ b/policyengine_us/tests/policy/baseline/household/income/spm_unit/spm_unit_benefits.yaml @@ -99,11 +99,11 @@ - name: Benefits include California's SSI state supplement. # Single aged Californian, no income, 2026. Monthly payment standard is - # 1,206.94 (aged or disabled, single) + 128.87 (food allowance) = 1,335.81. + # 1,233.94 (aged or disabled, single) + 128.87 (food allowance) = 1,362.81. # Monthly SSI is the 994 federal benefit rate for an individual, and # countable income is zero, so the monthly supplement is - # 1,335.81 - 994 - 0 = 341.81. Annualised: ssi = 994 * 12 = 11,928 and - # ca_state_supplement = 341.81 * 12 = 4,101.72, summing to 16,029.72, + # 1,362.81 - 994 - 0 = 368.81. Annualised: ssi = 994 * 12 = 11,928 and + # ca_state_supplement = 368.81 * 12 = 4,425.72, summing to 16,353.72, # which is the annual payment standard. period: 2026 absolute_error_margin: 0.01 @@ -122,5 +122,5 @@ state_code: CA output: ssi: 11_928 - ca_state_supplement: 4_101.72 - spm_unit_benefits: 16_029.72 + ca_state_supplement: 4_425.72 + spm_unit_benefits: 16_353.72 diff --git a/policyengine_us/tests/unit/test_ca_state_supplement_2026_properties.py b/policyengine_us/tests/unit/test_ca_state_supplement_2026_properties.py new file mode 100644 index 00000000000..e8393bc0f7b --- /dev/null +++ b/policyengine_us/tests/unit/test_ca_state_supplement_2026_properties.py @@ -0,0 +1,124 @@ +"""Properties of California's 2026 SSI state supplement. + +Each test evaluates every point of a Social Security income grid in one +vectorized simulation, for an aged individual or an aged couple living +independently, with and without cooking facilities. The expected payment +levels are the published January 2026 figures, not PolicyEngine parameters: +CDSS, "SSI Total Monthly Payment Amounts 2026", and SSA POMS SI 01415.058 +(California recipient and couple payment levels). + +For every grid point: + +- the supplement matches the reference max(0, standard - max(FBR, countable)); +- SSI, the supplement and countable income sum to max(standard, countable); +- while countable income is at most the federal benefit rate, the supplement + is the state supplement level POMS lists (standard - FBR); +- the supplement is non-negative, at most standard - FBR, and does not rise + with income. +""" + +import numpy as np +import pytest + +from policyengine_us import Simulation + +PERIOD = "2026-01" +YEAR = 2026 + +# SSI's $20 general income exclusion, 20 CFR 416.1124(c)(12). +GENERAL_EXCLUSION = 20 + +# Monthly Social Security amounts around the federal benefit rate and the +# California payment standards. +MONTHLY_SOCIAL_SECURITY = np.array( + [ + 0, + 1, + 20, + 21, + 500, + 1_013, + 1_014, + 1_015, + 1_100, + 1_253.94, + 1_382.81, + 1_511, + 2_118.83, + 2_376.57, + 2_500, + 5_000, + ] +) + +# (federal benefit rate, payment standard with cooking facilities, payment +# standard without cooking facilities), monthly, January 2026. +LEVELS = { + "individual": (994, 1_233.94, 1_362.81), + "couple": (1_491, 2_098.83, 2_356.57), +} + + +def grid_simulation(unit, cooking): + """One aged household per grid point; the head receives the income.""" + situation = { + "people": {}, + "tax_units": {}, + "marital_units": {}, + "spm_units": {}, + "households": {}, + } + for i, monthly in enumerate(MONTHLY_SOCIAL_SECURITY): + head = f"head{i}" + members = [head] + situation["people"][head] = { + "age": {YEAR: 70}, + "social_security_retirement": {YEAR: float(monthly) * 12}, + } + if unit == "couple": + spouse = f"spouse{i}" + members.append(spouse) + situation["people"][spouse] = {"age": {YEAR: 68}} + situation["tax_units"][f"t{i}"] = {"members": members} + situation["marital_units"][f"m{i}"] = {"members": members} + situation["spm_units"][f"s{i}"] = {"members": members} + situation["households"][f"h{i}"] = { + "members": members, + "state_code": {YEAR: "CA"}, + "living_arrangements_allow_for_food_preparation": {YEAR: cooking}, + } + return Simulation(situation=situation) + + +@pytest.mark.parametrize("unit", ["individual", "couple"]) +@pytest.mark.parametrize("cooking", [True, False]) +def test_ca_state_supplement_2026_properties(unit, cooking): + fbr, with_cooking, without_cooking = LEVELS[unit] + standard = with_cooking if cooking else without_cooking + sim = grid_simulation(unit, cooking) + + countable = np.maximum(MONTHLY_SOCIAL_SECURITY - GENERAL_EXCLUSION, 0) + ssi = sim.calculate("ssi", PERIOD) + ssi = ssi.reshape(len(MONTHLY_SOCIAL_SECURITY), -1).sum(axis=1) + supplement = sim.calculate("ca_state_supplement", PERIOD) + payment_standard = sim.calculate("ca_state_supplement_payment_standard", PERIOD) + + np.testing.assert_allclose(payment_standard, standard, atol=0.01) + np.testing.assert_allclose(ssi, np.maximum(fbr - countable, 0), atol=0.01) + reference = np.maximum(0, standard - np.maximum(fbr, countable)) + np.testing.assert_allclose(supplement, reference, atol=0.01) + np.testing.assert_allclose( + ssi + supplement + countable, + np.maximum(standard, countable), + atol=0.01, + ) + + below_fbr = countable <= fbr + np.testing.assert_allclose(supplement[below_fbr], standard - fbr, atol=0.01) + assert np.all(supplement >= 0) + assert np.all(supplement <= standard - fbr + 0.01) + assert np.all(np.diff(supplement) <= 0.01), "rises with income" + # Guard against a vacuous pass: the grid reaches both sides of the + # federal benefit rate and income above the payment standard. + assert below_fbr.any() and (~below_fbr).any() + assert (supplement == 0).any() and (supplement > 0).any() From 5443dee6136a7ba8c84b80b90d24365acef43ebf Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Wed, 30 Sep 2026 11:04:31 -0400 Subject: [PATCH 2/4] Clarify the out-of-home care source note and record CA SSP gaps Attribute the couple doubling rule to the CDSS 2026 May Revision, which states it, and add a programs.yaml note that facility and household-of-another standards are not yet modeled correctly (#7892). Co-Authored-By: Claude Opus 5.5 --- .../payment_standard/allowance/out_of_home_care.yaml | 4 ++-- policyengine_us/programs.yaml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/out_of_home_care.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/out_of_home_care.yaml index d3de2d6dd52..25c9d44110d 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/out_of_home_care.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/out_of_home_care.yaml @@ -17,6 +17,6 @@ metadata: values: 1991-01-01: 709 2025-01-01: 1_140.31 # $3,198.14 - $2,057.83 - # The couple rate is twice the individual rate, 2 x $1,626.07 = $3,252.14, per SSA POMS - # and the CDSS 2026 May Revision; the CDSS monthly payment amounts table lists $3,239.14. + # SSA POMS and the CDSS 2026 May Revision list $3,252.14 for couples; the May Revision + # doubles the individual rate (2 x $1,626.07). The CDSS monthly payment table lists $3,239.14. 2026-01-01: 1_153.31 # $3,252.14 - $2,098.83 diff --git a/policyengine_us/programs.yaml b/policyengine_us/programs.yaml index 99c02ef56bf..6331b8a24ae 100644 --- a/policyengine_us/programs.yaml +++ b/policyengine_us/programs.yaml @@ -870,6 +870,7 @@ programs: variable: ca_state_supplement parameter_prefix: gov.states.ca.cdss.state_supplement verified_years: "2025-2026" + notes: Payment standards verified against CDSS and SSA POMS SI 01415.057/.058 for independent living, no cooking facilities, blind, and disabled minor categories. Not modeled correctly - non-medical out-of-home care and Medicaid facility standards are added to the independent-living standard instead of replacing it, and household-of-another (reduced needs) standards are not modeled (issue 7892) - state: CT status: complete name: Connecticut SSP From a02483d8e3a27c4f7d370f47380b80b330518c80 Mon Sep 17 00:00:00 2001 From: Ziming Date: Thu, 8 Oct 2026 20:50:56 -0400 Subject: [PATCH 3/4] Update CA SSP partner pins to the 2026 payment standards The analytics_coverage CA state supplement fixture computed its 2026 expectations from the 2025-01-01 standards. With the 2026-01-01 standards added in this PR, the aged single, aged couple and earnings cases move to 4,425.72, 10,386.84 and 3,663.72. Team member and API partner notified. Co-Authored-By: Claude Opus 5.5 --- .../edge_cases/state/ca/state_supplement.yaml | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/policyengine_us/tests/policy/baseline/partners/analytics_coverage/edge_cases/state/ca/state_supplement.yaml b/policyengine_us/tests/policy/baseline/partners/analytics_coverage/edge_cases/state/ca/state_supplement.yaml index 918b8efe1ba..4e95fb11a6a 100644 --- a/policyengine_us/tests/policy/baseline/partners/analytics_coverage/edge_cases/state/ca/state_supplement.yaml +++ b/policyengine_us/tests/policy/baseline/partners/analytics_coverage/edge_cases/state/ca/state_supplement.yaml @@ -1,6 +1,6 @@ # CA SSI State Supplementary Payment (SSP) partner edge cases. -# 2026 payment standards (2025-01-01 params): aged/disabled single $1,206.94, -# married (both aged/disabled) $2,057.83; food allowance single $128.87, +# 2026 payment standards (2026-01-01 params): aged/disabled single $1,233.94, +# married (both aged/disabled) $2,098.83; food allowance single $128.87, # married $257.74 (applies when living arrangements do not allow food # preparation, the model default). 2026 SSI FBR: $994 single, $1,491 couple. # SSP = payment standard - SSI - SSI countable income. @@ -41,9 +41,9 @@ output: spm_units: spm_unit: - # Standard: 1,206.94 + 128.87 food = 1,335.81; SSI = 994 FBR (no income). - # SSP: (1,335.81 - 994) x 12 = 341.81 x 12 = 4,101.72. - ca_state_supplement: 4_101.72 + # Standard: 1,233.94 + 128.87 food = 1,362.81; SSI = 994 FBR (no income). + # SSP: (1,362.81 - 994) x 12 = 368.81 x 12 = 4,425.72. + ca_state_supplement: 4_425.72 - name: ca_state_supplement_aged_couple_no_income (ca) period: 2026 absolute_error_margin: 0.1 @@ -91,9 +91,9 @@ output: spm_units: spm_unit: - # Both aged: married standard 2,057.83 + married food 257.74 = 2,315.57; - # SSI couple FBR 1,491. SSP: (2,315.57 - 1,491) x 12 = 824.57 x 12 = 9,894.84. - ca_state_supplement: 9_894.84 + # Both aged: married standard 2,098.83 + married food 257.74 = 2,356.57; + # SSI couple FBR 1,491. SSP: (2,356.57 - 1,491) x 12 = 865.57 x 12 = 10,386.84. + ca_state_supplement: 10_386.84 - name: ca_state_supplement_aged_single_earnings_partial (ca) period: 2026 absolute_error_margin: 0.1 @@ -133,8 +133,8 @@ spm_unit: # $2,200/mo earned: SSI countable = (2,200 - 20 - 65) / 2 = 1,057.50 # > 994 FBR -> federal SSI = 0, but SSP standard is higher: - # SSP: (1,335.81 - 0 - 1,057.50) x 12 = 278.31 x 12 = 3,339.72. - ca_state_supplement: 3_339.72 + # SSP: (1,362.81 - 0 - 1,057.50) x 12 = 305.31 x 12 = 3,663.72. + ca_state_supplement: 3_663.72 - name: ca_state_supplement_resources_above_limit_ineligible (ca) period: 2026 absolute_error_margin: 0.1 From fd91c34aa1cbcac47a1b04eb847c76f0bf7cb8fb Mon Sep 17 00:00:00 2001 From: Ziming Date: Tue, 13 Oct 2026 01:51:49 -0400 Subject: [PATCH 4/4] Move the CA SSP property checks into YAML and tidy references - Replace tests/unit/test_ca_state_supplement_2026_properties.py with two vectorized boundary cases in ca_state_supplement.yaml (Social Security at the federal benefit rate and at each 2026 payment standard). - Number the 2026 cases in ca_state_supplement.yaml. - Drop the page fragment from the one-page CDSS 2026 table. - Name both $3,239.14 sources in out_of_home_care.yaml and cite ACIN I-59-25. - Shorten the CA SSP programs.yaml note. Co-Authored-By: Claude Opus 5.5 --- .../aged_or_disabled/amount/married.yaml | 2 +- .../aged_or_disabled/amount/single.yaml | 2 +- .../allowance/food/married.yaml | 2 +- .../allowance/food/single.yaml | 2 +- .../allowance/medical_care_facility.yaml | 2 +- .../allowance/out_of_home_care.yaml | 9 +- .../blind/married/one_blind.yaml | 2 +- .../blind/married/two_blind.yaml | 2 +- .../payment_standard/blind/single.yaml | 2 +- .../payment_standard/dependent/amount.yaml | 2 +- policyengine_us/programs.yaml | 2 +- .../state_supplement/ca_state_supplement.yaml | 219 +++++++++++++++++- ...est_ca_state_supplement_2026_properties.py | 124 ---------- 13 files changed, 231 insertions(+), 141 deletions(-) delete mode 100644 policyengine_us/tests/unit/test_ca_state_supplement_2026_properties.py diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/married.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/married.yaml index 03e9fbb5a81..8233aff4bf0 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/married.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/married.yaml @@ -9,7 +9,7 @@ metadata: - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 - href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California couple payment levels href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2b values: diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/single.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/single.yaml index 9ce89ed8a09..2d80ac0a150 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/single.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/aged_or_disabled/amount/single.yaml @@ -9,7 +9,7 @@ metadata: - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 - href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California recipient payment levels href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2a values: diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/married.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/married.yaml index ef2656066c0..bcbb10ca8f8 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/married.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/married.yaml @@ -9,7 +9,7 @@ metadata: - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 - href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California couple payment levels href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2b values: diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/single.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/single.yaml index 9f1ad7fa9ac..955f20b272f 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/single.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/food/single.yaml @@ -9,7 +9,7 @@ metadata: - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 - href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California recipient payment levels href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2a values: diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/medical_care_facility.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/medical_care_facility.yaml index 3407b8e7c27..cf68c126f2c 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/medical_care_facility.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/medical_care_facility.yaml @@ -9,7 +9,7 @@ metadata: - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 - href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California recipient payment levels href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2a values: diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/out_of_home_care.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/out_of_home_care.yaml index 25c9d44110d..fde406e33b6 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/out_of_home_care.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/allowance/out_of_home_care.yaml @@ -9,14 +9,17 @@ metadata: - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 - href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California couple payment levels href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2b - title: California Department of Social Services, Local Assistance Estimates, 2026 May Revision reference documents, SSI/SSP Payment Standards href: https://cdss.ca.gov/Portals/9/Additional-Resources/Fiscal-and-Financial-Information/LOcal-Assistance-Estimates/2026-27/Revisions/2026-may-revision-reference-documents.pdf#page=26 + - title: California Department of Social Services, All County Information Notice I-59-25, CAPI payment standards for January 2026 + href: https://cdss.ca.gov/Portals/9/Additional-Resources/Letters-and-Notices/ACINs/2025/I-59_25.pdf#page=5 values: 1991-01-01: 709 2025-01-01: 1_140.31 # $3,198.14 - $2,057.83 - # SSA POMS and the CDSS 2026 May Revision list $3,252.14 for couples; the May Revision - # doubles the individual rate (2 x $1,626.07). The CDSS monthly payment table lists $3,239.14. + # SSA POMS, the CDSS 2026 May Revision and ACIN I-59-25 list $3,252.14 for couples, + # twice the $1,626.07 individual rate (WIC 12200(g) sets the amount per recipient). + # The CDSS monthly payment table and SSA pamphlet EN-05-11125 list $3,239.14. 2026-01-01: 1_153.31 # $3,252.14 - $2,098.83 diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/one_blind.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/one_blind.yaml index 75d8084bd97..74e32930293 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/one_blind.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/one_blind.yaml @@ -9,7 +9,7 @@ metadata: - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 - href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California couple payment levels href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2b values: diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/two_blind.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/two_blind.yaml index e5a1bf4addd..19f6d2ed2ff 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/two_blind.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/married/two_blind.yaml @@ -9,7 +9,7 @@ metadata: - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 - href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California couple payment levels href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2b values: diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/single.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/single.yaml index 846a4f86490..96c43d79046 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/single.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/blind/single.yaml @@ -9,7 +9,7 @@ metadata: - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 - href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California recipient payment levels href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2a values: diff --git a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/dependent/amount.yaml b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/dependent/amount.yaml index 70214b69eee..cab5930dc19 100644 --- a/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/dependent/amount.yaml +++ b/policyengine_us/parameters/gov/states/ca/cdss/state_supplement/payment_standard/dependent/amount.yaml @@ -9,7 +9,7 @@ metadata: - title: Supplemental Security Income (SSI) in California href: https://www.ssa.gov/pubs/EN-05-11125.pdf#page=2 - title: California Department of Social Services, SSI Total Monthly Payment Amounts 2026 - href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf#page=1 + href: https://cdss.ca.gov/Portals/13/SHD/ParaRegIndex/SSI%20Monthly%20Payment%20Amounts%202026.pdf - title: SSA POMS SI 01415.058 - Federally Administered Optional Supplementary Payment Programs for January 2026, California recipient payment levels href: https://secure.ssa.gov/apps10/poms.nsf/lnx/0501415058#b2a values: diff --git a/policyengine_us/programs.yaml b/policyengine_us/programs.yaml index 5246f444609..5250ab3aa89 100644 --- a/policyengine_us/programs.yaml +++ b/policyengine_us/programs.yaml @@ -955,7 +955,7 @@ programs: variable: ca_state_supplement parameter_prefix: gov.states.ca.cdss.state_supplement verified_years: "2025-2026" - notes: Payment standards verified against CDSS and SSA POMS SI 01415.057/.058 for independent living, no cooking facilities, blind, and disabled minor categories. Not modeled correctly - non-medical out-of-home care and Medicaid facility standards are added to the independent-living standard instead of replacing it, and household-of-another (reduced needs) standards are not modeled (issue 7892) + notes: Payment standards verified for independent living, no cooking facilities, blind and disabled minor categories. Facility and household-of-another arrangements are not verified (issue 7892). - state: CT status: complete name: Connecticut SSP diff --git a/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement.yaml b/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement.yaml index 974b608d332..12c7afb14ea 100644 --- a/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement.yaml +++ b/policyengine_us/tests/policy/baseline/gov/states/ca/cdss/state_supplement/ca_state_supplement.yaml @@ -43,7 +43,7 @@ # 2026: federal SSI is $994 (individual) and $1,491 (couple); the California # payment standard is $1,233.94 (individual) and $2,098.83 (couple), per CDSS, # SSI Total Monthly Payment Amounts 2026, and SSA POMS SI 01415.058. -- name: 2026 aged individual living independently with no income +- name: Case 4, 2026 aged individual living independently with no income. period: 2026 absolute_error_margin: 0.01 input: @@ -65,7 +65,7 @@ ca_state_supplement_payment_standard: 14_807.28 # 1,233.94 * 12 ca_state_supplement: 2_879.28 # (1,233.94 - 994) * 12 -- name: 2026 aged couple living independently with no income +- name: Case 5, 2026 aged couple living independently with no income. period: 2026 absolute_error_margin: 0.01 input: @@ -97,7 +97,7 @@ ca_state_supplement_payment_standard: 25_185.96 # 2,098.83 * 12 ca_state_supplement: 7_293.96 # (2,098.83 - 1,491) * 12 -- name: 2026 aged individual with Social Security below the federal benefit rate +- name: Case 6, 2026 aged individual with Social Security below the federal benefit rate. period: 2026 absolute_error_margin: 0.01 input: @@ -121,7 +121,7 @@ # The supplement is 1,233.94 - 514 - 480 = 239.94 a month. ca_state_supplement: 2_879.28 # 239.94 * 12 -- name: 2026 aged individual with Social Security above the federal benefit rate +- name: Case 7, 2026 aged individual with Social Security above the federal benefit rate. period: 2026 absolute_error_margin: 0.01 input: @@ -144,3 +144,214 @@ # benefit rate, so SSI is 0 and the supplement is 1,233.94 - 1,080 = 153.94. ssi: 0 ca_state_supplement: 1_847.28 # 153.94 * 12 + +# Boundary points at the federal benefit rate and the payment standards. The +# no-cooking standards are $1,362.81 (individual) and $2,356.57 (couple), per +# CDSS, SSI Total Monthly Payment Amounts 2026, and SSA POMS SI 01415.058. +- name: Case 8, 2026 aged individuals at the federal benefit rate and payment standard boundaries. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + immigration_status: CITIZEN + social_security_retirement: 12_156 # 1,013 a month + person2: + age: 70 + is_tax_unit_head: true + immigration_status: CITIZEN + social_security_retirement: 12_168 # 1,014 a month + person3: + age: 70 + is_tax_unit_head: true + immigration_status: CITIZEN + social_security_retirement: 12_180 # 1,015 a month + person4: + age: 70 + is_tax_unit_head: true + immigration_status: CITIZEN + social_security_retirement: 15_047.28 # 1,253.94 a month + person5: + age: 70 + is_tax_unit_head: true + immigration_status: CITIZEN + social_security_retirement: 12_180 # 1,015 a month + person6: + age: 70 + is_tax_unit_head: true + immigration_status: CITIZEN + social_security_retirement: 16_593.72 # 1,382.81 a month + tax_units: + tax_unit1: + members: [person1] + tax_unit2: + members: [person2] + tax_unit3: + members: [person3] + tax_unit4: + members: [person4] + tax_unit5: + members: [person5] + tax_unit6: + members: [person6] + marital_units: + marital_unit1: + members: [person1] + marital_unit2: + members: [person2] + marital_unit3: + members: [person3] + marital_unit4: + members: [person4] + marital_unit5: + members: [person5] + marital_unit6: + members: [person6] + spm_units: + spm_unit1: + members: [person1] + spm_unit2: + members: [person2] + spm_unit3: + members: [person3] + spm_unit4: + members: [person4] + spm_unit5: + members: [person5] + spm_unit6: + members: [person6] + households: + household1: + members: [person1] + state_code: CA + living_arrangements_allow_for_food_preparation: true + household2: + members: [person2] + state_code: CA + living_arrangements_allow_for_food_preparation: true + household3: + members: [person3] + state_code: CA + living_arrangements_allow_for_food_preparation: true + household4: + members: [person4] + state_code: CA + living_arrangements_allow_for_food_preparation: true + household5: + members: [person5] + state_code: CA + living_arrangements_allow_for_food_preparation: false + household6: + members: [person6] + state_code: CA + living_arrangements_allow_for_food_preparation: false + output: + # Countable income is Social Security less $20: 993, 994, 995, 1,233.94, + # 995 and 1,362.81 a month. SSI is 994 - 993 = 1 a month for person1 and 0 + # for the rest. + ssi: [12, 0, 0, 0, 0, 0] + ca_state_supplement_payment_standard: + [14_807.28, 14_807.28, 14_807.28, 14_807.28, 16_353.72, 16_353.72] + # The supplement is the standard less SSI and countable income: + # 1,233.94 - 1 - 993 = 239.94; 1,233.94 - 994 = 239.94; 1,233.94 - 995 = + # 238.94; 1,233.94 - 1,233.94 = 0; 1,362.81 - 995 = 367.81; + # 1,362.81 - 1,362.81 = 0. Annual amounts are 12 times these. + ca_state_supplement: [2_879.28, 2_879.28, 2_867.28, 0, 4_413.72, 0] + +- name: Case 9, 2026 aged couples at the federal benefit rate and payment standard boundaries. + period: 2026 + absolute_error_margin: 0.01 + input: + people: + person1: + age: 70 + is_tax_unit_head: true + immigration_status: CITIZEN + social_security_retirement: 18_132 # 1,511 a month + person2: + age: 68 + is_tax_unit_spouse: true + immigration_status: CITIZEN + person3: + age: 70 + is_tax_unit_head: true + immigration_status: CITIZEN + social_security_retirement: 25_425.96 # 2,118.83 a month + person4: + age: 68 + is_tax_unit_spouse: true + immigration_status: CITIZEN + person5: + age: 70 + is_tax_unit_head: true + immigration_status: CITIZEN + social_security_retirement: 25_425.96 # 2,118.83 a month + person6: + age: 68 + is_tax_unit_spouse: true + immigration_status: CITIZEN + person7: + age: 70 + is_tax_unit_head: true + immigration_status: CITIZEN + social_security_retirement: 28_518.84 # 2,376.57 a month + person8: + age: 68 + is_tax_unit_spouse: true + immigration_status: CITIZEN + tax_units: + tax_unit1: + members: [person1, person2] + tax_unit2: + members: [person3, person4] + tax_unit3: + members: [person5, person6] + tax_unit4: + members: [person7, person8] + marital_units: + marital_unit1: + members: [person1, person2] + marital_unit2: + members: [person3, person4] + marital_unit3: + members: [person5, person6] + marital_unit4: + members: [person7, person8] + spm_units: + spm_unit1: + members: [person1, person2] + spm_unit2: + members: [person3, person4] + spm_unit3: + members: [person5, person6] + spm_unit4: + members: [person7, person8] + households: + household1: + members: [person1, person2] + state_code: CA + living_arrangements_allow_for_food_preparation: true + household2: + members: [person3, person4] + state_code: CA + living_arrangements_allow_for_food_preparation: true + household3: + members: [person5, person6] + state_code: CA + living_arrangements_allow_for_food_preparation: false + household4: + members: [person7, person8] + state_code: CA + living_arrangements_allow_for_food_preparation: false + output: + # The couple's countable income is 1,491, 2,098.83, 2,098.83 and 2,356.57 + # a month, each at or above the 1,491 couple federal benefit rate, so SSI + # is 0. + ssi: [0, 0, 0, 0, 0, 0, 0, 0] + ca_state_supplement_payment_standard: [25_185.96, 25_185.96, 28_278.84, 28_278.84] + # The supplement is the standard less countable income: + # 2,098.83 - 1,491 = 607.83; 2,098.83 - 2,098.83 = 0; + # 2,356.57 - 2,098.83 = 257.74; 2,356.57 - 2,356.57 = 0. + ca_state_supplement: [7_293.96, 0, 3_092.88, 0] diff --git a/policyengine_us/tests/unit/test_ca_state_supplement_2026_properties.py b/policyengine_us/tests/unit/test_ca_state_supplement_2026_properties.py deleted file mode 100644 index e8393bc0f7b..00000000000 --- a/policyengine_us/tests/unit/test_ca_state_supplement_2026_properties.py +++ /dev/null @@ -1,124 +0,0 @@ -"""Properties of California's 2026 SSI state supplement. - -Each test evaluates every point of a Social Security income grid in one -vectorized simulation, for an aged individual or an aged couple living -independently, with and without cooking facilities. The expected payment -levels are the published January 2026 figures, not PolicyEngine parameters: -CDSS, "SSI Total Monthly Payment Amounts 2026", and SSA POMS SI 01415.058 -(California recipient and couple payment levels). - -For every grid point: - -- the supplement matches the reference max(0, standard - max(FBR, countable)); -- SSI, the supplement and countable income sum to max(standard, countable); -- while countable income is at most the federal benefit rate, the supplement - is the state supplement level POMS lists (standard - FBR); -- the supplement is non-negative, at most standard - FBR, and does not rise - with income. -""" - -import numpy as np -import pytest - -from policyengine_us import Simulation - -PERIOD = "2026-01" -YEAR = 2026 - -# SSI's $20 general income exclusion, 20 CFR 416.1124(c)(12). -GENERAL_EXCLUSION = 20 - -# Monthly Social Security amounts around the federal benefit rate and the -# California payment standards. -MONTHLY_SOCIAL_SECURITY = np.array( - [ - 0, - 1, - 20, - 21, - 500, - 1_013, - 1_014, - 1_015, - 1_100, - 1_253.94, - 1_382.81, - 1_511, - 2_118.83, - 2_376.57, - 2_500, - 5_000, - ] -) - -# (federal benefit rate, payment standard with cooking facilities, payment -# standard without cooking facilities), monthly, January 2026. -LEVELS = { - "individual": (994, 1_233.94, 1_362.81), - "couple": (1_491, 2_098.83, 2_356.57), -} - - -def grid_simulation(unit, cooking): - """One aged household per grid point; the head receives the income.""" - situation = { - "people": {}, - "tax_units": {}, - "marital_units": {}, - "spm_units": {}, - "households": {}, - } - for i, monthly in enumerate(MONTHLY_SOCIAL_SECURITY): - head = f"head{i}" - members = [head] - situation["people"][head] = { - "age": {YEAR: 70}, - "social_security_retirement": {YEAR: float(monthly) * 12}, - } - if unit == "couple": - spouse = f"spouse{i}" - members.append(spouse) - situation["people"][spouse] = {"age": {YEAR: 68}} - situation["tax_units"][f"t{i}"] = {"members": members} - situation["marital_units"][f"m{i}"] = {"members": members} - situation["spm_units"][f"s{i}"] = {"members": members} - situation["households"][f"h{i}"] = { - "members": members, - "state_code": {YEAR: "CA"}, - "living_arrangements_allow_for_food_preparation": {YEAR: cooking}, - } - return Simulation(situation=situation) - - -@pytest.mark.parametrize("unit", ["individual", "couple"]) -@pytest.mark.parametrize("cooking", [True, False]) -def test_ca_state_supplement_2026_properties(unit, cooking): - fbr, with_cooking, without_cooking = LEVELS[unit] - standard = with_cooking if cooking else without_cooking - sim = grid_simulation(unit, cooking) - - countable = np.maximum(MONTHLY_SOCIAL_SECURITY - GENERAL_EXCLUSION, 0) - ssi = sim.calculate("ssi", PERIOD) - ssi = ssi.reshape(len(MONTHLY_SOCIAL_SECURITY), -1).sum(axis=1) - supplement = sim.calculate("ca_state_supplement", PERIOD) - payment_standard = sim.calculate("ca_state_supplement_payment_standard", PERIOD) - - np.testing.assert_allclose(payment_standard, standard, atol=0.01) - np.testing.assert_allclose(ssi, np.maximum(fbr - countable, 0), atol=0.01) - reference = np.maximum(0, standard - np.maximum(fbr, countable)) - np.testing.assert_allclose(supplement, reference, atol=0.01) - np.testing.assert_allclose( - ssi + supplement + countable, - np.maximum(standard, countable), - atol=0.01, - ) - - below_fbr = countable <= fbr - np.testing.assert_allclose(supplement[below_fbr], standard - fbr, atol=0.01) - assert np.all(supplement >= 0) - assert np.all(supplement <= standard - fbr + 0.01) - assert np.all(np.diff(supplement) <= 0.01), "rises with income" - # Guard against a vacuous pass: the grid reaches both sides of the - # federal benefit rate and income above the payment standard. - assert below_fbr.any() and (~below_fbr).any() - assert (supplement == 0).any() and (supplement > 0).any()