The 30-second version
Our old "optimized" Roth strategy picked one target and held it for the whole conversion window. Fill the 24% bracket every year, say, until the traditional IRA is drained. One ceiling, every year, no matter what was happening in the client's life that year.
The new engine picks the best ceiling year by year. It might convert hard into the 24% bracket for three years, pull back to the top of the 12% bracket the year Social Security switches on, tuck just under an IRMAA threshold for the two years that set the client's Medicare surcharge at 65 and 66, then open back up once the coast is clear.
Three things to take to your next client meeting:
- It is never worse. Same return, tax, and modeling assumptions as before — every client's plan comes out equal to or better than the old single-ceiling plan. We replayed the last 5,000 real optimized plans: zero got worse. 70% improved, by a median of 2.6% of lifetime wealth — and in the tail, by millions.
- It is just as fast. Still about a second. Nothing your client sees slows down.
- You can show your work. The year-by-year plan table now displays the ceiling the engine chose for each year — so when a client asks "why does this year convert less?", the answer is right there.
If you just want the headline, that's it. The rest of this explains why a year-by-year plan is both doable and trustworthy — because the reason it's hard is exactly the reason it's valuable.
1. Why one ceiling leaves money on the table
A Roth conversion is a bet: pay a known tax rate now to escape an unknown — usually higher — tax bill later. Later tax on the withdrawals, on the Social Security those withdrawals drag into taxability, on the Medicare surcharges they trigger, and on whatever the heirs inherit still sitting inside a traditional IRA.
Here's the key idea. If every retirement year looked identical, one fixed bracket really would be the right answer. You'd have nothing to gain from varying it. The entire reason year-by-year beats one ceiling is that retirement years are not identical — and you already know the four events that make them different, because you plan around them every day:
- The Social Security tax torpedo. Before benefits start, a dollar converted costs a dollar's worth of bracket. After benefits start, that same dollar can pull a second dollar of Social Security into the taxable base — so the true cost of converting jumps the year benefits turn on. The right ceiling should step down that year. A single ceiling can't step down for one year.
- IRMAA's two-year lookback. The Medicare Part B and D surcharges are a step function of income from two years prior. Being one dollar over a threshold at 63 costs the client all year at 65. The best tier to duck under changes year to year, and it's driven by a year you have to see coming in advance. A single ceiling either eats the surcharge every year or dodges it every year — it can't dodge it only in the years that matter.
- The widow(er)'s penalty. When one spouse dies, the survivor files single: the brackets and the standard deduction roughly cut in half. Conversions are dramatically cheaper while both spouses are alive and filing jointly. That's a reason to convert harder early and ease off later — again, something one flat ceiling can't express.
- The 2028 senior-deduction change. A scheduled shift in the senior standard deduction moves the goalposts in one specific year.
One ceiling has to compromise across all four of these at once. A year-by-year schedule gets to be aggressive in the years conversions are cheap and cautious in the years they're expensive. Depending on the household, the conversion's own value at stake here runs in the 2.2%–6.5% range — and it's concentrated at exactly these breakpoints.
2. Why this is a genuinely hard problem
Here's the wall you hit the second you try to actually compute the best year-by-year plan.
The engine gives each year a menu of 13 possible ceilings — the seven federal brackets (10, 12, 22, 24, 32, 35, 37%) and six IRMAA tiers. A plan picks one ceiling for each year of the conversion window.
Now count the plans. With 13 choices in year one, 13 in year two, and so on, the number of possible schedules is 13 multiplied by itself once per year. For a very ordinary case — a single filer converting $300k over a 12-year window, which after some setup leaves 10 years to actually optimize — that's:
13 × 13 × 13 … (ten times) = about 138 billion possible schedules.
And every one of those 138 billion schedules requires a full multi-decade cashflow projection to score properly — because you can't know if a plan is good until you've run it all the way out to the client's end age. Even at a millisecond per projection, checking them all is over four years of nonstop computing time for a single client. Brute force isn't slow; it's impossible. No amount of hardware fixes it.
So we don't check them all. Everything below is how we get the same answer that checking all 138 billion would give — while actually running only a few hundred projections.
3. What we're actually maximizing
Worth being precise about the goal, because it's the number your client already sees. For any given schedule, the engine runs a full deterministic projection — each year it converts as much as that year's ceiling allows, pays the tax, grows the accounts, takes RMDs, and so on — and adds up lifetime wealth:
all the spendable cash across every year + the traditional IRA left to heirs, after the heirs' tax + the tax-free Roth left to heirs.
Undiscounted, nominal dollars. This is exactly the lifetime-wealth figure on the client's blueprint — the optimizer is maximizing the same number you put in front of them.
4. The two insights that make it solvable
This is the part worth slowing down on, because it's where the cleverness lives.
Insight one: a flat ceiling is already excellent
There's a classic result in optimization that says: if the cost of converting were smooth and the same every year, then the best possible plan is the one that keeps your marginal tax rate constant across every converting year.
Read that again, because it's quietly remarkable: holding the marginal rate constant is exactly what a flat ceiling already does. "Convert to the top of the 24% bracket every year" is a constant marginal rate. So in a world where every year looked the same, the old single-ceiling optimizer was already producing the mathematically optimal answer.
That's why the flat ceiling captures the lion's share of the value, and why year-by-year is a refinement, not a revolution. All the additional gains come from the three specific ways reality breaks that "every year looks the same" assumption:
- IRMAA is a cliff, not a ramp. The smooth-cost argument assumes you can slide a dollar at a time. You can't slide across a $1-over-the-line surcharge cliff.
- The rules change mid-plan. The torpedo turns on at Social Security. Brackets halve at widowhood. The 2028 deduction shifts. The cost of converting genuinely isn't the same function every year.
- RMDs are forced. Once RMDs begin, income gets pushed into later years whether the plan likes it or not.
And here's the crucial part: every one of those violations is localized to specific years. That's precisely what a year-by-year ceiling can exploit and a single ceiling structurally cannot.
Insight two: each year's outcome depends mostly on that year's own ceiling
This is what turns an impossible problem into an easy one. The tax and take-home in year 7 are driven overwhelmingly by how much you convert in year 7 — which is set by year 7's ceiling. Earlier years do reach forward a little (converting more in year 3 permanently pulls dollars out of the traditional IRA, which nudges down year 9's RMD and its taxable income). But that forward nudge is small next to year 9's own ceiling.
In plain terms: the years are nearly independent. They're coupled, but the coupling is weak and short-range. And that near-independence is the crack in the 138-billion wall.
5. The method: optimize one year at a time, then repeat
If the years were perfectly independent, the whole thing would be trivial: optimize each year on its own, 13 choices each, done in one pass.
The core move: hold every year fixed except one, and find the best ceiling for that single year by scanning all 13 options. Then move to the next year and do the same. Then the next. Sweep through all the free years once — and because tweaking year 3 might change what year 5 should do, sweep through a few more times to let those adjustments settle.
That's it. That's the whole engine. And look at what it does to the cost:
Optimize-one-year-at-a-time: a few hundred projections.
Brute force: 138 billion projections.
We turned a problem that multiplies (13 choices compounding across every year) into one that merely adds (a fixed amount of work per year). That's the entire ballgame — going from exponential to additive is the difference between "four years of compute" and "about a second."
Two properties make it safe to trust:
- It can never go backward. Every time we re-optimize a year, the current choice is one of the 13 options on the table — so an update can only hold steady or improve. Lifetime wealth climbs monotonically and settles at a plan where no single-year change helps.
- We don't just trust it — we checked it against the truth. More on that in §7.
Giving it a good running start
We don't start the year-by-year sweep from nothing. Where it begins matters — a good starting point lands it in the right neighborhood faster and, more importantly, guards against settling for a merely-good answer when a better one exists. So the search begins from several carefully chosen starting points, keeps whichever finishes best, and always includes the old flat plan among them — which is what makes the result provably never worse than before (see §6).
6. "Never worse" is a guarantee, not a hope
This is the promise that lets you run it on every existing case without a second thought, so it's worth being exact about why it holds.
Start with the lifetime wealth of the old single-ceiling optimizer — the exact number the prior version produced. The year-by-year search produces its own best plan, and then a single gate decides what ships:
Return the year-by-year plan only if it beats the flat plan. Otherwise, return the old flat result unchanged.
So the output is, by construction, the better of the two — always at least the flat result, never below it. Even a hypothetically broken search that returned garbage could only send us back to the old flat answer; it could never ship something worse than what you had. That gate is the entire guarantee. It's not a statistical tendency; it's a structural floor.
And two things make hitting that floor rare rather than routine: the search starts from the flat plan and only climbs, so it usually clears the bar on its own; and a flat plan is always a valid option everywhere, so the worst case is simply "found nothing better" — which just returns flat.
The gate is the safety net. The smart starting point is why the net rarely has to catch anything.
That's what let us replay the last 5,000 real optimized plans with confidence: 0 got worse, 70% got strictly better, median improvement 2.6% of lifetime wealth, with a long tail of large wins.
7. Does the shortcut actually find the best plan?
Fair question — optimizing one year at a time is a shortcut, and shortcuts can settle for "good enough." So we checked it against ground truth wherever the problem is small enough to check every possibility.
Take a single filer, age 64, Social Security starting at 67, and shrink the window until only three years are free. That's just 2,197 possible schedules — small enough to brute-force every one and find the true optimum. The result:
| Approach | Plan | Lifetime wealth |
|---|---|---|
| Best flat ceiling | 12% every year | $3,882,259 |
| Our year-by-year method | 12%, 12%, 10%, 10%, 10%, 12%… | $3,898,970 |
| Exhaustive brute force | 12%, 12%, 10%, 10%, 10%, 12%… | $3,898,970 |
Two things stand out. First, the true optimum is genuinely not flat — it drops to a 10% ceiling for exactly the window years where the torpedo engages, then goes back to 12%. That's the localized move a single ceiling physically cannot make, and here it's worth $16,711 over the best flat plan. Second, our method landed on that exact plan: it matched the exhaustive brute-force answer down to the dollar.
We ran this across every small case we could enumerate, and the shortcut recovered the true optimum every single time. For the full 10-year window we can't brute-force the check — that's the 138-billion computation we're avoiding in the first place — so there we rely on the near-independence argument plus these exact small-case confirmations.
8. Fast enough for a browser
None of this matters if the client watches a spinner for a minute. Three things keep it instant:
- The work grows gently, not explosively. The whole search is a few hundred to a couple thousand full projections depending on mode — versus 138 billion for brute force. It scales with years × ceilings, not ceilings-to-the-power-of-years.
- It runs as compiled code. The production engine is compiled rather than interpreted — that's what buys the raw speed.
- The window is capped, which keeps the year count small for essentially every real client.
The result: the core calculation returns in a median of 313 milliseconds (worst case observed: 623 ms). That's the engine itself; the full round trip a client experiences — including saving the result and rendering the page — lands at about a second.
9. Where this really moves the needle — and where it just ties
The never-worse guarantee means it's safe on every client. But it doesn't help every client equally, and you should know which cases to get excited about — because the honest answer isn't "all of them."
Year-by-year earns its keep when the right ceiling should genuinely change across the window. That needs a structural reason; the dollar size of the win then rides on separate amplifiers. You need both.
Structural reasons the flat ceiling is a bad compromise:
- A regime change inside the window — Social Security switching on, an IRMAA tier the flat ceiling straddles, RMDs starting at 75, the filing-status flip at widowhood. A single ceiling either eats the cost every year or forgoes the move every year; year-by-year pays it only when it's worth paying.
- Compressed brackets. Single filers, and households whose baseline income already fills the low brackets, have little headroom — so each year's decision is genuinely distinct. Wide married-filing-jointly brackets absorb a flat ceiling comfortably, and there's less for year-by-year to find.
- A feasibility corner. When the traditional balance grows so fast that no low ceiling can finish the conversion in time, the flat optimizer is forced to a high ceiling that empties most of the balance in year one or two. Pacing that same total evenly across the window — catching tax-deferred growth and filling cheaper brackets on the way — is the single biggest source of gain we see.
Amplifiers that turn a per-dollar edge into a headline number:
The gain is fundamentally a small improvement in the tax timing of each converted dollar. Its size is roughly:
(edge per converted dollar) × (dollars converted) × (tax-free compounding to the end of the plan).
So the same structural win reads as tens of thousands or as seven figures depending entirely on three multipliers — the size of the IRA, the growth rate, and the years of tax-free runway to the client's end age.
And where it simply ties: wide brackets, moderate income, no nearby cliffs, ordinary growth — the year-by-year plan lands right on top of the flat plan. That's not a failure. That's the guarantee doing its job: it costs nothing on the cases it can't improve, and banks the difference on the ones it can.
10. Known limitations
- The near-independence of years is a well-supported assumption, not a proven theorem for the full-size problem. It's validated on every case we can brute-force, and even where it's imperfect, the never-worse guarantee bounds the downside.
- The window cap is a real constraint that costs some lifetime wealth — the single highest-wealth plan often runs decades past what a client can realistically execute. We deliberately return the best plan that finishes in the window, because a 27-year plan a 62-year-old can't follow isn't a better plan. It's a trade, not a free lunch — and the flat plan remains the floor either way.
In one paragraph
A year-by-year Roth plan has roughly 138 billion possible schedules — far too many to check. But lifetime wealth depends mostly on each year's own choices, so we don't have to check them all: we optimize one year at a time and sweep a few passes, turning an impossible search into an easy one — a few hundred projections instead of 138 billion. We start that search from the old flat plan, which makes it provably never worse than what you had, and run it as compiled code so it returns in about a second. On every case small enough to verify, it matches the true best answer down to the dollar — and on 5,000 real plans, it made 70% better and none worse.