The shape of a Roth conversion | Roth Blueprint
Roth Conversion June 28, 2026 0:05:00 min read Featured

The shape of a Roth conversion

A technical look at the tax-and-IRMAA landscape the optimizer searches for every household, and the engine work behind recent improvements in speed and income accuracy.

Every multi-year Roth conversion plan a client receives is the output of an optimization. The engine determines, across each future year, how much to move from a traditional IRA into a Roth — weighing the tax cost incurred today against decades of tax-free growth, while accounting for IRMAA surcharges, tax-bracket boundaries, required minimum distributions, and any limit the client places on how long the conversion should take. It is not a closed-form calculation; it is a search over a high-dimensional surface. This article examines that surface directly, along with recent work that reduced worst-case latency by roughly four times and corrected a pattern of income under-delivery affecting approximately 1,045 cases.

The landscape the engine searches

The example below is a representative household: a 58-year-old with a $2M traditional IRA and a seven-year limit on the conversion period. The engine evaluates 13 candidate caps — one for each tax bracket and IRMAA tier — and, for each, searches the optimal conversion amount. The plot shows only the plans that satisfy the seven-year constraint, as the engine does; plans that cannot complete in time are excluded.

the selected plan each cap’s best in-window plan
One axis is the conversion amount; the other is the 13 caps ordered by per-year conversion headroom (tight to loose), so the IRMAA tiers fall among the tax brackets where they actually bind. Height and color represent lifetime wealth. The household is synthetic; no client data is shown.

Three properties are worth noting:

  • The surface is not convex. Each ridge and discontinuity corresponds to a tax-bracket or IRMAA-tier threshold; crossing one raises the marginal cost of the next converted dollar. The result is a broad plateau interrupted by sharp drops, not a single smooth peak.
  • It is bounded by the client’s constraint. A slower conversion under a tighter bracket would accumulate more lifetime wealth, but it cannot complete within the seven-year window, so it is not an admissible plan. Such plans are excluded from the surface and from the recommendation. Plotting the full, unconstrained surface would place the global maximum in a region the client has already ruled out, which misrepresents the actual decision.
  • The optimum is a partial conversion. The selected plan converts approximately $1.2M under a mid-range cap — neither the entire balance (which over-pays tax and exceeds the window) nor the loosest bracket (which converts too aggressively in the early years). An interior optimum of this kind is not evident without evaluating the full surface.

How the optimum is located

The previous search treated the surface as unimodal and located the maximum with a golden-ratio line search. On a plateau with discontinuities that assumption does not hold: the method left up to 1.13% of lifetime wealth unrealized and, in some cases, selected a point outside the admissible region, causing the candidate to be discarded by the outer selection step. The current implementation uses a coarse grid followed by a single local refinement, restricted to plans that satisfy the time constraint. It produces no measurable regret relative to an exhaustive search, in fewer sequential evaluations — which also reduces latency.

Performance

The full surface is evaluated on AWS Lambda for each recommendation. The worst case — a complete bracket-and-IRMAA fan-out with an inner conversion-amount search on each candidate — previously required approximately 9.65 seconds. A series of changes reduced it below one second: factoring the tax computation out of the inner solver loops (approximately 2.4 times, with bit-identical output), increasing the function’s memory allocation to obtain a full vCPU (approximately 1.7 times), the revised search described above, and reductions in cold-start overhead. Measured against the prior engine on the 100 most recent cases, with both running on Lambda:

current engine prior engine
0s1s2s3s4s5s0.12s0.13smin0.87s3.37smedian1.39s4.13sp951.58s5.30smax
Lambda latency across 100 cases. The current engine’s median is 0.87 seconds, against 3.37 seconds previously; its slowest case is faster than the prior engine’s median. In practice, this is the difference between delivering a revised plan after a meeting and producing it during the conversation.

Income-delivery accuracy

Latency is straightforward to verify. Delivery accuracy — whether the projected income is actually produced in every year — is more consequential, particularly once a client is drawing on the plan. We evaluated the 50,000 most recent cases against two invariants on every projected year: internal consistency between the engine’s two take-home calculations, and delivery of the requested income. No case produced an error or a non-finite result. Approximately 1,045 cases, however, under-delivered income in one specific circumstance.

The cause was a unit mismatch in the year a conversion completes and the traditional IRA is exhausted. The engine compared a gross IRA balance against a net, after-tax income target, determined the IRA was sufficient, and did not draw from the Roth — leaving the household short while a tax-free, penalty-free Roth balance remained available. We identified this defect, along with three related issues (including an IRMAA surcharge double-counted within the optimizer’s objective), corrected them, and re-validated against all 50,000 cases. As a result, 666 affected income-years now deliver correctly — approximately $66.5M in contracted income — with no regressions, and every unaffected case unchanged to the dollar.

Result

The engine now searches the full conversion landscape in under a second, restricts its recommendations to the constraints each client sets, and delivers the income it projects. The visualization above captures the central difficulty in a single image: a deceptively flat objective with discontinuities that carry real cost, and an optimum that is rarely a corner solution.

Share This Article

© Copyright 2026