How would you like to get started?
You can switch between these anytime — nothing here is permanent.
🚀
Quick & Simple
Answer a few questions and get a real, full projection in under 2 minutes. Best if you're just getting oriented or don't have your fund details handy.
⚙️
Full Control
Enter your real fund lineup, state tax, Social Security timing, Roth accounts, and every detail this tool models.
401(k) & IRA Portfolio · Retirement Withdrawal Model

Portfolio Analyzer & Withdrawal Simulator

Track your real holdings by name and ticker, modeled using the fund category each one best fits, and stress-test the result against thousands of simulated market paths — including Social Security timing, inflation, and taxes. Set your own numbers in the panels below.
Not saved yet Clear saved data ↺ Start Fresh
07

Saved Scenarios

Run the Monte Carlo, then save a snapshot to compare against a different set of choices — a different retirement age, allocation, or withdrawal method — without losing track of the numbers. Saved scenarios auto-save to this browser as you go, so they survive closing the tab and reloading — but that's still just this one browser on this one device. For a real, permanent file you can back up or move elsewhere, use "Export Full Plan" near the top of the page, which includes every saved scenario; "Import Plan" loads it back in later, here or on a different device. The Print/PDF button is another option for a one-time snapshot on paper.
No scenarios saved yet.
Methodology & limitations. Return assumptions were rebuilt using real, current forward-looking capital market assumptions rather than historical averages: a blend of Vanguard's Capital Markets Model (VCMM, March 2026 running), BlackRock Investment Institute's CMA (September 2025), Fidelity's CMA (20-year horizon), and Invesco's CMA (December 2025). Where providers disagreed, values were averaged; where a category wasn't split out by a given provider (e.g. mid-cap value vs. growth), a reasonable size/style premium was interpolated from the providers that do split it. These are deliberately more conservative than trailing 20-30 year averages for US large-cap growth in particular (current forecast ~3.3%/yr vs. historical ~10-11%/yr), reflecting that most major providers currently see US equity valuations as stretched — a real, defensible professional view, but still a forecast, not a guarantee; actual realized returns over your specific 30+ year retirement could land well outside any of these ranges in either direction. Volatility (std dev) figures are separate, broad category-level estimates and were not re-sourced from the same CMA releases. Correlations are approximated by asset-class group. The simulator withdraws once per year rather than monthly — real month-by-month withdrawals during a down year behave slightly differently (roughly ±0.2–0.5% success rate in most studies), which is immaterial next to the other uncertainties here. Historical Stress Test: S&P 500 returns are cross-verified from two independent sources; Vanguard Total Bond Market fund returns are the fund's own realized annual returns (Yahoo Finance performance history), not an index proxy. This is a real 2-asset (US stock/US bond) historical sequence, not a full asset-class-by-asset-class historical backtest — international, emerging markets, and alternative holdings are approximated using US stock history, since reliable long-run historical series for those weren't sourced here, so the actual historical experience of a globally diversified portfolio could differ from what's shown. Today's tax, Social Security, RMD, and Medicare rules are applied even to 1995-era starting years, which wasn't reality at the time (tax brackets, RMD ages, and Medicare/IRMAA thresholds have all changed over the decades) — this isolates the effect of market sequence risk specifically, not a full historical reenactment. Max Drawdown in the Monte Carlo results card is simulated (from the 2,000 random paths), while Max Drawdown in this Historical Stress Test table is real (from actual market history) — worth comparing the two. Tax data auto-updates by calendar year: the tool detects the actual year it's being run in (via your device's clock) and, for any year beyond the last IRS-verified year (2026), automatically projects federal tax brackets, the standard deduction, and Medicare IRMAA thresholds forward using your Inflation Rate input — the same indexing mechanism the IRS itself uses. It cannot fetch live numbers from irs.gov or cms.gov (no server, no live data feed), so treat any year beyond 2026 as an informed estimate and verify against the official source before a real decision. Social Security taxability follows the actual IRS provisional-income rules (the $25k/$34k single and $32k/$44k joint thresholds, which are not inflation-indexed by law — that's a real, growing bite over a multi-decade retirement, and doesn't need year-projection since the thresholds themselves never move). Required Minimum Distributions use the real IRS Uniform Lifetime Table divisors (also fixed, no projection needed) and your SECURE 2.0 start age based on birth year, applied as a floor on your withdrawal starting that year — if the RMD exceeds what your spending plan needs, the excess is still pulled from the 401(k) and taxed (a real taxable brokerage account to hold that excess isn't modeled, so the balance shown is your tax-deferred balance only). Retiring before 59½ triggers a real 10% IRS early-withdrawal penalty on top of ordinary tax, which this tool now applies automatically to every pre-59½ withdrawal year — it does not model the Rule of 55 or 72(t)/SEPP exceptions that can legally avoid that penalty in specific situations, so check with a CPA if either might apply to you. Medicare IRMAA surcharges use the 2026 CMS brackets ($109k/$218k single/joint before the first surcharge tier) as their own projection anchor — real IRMAA uses a two-year income lookback rather than the same-year income assumed here, and Part D surcharges shown are the CMS add-on only, not your actual plan premium. This is a reasonable planning approximation, not a substitute for a CPA's projection closer to retirement. Filing status now covers all four common statuses — Single, Married Filing Jointly, Head of Household, and Married Filing Separately — each with its own real 2026 federal brackets, standard deduction, Social Security taxability rule, and Medicare IRMAA thresholds (source: IRS Rev. Proc. 2025-32). Head of Household shares Single's Social Security and IRMAA thresholds (the law doesn't give HoH its own bracket for either), but gets its own wider lower tax brackets and higher $24,150 standard deduction. Married Filing Separately is the one genuinely different case: below $384,350 of taxable income its ordinary tax brackets exactly match Single's, but assumes you lived with your spouse at some point during the year (the more common real-world MFS scenario) — under that assumption, real IRS/CMS rules remove the usual thresholds entirely: up to 85% of Social Security becomes taxable starting from the first dollar of provisional income, and Medicare IRMAA jumps straight from the standard premium to its highest surcharge tier above $109,000, skipping the gradual middle tiers Single/HoH/MFJ get. If you're MFS but lived apart from your spouse for the entire year, the real IRS rule is more favorable than what's modeled here (you'd actually get Single's ordinary thresholds for Social Security) — this tool doesn't distinguish that case. State tax now uses a real per-state dropdown (all 50 states + DC) with 2026-sourced effective rates on retirement income specifically — including the 13 states that don't tax retirement income at all (the 9 with no income tax, plus IL/IA/MS/PA, which specifically exempt qualified retirement distributions even though they tax wages). For graduated-bracket states (e.g. CA, NY, OR, MN), the rate shown is a single representative effective rate for a typical retiree's income level, not a full bracket calculation — pick "Other / Enter Manually" if you know your actual effective rate more precisely. Pension income (new): fully taxable as ordinary income each year (unlike Social Security's partial-taxability formula), and correctly counted in the "provisional income" calculation that determines how much of your Social Security is taxable. COLA defaults to 0%, since most private-sector pensions are fixed for life — check your own plan documents. Qualified Charitable Distributions (new): real 2026 IRS rules — available from age 70½, capped at $111,000/person/year (IRS Notice 2025-67) and at your actual balance. Modeled as reducing your 401(k)/IRA balance before that year's RMD is calculated, which has the same practical effect as the real rule (a QCD counts toward satisfying your RMD) — a reasonable simplification of the actual mechanics. QCDs assume the withdrawing account is a genuine IRA; this tool has already merged any Traditional IRA balance into your combined 401(k)/IRA pot, so it doesn't separately verify IRA-vs-401(k) sourcing the way the real IRS rule technically requires. Medical inflation is tracked separately from general inflation for Medicare/IRMAA premium dollars and the pre-65 healthcare bridge cost, since healthcare has historically outpaced CPI — the IRMAA income *thresholds* still scale with general inflation, since that's how the law actually indexes them. The pre-65 healthcare bridge assumes a flat annual premium; real ACA marketplace premiums are also income-tested (subsidies phase out with MAGI), which isn't modeled — you could be undercharged here if your income is high enough to lose subsidy eligibility. Roth conversions reduce the traditional balance and grow a separate, RMD-free Roth balance. Other Assets & Accounts: if turned on, each retirement year draws in this order — Social Security, pension, then cash (free), then taxable brokerage (capital gains tax on the gain portion only, using your specified cost basis % and rate), then the 401(k)/Traditional IRA engine, with Roth (both any existing balance and conversions) now acting as a genuine last-resort backstop if the 401(k) is fully depleted, rather than just an unused bonus balance sitting on the side. Cash is assumed to earn no return (held flat); brokerage is assumed to grow at the same rate as your selected fund allocation, which is a simplification — a real brokerage account's actual holdings and returns could differ. In the Year-by-Year table, cash/brokerage draws are recalculated deterministically (they don't depend on market randomness, only on spending need), so they're accurate for any scenario tab, but the Roth backstop's exact year-by-year timing isn't reconstructed in the table the same way — the Monte Carlo Simulation Results summary cards are the authoritative view for Roth's true role. The Historical Stress Test now includes your Traditional IRA balance, pension income, QCDs, and state tax, but still does not include cash/brokerage/Roth-backstop draws from Other Assets — that part remains 401(k)-only there. A Traditional IRA balance is combined directly into your 401(k) balance since both share identical tax treatment and RMD rules. The one-time event (inheritance/expense) is added directly to the 401(k) balance, untaxed — a real inheritance of a taxable account or inherited IRA would carry its own tax treatment, not modeled. If your spouse retires later than you, their working income (entered net of their own taxes) directly offsets your household spending need until their own retirement age — a simplification, since it doesn't run their wages through the full tax engine alongside your 401(k) withdrawal, but it correctly uses their own age rather than yours to decide when that offset stops. Guardrails (Guyton-Klinger) withdrawal method (new): a real, published dynamic-spending strategy — spending grows with inflation most years (skipped after a negative-return year, per the original method), with discrete cuts or raises when your current withdrawal rate drifts past the guardrail band around your initial rate. Because guardrail outcomes depend on the entire prior sequence of market returns for a given simulation, the Year-by-Year table can't independently recompute this the way it does for the other two methods — instead, the actual spending path is tracked during the Monte Carlo itself and read back out per scenario tab, so what you see for "Bad Luck" vs. "Good Luck" reflects that scenario's real guardrail history, not an approximation. Fixed after a full audit: your allocation percentages are now correctly normalized to whatever they actually total, rather than assumed to sum to exactly 100% — previously, allocations that didn't total precisely 100% (an easy mistake to make) silently produced mathematically wrong blended return/risk figures used throughout every calculation in this tool; that's now corrected regardless of your allocation total. The tool now also warns you before running if no money is actually allocated to any fund, or if Plan Until Age doesn't exceed Retirement Age (which would trivially show 100% success without ever actually testing a withdrawal year). Account Tax Treatment (new): your main portfolio can now be set to Pre-Tax (401(k)/Traditional IRA — ordinary income tax, RMDs apply), Roth (tax-free withdrawals, no RMDs), or Taxable Brokerage (capital gains tax on the gain portion only, no RMDs) — this determines which tax rules apply throughout the entire tool, not just a label. Roth conversions and QCDs only make sense (and are only applied) when the account is Pre-Tax, since there's nothing to convert from a Roth and no RMD to satisfy on money that was never tax-deferred. A Traditional IRA balance entered under Other Assets only merges into this portfolio's balance when Account Tax Treatment is set to Pre-Tax — merging it into a Roth or Taxable balance would incorrectly apply the wrong tax rules to that IRA money. Spouse's own retirement balance (new): if your spouse has their own separate pre-tax 401(k)/Traditional IRA, it's now tracked independently in "Spouse & Household," with RMDs correctly calculated using YOUR SPOUSE'S own birth year (derived from the age-gap field), not yours — previously there was no way to model this at all, and lumping it into your own balance would have applied the wrong RMD age whenever there's a real age gap. Their RMD is treated as household income once it applies: fully taxable, and it reduces how much you need to withdraw from your own portfolio, the same way pension income already does. This models the spouse's account as accumulating at the same return as your own portfolio (a simplification — their actual holdings could differ) and only forces the legally-required RMD amount each year, not full discretionary spending optimization between both accounts — a real couple might draw more flexibly from whichever account makes more tax sense in a given year, which this tool doesn't attempt to optimize. If your spouse passes away (per the age set above), their remaining balance and RMD obligation stop being tracked separately, a simplification of the real-world inherited-IRA rules that would actually apply. Blended fund categories (new): a handful of categories are a genuine mix of asset classes rather than one pure type — "World Large Stock (Global Blend)" (60% US / 40% foreign), "Global Real Estate" (35% US / 65% foreign), and "Balanced / Allocation (60/40)" (60% stock / 40% bond) — and are now modeled that way throughout: diversification scoring, portfolio volatility (correlation), and the Historical Stress Test's equity/bond split all correctly split these funds' behavior proportionally across the groups they actually touch, instead of forcing them into a single bucket. Every other category is still treated as one pure asset class, which remains accurate for the vast majority of real funds. SSA longevity estimate for Plan Until Age (new): an optional helper next to that field — if you're not sure what age to plan to, it estimates one from the Social Security Administration's official 2023 Period Life Table (the actual government data, not the Society of Actuaries' RP-2014 pension mortality tables, which are a generational table requiring a companion mortality-improvement scale that isn't reproduced with full precision here). The estimate is the age by which someone of your current age and sex has roughly a 25% chance of still being alive — a commonly used conservative planning threshold, not your median life expectancy, which would only be a coin-flip's chance of outliving your own plan. This never runs automatically; you have to click it, and typing your own number afterward always overrides it. Still not modeled at all: long-term care costs, a portfolio glide path (allocation is static for the full retirement), rebalancing mechanics, and annuities/guaranteed income products. Fund scores currently reflect cost, estimated risk-adjusted return, and diversification value only — they do not yet incorporate fund-specific alpha, upside/downside capture ratios, or manager tenure, since those require per-fund research beyond what's verifiable here. This tool is informational, not personalized financial or tax advice — the person building it is not a licensed financial advisor or CPA.