Last Updated: March 7, 2023
It’s been tough to get stuff done this week here in Austin, as we’ve had a wicked ice storm blast through. Why is it tough to do stuff on a computer during an ice storm? Two words: no school.
But I still managed to get a couple things done: a big upgrade to the Roth withdrawal tax and penalty models, and I finally finished a total overhaul of the Traditional and Tax and Penalty Minimization (TPM) withdrawal strategy write-ups, which I previously had on the FIRE Withdrawal Strategy Algorithms page.
Roth Early Withdrawal Tax and Penalty Model
Until this week, I was under the impression that if you took an early withdrawal from your Roth (before age 59.5), you’d be slapped with a 10% penalty if you withdrew earnings (vs principal) but you wouldn’t have to worry about tax implications – which is wrong!
It was also not clear to me how the withdrawals are tracked / ordered by the IRS, in terms of contributions vs conversions vs earnings.
So I did my homework, and I’ve tried to capture my new understanding of these early withdrawal rules below. As a result, I’m now much more confident that the Roth IRA early withdrawal rules are properly reflected in the Traditional and Tax and Penalty Minimization (TPM) withdrawal strategies.
Order of Withdrawal
When you make early withdrawals, the IRS tracks those withdrawals in the following order (no work on your part needed):
- withdrawing original contributions you made to your Roth account
- withdrawing any conversions from a Traditional IRA to your Roth account, starting with the oldest and ending with the most recent
- withdrawing from earnings (if any) generated by the contributions and conversion principal
Taxes and Penalties
First off, all the early withdrawal rules below assume it’s been at least 5 years since you made any contribution to any Roth IRA. A very good reason to encourage any folks you know just starting their careers to create and contribute to a Roth IRA (even if it’s a very small amount of money, and even if they want to change their investment platform/company later on). But most folks considering retirement (even early retirement) have had a Roth for at least 5 years (or will easily be able to wait until they’ve had one open for 5 years), so I haven’t included that in the withdrawal strategies or included it in the FIRE Portfolio Projection tool.
Many (most?) folks are aware that you will not pay any penalties when withdrawing original contributions you’ve made, nor will that withdrawal count as taxable income. Nice.
Conversions are a bit more complex. Any conversions that were made at least five “tax-years” ago can be withdrawn without penalty and won’t count as taxable income. E.g., if you converted funds anytime in 2023, you can withdraw that converted principal penalty-free starting on January 1, 2028.
Any conversions that were made LESS than five “tax-years” ago can be withdrawn, but you’ll pay a 10% penalty on those withdrawals. However, they will not count as taxable income, since you’ve already paid taxes on that money when you converted it from your Traditional IRA.
Finally, if you’ve managed to withdraw all your original contributions and/or conversions, then you’re left with withdrawing the earnings in the accounts. And the IRS makes that very painful: you will have to pay a 10% penalty on these withdrawals, PLUS they will count as standard taxable income.
Now of course there are a number of exceptions you might qualify for that could allow you to avoid penalties and taxable income – but I’m ignoring those for now.
Impact on Traditional Withdrawal Strategy
There were two main changes to the Traditional withdrawal strategy as a result of this Roth early withdrawal update.
First, all Roth withdrawals after the original contributions are depleted are earnings, so I’m now applying the 10% penalty AND adding the withdrawal to the standard taxable income total – which means more taxes. No conversions happen in the Traditional method, so no need to worry about that.
Second, I reversed the order of the final two steps in the Traditional method: now the “Pulling from Traditional IRA – with penalty” step happens before the “Pulling from Roth IRA – with penalty” step. I do this for two main reasons:
- If you can delay withdrawing from your Roth until after age 59.5, all earnings can be withdrawn penalty- and tax-free. Withdrawals from a Traditional IRA will never be tax-free (unless they fit within standard deduction).
- It’s better to leave a Roth IRA to your heirs than a Traditional IRA (assuming you didn’t intentionally pay taxes to create the Roth instead of keeping it in the Traditional IRA).
Impact on TPM Withdrawal Strategy
I was once again very glad I went with the Numerical Integration approach in the TPM. With a numerical solver, you can add complexity to a model pretty easily and still get the desired answer (even if it might take a bit longer to process).
New “Delta Cost Percent” for Roth
I first upgraded the Roth step in the “Compute Taxes + Penalties for Each Type of Withdrawal” section, where I determine the penalty+tax cost of withdrawing a small amount of money in the numerical integration process.
Previously I just had a 10% penalty on any withdrawals. So the “delta cost percent” for this withdrawal was always 10%.
Now I track what portion of the withdrawal is from conversions less than 5 “tax years” old, which has just a 10% penalty, and what portion of the withdrawal is from earnings, which has a 10% penalty and I also add towards the standard income total. Your new tax bill with this added standard income is computed, and then I determine how the tax bill changed to get your “tax delta”. This tax delta is added to the penalty total from the withdrawal to get the overall “delta cost percent” that is compared to other account withdrawals.
I also previously had a bunch of complex logic in place to ensure the total of Roth conversions would not exceed the Roth balance, which fortunately is no longer needed at all. Very happy about that.
Note: since social security income cannot start until age 62, and you should have tax- and penalty-free access to all Roth assets after 59.5, there is no need to recompute what your taxable social security income is with standard income additions from early withdrawing Roth earnings. I initially made that mistake, but I eventually realized those conditions would never overlap.
New “Execute Withdrawal” for Roth
Next I upgraded the Roth option in the “Execute Withdrawal for Lowest Tax + Penalty Option” section, which is performed when the Roth withdrawal has the lowest “Delta Cost Percent” described above.
Penalties and standard income additions are computed as I describe above, and the new total tax bill is also recomputed if any standard income additions.
Updating the GitHub Code
I’ve also updated the portfolio projection tool code on GitHub, to reflect these Roth withdrawal updates.
New Withdrawal Strategy Pages
I’ve been working on a major overhaul of the FIRE Withdrawal Strategy Algorithms Page content for a couple weeks now, and it’s now nearly done. I hope this page will serve as an important reference for much of the future analysis I’m planning, so hopefully the effort I’ve put into it will be worthwhile.
As I mentioned in the previous post, I haven’t updated the algorithms page since November 8 of last year, and I’ve made a tremendous number of upgrades to the Traditional Method and especially the Tax and Penalty Minimization (TPM) method since then.
Some of the big changes include:
- including RMDs
- a revamp of dividends calculation
- enabling both methods to go down to $0
- no more iteration with Taxes
- updates to Roth withdrawals (see above)
- many bug fixes
I also wanted to make the content more focused on the strategy/algorithm, and not focused how the portfolio projection tool I’ve built implements the algorithms, so that anyone can follow the steps themselves.
But as I did that, I recognized that the page was becoming way too long and unwieldy, so I split the content into two new pages, for the Traditional and Tax and Penalty Minimization (TPM) withdrawal strategies. And even those are on the long side, so I’m very glad I did that split.
The only items left on Traditional and Tax and Penalty Minimization (TPM) strategy pages are updating the graphical diagrams I built previously for these two strategies – which I think can help someone grasp the 10,000’ overview more easily. I just ran out of time – again, thank you Austin Treemageddon and schools being closed nearly the entire week.
New Tool Description Page?
I’m also debating whether it’s worth creating yet another page that describes how the portfolio projection tool I’ve built implements the strategies. On one hand, that could serve as another nice reference, but on the other hand I’m not sure it’ll be worth the time needed and most folks interested in how the tool works are probably more likely to just review the code itself (and Python is pretty easy to read).
New Stand-Alone TPM Withdrawal Tool For A Single Year
I’m also interested in creating a new stand-alone tool that folks can run for each individual year, rather than a full life-time simulation, that can run the TPM method and output exactly what accounts to withdraw from, with the exact amount to withdraw from each account.
Ideally I’d have that in an embedded Python interpreter or some other kind of UI near the top of the Tax and Penalty Minimization (TPM) strategy page as well.
I’m thinking you could run that tool at the beginning of the year using estimated expenses, income, etc. for the year, then run it again throughout the year as desired to make sure you’re on track (and make adjustments as needed for higher or lower expenses/income than expected), and then again at the end of the year to make any final withdrawals needed to ensure you hit the income targets you’re shooting for.
If that’s something that you think you’d find useful, let me know. I think it’ll be useful for my wife and me as well, years down the line when I’ve probably forgotten many of the details of the TPM strategy.
Other Future Work
Well, normally I’d list out other work I’m planning to do in the near future, but it’s exactly the same as the Future Work listed in last week’s post. So just take a look there!