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
Two related findings from validating deduction/credit repeal scoring on the dense release populace-us-2024-f0af251-703bd81a565c-20260620 (bundle 4.18.7), against external scorekeeper estimates:
The QBI base runs well below external benchmarks. The release's own diagnostics show the QBI-linked target residual at −31% (relative_error on the JCT qualified_business_income_deduction revenue-loss target), and repealing §199A in isolation yields $45.9B (TY2026) vs JCT's $76.4B FY2026 individuals line (JCX-45-25) — a −40% gap, the largest among the deduction toggles after tips/overtime (which have no input base at all).
On-surface amount residuals cannot see repeal-revenue gaps — propose adding per-component repeal-revenue benchmarks to the validation surface. The itemized-deduction amount calibrates to +1.8% on this release, yet repealing each Schedule A line in isolation scores far below its own JCT line:
Component repealed alone
PE TY2026 ($B)
JCX-45-25 FY2026 ($B)
Diff
SALT (cap → $0)
23.9
59.5
−60%
Mortgage interest
23.0
53.0
−57%
Charitable
60.1
81.5
−26%
Medical
9.1
13.8
−34%
Casualty/theft
0.0
0.2
no base in data
The claimed bases are plausible in level (SALT $288.5B under the $40k cap; mortgage $215.7B among 17.7M itemizers), so the shortfall is yield per dollar of base — the marginal-rate composition of who holds the deductions, plus the un-aged TY2022/23 target vintage (aging tracked in PolicyEngine/chronicle#71). A benchmark family of "repeal component X → revenue vs the JCT line" (computed per release, like the reform-validation checks in calibration-diagnostics) would catch this class directly, where amount residuals structurally cannot.
Suggested actions
Investigate the −31% QBI target residual on the dense build (it was −81% on June builds — improved but far from closed).
Add per-component repeal-revenue benchmarks (SALT / mortgage / charitable / medical / QBI vs their JCX-45-25 lines; full-itemized vs TPC's interaction-adjusted estimate, since JCT lines are non-additive) to the release validation surface.
Repro: policyengine[us]==4.18.7, managed_microsimulation, zero each component's cap/ceiling (or medical.floor→1.0, casualty.active→false) for 2026+, sum the income_tax delta.
Summary
Two related findings from validating deduction/credit repeal scoring on the dense release
populace-us-2024-f0af251-703bd81a565c-20260620(bundle 4.18.7), against external scorekeeper estimates:The QBI base runs well below external benchmarks. The release's own diagnostics show the QBI-linked target residual at −31% (relative_error on the JCT
qualified_business_income_deductionrevenue-loss target), and repealing §199A in isolation yields $45.9B (TY2026) vs JCT's $76.4B FY2026 individuals line (JCX-45-25) — a −40% gap, the largest among the deduction toggles after tips/overtime (which have no input base at all).On-surface amount residuals cannot see repeal-revenue gaps — propose adding per-component repeal-revenue benchmarks to the validation surface. The itemized-deduction amount calibrates to +1.8% on this release, yet repealing each Schedule A line in isolation scores far below its own JCT line:
The claimed bases are plausible in level (SALT $288.5B under the $40k cap; mortgage $215.7B among 17.7M itemizers), so the shortfall is yield per dollar of base — the marginal-rate composition of who holds the deductions, plus the un-aged TY2022/23 target vintage (aging tracked in PolicyEngine/chronicle#71). A benchmark family of "repeal component X → revenue vs the JCT line" (computed per release, like the reform-validation checks in calibration-diagnostics) would catch this class directly, where amount residuals structurally cannot.
Suggested actions
Related: #278 (sparse-release input coverage), #257 (degenerate-input gates), #272 (validation-config input checks).
Repro:
policyengine[us]==4.18.7,managed_microsimulation, zero each component's cap/ceiling (ormedical.floor→1.0,casualty.active→false) for 2026+, sum theincome_taxdelta.