Tax-input coverage gaps surfaced by the reform-validation registry on us-6.2.1 (tracker)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- python
- Ambito
- data-engineering
Direzione di ricerca
Start with the referenced diagnosis memos and the listed entry points: us_runtime/sipp_tips.py, us_runtime/scf_auto_loans.py, us/spec/sources.yaml, us_runtime/puf_aggregate_records.py, and us_runtime/validation_input_coverage.py; related issues include #505, #586, #252, #579, #253, and #958. Compare the identified inputs and registry results with the cited external benchmarks before choosing a gap to investigate. Done means the selected coverage discrepancy is addressed or tracked against its existing issue and validated against the relevant benchmark.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Found by the policyengine-scorecard reform-validation diagnosis (batch 2), PolicyEngine/policyengine-scorecard#146. Memos: diagnosis/batch2/A.md (A2-A4) and diagnosis/batch2/B.md (B1, B2, B5, B6).
This tracker collects input-coverage gaps that the reform-validation registry shows on the certified bundle us-6.2.1 (policyengine-us 2.2.1 + populace-us-2024-spm-20260915). In every case the engine models the provision; the release's inputs cannot reach the benchmark. Each section links the existing issue where one exists and records only what is new. microcosm paths are relative to packages/microcosm-build/src/microcosm/build/ @ 581b569.
Benchmarks used below (extracted)
JCX-35-25 (July 1, 2025), PDF p. 2, Chapter 2, $ millions, FY2025-2034:
"1. No tax on tips (sunset 12/31/28) [5] ... tyba 12/31/24 --- -10,121 -7,664 -8,078 -5,262 -90 -98 -107 -117 -127 -31,664"
"3. No tax on car loan interest ... iia 12/31/24 -1,932 -5,400 -8,070 -9,916 -5,313 --- --- --- --- --- -30,631"
JCX-35-25, PDF p. 4, Chapter 4, Subchapter C:
"4. Permanent and expanded reinstatement of partial deduction for charitable contributions of individuals who do not elect to itemize ... tyba 12/31/25 --- -1,543 -7,791 -8,149 ..."
JCX-48-24, Table 1 "Tax Expenditure Estimates By Budget Function, Fiscal Years 2024 - 2028", Individuals, $ billions, 2024-2028:
(PDF p. 33, Income Security) "Net exclusion of pension contributions and earnings: Plans covering partners and sole proprietors (sometimes referred to as "Keogh plans") ... 16.6 17.1 17.7 20.4 22.5"
(PDF p. 32, Health) "Deduction for health insurance premiums and long-term care insurance premiums by the self-employed ... 8.4 9.3 11.9 13.4 14.0"
IRS SOI Publication 1304, Table 1.4 "All Returns: Sources of Income, Adjustments, and Tax Items, by Size of Adjusted Gross Income, Tax Year 2023 (Filing Year 2024)" (
23in14ar.xls), money in thousands of dollars, row "All returns, total":
"Payments to a Keogh plan" (cols 115-116): 946,019 returns; 30,130,848
"Self-employed health insurance deduction" (cols 117-118): 3,595,764 returns; 31,232,604
"Alternative minimum tax" (cols 143-144): 150,167 returns; 2,752,164
IRS SOI Publication 1304, Table 3.3 "All Returns: Tax Liability, Tax Credits, and Tax Payments, by Size of Adjusted Gross Income, Tax Year 2023 (Filing Year 2024)" (
23in33ar.xls), row "All returns, total":
"Tax credits > Nonrefundable credits > Nonrefundable education credit" (cols 8-9): 7,211,349 returns; 7,554,668
"Tax credits > Total refundable credits > American opportunity credit" (cols 40-41): 5,821,688 returns; 5,090,364
PE values are calendar-2026 liability changes for OBBBA rows. The FY2027 JCT column is the like-for-like comparator for these provisions (FY2026 is a partial first year; A.md item A1).
- [ ] A2. Tip income: incidence inside tipped occupations is too low (see #505, #586)
- Registry: PE -$1.93B vs JCT -$7.66B FY2027 (0.25) and -$10.12B FY2026 (0.19).
- H5 (2024, weighted):
tip_income$34.3B on 2.97M recipients. Of 22.97M wage earners with a Treasury-listed occupation code, 1.72M (7.5%) have tips > 0. Waitstaff (Census 2018 occupation 4110, mapped to TTOC 102 inus_runtime/sipp_tips.py:133-184): 1.68M wage earners, 0.124M (7.4%) with tips. Bartenders: 18%. - 2026 simulation:
tip_income_deduction$16.9B on 1.54M tax units. At PE's revenue per deducted dollar (about 11.4%), JCT's FY2027 value needs about $67B of deductions, about 4x PE's. - Mechanism (
us_runtime/sipp_tips.py): annual tips are the December monthly SIPP amount x 12 (:3-7,:334); training is capped at 10,000 rows (:114,:419-423), and the code notes that "seed 0 materially under-samples positive tip rows in the 10,000-row cap" (:117-119). The occupation code "is a predictor, not a domain mask" (:25). The plausibility band checks only the all-person share with tips (:127), not incidence inside listed occupations. - New relative to #505: #505 attributes the carrier deficit to the December-reference participation concept; the within-occupation incidence above is consistent with that explanation.
- Proposed: two-stage incidence/amount model conditional on a listed occupation; stratified donor sampling of positives; a gate on within-occupation incidence; the JCX-45-25 deduction line from #586 as a target.
- [ ] A3. Qualified car-loan interest: the proxy uses one year of loan issuance as the stock (see #252, #586, #981)
- Registry: PE -$1.08B vs JCT -$8.07B FY2027 (0.13) and -$5.40B FY2026 (0.20).
- #252 says the input "is never imputed". That is stale:
us_runtime/scf_auto_loans.py:454-472now sets qualifying interest =auto_loan_interestx min(1, 6,000,000 / weighted households with positive interest). The docstring (:15-24) calls 6M the number of qualifying loans "issued annually". - The statute covers all post-2024 indebtedness, so the eligible stock grows each year:
26 U.S.C. 163(h)(4)(A) and (B)(i) (Cornell LII, current text): "In the case of taxable years beginning after December 31, 2024, and before January 1, 2029, for purposes of this subsection the term “personal interest” shall not include qualified passenger vehicle loan interest." ... "the term “qualified passenger vehicle loan interest” means any interest which is paid or accrued during the taxable year on indebtedness incurred by the taxpayer after December 31, 2024, for the purchase of, and that is secured by a first lien on, an applicable passenger vehicle for personal use."
- By TY2026 the stock holds about two annual vintages (less payoffs); the proxy holds one, and the engine uprates the input by CPI-U only (
policyengine_us/variables/.../qualified_passenger_vehicle_loan_interest.py:20). First-order: a vintage-corrected input moves PE to about -$2.2B (0.27x FY2027). Most of the gap stays open: at PE's revenue per deducted dollar (about 10%), JCT's FY2027 value needs about $80B of deductions, more than all H5 auto-loan interest ($75.6B in 2026). - Proposed: a vintage-stock share for the dataset's target year (sum over 2025+ vintages of 6M x survival), and an external household auto-debt benchmark for total
auto_loan_interest. Update or close #252.
- [ ] A4. Non-itemizer cash giving: donor incidence is about half of an external benchmark (new)
- Registry: PE -$3.52B vs JCT -$7.79B FY2027 (0.45).
charitable_cash_donationscomes from thepuf_tax_detailstage, "IRS PUF 2015 (uprated)" (us/spec/sources.yaml:110-111, output list:283); the PUF field mapped to cash contributions is E19800 (us_runtime/puf_aggregate_records.py:115). Hypothesis, not verified against the PUF codebook: the field is observed only for itemizers, which would under-represent non-itemizer donors.- H5: 23.9% of households and 19.1% of tax units have cash donations > 0 (25.5% of households give in any form); 4.8% at AGI $0-25K, 7.2% at AGI $25-50K.
- External benchmark:
Lilly Family School of Philanthropy, news release (October 24, 2024), on its Philanthropy Panel Study (part of the PSID): "The share of Americans who give to charity declined from 50.9% in 2018 to 46.9% in 2020, following the onset of the pandemic."
- 2026 simulation: 18.3M of 147.5M non-itemizing tax units claim the deduction ($21.6B). At PE's revenue per deducted dollar (about 16%), JCT's FY2027 value needs about 40M claimants at PE's average amount, about 2.2x PE. A capped $1,000/$2,000 deduction scales mainly with donor count.
- Proposed: impute giving incidence and amount for all households from a source that observes non-itemizers (PSID PPS or CE cash contributions), or add a non-itemizer deduction target once an SOI series is sourced.
- [ ] B1. Self-employed (Keogh/SEP/SIMPLE) pension contributions at about 3% of SOI (see #579)
- Registry: PE $0.21B vs JCT $16.6B (0.01). Note: JCT's line is a net exclusion of contributions and earnings, so a contribution-only repeal cannot reach it; the data gap is still the main factor.
- H5:
self_employed_pension_contributions_desired$1.373B on 5.38M persons (1,654 records); among holders p50 $276, p99 $1,380, max $1,771. Engine ALD: $1.013B on 5.33M tax units. SOI: $30.13B on 946,019 returns (above), so PE dollars are 3.4% of SOI on 5.6x the claimants. At AGI $200K+, PE $0.23B vs SOI $24.3B. - Mechanism (
us/spec/sources.yaml:524-530, stageretirement_contributions): "Measured ASEC RETCB_VAL is allocated across self-employed pension, defined-contribution, and IRA pools ... QRF-imputes all five leaves onto the PUF half from the ASEC rows and PUF-imputed income." The PUF half does not carry tax-form Keogh amounts. - Proposed: source the PUF half from the PUF Keogh-deduction field (verify the field ID in the codebook), or add SOI Table 1.4 "Payments to a Keogh plan" returns and amount as targets.
- [ ] B2. Self-employed health insurance: right claimant count, half the amount (see #579)
- Registry: PE $2.38B vs JCT $8.4B (0.28).
- Engine ALD: $14.84B on 3.688M tax units (mean $4,024). SOI: $31.23B on 3,595,764 returns (mean $8,686). Count ratio 1.03, amount ratio 0.475.
- By AGI (SOI Table 1.4 col 118): below $200K, PE $12.59B vs SOI $14.51B (0.87); at $200K and above, PE $2.25B vs SOI $16.73B (0.13).
- Source (
us/spec/sources.yaml:2847-2927,attribute_self_employed_health_premiums): the ASEC reported premium is copied onto Schedule-C persons outside ESI and outside a Medicare proxy. - Proposed: test the CPS premium under-report, the Medicare-proxy exclusion and tax-unit premium assignment (not verified); add SOI Table 1.4 SEHI returns and amount by AGI as targets.
- [ ] B5. Education credits at 10% of SOI: LLC structurally zero (see #253)
- Registry: PE $0.78B vs SOI $7.55B nonrefundable education credit (0.10).
- LLC:
is_eligible_for_lifetime_learning_credit.py:29-47requiresattends_eligible_educational_institution_for_lifetime_learning_creditandhas_lifetime_learning_credit_1098_t_or_exception(bool inputs, so False when absent). Neither is in the H5, solifetime_learning_credit= 0. - AOTC:
qualified_tuition_expenses$4.40B on 1.18M persons (426 records). Nonrefundable AOTC is at most 0.6 x $4.40B = $2.64B even without a liability limit. PE claimant units are about 11% of SOI's 7.2M nonrefundable-credit returns. - The coverage gate registers only
qualified_tuition_expensesfor this row (us_runtime/validation_input_coverage.py:122-126), so the LLC zero passes the gate. - Proposed: LLC factual inputs for a non-AOTC student population (graduate, part-time, non-degree); widen tuition to SOI scale; register both LLC flags in
US_VALIDATION_PROVISION_INPUT_LEAVES(:106); add SOI Table 3.3 education-credit targets. #253's numbers are from f0af251; update it.
- [ ] B6. AMT from 70 records: top-tail compression (see #958; #254 is stale)
- Registry: PE $4.39B vs SOI $2.75B (1.60). PE's AMT comes from 70 records; the top 10 hold 87% of AMT dollars.
- By AGI (PE 2024 filers vs SOI TY2023 Table 1.4 col 1 and cols 143-144): $1M-1.5M PE 94.1K payers / $1.30B vs SOI 16,889 / $0.26B; $1.5M-2M PE 75.0K / $1.35B vs SOI 18,284 / $0.32B; $5M-10M and $10M+ PE 0 vs SOI 6,264 / $0.18B and 4,164 / $0.26B.
- This is the same tail compression as #958 (too many returns at $1-2M, almost none above $5M), seen through AMT. #254 says AMT is 59% under; on us-6.2.1 it is 1.6x over, and the history moved $1.13B -> $4.39B across releases at a fixed engine for part of the path.
- Proposed: track under #958; comment on #254 that its sign changed.
- Lingua principale
- Python
- Stelle
- 0
- Fork
- 5
- Merge medio
- 1g 19h
- PR unite (30g)
- 115
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di PolicyEngine/microcosm
-
Update two stale comments about the export-mass reviewed-exclusion registerForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
PolicyEngine/microcosm#1108 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
PolicyEngine/microcosm#475 ·
I maintainer di solito rispondono entro 1 giorno
-
Generate complete WIC participation in the ACS local-area buildForse già presa @anth-volk l’ha presa oggi. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
PolicyEngine/microcosm#1155 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
PolicyEngine/microcosm#1154 ·
I maintainer di solito rispondono entro 1 giorno
-
Delegate telemetry and completed Orrery publication to microcosm-local-providerForse già presa @anth-volk l’ha presa oggi. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
PolicyEngine/microcosm#1152 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di PolicyEngine/microcosm
Issue simili
-
bug ready for review
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
odysseus-dev/odysseus#6641 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
happypawspillaro/happypaws#78 ·
I maintainer di solito rispondono entro 4 giorni
-
pydanty:is-working
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
pydantic/pydantic-ai#10020 ·
I maintainer di solito rispondono entro 1 giorno
-
Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
ansible-collections/ibm_zos_core#2650 ·
-
hw: pvc tests: vllm vllm
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
intel/intel-xpu-backend-for-triton#8362 ·
I maintainer di solito rispondono entro 1 giorno