0
0%
$0
$0
$0
$0
Saved Scenarios
How to Use
- 1. Profile & Ages: Enter the birth year of each person and estimated life expectancy for both partners. To model a single taxpayer, set the Spouse Birth Year, Spouse Life expectancy and Spouse IRA to zero.
- 2. Assets: Enter balances. Brokerage Basis is used to calculate capital gains vs. principal. Brokerage withdrawals will be assumed to be part subject to capital gains. Total all after tax investment assets into Brokerage, and all cash-like holdings into Cash. Should one spouse predecease the other, all IRA assets are inherited by the remaining spouse. For Roth, sum the existing ROTH balances into one total.
- 3. Income (annual) Input annual Social Security and pensions. Set the start ages to see the impact of delaying benefits. Amounts you enter for Social Security Amt will be adjusted annually by the CPI/COLA (next options). Survivorship is the percentage of the pension that will continue to be paid after You pass away.
- 4. Assumptions: choose the Inflation rate, the CPI rate (which is the expected change in tax brackets rather than actual inflation), the Growth rate for the IRA/401K, Brokerage & ROTH. Cash Interest is the expected interest on cash and cash-like investments (e.g. Mutual Funds/Bonds). To make these numbers accurate, it's best to separate all investments into "Brokerage" and cash into Cash. . Social Security Fail & SSecurity Net Payout.
- Strategy:
Find this unlabeled item at the top left of the display.
Set the After-Tax Send to the amount of after-tax income you need per year. And set the Spend Delta percentage. A Spend Delta of 0 means no change, while -1.5 would reduce spending by 1.5% each year. To have spending grow, use a number greater than 0, like 2%. Default is -1% per historical data.
- In Withdraw Proportional +% it proportionately withdraws enough from all sources to reach the After-Tax Spend goal, then adds an extra IRA-only boost of 0–200% of that spend goal. At 0% it is the pure proportional baseline; higher percentages accelerate IRA drawdown, with the after-tax surplus flowing to Roth (if Max Conversion is on) or Cash.
- Compare with Reduce IRA in N Years to amortize your IRAs in a fixed number of years (they will not be emptied, they will be drawn down to IRA Goal.
- Fill Federal Tax Bracket withdraws enough to max out the chosen federal tax bracket. NOTE: If your spend goal is in a bracket higher than you select, it will try to meet the spend goal instead of locking to the bracket.
- Lesser of IRMAA or TaxBracket is not yet implemented, but here it's like Fill Federal Tax Bracket, but reduces the amount withdrawn to stay under the the lesser of the (next) IRMAA tier, the next state or next federal bracket - which ever is lower. It applies an inflation adjusted "safety threshold" of 2,000. There are three gotcha's here: a. the After-Tax Spend goal is in play so it may blow right past the next tier if you have insufficient non-taxable income, b. the current year IRMAA tax is based on income from two years ago - so this setting attempts to avoid FUTURE tax - not tax in this year, c. the current year filing status is what is used to avoid hitting a higher tier. Here is why that matters: If you or your spouse pass away, the careful work avoiding a higher tier two years ago will still hurt in the current year. For example if the MAGI is one dollar below the first tier while married, two years from now when filing status is Single, that MAGI falls into the 4th IRMAA tier - the only upside here, is that there is now half as much of the IRMAA tax since it is per-person. One solution is to remarry. :-)
- After Changes... selecting the Annual Details, Chart or Optimizer will cause a recalculation and show the page. On the Annual Details table, rows are highlighted in yellow if status changes to single. A pink/red backgrounds means there are not enough funds to meet two years of SpendGoal. Optimizer finds the mathematical "sweet spot" for emptying IRAs to minimize lifetime total tax and maximize total spendable value. It checks different drawdown years - that is the same thing as the Reduce IRA in N Years but it loops through from 1 to 30 years.
What is Missing
This tool does not (currently) model annuities, multiple pensions, additional w2 (taxable) income. The tool intentionally keeps the number of options low. Currently the "optimize" option focuses on depleting the IRA balance(s) to the point where future RMDs will not force excess taxation (Federal, State and IRMAA). An additional optimization is planned that will iterate to maximize spendable - see the Planned tab. These features, however are NOT in scope.
- There is no Monte Carlo or other fancy strength tests.
- The RMD tables are the standard one, not the one that might apply if there is a 10 year or more difference in spouse ages
- It only uses the MFJ and Single tax brackets. (No head of household, or Married filing separately)
- Because ROTH assets are not taxable, it merges all ROTH funds into one account. In real life, conversions/withdraws and earnings would occur in separate accounts.
- There is no Federal Alternative Minimum Tax (AMT) calculation. This normally does not apply to retirees unless they have huge bond interest, or are exercising ISO stock. In the case of California the 1% additional tax for high earners is built into the embedded tax table.
Where is the Code
This might be useful to know: you can run this locally (download the *.html and *.js and *.css files from GitHub) https://github.com/nightskyguy/retirement_assets. The charts require the ability to load this file remotely: cdn.jsdelivr.net/npm/chart.js.And you can also take a look at the source, make comments, or even open a pull request to propose changes. Just follow the link above. You can directly run the code from GitHub: nightskyguy.github.io/retirement_assets/retirement_optimizer.html
Other Tools
There is a standalone tool to determine what IRA balances (with RMDs) cause IRMAA taxation: nightskyguy.github.io/retirement_assets/irmaa_and_rmds.htmlIf you're wondering whether you're being tracked, the answer is no. There is no logic (currently) to do any kind of tracking or telemetry. You can read the code if you're skeptical. And by the way, you SHOULD be skeptical. Sooner or later I am going to want to know how many users are using it and from (approximately) where. Mostly for self edification, but also to know if, for example, lots of Idaho users are loading it... it would be a clue to add state taxes for Idaho.
Change Log
For the most details, please consult the README.md.- 8 Added "Proportional Withdraw %" strategy with configurable IRA withdrawal boost (0–200% above spend goal); optimizer tests it at 0/5/10/20/50% × Max Conversion on/off; Roth Conv bar now stacks on top of taxes in the lower chart; optimizer table highlights best row per column (lowest tax, lowest tax rate, highest spend, highest wealth).
- 7g Found one source of over-withdrawal: the tax rate on capital gains should be proportional to the basis. Another problem was that the pension was not included in the total so it over-withdrew to make up for the excluded pension. Another error was that the cash gains were not included (interest and dividends) in the initial withdrawal, but were added at the end - above and beyond what was actually needed. BUGUnfortunately, there are still scenarios where under-withdrawal occurs (though not over-withdrawals anymore!). The mass of columns have been tamed somewhat with live selectable options, including suppressing columns that have only zeros, grouping by association.
- 7f Fixed HTML cautions. Fixed error in calculating what to do with surplus. It was putting some surplus into Roth even though no IRA withdrawals had occurred. CapitalGains calculation was wrong, and the tax burden for Brokerage withdrawals was also incorrect. However it is still significantly over-withdrawing.
- 7e Fixed more bugs, added much more information (See the README.md). And added a new standalone tool.
- 7d Updated taxation calculations to use a more thorough calculator.
- 7c Prior update(s) broke the save/load functionality due to case changes. Adjust IRMAA calculations to account for different growth rate of the tax from the CPI rate. IRMAA is tied to Medicare which annually increases by 5.6% over the last 20 years. The rate is encoded in the TAXdata table - not user adjustable. Began UI change to move the top tabs into a new location: Documentation.
- 7b More state rates. Fixed most calculations. Minor UI changes. Changed the defaults to something "more common" - . See the README.md.
- 7a Now has various state rates. Fixed most calculations. See README.md for details.
- 6v Implemented Save/Load/Export/Delete Scenarios.
- 6u Implemented SS Fail. More UI fixes. Moved all strategy items to the top.
- 6t Solved a math issue causing NaN to occur. Cleaned up the visuals.
- 6s Some more fancy highlighting of the tables. Fixed broken strategy changer. Tests moved into separate file, too.
- 6r Moved the heavy text (top drawers) into a separate file.
- 6q Beautifications and hover notes. More self tests with an indicator on screen if they fail. Started the Social Security "meltdown" implementation. Added (empty) Insights tab.
- 6p Corrected instructions for Single filer usage. Fixed error in brokerage tracking. Added brokerage dividend rate. Dividends automatically accrue to Cash.
- 6n Calculation fixes. WARNING: detailed calculations not done - but current calcs are accurate.
- 6m More self tests, some rework.
- 6k Reworked tax brackets for sanity ease of update. Added more instructions.
- 6j Move style sheet out for readability.
- 6i Remove the Recalculate and Optimize buttons. Use the similarly named tabs as the buttons.
- 5hp Integrated Federal SS "Tax Torpedo" logic, California HSA add-backs, and IRMAA cliff surcharges. This logic is present, but not yet being used. The older logic is "close".
- 5h Added change log and instructions
- 4g Do rate limit lookups based on inflation. Add suggested values.
- 4f Use cpi% to adjust taxation (brackets)
- 4e Use calculated birthyear for correct RMDs