The calculators on the Tools tab, grouped. Most are standard finance; the rules of thumb are named as such.
Growth, Present Value and Rates
Matches230-mod-tools · goalPlan · viIrr
yearly factor = (1 + r ÷ m)^m, or e^r when continuous
saving needed = (goal − today × G) ÷ H (G, H: what $1 now and $1 a period grow to)
need at retirement = Σ_k withdrawal ÷ (1 + r)^k
IRR: Σ flow × (1 + r)^(years to the end) = value (by halving)
Rates that have no closed form are found by halving between limits. Time value of money.
Savings Goals
Matches215-mod-golsave · golProject · golNeed · golSaveEval
each month: balance = balance × (1 + r ÷ 12) + monthly saving (n: the first month it reaches the target)
monthly saving needed by month T = (target − saved × (1 + i)^T) × i ÷ ((1 + i)^T − 1) (i = r ÷ 12; ÷ T when r = 0)
months to spare = T − n: 3 or more Ahead · 0 to 2 On track · −1 to −6 At risk · less Behind
progress = saved ÷ target (the bar stops at 100%)
Saved is what the user types in, or the balance of the accounts the goal draws on. The chart's second line is the same balance in today's dollars, at the plan's inflation; the dashed line is what was put in. Compound interest (Investor.gov).
Paying Off Debts
MatchesDEBTS.run · minPay · compare
each month: balance += balance × rate ÷ 12, then the scheduled payment
extra and freed payments go to: highest rate first (avalanche) or smallest balance first (snowball)
card minimum = max(floor, 1% × balance + interest) ($40 floor)
transfer: balance × (1 + fee), promo rate for its months, then the regular rate
The standard month-by-month schedule; the card minimum follows the common "1% plus interest" rule.
Student Loans
MatchesslRun · slRapM · slFpl
standard (from July 2026): 10 / 15 / 20 / 25 years for under 25k / 50k / 100k / more
IBR: min(standard, 10% | 15% × (AGI − 150% × poverty line) ÷ 12); forgiven at 20 | 25 years
RAP: 1% to 10% of AGI (one point per $10,000 over $10,000), ÷ 12, − $50 per dependent, at least $10
unpaid interest waived; principal falls at least $50; forgiven after 360 payments
PSLF: forgiven tax-free after 120 payments
IBR; RAP; tiered standard plan.
Home, Car and Refinance
MatcheshafCalc · carCalc · rfCalc
housing = loan payment + property tax + insurance + HOA
front ratio = housing ÷ monthly pay ≤ 28%; back ratio = (housing + debts) ÷ pay ≤ 36%
car: 20% down, 4 years or less, car costs ≤ 10% of pay; underwater while loan > value
refinance break-even = ⌈ closing costs ÷ monthly saving ⌉ months
The usual lender and personal-finance guidelines (28/36 and 20/4/10), stated as guidelines.
Business Value and Sale
MatchesebCalc · bzYear · 232-mod-bizsale
EBITDA = net income + interest + taxes + depreciation and amortization
seller's discretionary earnings = adjusted EBITDA + one owner's market salary
value = earnings × multiple; equity = value − debt + cash
C corporation asset sale: 21% (+ state) inside, then gains tax on what is paid out
An installment sale taxes each year's principal in the ratio of gain to price, and its interest as income.
A Buyer's Letter to Cash
Planner's modelloiCalc
letter = EBITDA × multiple; price = (EBITDA − add-backs struck) × multiple after diligence − debt
cash at closing = price × (1 − rollover − escrow − broker) − legal
gain now = price × (1 − rollover) − fees − basis × (1 − rollover), a capital gain on the other income (bzYear)
later = escrow when released + rollover × its growth at the buyer's sale
Put This in My Plan adds the part sold as a business sale in the year of closing and the rollover as a second sale (versions 332 and 333).
Qualified Small Business Stock
MatchesqsPct · qsFed · bizSale
share excluded: before July 5, 2025, 50%, 75% or 100% by the issue date, after more than five years
after July 4, 2025: 50% at three years, 75% at four, 100% at five
limit per company = max($10 million less earlier exclusions ($15 million for the new shares), 10 × basis)
within it: excluded = limit's gain × share; the rest of it is 28% rate gain, taxed at the ordinary rates up to 28%
above it: taxed as usual, stacked on the other income and the 28% part; the 3.8% on what is taxed
state: follows; half (Hawaii); all of it (Alabama, California, Mississippi, Pennsylvania; Illinois and Oregon from 2026)
The tool checks the five conditions; the plan's business sale uses the same limit, the $10 million fixed in dollars and so lower in today's the later the sale (versions 323 and 324). 26 U.S.C. 1202.
Equity Pay
MatcheseqAmt · eqPayroll · eqRange
RSU and NSO income = shares × (price − strike); ISO spread counts for AMT only
AMT exemption = 140,200 | 90,100 − 50% × (AMTI − 1,000,000 | 500,000)⁺
AMT = max(0, 26% × first 244,500 + 28% above − regular tax)
ESPP: buy at (1 − discount) × lower of the two prices; $25,000 of stock a year
withholding on bonus pay: 22%, 37% above $1,000,000
The 2026 AMT figures with the 2025 law's faster 50% phase-out. The price range uses lognormal percentiles. 2026 AMT; IRS 2026.
Roth, Backdoor and NUA
MatchesrtCalc · brCalc · nuRun
Roth or traditional: traditional × (1 − later rate) against Roth, the saving invested
backdoor untaxed part = amount × (basis + amount) ÷ (pre-tax IRAs + basis + amount)
direct Roth limit phases out 153,000–168,000 | 242,000–252,000; IRA limit 7,500 (+1,100 at 50)
mega backdoor = min(72,000 − deferrals − employer, after-tax room)
NUA: shares × growth − gain × gains rate − cost basis × income rate
The pro-rata rule of Form 8606 and the 2026 limits. IRS 2026 limits; Notice 2025-67.
HSA: Spend or Invest
MatcheshsaCalc
spend it: HSA pays the bills; the cash saved grows at r − drag
invest it: HSA grows at r; the receipts are kept
tax-free up to receipts + later medical costs (185,500), the rest taxed as income
The tax drag is points off the return a year, 0.5 by default (fixed in version 242; it had been taken as a share of the return). Fidelity's 2026 estimate for one 65-year-old is $185,500. Fidelity 2026 estimate.
After-Tax Income Goal
MatchesngTax · ngCalc
find income g with g − tax(g) = the income wanted (by halving)
portfolio = (g − Social Security) ÷ withdrawal rate
With pay from work, there is no Social Security and no tax-free share, whatever the hidden fields hold (fixed in version 242).
Income a Lifestyle Needs
Planner's model204-mod-need · budTotals
find gross pay G with take-home(G) ≥ spending + costs + saving (by halving)
take-home = G − pre-tax saving − income tax − payroll tax − state tax
50/30/20: needs, wants and saving as shares of take-home
The 50/30/20 split is a rule of thumb.
Student Aid Index
MatchesFAFSA.sai
parents' available income = income − taxes − protection allowance − employment allowance + 12% × net worth
protection: 30,300 (2) · 37,720 (3) · 46,590 (4) · 54,970 (5) · 64,290 (6) · +7,260 each
employment allowance = min(35% × earnings, 5,200)
contribution: 22% up to 22,600, rising in steps to 47%
student: 50% × (income − taxes − 12,220) + 20% × assets
SAI = max(−1,500, parents + student)
The 2027–28 formula for a dependent student. Federal Register, 2027–28 methodology.
Insurance Needs
MatchesINSURE.need · pvDue
life: PV(income replaced) + PV(household work) + mortgage + debts + college + final costs
− PV(Social Security survivors) − savings − cover owned
DIME = debts + income × years + mortgage + education; rule of thumb 10 × income
disability gap = target × pay − (group benefit − SSDI offset)
The needs method and the DIME rule, both standard ways to size cover.
Annuity Types
Matches232-mod-annuity
fixed index credit = max(0, min(cap, index return × participation − spread))
buffered loss = min(0, return + buffer); floored loss = max(return, −floor)
variable: value × (1 + g) − charges; QLAC limit 210,000, income by 85
How the crediting methods work, and the 2026 QLAC limit. Notice 2025-67.
Loan Offers
MatchesofrRun · ofrIrr
payment = B × i ÷ (1 − (1 + i)^−n), i = rate ÷ 12
APR = 12 × j, where Σ_{t=1..n} payment ÷ (1 + j)^t = B × (1 − fee) (by halving)
paid off in month k: cost = k × payment + balance_k × (1 + penalty) − B + fee
20/10 rule of thumb: debt payments ≤ 10% of take-home a month, debt ≤ 20% of a year's
The fee is a prepaid finance charge, so the APR counts it and the rate does not; paid off early, the APR comes from the cash flows actually paid. 12 CFR 1026.22; the 20/10 rule.
Start Early
MatchesstartRun · startCalc
starter k begins at a₀ + k × gap with m^k × the first amount a month
each month: value = value × (1 + r)^(1/12) + amount; the amount rises g% once a year
break-even return: value₀(r) = value₁(r) (by halving between 0.01% and 30%)
Monthly compounding of a yearly return, as Investment Growth does. With $100 from 20, doubling each decade to 65, the break-even is 6.6%.
Paycheck Plan: the Debt Share
MatchesppDebt
each month of the repeated pattern: holding += pay in − pay out; extra = (holding − cushion)⁺
debt: balance × (1 + rate ÷ 12) − payment − share × extra
compared with the payment alone: months sooner, interest saved
The standard amortization, with the big-check rule's share for the debt added whenever pay rises above the cushion (version 246).
Leftover 529
Matchesl529Calc
cash out: growth × (tax rate + 10%), the 10% waived on withdrawals up to a scholarship
move to the Roth IRA from 15 years after the later of opening and naming the beneficiary:
each year = min(IRA limit (+1,100 from 50) − other IRA, pay from work,
35,000 − moved, balance − recent money not yet 5 years in)
Roth at 65 = Σ move × (1 + g)^(years to 65)
Each move takes what was put in and growth in proportion. The IRS has not said whether a new beneficiary restarts the 15 years; the cautious reading is used (version 248). IRS Publication 970; 529 to Roth rules.
Spending Month by Month
MatchesprBank · prMonths · renderPrMon
each purchase in the 12 months before the snapshot → its month (YYYY-MM) and budget group
monthly share = budget ÷ 12 (or the plan's spending ÷ 12)
average month = the full months only; the first and last are part-months unless the date ends a month
Transfers, card payments and money coming in are left out, as for the year's totals (version 247).
Income Floor
MatchesfloorCover
essentials(t) = spending floor + health, Medicare, long-term care, medical and debt costs
guaranteed(t) = Social Security + pensions + other streams (annuities, TIPS ladder, reverse mortgage)
covered = guaranteed ÷ essentials; gap = (essentials − guaranteed)⁺
annuity to close it = average gap ÷ published payout at that age (joint for a couple)
The safety-first view of the RICP program: are the essentials paid by income that does not depend on the markets? Before tax, today's dollars (version 253).
Retirement Income Style
MatchesstyScore
safety-first = Σ 4 answers (0 to 3) ÷ 12; commitment = Σ 4 answers ÷ 12
probability + optionality → total return; safety + commitment → income protection
probability + commitment → risk wrap; safety + optionality → time segmentation
The two preferences and four strategies taught in the RICP program, from Pfau and Murguía's research. The questions are the planner's own, not the trademarked RISA® profile (version 254). Kitces: the RISA framework.
Lifetime Withdrawal Benefit
MatchesgwRun
before income: base × (1 + roll-up), for its years; account = (account − fee) × (1 + g)
income = base at the start × payout rate, level for life
each year: account = (account − fee − income)⁺ × (1 + g); fee = rider % × base
what the account cannot pay, the insurer does
The risk wrap, run at the rate entered, at 0%, and without the rider. Typical 2026 rider fees 0.95% to 1.25% of the base, roll-ups 5% to 8% (version 255). Annuity.org.
Reverse Mortgage Line of Credit
MatcheshecmRun
each start year since 1871, the same spending a year, three ways:
portfolio alone; line when the portfolio is empty; line in the year after the mix fell
line and loan grow at (loan rate + 0.5% MIP), after inflation; no repayment
left = portfolio + (home − loan)⁺
The Sacks rule for a coordinated line, as tested in the research the AAII summarizes; the 2026 HECM limit is $1,249,125 (version 256). AAII.
Deferred Compensation Payout
MatchesnqRun
installment = balance × g ÷ (1 − (1 + g)^−n); lump sum when n = 1
federal = tax(other income + payment) − tax(other income)
state rate = max(earned-in, live-in) for n < 10; live-in only for n ≥ 10 (4 U.S.C. 114)
ranked by Σ after-tax payments ÷ (1 + g)^year
Section 409A payouts, taxed as ordinary income when paid (version 257). Fidelity: NQDC and state taxes.
A Life Policy in Retirement
MatcheslpCalc
keep = Σ alive_k × q_k × benefit ÷ (1 + d)^(k+½) − Σ alive_k × premium ÷ (1 + d)^k
surrender = cash − charge − tax × (cash − premiums paid)⁺
sale = offer − income tax on (min(gain, cash − premiums))⁺ − gains tax on the rest
exchange = Σ alive_k × annuity payment ÷ (1 + d)^k
Death rates from Social Security's life table; the sale's split follows Rev. Rul. 2020-5 (version 258). Rev. Rul. 2020-5.
Investment Policy Statement
MatchesrsIps
mix = accounts' stocks, bonds, cash, gold ÷ total (or stock share after the cash reserve)
spending rate = spending ÷ portfolio when retirement starts
fall of a quarter in stocks ≈ stock share × 25% off the portfolio
cash years = cash ÷ spending
The CFA Institute's elements of a policy statement, written from the plan's own figures, with lines to sign (version 260). CFA Institute.
Retirement Transition
MatchestrCalc
readiness = Σ 10 answers (0 to 3), of 30; each area = its 2 answers, of 6
work on first = the lowest area
trial run = (spending now − retirement budget)⁺ × months
part-time = pay a month × 12 × years
The CRPC program's emotional and financial transition; the phases are Robert Atchley's (version 261).
Capital Needs Analysis
MatchescnCalc
shortfall₀ = (pay × ratio or budget) − Social Security − pensions
shortfall₁ = shortfall₀ × (1 + i)^n; r* = (1 + r) ÷ (1 + i) − 1
annuity A = shortfall₁ × (1 − (1 + r*)^−N) ÷ r* × (1 + r*)
capital preservation = A + A ÷ (1 + r)^N; purchasing power = A + A ÷ (1 + r*)^N
saving = (capital − savings × (1 + r)^n) × r ÷ ((1 + r)^n − 1); serial at r*, × (1 + i)
The CFP retirement needs analysis (topic F.44); the test reproduces a published worked example to the cent, $6,987,586.22 and $19,954.85 a year (version 263). CentPotential.
Retirement Plan for a Small Business
MatchesbpCalc
self-employed pay = profit − ½ × (12.4% × min(0.9235 × profit, wage base) + 2.9% × 0.9235 × profit)
employer share = 20% of that pay (25% of a salary), at most $72,000
401(k) = min(deferral left, pay − employer share) + employer share ≤ $72,000, + catch-up
SIMPLE = min($17,000 or $18,100, deferral left) + catch-up + 3% of net earnings
employees: SEP and profit sharing at the owner's rate; safe harbor 3%; SIMPLE up to 3%
pension ≈ min($290,000, pay) × min(1, years ÷ 10) × annuity-due factor, funded level
IRS Publication 560's reduced rate and the 2026 limits of Notice 2025-67 (version 264). IRS Publication 560.
Special Needs and ABLE
MatchesabRun
year 1: own cash above $2,000 in first, then the family's gift, to $20,000
+ ABLE to Work: min(own pay put in, pay, $15,650) when not in a 401(k), 403(b) or 457(b)
ABLE = (ABLE + in − spending) × (1 + r); trust = (trust + gift beyond the limit) × (1 + r)
SSI suspended while ABLE > $100,000; spending that keeps it below: found by halving
The 2026 ABLE limit (Rev. Proc. 2025-32), SSI's resource rules, and the age of onset before 46 (version 265). SSA: SSI resources.
Inherited IRA
MatchesihRun
divisor(t) = max(table(heir's age in year 1) − (t − 1), table(owner's age at death) − t)
(a spouse: table(age in year t), looked up each year)
required(t) = balance at the end of year t − 1 ÷ divisor(t); empty by year 10
(a minor child: ten years after the year of 21; others eligible: over life)
tax(t) = tax(other + withdrawal) − tax(other) + state rate × withdrawal
ranked by Σ after-tax ÷ (1 + g)^t (a Roth: by the total)
The SECURE Act beneficiary rules and the 2024 final regulations, with the IRS Single Life Table of 26 CFR 1.401(a)(9)-9 (version 266). IRS: beneficiary.
An ESOP Sale
MatchesTT.bz.res
C corporation: tax put off = the share sale's whole tax (section 1042)
when the ESOP ends with ≥ 30%, the shares were held 3 years, the price is reinvested
S corporation: up to 10% of the price, from 2028 (SECURE 2.0)
Business succession in Selling a Business (version 267). NCEO.
Paying for Long-Term Care
MatcheslfCalc
cost(y) = cost today × (1 + g)^(start − age + y)
each year: income first, then savings, then what a payer covers
policy pool = pool × (1 + growth)^years, after the elimination period; premiums' future value off savings
Medicaid: savings spent to $2,000 + (spouse at home: ½ savings within $32,532–$162,660)
then income − $50 − spouse's shortfall below $2,643.75 a month goes to the home
look-back delay = gifts ÷ (cost a year ÷ 12) months
CLTC and CSA: the CMS 2026 spousal impoverishment standards and the AALTCI 2026 prices (version 268). CMS.
Dividing Assets in a Divorce
MatchesdvWorth
pre-tax × (1 − the receiver's rate); Roth and cash in full
taxable − gain share × gains rate; home equity − (gain − $250,000)⁺ × gains rate
evening payment = (after-tax A − after-tax B) ÷ 2; from a 401(k) by QDRO: ÷ (1 − receiver's rate)
CDFA: section 1041 carryover basis and the QDRO penalty exception (version 269). IRS Publication 504.
Social Security for Your Family
MatchessfMax, sfRun
family max = 150% × PIA to $1,643 + 272% to $2,371 + 134% to $3,093 + 175% above (2026)
each child < 18 (19 in high school), spouse with a child < 16: 50% of PIA (75% as survivors)
cut in proportion to fit (max − PIA), or the whole max for survivors
NSSA, and retiring with children at home (version 270). SSA: family maximum.
Roth Conversion Ladder
MatchesrlCalc
convert = set amount, or standard deduction + top of the 12% bracket − other income
tax = tax(other + convert) − tax(other) + state rate × convert
spending + tax from: contributions → conversions ≥ 5 years old → taxable bridge → short
Retiring before 59½, with Publication 590-B's ordering rules (version 271). IRS Publication 590-B.
Married or Not
MatchesmnCalc
tax both ways: single(A) + single(B) against joint(A + B), each with their own Social Security
spouse's top-up = (½ higher PIA − lower PIA)⁺; survivor's gain = higher PIA − lower PIA
Partners who are not married, which the plan itself treats as a married couple (version 272). IRS: filing status.
What Each Future's Headline Shows
MatchesspHead
typical = median of the years the money lasts; over retirement = Σ every year, income-only years too
highest = the largest year while the money lasts; Easy and Client views: typical only
A planner can show another measure than the typical year (version 274).
The Spending Card's Futures
MatchesrepPicksBy
score(i) = Σ spending(i, year) over retirement, income-only years included
futures at the 5th, 10th, 15th, 50th, 85th, 90th and 95th place by score
the portfolio, tax and health cards: ranked by run-out year, then what is left at the end
Ranked by what is left, a future whose early markets raised its spending and whose late ones drained the portfolio can land among the hard ones while spending more than the middle one (version 278).
A Continuing Care Community
MatchesccCalc
life care: entrance fee + monthly fee × 12 × (1 + g)^y, every year
fee for service: entrance fee + monthly fee while independent, then care median × (1 − discount) × (1 + g)^y
at home: (running cost × 12 + home care or nursing care) × (1 + g)^y
worth today: Σ cost ÷ (1 + r)^(y + ½) − refund ÷ (1 + r)^N
CSA housing choices; the break-even is the years of nursing care at which life care costs no more (version 276).
Section 351 ETF Exchange
Matchess351Div · s351Calc
tax-free only if: largest issuer ≤ 25% and five largest ≤ 50% of the value (funds counted through, cash left out)
and the fund does not pass the securities to authorized participants as part of the plan (Rev. Rul. 2026-20)
tax now if not = long-term gain × long-term rate + short-term gain × short-term rate
sold: (value − tax now) × (1 + g − fee_low)^t, basis = value − tax now
exchanged: value × (1 + g − fee_ETF)^t, basis = the securities' basis (sections 358, 1223)
left if sold in year t = value_t − (value_t − basis) × long-term rate; heirs: no tax (stepped-up basis)
The year selling pulls ahead is where the extra expense ratio outgrows what the deferred tax earns (version 298). Rev. Rul. 2026-20, 26 U.S.C. 368(a)(2)(F).
Bills and Reachable Money
Planner's modelrchRun · rchCalc
reachable_t = reachable_(t−1) × (1 + r) + left over − contribution × (1 − tax rate) − bills_t
401(k)_t = 401(k)_(t−1) × (1 + g) + contribution + match × min(1, contribution ÷ contribution for the whole match)
short = the most any year falls below the cushion; from the 401(k) instead: short ÷ (1 − tax rate − 10%)
the most that still covers them: halving between the match's contribution and today's
From a story: a retiree whose money is locked in the TSP until 59½ while this year's bills are due (version 299).
Medicare Sign-Up Dates
MatchesmtCalc · mtSign
month of 65 = birth month + 65 years (a month earlier for a birthday on the 1st)
initial: that month ± 3; before it → covered from it, in or after it → the month after
special: to 8 months after work coverage ends → the month after; general: January to March → the month after
Part B: +10% for each full 12 months from the initial period's close to the general period's close, less work coverage months
Part D: +1% of the base premium for each month without creditable coverage (none for 63 days or less)
premium with the penalty rounded to the nearest 10 cents
Medicare.gov's rules; the premiums come from the yearly figures (2026: $202.90 and $38.99) (version 300). When coverage starts.
Safe and Perpetual Withdrawal Rates
MatchesswrYears · swrAt
G_k = (1 + x_k) … (1 + x_(N−1)): a dollar's growth from year k to the end, x the mix's real return
left per dollar = G_0 − w × (G_0 + … + G_(N−1)) (withdrawals at the start of each year)
safe rate = G_0 ÷ Σ G_k perpetual rate = (G_0 − 1) ÷ Σ G_k
lasting in p% of start years = the rate p% of the start years' own rates reach
A balance below zero never recovers, so the closed form is exact; the test checks it against a year-by-year run found by halving. Over 1871 to 2025, a 60/40 mix's worst 30-year start is 1966 (version 312). Bengen (1994).
Sequence of Returns Risk
MatchesseqPath · seqCorr
the same N returns as they came, worst first, best first; spending taken at the start of each year
with nothing taken out all three end at start × Π (1 + x): the order alone changes nothing
explained = r², r = Pearson's correlation of the safe rate with the first 10 years' return (or all N years')
Kitces found r = 0.79 for the first ten years' real return and a 60/40 mix's safe rate (version 313).
Rebalancing Sensitivity
MatchesrbRun · rbDue
each part grows by its own return; at each year's end a rule may trade back to the target
rules: never; every 1, 2 or 5 years; a part 5, 10 or 20 points off; a part a quarter of its target off
turnover = Σ |trade| ÷ 2 ÷ value; volatility = sample standard deviation of the yearly returns
Vanguard's study found yearly checks with 5-point bands about as good at controlling risk as frequent trading, with far fewer trades (version 314).
Lump Sum or Spread It Out
Planner's modeldcaSim · dcaHist
monthly lognormal from each year's average μ and swing σ: v = ln(1 + σ² ÷ (1 + μ)²), a = ln(1 + μ) − v ÷ 2, a ÷ 12 and v ÷ 12 a month
lump sum = A × P_0; spread over m months = Σ_(j
5,000 futures from a fixed seed; on the yearly record, spread over 2, 3 or 5 years. Vanguard (2012): a lump sum won in about two thirds of rolling 10-year periods (version 315).
Efficient Frontier
MatchesefStats · efCalc
every mix of stocks, bonds and gold in 5-point steps, rebalanced each January
risk: volatility, the largest fall from a high, or the Ulcer Index = √(mean of (value ÷ running high − 1)²)
frontier: the mixes no other beats on both return and risk (Pareto)
knee: the frontier point farthest above the line between its ends, both axes scaled to their range
Markowitz (1952) with history in place of forecasts (version 316).
Portfolio Comparison
MatchespcRun · pcIrr
return a year = (end ÷ start)^(1/n) − 1; with withdrawals, the rate that turns the start and the withdrawals into the end
Sortino = mean yearly return ÷ √(mean of the squared returns below zero)
Sharpe (cash at 0% after inflation) = mean yearly return ÷ volatility
largest fall with the years of its high, its low and the next high; the Ulcer Index as above
Up to three mixes, with the 30-year safe rate of each over the whole record (version 317).
Withdrawal Decision Map
AdaptedwdmSolve · wdmPick · wdmPolicy
V_T(W) = 0 if W ≥ floor, −λ below; run out in year t when W < floor + the smallest withdrawal
Q_t(Y, m) = mean over the record's years k of V_(t+1)(Y × (1 + s_m × stocks_k + (1 − s_m) × bonds_k − fee))
V_t(W) = max over withdrawals a ≤ W − floor and stock shares m of a ÷ a_max + Q_t(W − a, m)
spend the most: the smallest λ whose chance of lasting from today reaches the target (halving on ln λ)
W on 110 levels evenly spaced in ln W; a year's return shifts every level alike, so the record groups by shift
Stochastic dynamic programming (the Bellman equation) over the returns since 1871, each year of the record equally likely, as Forsyth, Vetzal and Westmacott do with expected withdrawals against shortfall. The map is then run on 2,000 futures drawn a year at a time, 2,000 in five-year runs, and every start year in order, against every fixed withdrawal and stock share (version 337). Forsyth, Vetzal and Westmacott (2021).
Monte Carlo Mix Finder
AdaptedmcoCalc · mcoDraw · mcoChol
each draw: growth g_i, swing s_i and cash r from their ranges (triangle, flat or bell curve), ρ_ij evenly in its bounds
growth and swing linked by a Gaussian copula: z₂ = c z₁ + √(1 − c²) e, u = Φ(z)
ρ softened 5% at a time until its Cholesky factor exists
m = Σ w_i (g_i + s_i² ÷ 2) + (1 − Σ w_i) r; σ² = Σ Σ w_i w_j ρ_ij s_i s_j; growth = m − σ² ÷ 2; Sharpe = (m − r) ÷ σ
best = the mix (10-point steps, 5 with three investments or fewer) with the best percentile across the draws
Resampling the inputs instead of trusting one set of guesses, after Michaud; the growth is the compound rate, with the volatility drag (version 338). Michaud and Michaud.
Life-Cycle Monte Carlo
AdaptedlcCalc · lcBlocks · lcNext
a life = phases in order; each year: V += amount (fixed dollars ÷ the life's own inflation so far)
then V ×= 1 + Σ w_i r_i − cost (rebalanced yearly) or each holding ×= 1 + r_i − cost (reset at each phase)
years: blocks of consecutive years of the record, length L ~ even on [shortest, longest], start ~ even,
wrapping from the last year to the first; without replacement no year twice until all are used
V ≤ 0 after an amount → the money ran out (stays at 0)
results: 10th, 25th, 50th, 75th, 90th percentile of V each year; share of lives not run out
A circular block bootstrap of the real returns since 1871 (stocks, 20-year bonds, gold, after inflation), with mulberry32 random numbers from a seed (version 360). Block bootstrap.
Workplace Benefits Together
Planner's modelwbCalc
match = share × min(pay + bonus, $360,000)
deferral: pre-tax when the bracket after it + state > the rate expected later + state; catch-up Roth above $150,000
after-tax room = $72,000 − $24,500 − match (the catch-up is outside it)
ESPP: price = (1 − discount) × min(first, last) with a lookback; most set aside = $25,000 × price ÷ first price
deferred pay: N (1 + match) (1 + g)^n (1 − rate later) against (N − tax saved now)((1 + g)^n − 0.15((1 + g)^n − 1))
Company stock, with ESPP shares kept, is set against the 10% FINRA mentions (version 326).
Roth Catch-Up or Taxable
Planner's modelrcuRun
working years: Roth = C × ((1 + g)^n − 1) ÷ g × (1 + g); account the same at g − yield × dividend tax
to 65, both drawn evenly: 1 ÷ (years left) of the balance at the start of each year
Roth: contributions first; growth before 59½ pays the tax on other income + 10%
account: (realized gain + dividends) × rate, and credit lost = acaNet(premium, income + them) − acaNet(premium, income)
With nothing taxed and no premium the two are equal, which the test checks (version 327).
Exercising Stock Options
Planner's modeloxYear · oxRun · oxCalc
each year: shares = options ÷ years (the last takes the rest); out = shares × strike + tax
tax: NSO = eqTax(other, spread) + state × spread + eqPayroll; ISO = eqAmt(other, spread).amt
spread = shares × (value now − strike), the value held the same over the years
cash_t = cash_(t−1) + saving (from next year) − out_t − goal (in its year)
at a sale: gain = options × (price − strike), taxed as a long-term gain (NSO: price − value at exercise), 3.8%, state
Equity Pay spreads an NSO exercise the same way (version 329); Put This in My Plan makes each year's out a one-time cost and the shares a business sale with the 3.8% (versions 330 and 331).
What the Check Found
version 242
Every formula above was checked against the law, the agency or the author that published it. Most matched. Seven did not; version 242 fixed six, and the seventh is data that comes with the next year's figures.
| Formula | What was different | Now |
| SALT cap | The $505,000 phase-out line was held flat; the law raises it 1% a year through 2029. | Fixed in 242. |
| Tips and overtime | Cut by 10% of the excess income; Schedule 1-A cuts $100 per whole $1,000. | Fixed in 242. |
| Charity without itemizing | $1,000 / $2,000 held in today's dollars; the law fixes it in dollars. | Fixed in 242. |
| Claiming tool | Assumed full retirement at 67 for everyone. | Fixed in 242: from the birth year. |
| HSA tool | The tax drag was taken as a share of the return, not in points. | Fixed in 242. |
| After-tax income tool | Hidden Social Security and tax-free fields still counted with "pay from work". | Fixed in 242. |
| Marketplace 2027 | The 2026 percentages are carried into 2027; Rev. Proc. 2026-26 raises them to 2.15%–10.22%. | With the 2027 yearly figures. |