wealthschemaresourcesarticlesRoth conversion windows as a constrained optimization problem
Article

Roth conversion windows as a constrained optimization problem

The bracket-fill heuristic works when there is only one bracket. Real households cross five thresholds and three regimes simultaneously, and the optimum is rarely where a single-bracket optimizer thinks it is.

WealthSchema StaffTax & retirement modelingMay 8, 20265 min read

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.

Formula
The Roth conversion optimization
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 actual optimization is more complex than this static form (it's stochastic over return paths, includes RMDs once they start, and has end-of-life transfer options) but the constraint structure is right. The key observation: the constraints are not independent. A bracket-fill optimizer that handles only the first constraint produces wrong answers when any of the others bind.

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 priorPart 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:

  1. Step 1
    Discretize the conversion space
    Per year, evaluate conversions at $5K increments from $0 to a reasonable upper bound (often the top of the next tax bracket plus 20% margin).
  2. Step 2
    Compute the full-cost-of-conversion at each grid point
    Federal 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.
  3. Step 3
    Project future tax exposure with and without the conversion
    Simulate the Roth balance and traditional balance forward, including RMDs once they start, and compute total tax liability over the projection.
  4. Step 4
    Solve for the conversion path
    Dynamic 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.
  5. Step 5
    Sensitivity analysis
    Re-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 handlesAccuracyAudience
Bracket-fill calculator (free / consumer)Federal marginal onlyAdequate for the 60% of households where no other constraint bindsDIY consumer
Multi-constraint planner (advisor tools)Federal + state + IRMAA + NIITAdequate for most pre-Medicare and post-Medicare households separatelyAdvisor seat
Stochastic optimizer (institutional)All five constraints + return uncertainty + life expectancy + sensitivity analysisProduction-grade for the household types that benefit most from optimizationRIA / family office
ACA-aware plannerAdds the pre-Medicare premium-subsidy interactionSpecialized — most products miss this entirelyPre-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.

Frequently asked questions

How do we model uncertainty in future tax rates?+
Two ways. Sensitivity analysis: run the optimization under (a) current rates locked in, (b) TCJA sunset (rates rise in 2026), (c) further increases via legislative action. The optimal path is usually robust across the first two and changes meaningfully under the third. Stochastic modeling: assign probabilities to rate scenarios and weight the optimization. The institutional-grade tools do this; most do not. We recommend sensitivity analysis as the floor and stochastic modeling as the upgrade for products serving HNW households.
What's the right discount rate for the present-value calculation?+
Two reasonable choices. The household's expected after-tax investment return on the marginal dollar — captures the opportunity cost cleanly but is hard to estimate. A risk-free real rate (e.g., TIPS yield) — defensible as a conservative floor and avoids the household-specific calibration problem. We use the second by default and the first as a sensitivity. The two answers usually differ by 5–15% on the optimal conversion amount.
Does the optimization change with the SECURE 2.0 RMD start age changes?+
Yes — the gap years between retirement and RMD start are the prime conversion window, and they're now longer (4–7 years more for owners born in 1960+). The optimal annual conversion is smaller per year but covers more years. Engines that haven't been recalibrated post-SECURE-2.0 are systematically over-converting in the early gap years and under-converting later.
How do estate-planning considerations affect the optimization?+
Substantially, especially for HNW households. The Roth IRA passes income-tax-free to non-spouse beneficiaries (subject to the 10-year distribution rule). The traditional IRA passes with the deceased's basis but the beneficiary pays income tax on distributions at their own rate. If the beneficiaries are in higher brackets than the owner, conversions are more attractive than the owner's tax math alone suggests. A real optimizer considers the household's beneficiary structure as part of the inputs.