Skip to content

Federal gross income omits gambling winnings but still deducts wagering losses; OBBBA 90% wagering loss limit (2026+) not modeled #9637

Open

Description

@MaxGhenis

Summary

gambling_winnings is a person input, but it is not in gov.irs.gross_income.sources, so it never reaches irs_gross_income or adjusted_gross_income. wagering_losses_deduction (the smaller of gambling_losses and gambling_winnings) is still in gov.irs.deductions.deductions_if_itemizing, so it comes off taxable income whenever the unit itemizes. Gambling winnings are therefore never taxed federally, and a filer with gambling losses can itemize and deduct them against wages.

Separately, wagering_losses_deduction has no 90% factor for tax years beginning after 2025, which P.L. 119-21 § 70114 requires.

Found while adding Arkansas's gambling rules (#9636). That PR changes only Arkansas; this issue is the federal side.

Reproduction (upstream/main ca1805c, 2026-09-25)

Single filer, 2024, TX, age 40, employment_income 60,000; gambling inputs on the person.

Case AGI wagering_losses_deduction taxable_income tax_unit_itemizes income_tax
No gambling 60,000 0 45,400 False 5,216
Winnings 10,000, losses 8,000 60,000 8,000 45,400 False 5,216
Winnings 30,000, losses 25,000 60,000 25,000 33,541 True 3,793

The same cases with the winnings also entered as miscellaneous_income, to stand in for counting them in gross income:

Case AGI wagering_losses_deduction taxable_income tax_unit_itemizes income_tax
Winnings 10,000, losses 8,000 70,000 8,000 55,400 False 7,241
Winnings 30,000, losses 25,000 90,000 25,000 63,314 True 8,982

PE understates federal income tax by $2,025 and $5,189 in these cases. In the second case a $5,000 net gambling gain lowers tax by $1,423 relative to no gambling. A 2026 run of the 30,000 / 25,000 case gives wagering_losses_deduction = 25,000, not 22,500.

Legal basis

What the code does now

  • parameters/gov/irs/gross_income/sources.yaml has no gambling_winnings, and none of its 21 commits since the 2022 rename ever added it. The variables gambling_winnings, gambling_losses and wagering_losses_deduction were added together in Kentucky Itemized Deductions #3037 (merged 2024-01-06), and none has changed since.
  • wagering_losses_deduction = min_(gambling_losses, gambling_winnings) summed over the tax unit, with no parameter.
  • deductions_if_itemizing includes wagering_losses_deduction in its 2018, 2025 and 2029 lists. reforms/crfb/senior_deduction_extension.py hardcodes a copy of the 2029 list that includes it too.
  • It is not in gov.irs.deductions.itemized_deductions (the Schedule A total), so it is outside total_itemized_taxable_income_deductions, itemized_taxable_income_deductions and itemized_deductions_less_salt.
  • tax_unit_itemizes: with branch_to_determine_itemization on (the default), the choice compares income_tax on an itemizing branch, which includes wagering losses; that is why the 30,000 / 25,000 case itemizes although itemized_taxable_income_deductions (1,459) is below the standard deduction (14,600). On the non-branching path, and on a tie within $0.01, the comparison is itemized_taxable_income_deductions > standard_deduction, which leaves wagering losses out (Add QBID and wagering losses to the non-branching itemization choice #5977, closed as not planned).

Proposed fix

  1. Add gambling_winnings to gov.irs.gross_income.sources, citing § 61 and Schedule 1 line 8b.
  2. Add a wagering loss share parameter, 1.0 through 2025 and 0.9 from 2026-01-01 (P.L. 119-21 § 70114), so the deduction is min_(share * losses, winnings).
  3. Decide separately whether wagering_losses_deduction belongs in the Schedule A total. That changes the base of itemized_taxable_income_deductions_reduction (check § 68 first) and about 20 states that build on the federal itemized lists.
  4. Tests: YAML cases for 2024 and 2026 matching the tables above, plus property tests:
    • 0 ≤ deduction ≤ winnings, and deduction ≤ losses (≤ 0.9 × losses from 2026);
    • with losses fixed, income_tax never falls as gambling_winnings rises;
    • adding equal winnings and losses never lowers income_tax. The current code breaks this one.

Why this is its own change

  • Blast radius. Federal AGI and gross income feed most state income taxes and MAGI. git grep finds adjusted_gross_income, adjusted_gross_income_person, irs_gross_income or positive_agi in the tax/income code of 43 state jurisdictions (a reference does not always mean the state starts from federal AGI, so each needs a look). medicaid_magi is built from adjusted_gross_income, and aca_magi from medicaid_magi. States that exempt some winnings (for example their own lottery prizes) would need subtractions.
  • States with their own gambling treatment.
  • Microdata. microcosm's engine ABI lock lists both gambling_winnings and gambling_losses as declared_absent_engine_input (engine default 0), and the archived policyengine-us-data never mapped them at its final commit. So the change should not move aggregates today; this rests on the microcosm manifest, not on an inspection of the released default H5. A future imputation must avoid double counting with miscellaneous_income: the PUF path maps E01200 (Form 4797 other gains per Tax-Calculator's codebook) and the CPS path maps ASEC OI_VAL, which includes code 19 "Anything else".

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions