Skip to content

PUF clones of under-65 SSI reporters keep the take-up anchor but not the SSI disability-criteria anchor #1314

Open

Description

@MaxGhenis

What happens

ssi_disability_criteria anchors meets_ssi_disability_criteria = True for direct under-65 ASEC SSI_VAL reporters. Its docstring states the anchor "is not copied onto the PUF channel": PUF tax-detail clones get the SIPP QRF prediction instead. The same clones do carry the reporter's SSI_VAL, and the SSI take-up stage anchors them as claimants through person_source_id. A clone is therefore a reported SSI recipient whom the model usually treats as not disabled.

On the pinned default (populace_us_2024.h5, sha 6496cc43…), with PolicyEngine-US fab18b7d6b, 2026, own-reason reporters (excluding on-behalf-of-child payees, #1313):

Channel Under-65 reporters With the criterion Paid modeled SSI
ASEC 2.48M 2.48M (100%) 1.98M of 2.81M reporters
PUF tax detail 1.95M 0.82M (42%) 0.81M of 2.34M reporters

Of the 2.35M own-reason reporters with no modeled payment in January 2026, 1.03M fail only because they are PUF clones under 65 without the criterion. Extending the anchor to those clones (input change only, no recalibration) raises paid reporters from 2.79M to 3.36M, and federal SSI by $6.24B. A rebuild would re-solve the take-up priors against SSA counts, which offsets part of that through fewer non-reporter draws. The stage's composition would then favor people who actually report SSI.

Evidence: #1312 (docs/evidence/us-reported-ssi-receipt/, variant criteria_anchor).

Question

The retired eCPS predicted ASEC and PUF people separately and did not copy the anchor. Is there a reason to keep that now that the take-up anchor is copied by source identity? If not, anchor PUF clones of own-reason under-65 reporters by person_source_id, as the take-up stage does, using the #1313 reporter predicate.

Acceptance

  • Every row whose source person is an own-reason under-65 ASEC reporter carries the criterion on both channels.
  • SSA age-band delivery (us_ssi_take_up_delivery_gate) holds on the rebuilt priors.

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