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/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