PolicyEngine / PolicyEngine/microcosm

Calibrate OBBBA deduction aggregates to JCX-45-25 static tax-expenditure lines

Open
#586 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

JCX-45-25 (December 2025 tax-expenditure report, post-OBBBA) publishes static, each-alone FY lines for four of the five OBBBA individual provisions — Table 1, individuals column (mapping verified on the employer-FICA-tips credit row and by row-sum checks):

Provision FY2026 ($B) FY2027 ($B) Downstream repeal score on Build P ($B) Diff vs FY2026
Deduction for overtime pay 21.9 22.4 22.2 +1.5%
Enhanced deduction for seniors 22.4 22.7 18.5 −17%
Deduction for tips 6.9 7.2 1.8 −73%
Deduction for interest on personal vehicle loans 6.2 8.6 1.1 −83%
Non-itemizer charitable — (folded into charitable TE) 3.9

Proposal: add these as calibration targets (or validation-surface benchmarks) in the jct.tax_expenditures source family — same schema as #519's five entries. Notes from the decomposition:

  • Tips is a yield gap, not a base gap: #465 wired the W-2 tips dollar target and the income base sits near the BLS anchor (~$34B), yet the deduction's repeal yields $1.8B vs the $6.9B static line. An amount target on tip income can't close this — the deduction-level line (or a repeal-revenue benchmark per #298) is the right ref, and the residual likely lives in eligibility mechanics and where tips sit in the rate distribution.
  • Auto-loan interest base is thin outright (#252's imputation gap persists into Build P; the deduction resolves but small).
  • Overtime already lands within 2% of the static line at current claiming — the ~64%-of-Yale-anchor premium-base gap (#451) binds for post-behavior or distributional uses, not the static aggregate, so a static-line target here is a cheap regression guard rather than a fix.
  • Senior deduction runs −17% vs static despite age/SSN bases tracking Census — worth a look at the phase-out interaction once a target binds.

These four lines would complete static-frame coverage of the OBBBA individual provisions alongside the #519 ALD/CDCC refs. Source: https://www.jct.gov/getattachment/8c830c45-1680-4f7e-a649-2a0106f6b6e3/x-45-25.pdf

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 by locating the jct.tax_expenditures source family and the five entries added for #519. Compare its schema and validation surfaces with the four JCX-45-25 individual-provision lines, then add the calibration targets; done means the entries are represented consistently and the static aggregates can be checked against the cited FY2026 and FY2027 values.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
data
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.