You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Export parent_1_id / parent_2_id from CPS PEPAR1 / PEPAR2 #1185
policyengine-us can link a child to their parents through parent_1_id and parent_2_id. SSI parental resource deeming uses these links (20 CFR 416.1202(b), PolicyEngine/policyengine-us#10040), and so does the Medicaid parent logic. The certified default (populace-us-2024-spm-20260915) carries the raw CPS parent line numbers, PEPAR1 and PEPAR2, but not the normalized ids.
Without them, microsimulations fall back to a tax-unit proxy over is_parent. That proxy:
cannot tell a grandparent or another adult marked as a parent from the child's own parent;
misses a co-resident parent who files in a different tax unit.
Suggested fix
Map PEPAR1 and PEPAR2 (person line numbers within the CPS household) to the frame's person_ids, and export them as parent_1_id and parent_2_id. Leave them unset when the parent is not in the household.
Support rows that clone a CPS person need the ids remapped to the clone's household.
Acceptance
Every non-missing PEPAR maps to a co-resident person.
The linked parent's age is plausible.
has_parent_ids holds for the children who have a CPS parent link.
Another consumer of these ids: Medicaid non-filer households. PolicyEngine/policyengine-us#9406 (merged 2026-10-07, fixes policyengine-us#9404) builds the 42 CFR 435.603(f)(3) household from parent_1_id / parent_2_id. When the ids are 0, it falls back to the family-wide is_parent proxy, so a co-resident grandparent counts as a child's second parent. The child then takes on the grandparent's income and can lose coverage, or a non-filer couple counts grandchildren in its household size.
In the PolicyEngine–PRD comparison (enhanced CPS, 2025, aligned view) this is the second-largest PolicyEngine-side gap: $659K of the Medicaid difference across 158 tax units (cause medicaid.pe_family_household). The dataset the comparison runs has no parent ids, so #9406 does not change these units yet. A certified dataset that carries the ids, mapped as described above, would close it.
Activity
PavelMakarchuk commentedon Oct 16, 2026
Another consumer of these ids: Medicaid non-filer households. PolicyEngine/policyengine-us#9406 (merged 2026-10-07, fixes policyengine-us#9404) builds the 42 CFR 435.603(f)(3) household from
parent_1_id/parent_2_id. When the ids are 0, it falls back to the family-wideis_parentproxy, so a co-resident grandparent counts as a child's second parent. The child then takes on the grandparent's income and can lose coverage, or a non-filer couple counts grandchildren in its household size.In the PolicyEngine–PRD comparison (enhanced CPS, 2025, aligned view) this is the second-largest PolicyEngine-side gap: $659K of the Medicaid difference across 158 tax units (cause
medicaid.pe_family_household). The dataset the comparison runs has no parent ids, so #9406 does not change these units yet. A certified dataset that carries the ids, mapped as described above, would close it.