Torsalis

Check the math

Every formula the planner uses, with worked examples that produce the exact numbers the tool shows. Open a spreadsheet, type these in, and you should land on the same figures to the dollar. If you don't, one of us has a bug — and we'd like to know.

1. Growth and contributions 2. Inflation and spending 3. Tax, simple mode 4. Tax, detailed mode (cost basis) 5. Sell order 6. Price target → growth rate 7. Two-stage growth 8. Unwind schedule and price ladder 9. Income streams 10. Today's dollars 11. Crash test and guardrail 12. Monte Carlo 13. After-tax net worth 14. What it does not do
The one convention to know: this year counts as the first compounding year. Today's values are treated as the balance at the start of the current year, and grow for a full year before anything else happens. Money you add during a year is added after that year's growth (it starts compounding next year). Spending in retirement is taken after that year's growth too.

1. Growth and contributions

Each holding compounds once a year at its own rate. Contributions land after growth.

closing = opening × (1 + rate) + (monthly contribution × 12)

Worked example. $100,000 in one fund at 10% a year, adding $1,000 a month:

YearOpeningGrowth (10%)AddedClosing
2026$100,000$10,000$12,000$122,000
2027$122,000$12,200$12,000$146,200
2028$146,200$14,620$12,000$172,820
2029$172,820$17,282$12,000$202,102

Spreadsheet: =B2*1.1+12000 down a column. If your sheet compounds monthly you will land a few percent higher — that is the difference between the two conventions, not an error.

2. Inflation and spending

You type spending in today's money. It compounds at your inflation rate from today, not from the retirement year, because prices don't wait for you to retire.

lifestyle cost in year Y = spend × (1 + inflation)^(Y − current year)

Worked example. $100,000 a year at 5% inflation, retiring in 2028 (two years from a 2026 start): 2028 costs $100,000 × 1.05² = $110,250; 2029 costs $115,763; 2030 costs $121,551.

3. Tax, simple mode

To put a dollar in your pocket you have to sell more than a dollar. One flat rate applies to every withdrawal.

gross sold = net needed ÷ (1 − rate) tax = gross − net

Worked example. $1,000,000 in a fund at 0% growth, 20% flat tax, spending as in section 2:

YearLifestyle costGross soldTaxNet spentClosing
2028$110,250$137,813$27,563$110,250$862,188
2029$115,763$144,703$28,941$115,763$717,484
2030$121,551$151,938$30,388$121,551$565,546

Check the first row: 110,250 ÷ 0.8 = 137,812.5.

4. Tax, detailed mode (cost basis)

Each holding sits in an account. Roth withdrawals cost nothing. Pre-tax (401k/IRA) withdrawals are taxed in full at your income rate. Brokerage withdrawals are taxed only on the profit slice, at your capital-gains rate:

gain fraction = (value − cost basis) ÷ value effective rate = gain fraction × capital-gains rate gross sold = net needed ÷ (1 − effective rate)

Worked example. A $1,000,000 position you paid $400,000 for, 15% capital-gains rate, need $100,000 net: gain fraction = 600,000 ÷ 1,000,000 = 60%; effective rate = 60% × 15% = 9%; gross = 100,000 ÷ 0.91 = $109,890.11; tax = $9,890.11. ✓ matches the tool to the cent.

When you sell part of a position, the same fraction of your cost basis goes with it, so the gain fraction stays honest in later years. Money you contribute raises the basis in full — you already paid tax on it. Leave the basis blank and the tool assumes you bought at today's price, so only future growth is taxed.

5. Sell order

Tax-smart sells brokerage first, then pre-tax, and leaves Roth for last — because Roth growth is never taxed, it benefits most from being left alone. Pro-rata sells a slice of everything each year.

Worked example. $200,000 brokerage (no gain) + $800,000 Roth, spending $100,000 a year, no growth:

YearTax-smartPro-rata
BrokerageRothBrokerageRoth
2027$100,000$800,000$180,000$720,000
2028$0$800,000$160,000$640,000
2029$0$700,000$140,000$560,000

Same holdings, same spending. The difference shows up as tax the moment either account has a gain — on the planner's example portfolios the gap has run to hundreds of thousands over a plan.

6. Price target → growth rate

rate = (target ÷ today's price)^(1 ÷ years) − 1 years = target year − current year + 1

Worked example. $197 today, target $575 by end of 2030 from 2026: 5 compounding years; (575 ÷ 197)^(1/5) − 1 = 2.919^0.2 − 1 = 23.89%. The projection then lands the price at $575 in 2030. If you take a growth rate off someone else's sheet, it was worked out on their horizon — enter their price target instead and the planner will hit that price in that year.

7. Two-stage growth

Each holding grows at its own rate through its fast-growth year, then at the "after" rate. Nothing compounds at 50% forever. Bear and Bull scenarios scale the rate by your multipliers (Bear pushes a negative rate further from zero, never toward it).

rate in year Y = own rate if Y ≤ fast-growth year, else after-rate bear = rate − |rate| × (1 − bear multiplier); bull = rate + |rate| × (bull multiplier − 1)

8. Unwind schedule and price ladder

A schedule sells a fixed percentage of the shares you hold today each year, valued at that year's price. A ladder sells a percentage of today's shares the first year the price reaches each rung. Tax is charged on the sale (section 4) and the net proceeds are moved into the holding you choose, raising its cost basis by the amount moved.

amount sold in year Y = today's value × % × (price in Y ÷ price today)

Worked example. 1,000 shares at $100 growing 26% a year; ladder 25% at $200, 25% at $400. Price passes $200 in 2028 → sells 250 shares × $200 = $50,009 (the tiny excess is the price being $200.04 that year); passes $400 in 2031 → 250 shares × $400 = $100,038. A rung the price never reaches never sells; Monte Carlo reports how often that happens.

9. Income streams

An Income row (pension, Social Security, rent) is not capital. It pays a yearly amount from its start year, growing at its own rate from today, and reduces what the portfolio must fund. Income before retirement, or above spending, is invested into your largest diversified holding in an already-taxed account.

portfolio must fund = max(0, lifestyle cost − income) surplus invested = max(0, income − lifestyle cost)

10. Today's dollars

The Future $ / Today's $ switch changes units only, never the plan. Every figure is divided by the inflation factor for that year:

today's $ = future $ ÷ (1 + inflation)^(Y − current year)

A useful check: in today's dollars your spending reads the same number every year, because it is the same lifestyle. If it slopes, something is wrong.

11. Crash test and guardrail

The crash test replaces the growth rate with −X% for the first N years of retirement and re-runs everything. The guardrail line then searches for the spending level that would survive that crash (bisection on spending), and separately for the first later retirement year that would survive at your planned spending.

12. Monte Carlo

Each run re-plays the whole projection with returns drawn at random around your rates. Three things to know:

Your rate is a CAGR — a geometric rate — so the median simulated path equals the deterministic one. The yearly return is exp(ln(1 + rate) + σ·z) − 1 with z a standard normal draw. (Some tools subtract σ²/2 here; that preserves the arithmetic mean instead and quietly turns a 10% index fund into a 5% median path. We don't.)

Holdings move together. Each year one shared market shock is drawn, plus one private shock per holding: z = √ρ · market + √(1−ρ) · own, so every holding still has unit variance but they are correlated at ρ (Mostly = 0.8, Somewhat = 0.6, Barely = 0.3). Treating a tech-plus-crypto portfolio as independent makes it look far safer than it is.

Volatility calms down after fast growth. Past a holding's fast-growth year its volatility is capped at 30% (an ordinary share). Otherwise crypto-level swings compounded for forty years produce "lucky" outcomes in the billions that nobody should plan around. Defaults: equity 30%, crypto 70%, custom 20%; the Calm/Typical/Wild control scales them ×0.7 / ×1 / ×1.4; any holding can be set by hand.

Success rate = share of 1,000 runs that never run short of spending. Percentiles are the ending balance.

13. After-tax net worth

"Yours after tax" is what you would keep if you sold everything today: each holding's value less the tax on its gain (section 4) at today's rates. It is the number your statement doesn't show you.

14. What it does not do

This is a planning model, not a tax return. It does not model tax brackets, required minimum distributions, state tax, Social Security taxation, Medicare surcharges, or the 0% capital-gains band; rates are assumed flat for the whole plan. Growth is applied once a year. Monte Carlo assumes log-normal returns and a single correlation for the whole portfolio. If any of those matter to your decision — and for large positions they can — take the output to someone who does this for a living. Nothing here is investment, tax or legal advice.

Found a number that doesn't reconcile? That is exactly the kind of thing we want to hear about.