Planned
Optimizers
Potential examples: - Calculate minimum retirement age - Optimize drawdown order - Optimize Roth Conversions / 72t distributions
I’ve used the following manual algorithm to optimize roth conversion. input: start year, and end year to consider conversions.
Using Net Worth as they key metric to optimize for. * Start in Year 1 * Calculate taxable income remaining in current tax bracket (or desired tax bracket limit). Set this amount as the roth conversion amount for Year 1. If Net Worth increases, keep this amount, If it decreases, skip roth conversion this year * Repeat for the next year in consideration.
Other metrics to optimize for:
* “Tax-free Net Worth” (Roth accounts),
* Tax-free on inheritance (Roth, taxable accounts, real property – up to limits)
* Lifetime Tax Paid
It also might be worth doing a trial beginning at each year in the period. Typically, the more years the conversion has to work, the better the result, but I think it’s possible for some plans to tilt this in favor of starting later. If you get to this point, remind me to contrive an example where this is this case.
I think there should be some sane defaults but I wonder if there could be an advanced optimizer where I could choose some variable to vary (maybe it’s % contribution to 401k or milestone calculation for retirement, etc) and metric to optimize for (end of plan net worth, min retirement age, etc) and run the optimizer as if the entire plan is a function. I assume the optimizer could either act as a grid search over the input parameters or it could run many Monte Carlo simulations and show the comparison of min,avg,max outcomes on the output variables.
I’ve been putting a bit of thought into this as I’ve tried various methodologies in PL to come up with a conversion plan.
So I think a full scale linear program model is probably outside the scope of PL, and probably of questionable utility despite how much I appreciated iORP. A grid search with some level of heuristic to avoid a full search is probably reasonable.
One thing to consider is that while total spendable income is the real objective function, I think that might be harder to obtain than a proxy for “good enough”; namely that most conversion studies seem to admit there’s way too many variables to come up with a single answer, and that the best path is to try to levelize effective tax rate and call it good; maybe a nod to accepting a little higher rate in the early years to allow Roth funds more time to grow.
So a heuristic could be some version of starting from the current plan’s series of effective tax rates, take the average, then starting with year 1 and working forward, do enough conversions to hit that average effective tax rate (again maybe a little higher in the earlier years), move on to the next year, until the end. that is likely to get really close to as good an answer as anyone could try without a full LP and is a starting point for a human to make some other decisions.
A few trigger point to be mindful of would be not intentionally triggering IRMAA at 65 when medicare starts, and then again at SS age. But these also might need to be manual massage points to tell the model, “hey I’ll pay a little RMD but try harder to avoid IRMAA” or conversely for someone with a huge pre-tax account, “forget about IRMAA, bump up the early effective tax rate to further reduce RMD” But that also might just work out with levelliving effective tax rate. It somewhat did for me as I was doing this all by hand.
It may or may not be worth doing this without major one-off expenditures included in the mix (up to the user to decide) since they can skew the effective tax rate too much. Then again, flip side, that might be exactly what’s needed for the heuristic to decide “today is not a good day to convert” and move to the next year.
There probably should be some nod to drawdown each year as well but that might be a bridge too far, or be a second scan across the years as a refinement to the initial conversion result.
Another heuristic to consider, which is also where I started but I’m not sure it is was really useful or not other than to show me I was clearly not near an optimal solution, was the go with the traditional, “just convert up to X bracket” in my case 22%. I took every year and did max conversions to 22% until I ran out of money to convert. Clearly very specific to me and my financial situation. But regardless, maybe that’s the first (or possible option) run through the process. Then with that result in hand, the optimizer can see if effective tax rate is really quite too high in the earlier years compared to the middle/later years (mine was) and decide how to proceed from there; maybe using the above method to levelize rates. When I did it the first time I actually started to levelize from the latest year, instead of year 1, in a nod to converting more in the early years. But I ended up adjusting all the way back to year 1 anyway and then did a few more passes (an algorithm would have been SO much faster) until I had a fairly downward sloping effective tax rate from Year 1 thru 70 which then slowly ramped back up again as I still had some intentional RMDs because to have converted everything would have unbalanced the effective tax rate and was giving me worse results.
Also, there is still something to be said for leaving some pre-tax in the plan since you can pay 0% in later years if you spend it on medical. But that can also be a user settable variable for the optimizer
The concept of “optimize” is variable. Some might want to optimize Net Worth at death, others may want to optimize a smooth spendable cash flow during life. Then you get into issues that if you want to leave legacy money to a charity, you can give there a taxable IRA. Alternatively, if you are giving it to a person, a Roth is preferred. You can add in the consideration that upon death, taxable assets with capital gains get brought up to current market value. This is a really complex issue and finding a straightforward way to model it will be difficult.
Agreed. I think Maximize Legacy Value and Maximize Lifetime Income are the most basic. If PL could these two it would be a huge start. I don’t care so much about minimizing taxes so long as these other two criteria are met. A powerful addition would be to be able to Maximize Lifetime Income with a minimum Legacy Value of X AND Maximize Legacy Value with a Lifetime Income of X percent above my entered expenses. Give me these four and it would be perfect…for me, at least.
With Roth conversions, I have a hard time in the app figuring out how much total taxes will be paid. For example, in one particular year, almost all of my income is from LTCG, $73k, and of that, $3.4k is state tax, $2.3 capital gains, (and $15k local). Then when I add Roth conversion to this year (used $60k in this instance), I get state tax $9k, LTCG $11k, income $5.5k, (and $15k local). I can’t tell if it’s better to do this or not, even though the Analysis section in Accounts > 401k/403b screen says it is not that helpful in terms of total taxes paid and final net worth.
So I think somehow given current milestones/planned purchases/events/etc, if you target minimizing lifetime taxes, you figure out when and how many years to do Roth Conversion, how much each year. And then you pick if you want to keep net worth the same or have it increase.
Yes -I’d love to see a warning message thrown if I am potentially forfeiting a portion of a Nonrefundable tax credit along with a recommendation of how to consume it (Roth conversion or Taxable Investment liquidation, for example). -Or for the simulation to recommend potential rework for better growth/tax-optimization potential. Example: If I have Earned Income, making Investment contributions, not using a Roth IRA, it would be neat if PL suggested Roth IRA contributions along with the long-term impact… “20 years from now, you’d benefit by $xxx additional Net Worth
I agree with the previous comments that “Optimize” is defined differently for each person. Examples -Reach FI as quickly as possible -Maximize net worth -Maximize passive income -Minimize taxes -Maximize legacy
This is an area I am very interested in. My spouse and I have a decade age gap and I make multiples of X over my career with a traditional 401k (and Roth IRA, HSA, taxable). Trying to determine a strategy for Roth conversions of these to maximize lifetime income would be great.
The idea for two beginner scenarios would cover rough planning and then one can tweak the entries for each year. If that’s coupled with a “this change results in X more or less than the prior value” until you hit save would make such planning significantly easier.
Some potential variables to optimize with an algorithmic approach to provide options: Highest Estate Value (basically at end of plan - highly impacted by order of withdrawals from accounts in the base plan), Tax bracket limit (fill up the x or y federal tax bracket each year if possible, I actually have found this the most flexible as it makes it so you can do a few different options and see what you like), Lowest lifetime tax liability, IRMAA Bracket Limit (similar to tax bracket limits but has to consider that past two years are factors)
This is a big block of stories, not just one feature. It also dupes the next highest feature request - Drawdowns: https://changemap.co/projectifi/projectifi/task/5876-ability-to-further-specify-how/
The ability to properly fill tax brackets for each of these requests is paramount to the value of the features. It’s also hard to convey discrete demand when voting for a block. But my guess at priority is as follows:
Optimize Roth Conversions - We need this now, years before retirement.
Optimize drawdown order - / 72t distributions - These would go next as they are post retirement events, but still important for tax considerations and special forced distribution rules. They also can impact the Roth conversion story.
Calculate minimum retirement age - This seems like the last bit as you need the others done first to actually know when you can retire.
New user doing trial here. I was hoping that ProjectionLab already had “optimizers” as a feature, but alas, not yet. Specifically looking at Roth conversions, but other suggestions here seem good. Maybe also wanting something to help limit income for ACA subsidy cliff.
It seems quite tedious to adjust numbers and compare to find the best values. As a programmer, I feel like I could spend a day or two and automate the inputting of progressively higher numbers and comparison, but it would be super rudimentary.