Every retirement-planning product ships a Roth conversion calculator. Almost all of them solve the same easy case: convert just enough ordinary income to fill the current marginal bracket without spilling into the next. The math is one line, the dashboard looks definitive, and the answer is correct for households whose only tax surface is the federal marginal schedule.
The households who benefit most from Roth conversion modeling are exactly the ones where that's not the only surface. Their conversion plans bind against IRMAA tiers, NIIT thresholds, ACA premium subsidy slopes, LTCG bracket stacking, and state-tax conformity — five constraints the bracket-fill heuristic cannot see. When any of them binds, bracket-fill returns the wrong answer. Companion piece: the Roth conversion ladder under SECURE 2.0, which covers the multi-year laddering surface this article's single-window optimization plugs into.
The optimization problem, stated honestly
A household considering Roth conversions over a multi-year window is solving a discrete-time stochastic optimization problem. The objective is the present value of after-tax wealth at some horizon (commonly age 95 or end-of-life). The decision variables are the conversion amounts in each year of the window. The constraints are the tax law's various thresholds, which create kinks in the objective function.
max over {C_t} : Σ_t δ^t × W_after_tax(t)
subject to:
marginal_tax(taxable_income_t) ≤ target_bracket
agi_t ≤ irmaa_threshold(t+2)
agi_t ≤ niit_threshold (or accept the surtax)
agi_t ≤ aca_subsidy_cliff (if pre-Medicare)
taxable_income_t ≤ ltcg_0_pct_top (if relevant)
conversion_t ≥ 0- C_t
- = Conversion amount in year t (decision variable)
- δ
- = Discount factor (typically tied to expected return)
- W_after_tax(t)
- = After-tax wealth at horizon, accounting for the tax-free growth of Roth
- irmaa_threshold(t+2)
- = IRMAA bracket evaluated 2 years forward — Medicare uses 2-year-prior MAGI
The constraints that actually matter
In our experience auditing Roth conversion calculators across a dozen products, five constraints dominate the optimization for the households who benefit most.
IRMAA brackets
Medicare Part B and Part D premiums are based on Modified Adjusted Gross Income from two years prior. The 2025 IRMAA tiers for individual Medicare beneficiaries with single filers (MFJ thresholds are doubled):
| MAGI 2-yr prior | Part B surcharge / mo (2025) | Part D surcharge / mo (2025) | Annual surcharge (single) | |
|---|---|---|---|---|
| ≤ $106,000 | $0 | $0 | $0 | |
| $106,001 – $133,000 | +$73.10 | +$13.70 | +$1,041 | |
| $133,001 – $167,000 | +$182.80 | +$35.30 | +$2,617 | |
| $167,001 – $200,000 | +$292.50 | +$57.00 | +$4,194 | |
| $200,001 – $500,000 | +$402.20 | +$78.60 | +$5,770 | |
| > $500,000 | +$438.80 | +$85.80 | +$6,295 |
The Part D figures are approximate and vary by plan; total surcharge is the sum of B and D. For a household with two Medicare beneficiaries, double the annual surcharge. Crossing a tier by even $1 of MAGI moves the household into the higher tier — the brackets are step functions, not gradual.
A Roth conversion that fills the 24% federal bracket but tips MAGI into the next IRMAA tier costs ~$5K–$11K of additional Medicare premium per year for the next two years (until the IRMAA basis resets). For a household near a tier boundary, the IRMAA cost dominates the federal-tax savings — the conversion should be sized to stop $1 below the tier, not at the bracket top.
NIIT (3.8%)
The Net Investment Income Tax of 3.8% applies to investment income above $200K (single) / $250K (MFJ). Roth conversions don't directly add to investment income, but they raise AGI, which is the comparison point. A conversion that pushes the household over the NIIT threshold causes the 3.8% tax to apply to the household's ordinary investment income (dividends, capital gains) for the year. The marginal cost of the conversion in this scenario is the federal rate plus 3.8% plus state plus IRMAA — easily 35–45% even at 24% federal.
ACA premium subsidies
Pre-Medicare households (younger spouse retiring early, or couples both pre-65) often rely on ACA marketplace subsidies. The subsidy is a function of MAGI as a percentage of the federal poverty level. For 2025, the cliff at 400% FPL is removed (subsidies extend smoothly), but the slope is steep — an additional $1,000 of MAGI in a 350% FPL household reduces subsidy by ~$700.
For a household at 380% FPL pre-conversion, a Roth conversion that pushes them to 450% FPL costs the federal tax on the conversion plus the lost subsidy — often equivalent to a 50–70% effective rate. The optimal conversion in this scenario is zero or very small until both spouses are on Medicare.
Long-term capital gains stacking
LTCG brackets (0%/15%/20%) stack on top of ordinary income. An early-retirement profile with low ordinary income can carry substantial LTCG at 0% by parking taxable income inside the 0%-LTCG band. A conversion that lifts ordinary income above the band displaces the same dollar of LTCG into the 15% rate. The marginal cost is the conversion's ordinary tax plus 15% of every displaced LTCG dollar — easily 30%+ even when the conversion sits inside the 12% bracket on paper.
State tax
State tax conformity to Roth conversions varies widely. Some states (Pennsylvania) do not tax distributions from qualified plans at all and treat conversions favorably. Others (California, New York) tax conversions at full marginal rates. Engines that don't model state tax produce recommendations that are wrong by 5–13% of the conversion amount.
What a real optimizer does
A production-grade Roth conversion optimizer has to be aware of all five constraints simultaneously. The architecture pattern that works:
- Step 1Discretize the conversion spacePer year, evaluate conversions at $5K increments from $0 to a reasonable upper bound (often the top of the next tax bracket plus 20% margin).
- Step 2Compute the full-cost-of-conversion at each grid pointFederal marginal + state marginal + NIIT (if triggered) + IRMAA delta (if tier crossed) + ACA subsidy delta (if pre-Medicare) + LTCG bump (if applicable). Sum is the year-t conversion cost.
- Step 3Project future tax exposure with and without the conversionSimulate the Roth balance and traditional balance forward, including RMDs once they start, and compute total tax liability over the projection.
- Step 4Solve for the conversion pathDynamic programming over years, evaluating each year's grid points conditional on the optimal continuation. The optimization is small enough (5–25 years × 30 grid points) to solve in seconds.
- Step 5Sensitivity analysisRe-run the optimization under different assumptions for future tax rates, market returns, and life expectancy. Report the optimal path PLUS the sensitivity bands.
The dynamic programming step is what differentiates a real optimizer from a bracket-fill calculator. The naïve year-by-year decision (convert to fill the bracket each year) is locally optimal but globally suboptimal — a household with limited future income may be better off converting less now and converting more in a lower-bracket year, even if the current year has nominal "room."
What about state-of-the-art tools?
The market for Roth conversion software has matured but still has gaps. As of 2026, most products fall into three tiers:
| What it handles | Accuracy | Audience | |
|---|---|---|---|
| Bracket-fill calculator (free / consumer) | Federal marginal only | Adequate for the 60% of households where no other constraint binds | DIY consumer |
| Multi-constraint planner (advisor tools) | Federal + state + IRMAA + NIIT | Adequate for most pre-Medicare and post-Medicare households separately | Advisor seat |
| Stochastic optimizer (institutional) | All five constraints + return uncertainty + life expectancy + sensitivity analysis | Production-grade for the household types that benefit most from optimization | RIA / family office |
| ACA-aware planner | Adds the pre-Medicare premium-subsidy interaction | Specialized — most products miss this entirely | Pre-Medicare retirees |
Six advisor tools audited by our team; one handled the ACA premium-subsidy interaction correctly. The ACA-aware tier is the smallest and the most under-served — and the gap is largest for the household segment whose Roth conversion decisions move the most money (early retirees, ages 55–64, drawing from taxable accounts).
What buyers of synthetic data should test for
Any Roth conversion product needs test data that exercises every binding constraint. A test corpus where every household is post-Medicare with $200K of income tests one slice of the optimization. The corpus that catches optimizer bugs includes:
- Pre-Medicare households at every FPL band from 200% to 500%
- Post-Medicare households at every IRMAA tier boundary
- Households with substantial LTCG sitting in the 0% bracket
- Households with NIIT exposure from significant investment income
- Households filing in states with non-conforming tax treatment of conversions
- Households spanning the 65th-birthday transition mid-projection
- Households with surviving-spouse status changes mid-projection
Each scenario exercises a different optimizer code path. Coverage of all of them is the difference between a product that ships correct recommendations and one that ships defaults.
Key takeaways
- Bracket-fill is locally optimal and globally suboptimal. The household types that benefit most from Roth conversions are exactly the ones where bracket-fill is wrong.
- Five constraints dominate the optimization in practice: federal marginal rate, IRMAA tiers, NIIT threshold, ACA premium subsidy slope, and LTCG bracket stacking. State tax adds a sixth.
- IRMAA tier crossings can dominate federal tax savings — a conversion that fills the 24% bracket may cost more in Medicare premiums than it saves in future tax.
- ACA premium subsidy interactions are the most commonly missed constraint in commercial tools. The cost of a missed-subsidy conversion can equal the tax savings several times over.
- A real optimizer uses dynamic programming over a discrete grid of conversion amounts, evaluating the full cost at each grid point including all binding constraints. The optimization is small enough to run in seconds.
- Test data for Roth conversion products has to span every binding-constraint scenario — pre-Medicare ACA, IRMAA tier boundaries, NIIT exposure, LTCG stacking, state-tax variation.