PolicyEngine / PolicyEngine/microcosm
Pooled prior-year ASEC wages are not aged to the target year
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 0
- Forks
- 4
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 94
Description
Observed while joining raw ASEC records to the certified national file (populace-us-2024-spm-20260915; see the wage-band target issue for context).
For every one of the 166,321 persons, the 2024-period payroll_tax_gross_wages equals the raw ASEC WSAL_VAL for that person's own income year (ratio 1.000 at the 10th, 50th and 90th percentiles). Records from income years 2022 (31% of weight) and 2023 (31%) therefore carry 2022 and 2023 nominal wages in the 2024 period. us_runtime/asec_pool.py scales each year's weights to a population share and does not adjust dollar amounts; I found no other stage that ages them for employment_income.
Consequences measured on FUTA: Microcosm's Σ min(wage, $43,000) is 8.5% below the raw ASEC 2025 file at Census weights ($31.78B vs $34.74B at 0.6%), while Σ min(wage, $7,000) matches within 1.2%. Total payroll-tax wages are $10.74T vs $12.07T. Calibration to SOI/BEA/CBO aggregates compensates in total but not by wage band.
Question for the build owners: is the no-aging behaviour intended (weights absorb the vintage difference) or should pooled prior-year dollar inputs be uprated to the target year before calibration? If intended, a wage-band target would be the guard; if not, this is a fix in the pooling or source stage.
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 in us_runtime/asec_pool.py and trace the raw ASEC WSAL_VAL values through pooling and the source stage into employment_income. Compare the 2022 and 2023 income-year records with the 2024 certified file and the reported FUTA aggregates. Done requires an agreed decision on whether prior-year dollar inputs should be aged, plus an implementation or wage-band guard matching that decision.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- data-engineering
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 42/100