Skip to content

SSI anchors treat adults who receive SSI only on behalf of a child as disabled SSI claimants #1313

Open

Description

@MaxGhenis

What happens

Three US base-build stages treat any positive CPS ASEC SSI_VAL as the respondent's own SSI receipt:

  • ssi_take_up anchors the person as a claimant (us_ssi_take_up_reporter_source_ids).
  • ssi_disability_criteria anchors meets_ssi_disability_criteria for under-65 ASEC reporters (_reported_ssi_anchor).
  • eligibility_inputs aligns is_disabled for under-65 reporters (eligibility_inputs.py:402-406).

ASEC also records SSI that an adult receives on behalf of a child. RESNSSI1/RESNSSI2 codes 3 and 4 mean "on behalf of a disabled child" and "on behalf of a blind child" (2024 ASEC data dictionary, https://www2.census.gov/programs-surveys/cps/techdocs/cpsmar24.pdf; questionnaire item SSIR). That adult is the payee, and the amount on their record is the child's benefit.

On the pinned default (populace_us_2024.h5, sha 6496cc43…), 133 reporter rows report only codes 3 and/or 4. That is 446,000 weighted people in 2024 and 454,000 in 2026; the median age is 39, and 92% live with a child under 18. Measured with PolicyEngine-US fab18b7d6b in 2026:

Payee-only reporters Weighted
People 454,000
With meets_ssi_disability_criteria 270,000
Paid modeled SSI themselves 162,000 ($1.51B a year)
Reported (child's) SSI $3.85B

So the model pays some parents SSI as if they were disabled adults, while the child who actually receives SSI is unmarked. ASEC asks SSI only of people aged 15 and older, so the child under 15 has no SSI record of their own. This feeds the child gap in #453.

Evidence: #1312 (docs/evidence/us-reported-ssi-receipt/, the payee_only block of summary_aggregates.json).

Suggested fix (attributes only)

  1. Use one shared reporter predicate: positive SSI_VAL with at least one own reason (1, 2 or 5) or no reason recorded. Carry ASEC reported SSI receipt as receives_ssi in the US build #1312 adds it as cps_carried.reported_ssi_receipt; the take-up anchor, the disability-criteria anchor and the is_disabled alignment should all use it.
  2. Treat a payee-only adult as a non-reporter: drawn by the take-up prior, with criteria from the SIPP model.
  3. Optionally, attribute the on-behalf payment to a child in the family when exactly one candidate child exists. This is a modeling choice for the child SSI stage (Child SSI structurally absent: ages 0–14 have no disability signal (baseline child SSI 0.12M vs SSA 0.98M); seed qualifying disability per the #430 pattern #453/Add SIPP child qualifying-disability stage (ages 0–14) so child SSI is representable (#453) #509), not a direct mapping.

Acceptance

  • No payee-only adult carries a source-anchored meets_ssi_disability_criteria, is_disabled alignment or take-up anchor.
  • SSA age-band delivery (us_ssi_take_up_delivery_gate) does not regress.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions