From 3c3f1cb0554f1a5893873f4e953a738e75ea2260 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 2 Jul 2026 07:36:44 +0200 Subject: [PATCH 1/2] Include non-Schedule-D capital gain distributions in gross income and NII non_sch_d_capital_gains (capital gain distributions reported on Form 1040 line 7 without Schedule D, PUF E01100) was populated in the enhanced CPS and referenced by the QDCGT worksheet (dwks09/dwks10), but never entered gross income or net investment income, so it was never taxed. Add it to gov.irs.gross_income.sources and gov.irs.investment.income.sources. On the 2026 enhanced CPS this raises federal income tax by $2.07B (incl. $0.10B NIIT) and state income tax by $0.42B via AGI conformity, across 4.0M tax units. Fixes #8828 Co-Authored-By: Claude Opus 4.8 --- changelog_entry.yaml | 4 ++ .../gov/irs/gross_income/sources.yaml | 2 + .../gov/irs/investment/income/sources.yaml | 2 + .../integration/non_sch_d_capital_gains.yaml | 69 +++++++++++++++++++ .../baseline/gov/irs/irs_gross_income.yaml | 7 ++ 5 files changed, 84 insertions(+) create mode 100644 changelog_entry.yaml create mode 100644 policyengine_us/tests/policy/baseline/gov/irs/integration/non_sch_d_capital_gains.yaml diff --git a/changelog_entry.yaml b/changelog_entry.yaml new file mode 100644 index 00000000000..9b6acfd3e2e --- /dev/null +++ b/changelog_entry.yaml @@ -0,0 +1,4 @@ +- bump: patch + changes: + fixed: + - Include capital gain distributions received without Schedule D (non_sch_d_capital_gains) in IRS gross income and net investment income. diff --git a/policyengine_us/parameters/gov/irs/gross_income/sources.yaml b/policyengine_us/parameters/gov/irs/gross_income/sources.yaml index 43dde4ce80a..070cdb0b56a 100644 --- a/policyengine_us/parameters/gov/irs/gross_income/sources.yaml +++ b/policyengine_us/parameters/gov/irs/gross_income/sources.yaml @@ -9,6 +9,8 @@ values: - farm_rent_income - other_net_gain_gross_income - capital_gains + - non_sch_d_capital_gains + # Capital gain distributions received without filing Schedule D (Form 1040 line 7). - taxable_interest_income - rental_income # Royalties included in rental income diff --git a/policyengine_us/parameters/gov/irs/investment/income/sources.yaml b/policyengine_us/parameters/gov/irs/investment/income/sources.yaml index 782e0ad63f2..ef5b0eb67b7 100644 --- a/policyengine_us/parameters/gov/irs/investment/income/sources.yaml +++ b/policyengine_us/parameters/gov/irs/investment/income/sources.yaml @@ -5,6 +5,8 @@ values: - dividend_income - rental_income - loss_limited_net_capital_gains + - non_sch_d_capital_gains + # Capital gain distributions received without filing Schedule D (Form 1040 line 7). metadata: unit: currency-USD label: net investment income sources diff --git a/policyengine_us/tests/policy/baseline/gov/irs/integration/non_sch_d_capital_gains.yaml b/policyengine_us/tests/policy/baseline/gov/irs/integration/non_sch_d_capital_gains.yaml new file mode 100644 index 00000000000..3543caf8149 --- /dev/null +++ b/policyengine_us/tests/policy/baseline/gov/irs/integration/non_sch_d_capital_gains.yaml @@ -0,0 +1,69 @@ +- name: Case 1, wages plus capital gain distributions without Schedule D. + absolute_error_margin: 0.01 + period: 2026 + input: + people: + person1: + is_tax_unit_head: true + age: 40 + employment_income: 60_000 + non_sch_d_capital_gains: 5_000 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: TX # no state income tax + output: + # Distributions enter AGI: 60,000 + 5,000. + adjusted_gross_income: 65_000 + # And the QDCGT worksheet taxes them at preferential rates. + dwks10: 5_000 + # They are net investment income (below the NIIT MAGI threshold here). + net_investment_income: 5_000 + net_investment_income_tax: 0 + +- name: Case 2, capital gain distributions below the standard deduction owe no tax. + absolute_error_margin: 0.01 + period: 2026 + input: + people: + person1: + is_tax_unit_head: true + age: 70 + non_sch_d_capital_gains: 5_000 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: TX # no state income tax + output: + adjusted_gross_income: 5_000 + income_tax: 0 + +- name: Case 3, capital gain distributions are subject to NIIT above the MAGI threshold. + absolute_error_margin: 0.01 + period: 2026 + input: + people: + person1: + is_tax_unit_head: true + age: 45 + employment_income: 300_000 + non_sch_d_capital_gains: 10_000 + tax_units: + tax_unit: + members: [person1] + households: + household: + members: [person1] + state_code: TX # no state income tax + output: + adjusted_gross_income: 310_000 + dwks10: 10_000 + net_investment_income: 10_000 + # 3.8% x min(NII 10,000, MAGI 310,000 - 200,000 threshold) = 380. + net_investment_income_tax: 380 diff --git a/policyengine_us/tests/policy/baseline/gov/irs/irs_gross_income.yaml b/policyengine_us/tests/policy/baseline/gov/irs/irs_gross_income.yaml index 3e8c504fc02..66ab14a9b70 100644 --- a/policyengine_us/tests/policy/baseline/gov/irs/irs_gross_income.yaml +++ b/policyengine_us/tests/policy/baseline/gov/irs/irs_gross_income.yaml @@ -65,3 +65,10 @@ output: # expected results from online TAXSIM35 10/24/22 version taxsim_tfica: 0.00 income_tax: -1400.00 + +- name: IRS gross income includes capital gain distributions not reported on Schedule D. + period: 2026 + input: + non_sch_d_capital_gains: 5_000 + output: + irs_gross_income: 5_000 From 40a24b898114c4f30aaffaa7495b1de9e97fe5b7 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Thu, 2 Jul 2026 08:17:27 +0200 Subject: [PATCH 2/2] Use changelog.d fragment instead of changelog_entry.yaml Co-Authored-By: Claude Opus 4.8 --- changelog.d/e01100-agi-inclusion.fixed.md | 1 + changelog_entry.yaml | 4 ---- 2 files changed, 1 insertion(+), 4 deletions(-) create mode 100644 changelog.d/e01100-agi-inclusion.fixed.md delete mode 100644 changelog_entry.yaml diff --git a/changelog.d/e01100-agi-inclusion.fixed.md b/changelog.d/e01100-agi-inclusion.fixed.md new file mode 100644 index 00000000000..da35fbfae7a --- /dev/null +++ b/changelog.d/e01100-agi-inclusion.fixed.md @@ -0,0 +1 @@ +Include capital gain distributions received without Schedule D (non_sch_d_capital_gains) in IRS gross income and net investment income. diff --git a/changelog_entry.yaml b/changelog_entry.yaml deleted file mode 100644 index 9b6acfd3e2e..00000000000 --- a/changelog_entry.yaml +++ /dev/null @@ -1,4 +0,0 @@ -- bump: patch - changes: - fixed: - - Include capital gain distributions received without Schedule D (non_sch_d_capital_gains) in IRS gross income and net investment income.