PolicyEngine / PolicyEngine/microcosm
AMT understated ~59%: amt_income carries no preference items (ISO spread, PAB interest, depletion) and the data has no such inputs
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 0
- Forks
- 4
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 94
Description
Summary
Simulated alternative minimum tax validates 59% below IRS actuals. The mechanism is structural: PE-US's amt_income is taxable_income + amt_excluded_deductions + amt_separate_addition + exemptions — the SALT-addback channel — with no AMT preference items (incentive-stock-option exercise spread, private-activity-bond interest, depletion/intangible drilling), and the dataset carries no inputs that could feed them.
Evidence
On populace_us_2024.h5 (…f0af251…20260620), vs IRS SOI TY2023 (Pub 1304 Table 1.4):
| populace | SOI actual | |
|---|---|---|
| AMT liability | $1.13B | $2.75B |
| AMT payers | 123k (weighted) | 150k returns |
Payer counts are close (−18%) but dollars are −59%: populace finds the SALT-driven AMT filers but misses the high-dollar cases. Post-TCJA, realized AMT is dominated by ISO exercises and specialized preferences — per-filer amounts far above the SALT-addback cases. Populace's by-AGI pattern shows the shortfall concentrated in the $200k–$1M bands where ISO exercises cluster.
Nature of the fix
Two-layer: (1) policyengine_us would need preference-item variables on Form 6251 (model gap, upstream); (2) even then, survey microdata has no ISO-exercise records, so the input would need imputation from SOI aggregates. Until either happens, AMT should be treated as a documented structural understatement in validation — expected ~40% of actual — rather than a calibration defect.
Found via the SOI-actuals baseline backtest (PolicyEngine/calibration-diagnostics reform-validation page).
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 with the SOI-actuals baseline backtest and the reform-validation page, then inspect the evidence in populace_us_2024.h5 and the stated Form 6251 model gap. Confirm whether the repository can document the structural understatement; a complete fix would require preference-item variables in policyengine_us and imputation from SOI aggregates.
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
- Mostly clear
- Newbie friendliness
- 35/100