Two dollars of income cost a couple I was modeling last week $9,574. Not two thousand — two. That is the Roth conversion vs ACA subsidy problem in one line, and as of January it is live again for anyone retiring before 65.
The enhanced premium tax credits that ran from 2021 through 2025 expired on December 31 and were not extended. What came back with them is the old 400%-of-the-federal-poverty-line cliff: below it you get a subsidy, above it you get nothing at all. Not a taper. Nothing.

The two-dollar problem
Take a married couple, no kids, living in one of the lower 48. Their poverty line for 2026 coverage is $21,150, so the cliff sits at four times that: $84,600 of modified AGI.
At $84,599 of income, the sliding scale says they owe about 9.96% of income toward a benchmark silver plan — call it $8,426 for the year. At $84,601, the credit is gone and they owe the whole benchmark premium. If that plan runs $18,000, their cost jumps from $8,426 to $18,000 because they earned two more dollars.
That is a marginal tax rate of roughly 478,700% on those two dollars. I ran that number three times because I assumed I had misplaced a decimal. (I had not.)
Now put a Roth conversion next to it. A conversion is ordinary income. It lands in the same MAGI that the cliff reads. So a conversion that looks perfectly sensible on its own — fill the 12% bracket, maybe reach into the 22% — can quietly step over a line that costs five figures, and nothing on your 1040 will announce it until you reconcile the credit at tax time.
Why nobody gives you a straight answer on this
Search for it and you will find the same shape of answer everywhere: it depends, talk to an advisor, here is a rule of thumb. One widely-read piece literally calls it “the impossible tradeoff.” The Bogleheads threads on it run for pages and end in disagreement.
I understand why. Framed as a yes/no question it genuinely is unanswerable, because it is not a yes/no question. Converting is not better or worse than keeping the subsidy — the right answer is a schedule: how much to convert in each year between retirement and 65, given that the cliff applies in those years and Medicare’s IRMAA surcharge takes over afterwards with its own cliffs and a two-year lookback. That is a constrained optimization problem over a horizon, and humans are bad at those, which is the entire reason my day job existed.
So I stopped arguing about it and put it in the model.
What the solver actually does with it
The Roth conversion optimizer now models the premium tax credit and the cliff for every pre-Medicare year in your plan. It is under Advanced assumptions and off by default, because if you are not on a marketplace plan none of it applies to you and I would rather not make everyone pay for a feature they do not need.
Switch it on and the answers get noticeably less obvious. Three runs from the same starting couple, retiring at 62 with a 29-year horizon:
With a $1.2M traditional IRA and an $18,000 benchmark premium, the plan without ACA modeling converts about $133,000 a year for the first three years. With the cliff switched on, it converts $28,130 — and parks there. Not at the cliff. At 133% of the poverty line, which is where the applicable percentage steps from 2.10% to 3.14%. The solver found a cheaper step further down the scale than the one I would have aimed at by hand.
Give the same couple a $3M IRA and a $30,000 premium and it parks at $42,300 instead, exactly 200% of poverty. Bigger balance, more conversion pressure, so it buys a little more income and pays a little more premium.
Then make the subsidy small — a $2M IRA and a $3,000 benchmark premium — and it does something I honestly did not expect on the first run: it ignores the cliff entirely and converts to $243,600 of MAGI. With only $3,000 a year of credit on the table, protecting it is not worth deferring that much conversion. Which is correct, and it is the thing a rule of thumb will never tell you. “Stay under 400% FPL” is good advice right up until it costs you more than it saves.
The part I got wrong the first time
Worth admitting, because it is the kind of error that hides well. The applicable percentage is not a smooth slide. It is a flat 2.10% below 133% of poverty, and then it starts again at 3.14% at exactly 133%. There is a step there, not a ramp.
My first version of the cost curve drew a straight line through that edge. The model still solved, still looked sensible, still produced a plan — and overstated the cost of every dollar below 133% of poverty by about $293. Nothing crashed. There was no error message. It was just wrong in a direction that would have nudged the schedule, and I only caught it because I went back to the actual IRS table instead of trusting my own summary of it.
(The percentages come from Rev. Proc. 2025-25, and the poverty guidelines from the HHS tables published in the Federal Register. Both are in the code comments with their URLs, because a tax figure without a source is a liability.)
There is a pattern in this project I keep relearning: cliffs are expensive and brackets are cheap. Graduated state tax brackets cost the model nothing — they stay a plain linear program. Every cliff, whether it is IRMAA or this one, costs integer variables and solve time. The ACA cliff added about 0.15 seconds. Worth it.
What it does not do, and one thing to watch
It does not know your benchmark premium. That number is the second-lowest-cost silver plan for your household and your county, it varies enormously by geography and age, and I am not going to ship a plan-price database and pretend it is current. You enter it. Your Marketplace application shows it, or the plan preview at healthcare.gov will give it to you in a couple of minutes.
It also does not model the Social Security tax torpedo yet — the tool still uses a flat taxable fraction rather than the real provisional-income formula, so the 40%-ish marginal humps in the 62-to-70 window are not in there. That is the next piece of work.
And one genuine footgun: when ACA modeling is on, the plan computes your marketplace premium as part of the cash flow. So take health premiums out of the living-expenses figure, or you will pay for them twice and the plan will look worse than it is. The page says so, and the notes under the result say so, but it is the kind of thing worth saying three times.
One more thing in the tool’s favor and not mine: if you run a plan with ACA modeling switched off and it would have blown through the cliff, the notes tell you so and point at the switch. I would rather the default run stay instant and have the tool mention what it skipped than quietly turn a simple calculation into an integer program for everyone.
Whether any of this survives Congress is a separate question. A three-year extension passed the House 230–196 in January and has been sitting in the Senate since. Until something moves, 2026 and 2027 planning happens under the cliff, and the arithmetic above is the arithmetic.
If you are in the gap years between retiring and Medicare, the optimizer is free and there is no signup. If you want the background on how the conversion math works before the health-insurance layer goes on top, I wrote up how much to convert to a Roth each year, and the Roth conversion ladder and its blind spot covers the FIRE version of the same problem.
Things that I use, like, and am affiliated with:
Mint Mobile offers great cell phone service for $15 flat, get $15 off using the link. Get discounted phones with service activation and no contract.
I never spend money before I check Mr Rebates or Rakuten to get cashbacks, rebates, discounts, coupons or cheaper gift cards.
