Last Updated: March 17, 2023
At one point in our journey to Financial Independence (FI), I thought to myself, “How are we going to withdraw from all these different accounts we have? Especially once we’re FIRE, versus just FI (and still working). Is there some kind of best order? How much will taxes affect things?”
I pretty quickly found a lot of info online, but I was far from convinced that any of the methods I found were really optimal. Especially since we have some less common asset classes, like a 457(b) account.
So I set out to build a tool that would allow me to directly assess different withdrawal schemes for our particular scenario, and perhaps come up with my own optimal withdrawal strategy for both us and others. I was particularly interested in assessing and minimizing the impact of taxes on our FI plans, as well other withdrawal strategy goals like minimizing required minimum distributions, estate planning, etc.
Several weeks later, I finally have an initial version of the tool! Written in Python of course, which will surprise no one that reads this blog.
Funds
Fund Types
Like many (most?) folks who achieve FI, my wife and I have a mix of pretax, taxable (i.e. post-tax, or standard brokerage), and Roth funds. We also have a small amount of cash in a standard bank account for monthly spending.
457(b)
Something else we have that’s less well known: a 457(b) account, which can let you double your pretax contributions each year. The most amazing thing about 457(b) accounts: unlike traditional pretax retirement accounts, you don’t pay a 10% penalty if you withdraw before you’re 59.5!
When I first learned I could contribute to a 457(b) account, I asked myself: “What’s the catch? Why isn’t everyone using this?” The catch is you have to be a state or local government employee (in general).
I plan to analyze and discuss 457(b) withdrawal options in a future post, but I introduce it here because it’s fundamentally different (for the purposes of a withdrawal strategy) than other pretax accounts. Thus I implemented this kind of account differently in the tool and you’ll see distinct plots for the simulated 457(b) account.
Taxable Lots
When you purchase shares of a stock or fund, those shares are grouped into a “lot”. Each lot will experience capital gains and losses as the market moves up and down. Many companies and funds also pay dividends.
In a pretax account, you don’t need to worry about paying taxes on capital gains or dividends – both are automatically reinvested, and you only pay taxes when you withdraw from the account. The same holds true for Roth accounts.
You DO need to think about capital gains and dividends in your taxable account though, as those are taxed. Short term (less than one year since purchase) capital gains (primarily incurred when selling lots at a gain from the original purchase price) and “non-qualified” dividends (also sometimes known as “ordinary” dividends), are taxed at standard income rates, while long term (LT) (over one year since purchase) capital gains and “qualified” dividends are taxed at much more favorable tax rates.
Thus the tool I’ve built tracks individual lots for taxable accounts to properly compute capital gains (and thus taxes), and distinguishes “qualified” vs “non-qualified” dividends received from taxable lots.
Assumed Return On Investment (ROI)
I assume every fund type (except the small cash account) is invested in a low-cost, broad-based index fund that achieves an ROI of 7% (after inflation) annually.
Inflation
All fund amounts provided here are in “present day” dollars. Inflation is accounted for by using the lower value of 7% for the ROI, as I detailed in a previous post.
Note that the IRS adjusts tax brackets for inflation as well.
User Inputs
User inputs for the tool include:
- tax bracket information (current for 2022, but will need updating in future years)
- current asset values, including individual taxable lot values and unrealized capital gains (and whether lot was purchased the same year the simulation starts), as well as the amount of original contributions to the Roth account (because those can be withdrawn any time without penalty)
- current and future income sources (e.g. dividends, social security, etc.)
- maximum standard income to shoot for (e.g. standard deduction to prevent paying standard income taxes)
- specific income to shoot for (including LT capital gains) (e.g. if you need a particular income for ACA subsidies, or you want to max out the 0% tax bracket for LT capital gains)
- annual expenses, and any future expense adjustments (e.g. paying off a mortgage)
- current user age(s) (e.g. your age and your spouse’s age)
- number of years to simulate
- tax filing status: just “Married” (Filing Jointly) or “Single” for now, I can upgrade to allow for “Head of Household”, “Married Filing Separately”, and “Qualifying Widow(er)” in the future, but you can add the relevant tax brackets yourself if needed sooner
- assumed annual ROI after inflation (e.g. 7%)
Withdrawal Methods
Given the above fund types, what is the best way to use those funds when retired, especially if you’ve retired early, to minimize taxes/penalties and thus maximize your safe withdrawal rate?
Traditional Approach
The traditional guidance for retirees, at the highest level, is to first withdraw from your taxable accounts until they are depleted, then withdraw from your pretax accounts (assuming you’re over 59.5) until they are depleted, and then withdraw from your Roth accounts until they are depleted (which will hopefully not happen before you die!).
The fundamental argument for this approach is to let your pretax and Roth accounts grow tax free as long as possible, which sounds perfectly logical at first glance.
However, this approach ignores some important tax planning strategies that can save a great deal of money in taxes, and penalties if you’ve retired relatively early. In fact, the earlier you retire, the more money you will likely lose following the traditional approach, given the much longer time horizon and the “before 59.5” withdrawal penalty rules.
I really wanted to provide a more detailed description of the algorithm I implemented for the traditional approach, but the post became way too long when I did that unfortunately. So I’ve put that description in a separate “Withdrawal Strategy Algorithms” page that you can read at your leisure.
I also put together a higher level diagram of the traditional method:
Tax and Penalty Minimization (TPM) Approach
Unfortunately for the traditional approach above, it’s easy to see how you can end up paying significant taxes and even penalties if you retire early enough and run out of penalty-free money before age 59.5.
A smarter approach is to find ways to avoid both taxes and penalties as long as possible (or forever!) – as these can really slow down the growth of your retirement portfolio. Or even make you run out of money in the worst case!
At the highest level, the TPM method seeks to take maximum advantage of the standard deduction (assuming you take the standard deduction when filing taxes) and 0% LT capital gains bracket every year to minimize the chance of paying taxes at any point in the simulated timeline. The TPM method also employs methods such as the Roth conversion ladder to minimize the chance of incurring penalties for pulling money from tax advantaged accounts before 59.5.
The focus of this method is to reduce/eliminate federal income taxes, but of course you may have state income taxes, on top of other kinds of taxes such as property taxes. We’re going to ignore those kinds of taxes for now (future article idea perhaps).
Just like for the Traditional method above, I really wanted to provide more details of the TPM approach here, but once again it made this post way too long. So I’ve placed those details in the “Withdrawal Strategy Algorithms” page.
I also put together a higher level diagram of the TPM method:
Scenario #1
Alright, let’s run some actual scenarios and see some results!
Let’s start with a generic typical scenario, with the following inputs:
- Initial pretax account value (401K, 403b, Traditional IRA, etc.): $400K
- Initial 457(b) account value: $100K
- Initial taxable account value: 8 lots of $50K each, totalling $400K
- Initial unrealized capital gains: $15K on each lot, totalling $120K
- All lots purchased in years prior to simulation start, except last listed lot
- Initial Roth account value: $80K
- Roth contributions: $40K
- Cash: $20K
- Annual Qualified Dividends: $10K
- Annual Nonqualified Dividends: $100
- Annual Social Security Income: $17K for person 1, $17K for person 2
- Age Social Security Income will start: 67 for person 1, 67 for person 2
- No other income sources
- Maximum annual standard income: married standard deduction = $25900 for 2022
- Specified total annual income: $50K (only relevant for TPM method)
- Specified total annual income after ACA: married standard deduction = $25900 (for 2022) + top of married 0% LT cap gains bracket = $83350 (for 2022), for a total of $109250
- Annual expenses: $40K
- Future expense adjustments: -9600/year, when person 1 turns 66 (mortgage paid off)
- Current age(s): 40 for person 1, 38 for person 2
- Number of years to simulate: 32
- Tax filing status: Married
- Assumed annual ROI: 7%
Wow, 22 bullets of inputs! You can see why it took me several weeks to build a first version of this tool.
The above assets add up to $1M, and expenses are $40K, following the 4% rule. The dividends of $10100 per year reduce that withdrawal rate to closer to 3%, though I will admit the after-inflation 7% ROI typically assumes reinvested dividends, so the net withdrawal rate is likely between 3% and 4%.
Note the ages of 40 and 38, along with a 32 year simulation timeline, means the simulation stops when the older person reaches 72 years old. That allows us to avoid considering Required Minimum Distributions (RMDs), which must start for pretax accounts when you turn 72 years old. How to plan for and minimize RMDs, which can result in much higher taxes, I will cover in a future post.
Results
Let’s first run this scenario using the Traditional method.
Some notes for the plot below: “PostTaxTotal” is the sum of all taxable lot values for each year, “PreTax” is all pretax accounts other than the 457(b), “CashCushion” is cash (e.g. sitting in a checking account earning little to no interest), “CapGains” is the total of all capital gains on all taxable lots, and “Total” is the sum of “PostTaxTotal”, “PreTax”, “PreTax457b”, “Roth”, and “CashCushion”.
You can see the traditional method does pretty well, actually – nearly $5M (in present day dollars) after 32 years.
How does the TPM method do?
Whoa, they have identical final totals! Why?
Because neither method produces any taxes or penalties. As long as you avoid those, the total growth should be identical between the methods.
How did the Traditional method avoid taxes though? Well as you can see from the Traditional method plot above, the taxable lots started with enough assets that they were able to provide the needed cash for expenses for the entire simulated timeframe. And because the dividends and capital gains were always less than the standard deduction and within the 0% LT cap gains tax bracket, no taxes were generated.
While they have identical final totals, the two approaches produce very different final amounts in the different accounts. Compared to the Traditional method, the TPM method produces much higher Roth and PostTaxTotal balances, as well as a much lower PreTax balance and a fully depleted 457(b) account.
Thus in general the TPM method shifts much more of the growth from the PreTax and 457(b) accounts to the Roth and taxable accounts. As mentioned above, I’m planning to cover RMDs in a future post, but you can immediately see how the TPM method will result in much lower RMDs (and thus much lower taxes) than the Traditional method.
Scenario #2
Now let’s look at a bit more strenuous scenario that will better show the difference between the two methods. I’m not doing a full stress test of either method here, where I push each method to its limits to see just how different the results can be – that’s a future post. I just want to provide a taste of how the methods can start to differ.
Scenario #2 has the following inputs, with bolded values showing differences from Scenario #1:
- Initial pretax account value (401K, 403b, Traditional IRA, etc.): $500K
- Initial 457(b) account value: $200K
- Initial taxable account value: 8 lots of $25K each, totalling $200K
- Initial unrealized capital gains: $7.5K on each lot, totalling $60K
- All lots purchased in years prior to simulation start, except last listed lot
- Initial Roth account value: $80K
- Roth contributions: $40K
- Cash: $20K
- Annual Qualified Dividends: $5K
- Annual Nonqualified Dividends: $100
- Annual Social Security Income: $17K for person 1, $17K for person 2
- Age Social Security Income will start: 67 for person 1, 67 for person 2
- No other income sources
- Maximum annual standard income: married standard deduction = $25900 for 2022
- Specified total annual income: $50K (only relevant for TPM method)
- Specified total annual income after ACA: married standard deduction = $25900 (for 2022) + top of married 0% LT cap gains bracket = $83350 (for 2022), for a total of $109250
- Annual expenses: $45K
- Future expense adjustments: -9600/year, when person 1 turns 66 (mortgage paid off)
- Current age(s): 40 for person 1, 38 for person 2
- Number of years to simulate: 32
- Tax filing status: Married
- Assumed annual ROI: 7%
You can see how compared to Scenario #1, much of the assets are shifted from the taxable accounts to the PreTax and 457(b) accounts – which narrows the path to using only tax and penalty free money for the entire simulation. Total assets remain the same at $1M.
Qualified dividends have been reduced from $10K to $5K (because taxable lots providing dividends have been reduced by half) and retirement expenses have been increased to $45K (to make things extra spicy). In fact, by reducing dividends to $5K and increasing expenses to $45K, the net $40K withdrawal is closer to the 4% withdrawal rule than Scenario #1.
Results
Let’s first look at what happens with the Traditional method:
You can see that the PreTax account makes up nearly the entire portfolio by the end of the simulation, with a small amount in Roth and all other accounts depleted. Pretty much the worst possible case for RMDs unfortunately. But you’re still very comfortably a multimillionaire.
Now let’s take a look at the TPM method result:
The PreTax account still makes up the bulk of the total final assets, but the Roth account is now over four times larger, which is nice for RMDs and flexibility for taxes.
The big difference though: the total final asset balance is about $88K higher with the TPM method than the Traditional method – not a small chunk of change! How did the TPM method pull this off?
Because the Traditional method incurs a total of $24K in taxes and nearly $13K in penalties, while the TPM method produces $0 in taxes and $0 in penalties!
Also note how $24K taxes + $13K penalties = $37K is less than $88K – because the taxes and penalties incurred early on by the traditional method resulted in less growth over the simulated years.
At the same time, while $88K is nothing to sneeze at, it’s also only about 2.3% of the total assets. So the traditional method isn’t THAT much worse than the TPM method if you REALLY don’t want to optimize your withdrawal method in this scenario.
However, I suspect as I put each method through increasingly strenuous situations, the difference in the results will grow larger and larger.
Code
If you’d like to plug in your numbers to see how they project forward in time for both the traditional vs TPM method, or if you just want to dig into the code I used to generate the plots and values above, feel free to do so. See the embedded python interpreter below. You can fill in your own values in the user inputs section at the top to see what your situation looks like. Hit the Run/Play (sideways triangle) button to generate the plots. Note that the Output.txt file is created and shown at the far right end of the file tabs list. To go back to the script to make any changes, hit the Pencil icon. If you want the text larger, hit the hamburger menu button, then scroll to the bottom to see larger font options. In that same menu you can also Full Screen the window, and other actions.
Note that you can use the inputs labeled as “Scenario 1” and “Scenario 2” to obtain the same plots as above. Use the pound sign “#” to comment out a line so that it’s not used. Similarly, the ‘Smart’ flag for SmartOrTraditionalWithdrawal corresponds to the TPM method described above.
Conclusions
I’ve been wanting to build this kind of “drawdown” tool (though I hesitate to call it that, since it implies your asset balances are going “down” over time) for YEARS, and I’m really glad I finally did. I can now see how different assets within our portfolio may evolve with average market returns, and I can see how different withdrawal schemes can affect the final results.
One of the first things I realized when I first completed initial versions of the tool, and which should have been obvious in retrospect, is that as long as you don’t incur any taxes or penalties, and all funds grow at the same assumed ROI, then your final total is not impacted by the order of account withdrawal. But it does impact the amounts you have in each kind of account.
Another major shift in my thinking: just because funds are in a taxable (post-tax) account doesn’t mean they will automatically grow slower than a pretax account. If the dividends and capital gains thrown off by taxable accounts are under the standard deduction and within the 0% LT capital gains bracket, there should be no tax drag on a taxable account.
I can also conclude from this initial work that as the withdrawal scenario becomes more strenuous (e.g. higher expenses, lower income, etc.), the type of withdrawal method starts to matter more – because a better designed method will help you avoid taxes and penalties better.
Future Work
Wow, this could be an incredibly long list. Let’s try to keep it at a higher level though.
Some potential future work (not necessarily in order of priority):
- Conduct stress testing of FIRE withdrawal strategies
- Determine FIRE withdrawal strategy for estate planning
- Determine FIRE withdrawal strategy to minimize RMDs
- Perform FIRE withdrawal strategy sensitivity analysis
- Perform FIRE withdrawal strategy Monte Carlo analysis
- Determine FIRE withdrawal strategy with 457(b) accounts
- Determine how withdrawal strategies impact safe withdrawal rates and thus time to FI
- Determine how to adjust taxable social security income within FIRE withdrawal strategy
- Evaluate other published retirement withdrawal strategies for FIRE
- Determine impact of Alternative Minimum Tax (AMT) on FIRE withdrawal strategy
- Determine impact of Tax Loss Harvesting (TLH) on FIRE withdrawal strategy
- Determine impact of ACA (Obamacare) subsidies on FIRE withdrawal strategy
- Determine impact of state income taxes on FIRE withdrawal strategy
If any items on this list jump out to you and I haven’t yet covered them (I’ll do my best to come back to this article to link to future work), or if you have OTHER ideas for future work, let me know in the comments or shoot me a message.
Amazing analysis! Very thorough! Keep up the good work! RKO Richardson, TX.
The final numbers came out relatively close, but it’s great to have confidence in this. Thanks for carrying out the previously undone math to assert this!
Thanks Derek! Yeah I think when I do the “Stress testing” analysis, we’ll likely see much more of a difference in the results. One thing I plan to do is compute and show how many years your money lasts with each method in the most stressful scenarios, that’ll be very interesting to see.