PolicyEngine / PolicyEngine/policyengine-us

SALT: simulation taxable-income ceiling makes salt_deduction diverge from the §164(b)(7) amount at low AGI

Offen
#9,167 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
163
Forks
213
Ø Merge
3 T. 4 Std.
Gemergte PRs (30 T.)
92

Beschreibung

**Versions:** policyengine-us 1.767.3 (source pin `49d19b239a593dbac8920ac6fd80cfe33372343a`), policyengine-core 3.30.3, Python 3.13.

**Summary:** With the default `gov.simulation.limit_itemized_deductions_to_taxable_income = true`, the `salt_deduction` output is capped at AGI minus exemptions, so at low AGI it reports less than the §164(b)(7) deduction amount. For a 2026 single filer with AGI $5,000 and $10,000 of state and local income tax, `salt` computes $10,000 and `salt_cap` $40,400, but `salt_deduction` returns **$5,000**; the §164 component amount is **$10,000** (the cap at $40,400 does not bind, and §164 contains no AGI ceiling on the deduction amount itself).

**Repro:**
```python
from policyengine_us import Simulation
sim = Simulation(situation={
"people": {"p": {"age": {"2026": 40}}},
"tax_units": {"t": {"members": ["p"], "adjusted_gross_income": {"2026": 5_000},
"state_and_local_sales_or_income_tax": {"2026": 10_000}}},
"households": {"h": {"members": ["p"]}},
})
print(sim.calculate("salt", 2026), sim.calculate("salt_cap", 2026), sim.calculate("salt_deduction", 2026))
# [10000.] [40400.] [5000.]
```

**Code path:** `variables/gov/irs/income/taxable_income/deductions/itemizing/salt_deduction.py` applies `min_(salt, agi - exemptions)` when `parameters/gov/simulation/limit_itemized_deductions_to_taxable_income.yaml` is true (the default).

If the ceiling is an intentional whole-return modeling choice, consider scoping it out of the component variable (or documenting the divergence): downstream consumers reading `salt_deduction` as the §164 amount observe a value the statute does not produce. Found via Axiom Foundation cross-engine validation (`us-salt-deduction-grid`, case `salt-low-agi-engine-cap`).

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit variables/gov/irs/income/taxable_income/deductions/itemizing/salt_deduction.py und parameters/gov/simulation/limit_itemized_deductions_to_taxable_income.yaml. Führe die mitgelieferte low-AGI-Simulation aus, um die Abweichung zu reproduzieren, und verfolge anschließend, wie die Obergrenze verwendet wird. Erledigt ist die Aufgabe, wenn die Ausgabe der Komponente entweder dem Betrag nach §164(b)(7) entspricht oder die beabsichtigte Abweichung dokumentiert ist und die Reproduktion durch eine Regressionprüfung abgedeckt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
backend
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
66/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.