Skip to content

non_sch_d_capital_gains (capital gain distributions, PUF E01100) never enters AGI — $13.7B untaxed, ~$1.2B/yr federal #8828

Description

@MaxGhenis

Summary

non_sch_d_capital_gains (capital gain distributions reported directly on Form 1040 line 7 without Schedule D — PUF E01100) is populated in the enhanced CPS and calibrated to SOI, but never enters AGI. The tax logic references it only in the QDCGT worksheet (dwks09/dwks10) and has_qdiv_or_ltcg. Neutralizing the variable changes income_tax by $0.

On the 2026 enhanced CPS this leaves $13.7B of income across 4.0M tax units untaxed, understating federal income tax by ~$1.21B/yr (incl. $0.10B NIIT) and state income tax by **$0.44B/yr** via AGI conformity.

Evidence

  1. Data: policyengine-us-data maps disjoint PUF fields — long_term_capital_gains = P23250, short_term_capital_gains = P22250, non_sch_d_capital_gains = E01100 (datasets/puf/puf.py), and calibrates capital_gains_distributions to SOI Table 1.4 ($11.56B in 2015; storage/soi.csv). So there is no double-count concern: E01100 is not inside LTCG/STCG.
  2. AGI: parameters/gov/irs/gross_income/sources.yaml includes capital_gains (= LTCG + STCG via net_capital_gains.py adds) but not non_sch_d_capital_gains.
  3. Repro (2026, default dataset):
    • sim.calc("non_sch_d_capital_gains", period=2026).sum() → $13.69B; 4.01M tax units > 0; 41.6% of dollars held by people 65+.
    • Neutralizing the variable: income_tax change = $0.000B, state_income_tax change = $0.000B.
    • Counterfactual folding it into long_term_capital_gains via set_input: federal income_tax +$1.211B (incl. NIIT +$0.101B), state_income_tax +$0.443B. Median affected filer pays $0 (0% LTCG bracket); mean $302.

Correct treatment

Form 1040 line 7 includes capital gain distributions in total income even when Schedule D is not required (box checked; see 2025 Schedule D instructions, "Capital Gain Distributions"). They are long-term by character (IRC §852(b)(3)(B)) and taxed through the Qualified Dividends and Capital Gain Tax Worksheet — which is why dwks09/dwks10 already reference the variable; the missing piece is inclusion in gross income.

Suggested fix

  • Add non_sch_d_capital_gains to gov/irs/gross_income/sources.yaml (or fold it into the capital_gains aggregate — but that would double-count in dwks09/dwks10, which add it separately, so the sources-list route plus a worksheet consistency check is safer).
  • Confirm downstream AGI-derived quantities (NIIT investment income, state conformity) pick it up.
  • Add integration tests: a no-Schedule-D filer with only non_sch_d_capital_gains should show it in AGI and be taxed at preferential rates.

Motivation

Scoring the GROWTH Act (H.R. 2089 / S. 1839, deferral of automatically reinvested RIC capital gain distributions) requires this variable to be live in the tax calculation — today a reform exempting it mechanically scores $0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions