PolicyEngine / PolicyEngine/microcosm
SSI candidate undercount: modeled eligible mass far below SSA recipient counts
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 0
- Forks
- 4
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 94
Description
Surfaced by the Build M sparse run's SSI take-up gate (fixed mechanically in #423) and consistent with the local-area artifact's SSI measurement gap ($52.5B/5.23M vs SSA's 7.40M recipients).
The numbers (Build M runner agent's decomposition, base-r5, 2026-07-13)
- Modeled
uncapped_ssi > 0rate: 0.6% (selected 57,240 support) to 1.2% (full pool with SCF wealth) of persons — roughly 2M scaled, versus SSA December-2024 recipients of 7,404,820 (under_18: 1,001,922; 18-64: 3,905,779; 65+: 2,382,142). - Per SSA age band, modeled candidate capacity falls short of the target in every band (the saturation that tripped the take-up gate).
- Decomposition of
is_ssi_eligiblelegs on base-r5:is_ssi_aged_blind_disabledhealthy (aged ~20.6%, is_disabled 10.5%, is_blind 1.5%);meets_ssi_resource_testpasses 65.8% (SCF-imputedssi_countable_resources: 39.9% nonzero, median-nonzero $22,200 — byte-identical to Build J's, so not a regression); the income test and the SIPP disability-criteria stage then cut the remainder.
Candidate directions (architecture week)
- Disability-criteria strictness: the SIPP-seeded
meets_ssi_disability_criteriareplaces the engine-default universal flag — measure its pass rate among SSA-consistent populations vs administrative award data. - Income-test binding: imputed income floors for aged/disabled low-income households (e.g., Social Security amounts) may exceed SSI countable-income thresholds too often relative to reality.
- Resource-test calibration: SCF-imputed resources for the SSI-relevant population (median $22k among holders) vs SIPP/administrative asset distributions of actual SSI recipients (who must hold <$2k/$3k).
- Structural: actual recipiency includes protected/grandfathered cases and state supplements the December-eligibility computation doesn't model.
The #404 SSI-recipients calibration targets (national + 51 states, exact SSA counts) will pull weight toward the candidates that do exist, but calibration cannot manufacture eligible households that the eligibility model rejects — the fix is on the modeling side.
🤖 Generated with Claude Code
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the Build M sparse run and reviewing the SSI eligibility decomposition, especially the disability-criteria, income-test, and resource-test stages. Compare modeled pass rates with the SSA recipient counts and the #404 calibration targets; done means identifying and addressing the modeling-side source of the candidate shortfall rather than relying on calibration alone.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100