Last updated: March 18, 2023
This week I worked on a wide variety of things, instead of focusing on a single main task. Hence the long list in the title of the post.
It’s amazing how much you can get done when your wonderful spouse takes the kids out of town to visit family for the weekend!
And of course I’m sure everyone will agree that there’s nothing more fun than working on personal finance content all weekend.
New RMD Starting Ages
With the passage of the SECURE 2.0 Act at the end of 2022, the age at which you have to start taking Required Minimum Distributions (RMDs) from your tax-deferred accounts changed from age 72 to 73 or 75 (depending on when you were born).
Here are the new rules:
- If you were born in 1950 or earlier (so you turned age 72 in 2022), RMDs start at age 72
- If you were born from 1951 to 1958, RMDs start at age 73
- If you were born in 1959, a technical error in the legislation means it’s unknown if RMDs must start at age 73 or 75. How crazy is that! I’m amazed such a glaring error made it through to the final bill. Hopefully new legislation will clarify, but until then, you should probably use age 73 to be safe.
- If you were born in 1960 or later, RMDs start at age 75 – woohoo!
Here’s a diagram I put together of these new rules:
Rather than coding up all that logic in the portfolio projection tool, which could change further in the future, I implemented a new user input that allows you to specify your RMD starting age (and your spouse’s RMD starting age if married filing jointly).
I also confirmed that the 2023 “distribution periods” (i.e., the life expectancy values that the IRS uses for the RMD calculation) for computing RMDs are the same as those published for 2022.
I was also curious to see what kind of impact shifting the RMDs later would have on the example scenarios we’ve used in the past: the Betty “single” scenario, and the Bill and Barbara “married filing jointly” scenario. I used the Tax And Penalty Minimization (TPM) withdrawal strategy in both scenarios.
For Betty, changing her RMD starting age from 72 to 75 only increased her final balance at age 92 by $12,372.89.
For Bill and Barbara, changing their RMD starting ages from 72 to 75 only increased their final balance at age 92 (Bill) and 90 (Barbara) by $21,754.88.
These changes are about three orders of magnitude smaller than their final balances. So not much impact overall.
Why was there such little impact? A couple main reasons:
- Their RMDs at ages 72, 73, and 74 weren’t that large (3.6%, 3.8%, and 3.9% of their tax-deferred assets, from the 2023 RMD Table)
- Given the age you have to take these RMDs, any additional taxes you’ll save with slightly later RMD starting ages won’t grow to huge savings over many decades (i.e. you’re much closer to the end of your life anyways)
So if you’re mad that being born in 1958 means your RMDs will start two full years earlier than someone born in 1960, it’s nice to know that it won’t likely have a huge impact on your finances.
At the same time, every little bit helps, so it’s nice to see the RMD starting ages going up! Well, unless you’re trying to reduce the federal deficit… 🙂
Updated Federal Income Tax Brackets For 2023
Normally I’d report on how updating values in the tool affects the results for examples scenarios like the Betty “single” scenario, and the Bill and Barbara “married filing jointly” scenario.
But the tool always assumes all values are in current-day “real” dollars, so updating the tax bracket values each year is really just accounting for inflation.
So to reduce the amount of work I need to do (because I’m lazy) and to avoid confusion about inflation adjustments, I’m going to pass on showing updated final asset values for new tax bracket values each year.
Faster TPM Tool
I had an idea at some point in the last few weeks that I thought might significantly reduce the computation time of the portfolio projection tool when running the Tax And Penalty Minimization (TPM) withdrawal strategy for the most strenuous scenarios where you run out of money.
One of the downsides of the numerical integration method (checking to see which account has the lowest tax+penalty rate by one small increment, like $100, at a time) that I employ in these scenarios is that the computation time goes way up if you use this method.
But I realized that if there’s only one account left that has a non-zero balance, there’s no need to do this numerical integration method anymore – you only have one option for withdrawals anyways!
So I added a check in the portfolio projection tool to determine if only a single account has money left at any point in the process. If so, and the account still has enough to cover the remaining cash needed, it’ll withdraw that amount and you’re done. If the account does NOT have enough, then it’ll withdraw the rest of the money in the account and print out what age you ran out of money.
I also updated the TPM strategy page to reflect this new approach.
I then ran the same stress test scenarios for Betty, Bill, and Barbara that I ran previously, and I got identical answers – as expected. Whew.
However, the new approach did not save as much computation time as I expected (less than 10%). I think that’s primarily because the Roth account lasts much longer in those scenarios as a result of updating how early withdrawals of earnings from Roth accounts are taxed/penalized, so there’s not as much time at the end of the simulation when only a single fund remains.
But at the same time, this new approach certainly doesn’t hurt computation time either, and it may help a great deal for other scenarios. And if doing stress testing analysis over a wide range of scenarios, I expect the time savings will add up.
As I mentioned in last week’s post, I wrote a new mini eBook titled “Ten Steps to Become and Stay Financially Independent”.
[Begin Rant] And yes, the period in the above sentence is OUTSIDE the quotes, because there’s no period in the book title, and I really dislike how American English convention says to pull it into the quote anyways. Ridiculous! Who decided that was the correct approach? So stupid. British English is far smarter, placing it outside the quote if it wasn’t part of the quote. So consider all my articles written in British English from now – I’ll just have to learn more British slang I guess. [End Rant]
This past week most of the remaining work on the book was incorporating edits from my editor (i.e., the wonderful spouse I mentioned earlier), and formatting the eBook, with the goal of being easy to read on both big and small screens.
I discussed in that last post some ideas for formatting the eBook, but in the end I just used Google Docs. I couldn’t find a template that I liked enough in Canva, and in the end I was able to get the book formatted reasonably well just using Google Docs.
I’m sure a professional book designer would scoff at my lowly amateur approach, but I’m OK with that. Maybe if/when I do more eBooks I’ll go with a different tool/approach.
After I finished the book, I sent it out to current email subscribers.
If you’d like to download the book, plug your email address into the field on the sidebar and click “Get the book”.
I also spent a ton of time this past week doing a wide variety of updates on the site.
To start, I updated all plugins, the wordpress theme I’m using, the wordpress version I’m using, and the PHP version that the site runs on. Whew! Based on past experience, these kinds of updates can easily crash your site, but somehow I got through unscathed. Hopefully they’re getting better at avoiding site crashes with new versions of all these tools. But I definitely made sure everything was backed up beforehand, and I downloaded the most recent daily backup that my hosting service Hostinger (affiliate link) provided.
Switching to ConvertKit
The giant thing I tackled was switching to a new email service provider: ConvertKit. I’ve been hearing great things about them for a while, so I decided to finally take the leap.
The first big thing I did was create what’s called a “form” for the new eBook, which is what you see at the top of the sidebar on the right (or at the bottom of this page if you’re on mobile). This form lets people plug in their email address and then automatically be sent an email with the link to the book – pretty nifty!
It was definitely a bit of a learning curve though. The first form I tried didn’t really work on the sidebar space, and it was a little challenging to figure out how to set up the automatic email and book delivery. And I also thoroughly tested everything with dummy email addresses to make sure it’s working properly, per advice I’ve gotten from others.
On top of that, the interface for the sidebar widgets has totally changed in the latest version of wordpress, so I had to figure out how that works and fight way too many weird bugs they still have in that interface. Eventually I got it dialed in good enough, but it took much more time than I hoped it would.
Finally, some bad news. Despite all the strengths and advantages of using ConvertKit, unfortunately I could not find any way to turn off or disable ConvertKit’s tracking of when emails are received and opened by subscribers. I personally really dislike it when companies do that, which is why I’ve disabled automatic image loading in my personal email account settings (see below links for how you can also do this).
A few example scenarios where your information might be collected automatically include:
* recording when you receive and open our emails, as well as when you click on links within the email (see note below)
**Important**: we would prefer to not use any tools that track when email recipients receive and open our emails, which we disagree with and feel is not a good practice in terms of privacy. Unfortunately, our email service provider, ConvertKit, does not allow customers to turn off this tracking (that we are aware of – please let us know if we are mistaken). To avoid having ConvertKit tracking whether you receive and open one of our emails (and to avoid having any other businesses track whether you open their emails or not), see The Verge’s guide to prevent this from happening, or search for “disable email pixel trackers” in your search engine of choice. You can also try out tools such as Ugly Email or Trocker (note: we have not tried or tested these applications, so proceed with caution).
More Email Tasks
Now that I’m using ConvertKit, I need to figure out how to automatically email all subscribers with new posts, which I currently use the (much more limited) Jetpack email subscription tool to do. If I can’t find a good way to do that, then I’ll need to manually send out an email each time I have a new post – which is a pain, but might also give me more control over the format, so we’ll see.
I also need to make sure I disable the Jetpack automatic emails for new posts – no one likes getting two emails for the same thing! So I expect this is the last time you’ll see an email from JetPack if you’re a current subscriber.
New Stand-Alone TPM Tool
Initially I thought I would create an entirely new python function to run the TPM strategy for a single year, and then update the portfolio projection tool to use that new function to avoid having lots of duplicate code floating around.
But then I came up with a better approach: use the same main projection function I’ve already built, and just run it for a single year! I like this idea better because I’m pretty confident it’ll be a lot less new code, and I can use a function that I’ve already spent a great deal of time testing and vetting.
Running the tool for a single year allowed me to simplify the user inputs quite a bit, since only current year info is needed – nothing about changes in future years is needed. That required a bit of code to translate the simpler inputs to the values the tool expects, but nothing too complicated.
What has turned out to be complicated is how best to translate the results to a report that’s easy to read and understand, indicating the withdrawals and any other actions the user needs to take to follow the TPM strategy for the current year. There are so many different options for what data could be output and how to format that data. The design aspect is perhaps the hardest part.
Once I get all that figured out, ideally I’ll place this new tool within an embedded Python interpreter or some other kind of UI near the top of the Tax and Penalty Minimization (TPM) strategy page. Then folks (including us!) can just plug their values in and get the answer.
Ideally you could run the tool at the beginning of the year using estimated expenses, income, etc. for the year. Then you could 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). Finally, you could run it at the end of the year to make any final withdrawals needed to ensure you hit the income targets you’re shooting for.
At this point I’ve now taken care of the Smaller Scope work in the Future Work section of the post earlier this month. Nice!
But the Medium and Larger Scope items I haven’t touched yet. These include:
- publishing our monthly and annual expenses
- looking at the impact of ACA subsidies on the FIRE portfolio performance and on the TPM and Traditional withdrawal methods using the portfolio projection tool
- looking at the how to decide when to start social security, and the impact of FIRE on your social security income
Lots of exciting stuff to do!