Summary
When federal tax liability is the same under standard and itemized deductions, tax_unit_itemizes defers to a state-deduction-only tiebreaker. For states whose tax base flows from federal taxable income (e.g., Colorado), this can pick the wrong choice and produce a materially worse state tax result.
Affected file
policyengine_us/variables/gov/irs/income/taxable_income/deductions/tax_unit_itemizes.py
return where(
federal_tax_equal,
state_standard_deduction < state_itemized_deductions, # tie → state preference (deductions only)
tax_liability_if_itemizing < tax_liability_if_not_itemizing,
)
The tie branch compares state_standard_deduction vs state_itemized_deductions. States that don't have their own deduction system (CO uses federal taxable income directly) end up with both at 0, falling through to "don't itemize."
Concrete case (CO HoH, TY 2025)
Inputs: HoH, 2 dependents (ages 11, 2), $50,351 interest income, $30,000 property tax, $20,000 mortgage interest. No earned income.
|
Federal taxable income |
CO tax base |
CO tax |
Final CO |
| TaxAct (itemized $50K) |
$351 |
$351 |
$15 |
+$3,182 refund |
| PE (standard $23,625) |
$26,726 |
$26,726 |
$1,176 |
+$2,020 refund |
Both produce federal tax = $0 (CTC absorbs $36 of tax under itemized; CTC absorbs $2,867 of tax under standard). The federal-tax tie triggers the deduction tiebreaker, and CO ends up using standard. PE is short on the CO refund by ~$1,162.
Source: PolicyEngine/policyengine-taxsim#889.
Suggested direction
When federal tax is equal under both choices, the tiebreaker should compare state tax outcomes under each federal itemization choice, not just state deductions. CO (and likely other states whose tax base flows from federal taxable income) need the federal choice to be made with state tax in mind.
Open question for design: this can be done by running a second branching simulation (mirroring tax_liability_if_itemizing / tax_liability_if_not_itemizing for state tax). Cost: another branching simulation. Alternative: a per-state hint that says "prefer federal itemizing when federal tax is tied" — cheaper but less general.
Reproduction
Run the taxsim CLI on this input:
taxsimid,year,state,mstat,page,sage,depx,pwages,swages,dividends,intrec,pensions,gssi,rentpaid,proptax,childcare,mortgage,age1,age2,idtl,opt1,opt1v
49631,2025,6,1,40,0,2,0,0,0,50351.313,0,0,0,30000,3000,20000,2,11,5,30,1
PE returns siitax = -2020.53. TaxAct ground truth: -3,182.
Summary
When federal tax liability is the same under standard and itemized deductions,
tax_unit_itemizesdefers to a state-deduction-only tiebreaker. For states whose tax base flows from federal taxable income (e.g., Colorado), this can pick the wrong choice and produce a materially worse state tax result.Affected file
policyengine_us/variables/gov/irs/income/taxable_income/deductions/tax_unit_itemizes.pyThe tie branch compares
state_standard_deductionvsstate_itemized_deductions. States that don't have their own deduction system (CO uses federal taxable income directly) end up with both at 0, falling through to "don't itemize."Concrete case (CO HoH, TY 2025)
Inputs: HoH, 2 dependents (ages 11, 2), $50,351 interest income, $30,000 property tax, $20,000 mortgage interest. No earned income.
Both produce federal tax = $0 (CTC absorbs $36 of tax under itemized; CTC absorbs $2,867 of tax under standard). The federal-tax tie triggers the deduction tiebreaker, and CO ends up using standard. PE is short on the CO refund by ~$1,162.
Source: PolicyEngine/policyengine-taxsim#889.
Suggested direction
When federal tax is equal under both choices, the tiebreaker should compare state tax outcomes under each federal itemization choice, not just state deductions. CO (and likely other states whose tax base flows from federal taxable income) need the federal choice to be made with state tax in mind.
Open question for design: this can be done by running a second branching simulation (mirroring
tax_liability_if_itemizing/tax_liability_if_not_itemizingfor state tax). Cost: another branching simulation. Alternative: a per-state hint that says "prefer federal itemizing when federal tax is tied" — cheaper but less general.Reproduction
Run the taxsim CLI on this input:
PE returns
siitax = -2020.53. TaxAct ground truth:-3,182.