Year-End Moves: December's Decisions, Decided Together
RetireOdds now prices your December tax moves together, because a Roth conversion and a gain harvest compete for the same bracket room.

Every November, Mayur used to open four different mental spreadsheets: how much of a Roth conversion could we afford, whether we should realize any capital gains, whether it was worth harvesting a loss somewhere, and whether an RMD or a charitable distribution needed to be timed a certain way. He'd solve each one separately, feel good about the answer, and then discover that doing the Roth conversion he'd planned ate the exact bracket room the capital gain harvest was counting on. December decisions kept quietly sabotaging each other, and by the time we noticed, the year was over and the numbers were locked in.
The moves aren't independent, so stop pricing them that way
The Year-End Moves workspace exists because those December decisions all draw on the same scarce resources. A Roth conversion, a capital gains realization, a loss harvest, and RMD or QCD timing all compete for the same bracket headroom, the same ACA subsidy cliff, and the same IRMAA tiers. Do one and it changes what the others can safely do — a conversion sized for one purpose can quietly consume the room a gain harvest was planning to use.

So instead of evaluating each move on its own, the workspace prices them together, against the real constraints that connect them. You see the actual tradeoff: if we convert this much, here's what's left for a gain, and here's whether either move pushes us over an IRMAA tier or off an ACA subsidy cliff we didn't notice we were near.
Draft first, apply on purpose
The workspace never touches your actual plan while you're exploring. Everything happens in a draft — you can shuffle the conversion size, test a different harvest amount, see how the combination lands, and none of it is real until you take the explicit step of applying it. A draft never silently changes the plan. That distinction sounds small until you've spent an evening testing five different combinations and desperately do not want the fourth one to have quietly become official.
When you do save a year-end plan, it settles into the following year's opening books exactly once — no double counting, no risk of the same conversion showing up twice because you revisited the workspace in January.

One tax engine, not two opinions
The workspace coordinates with the same tax engine that runs the rest of RetireOdds — the Ledger, the Monte Carlo simulation, the healthcare projections. That matters more than it sounds like it should. We've used other tools where the "what if I convert more" calculator used a slightly different tax model than the main projection, and the two would disagree by enough to matter. Here, the December plan and the long-run plan are reading off the same rules, so a decision that looks good in the workspace is a decision that's actually good in the plan, not just good in an isolated sandbox.
Key takeaways
- Year-End Moves evaluates Roth conversions, gain harvests, loss harvests, and RMD/QCD timing as a set — because they compete for the same bracket room, ACA cliff, and IRMAA tiers.
- Everything starts as a draft; applying to the plan is a deliberate, explicit step, never automatic.
- A saved year-end plan settles into next year's opening books exactly once — no double counting.
- The workspace shares the same tax engine as the rest of the app, so a good-looking December move is good in the actual plan, not just in isolation.
Before you make any single December move in isolation, price it against the others in Year-End Moves first.


