PolicyEngine / PolicyEngine/policyengine-us
taxable_roth_conversions Missing from State Retirement Income Exclusions (CO, GA, KY, WI, AR, AL)
- Dominant language
- Python
- Stars
- 162
- Forks
- 212
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 97
Description
### Description
States that base income on Federal AGI correctly capture `taxable_roth_conversions` as starting income. However, several states with statutory retirement/pension income exclusions (CO, GA, KY, WI, AR, AL) only include `taxable_ira_distributions` and `taxable_pension_income` in their exclusion lists/formulas, omitting `taxable_roth_conversions`.
Consequently, qualifying seniors (or eligible taxpayers) who perform a Roth conversion are denied the state retirement/pension exclusion that they are entitled to under state law, resulting in over-taxation compared to regular IRA distributions.
### Affected Files
1. **Colorado (`CO`):**
* `policyengine_us/parameters/gov/states/co/tax/income/subtractions/pension/income_sources.yaml`
2. **Georgia (`GA`):**
* `policyengine_us/parameters/gov/states/ga/tax/income/agi/exclusions/retirement/sources.yaml`
3. **Kentucky (`KY`):**
* `policyengine_us/parameters/gov/states/ky/tax/income/exclusions/pension_income/other_retirement_income_sources.yaml`
4. **Wisconsin (`WI`):**
* `policyengine_us/variables/gov/states/wi/tax/income/subtractions/wi_retirement_income_exclusion_amount.py` (Line 30)
5. **Arkansas (`AR`):**
* `policyengine_us/variables/gov/states/ar/tax/income/exemptions/ar_retirement_or_disability_benefits_exemption_person.py` (Line 23)
6. **Alabama (`AL`) & Core Model:**
* `policyengine_us/variables/household/income/person/retirement/taxable_retirement_distributions.py` (Line 10 `adds` list, used by `al_retirement_exemption_person.py`)
### State Law & Expected Behavior
1. **Colorado (`CO` - C.R.S. § 39-22-104(4)(f) / Form DR 0104AD Line 4):**
* Pension/annuity subtraction (up to $20k for age 55–64, $24k for age 65+) applies to all federally taxable retirement distributions including traditional-to-Roth conversions.
2. **Georgia (`GA` - O.C.G.A. § 48-7-27(a)(5) / Form IT-511 Schedule 1):**
* Retirement exclusion (up to $35k for age 62–64, $65k for age 65+) applies to unearned income sources including federally taxable IRA distributions and Roth conversions.
3. **Kentucky (`KY` - KRS § 141.019(1)(g) / Schedule P):**
* Schedule P pension exclusion (up to $31,110 / $41,110 in 2026) covers taxable Roth conversion income for all eligible filers.
4. **Wisconsin (`WI` - Wis. Stat. § 71.05(6)(b)54m / Schedule SB Line 16):**
* Subtraction for taxpayers age 67+ covers qualifying retirement income from IRAs and Roth conversions.
5. **Arkansas (`AR` - Ark. Code § 26-51-404 / Form AR1000F Line 18):**
* $6,000 retirement exemption for filers age 59½+ covers taxable IRA distributions and conversions.
6. **Alabama (`AL` - Ala. Code § 40-18-19(a)(13) / Form 40 Schedule RS):**
* $6,000 retirement exemption for filers age 65+ covers taxable retirement distributions including traditional-to-Roth conversions.
### Actual Behavior / Simulation Discrepancy (Age 67 Filer with $100k Wages + $20k Income)
| State | State Tax with $20k `taxable_ira_distributions` | State Tax with $20k `taxable_roth_conversions` | Excess Tax on Roth Conversion |
| :--- | :--- | :--- | :--- |
| **Colorado (`CO`)** | $3,427.20 | $4,307.20 | **+$880.00** |
| **Georgia (`GA`)** | $3,992.00 | $4,990.00 | **+$998.00** |
| **Kentucky (`KY`)** | $3,342.96 | $4,042.96 | **+$700.00** |
| **Wisconsin (`WI`)** | $4,417.67 | $5,604.87 | **+$1,187.20** |
| **Arkansas (`AR`)** | $3,987.60 | $4,180.60 | **+$193.00** |
| **Alabama (`AL`)** | $4,382.85 | $4,682.85 | **+$300.00** |
### Proposed Solution
1. Add `taxable_roth_conversions` to:
* `gov.states.co.tax.income.subtractions.pension.income_sources`
* `gov.states.ga.tax.income.agi.exclusions.retirement.sources`
* `gov.states.ky.tax.income.exclusions.pension_income.other_retirement_income_sources`
2. Add `taxable_roth_conversions` to `taxable_retirement_distributions.py`:
```python
adds = [
"taxable_ira_distributions",
"taxable_401k_distributions",
"taxable_sep_distributions",
"taxable_403b_distributions",
"keogh_distributions",
"taxable_roth_conversions",
]
3. Update `wi_retirement_income_exclusion_amount.py` (Line 30) and `ar_retirement_or_disability_benefits_exemption_person.py` (Line 23) to include `taxable_roth_conversions`.
Contributor guide
Research direction
Start by reading the listed Colorado, Georgia, and Kentucky YAML sources, the Wisconsin and Arkansas exclusion variables, and taxable_retirement_distributions.py. Compare how each currently collects retirement income, then add taxable_roth_conversions in the specified locations. Done means Roth conversions receive the same applicable exclusions as the listed retirement distributions in all six states.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend, fintech-quant
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 65/100