PolicyEngine / PolicyEngine/microcosm

AMT understated ~59%: amt_income carries no preference items (ISO spread, PAB interest, depletion) and the data has no such inputs

Open
#254 0 comments 0 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.