compoundcoast

Methodology

This page is the reason the site exists. Every calculator here abides by four contracts. If a tool cannot meet all four, it does not ship.

4 contracts Updated 2026-07-29
Contract 1

Open formulas, no black box

Every result page includes a show-the-math drawer: the formula rendered as text (not an image), your inputs substituted into it, and the intermediate numbers. If the derivation cannot be printed, the tool is not published.

Contract 2

Sourced data with an as-of date

Every data field carries a source and an as-of date — Damodaran, Shiller, IRS, SSA, BLS, HHS, FRED. Year-dependent figures also carry a validUntil, so stale tax brackets or limits break the build instead of quietly misinforming.

Contract 3

A range, not a point

Headlines are bands, not a single confident number — and the two kinds of band are labeled differently because they mean different things. Backtest calculators report measured percentiles (a percentile band (p5/p95, or p10/p90 where the tail is thin — each page prints which)) computed across every rolling historical start window, plus a win-rate and the worst start date, so the downside is on screen — not implied. Ticker projections instead report a low / base / high scenario band: three deterministic paths under shifted growth assumptions, which is a deliberately conservative planning range — not a probability distribution, not a bracket outcomes must fall inside, and never labeled as percentiles.

Contract 4

Hand-computed regression tests

Each calculator ships with a test that checks its output against values computed by hand or against a published standard (IRS tables, Trinity/Bengen results). The arithmetic is either right or wrong, and the test is what proves it — every formula is printed on the page so a reader can follow the derivation without taking anything on trust.

How the rolling-window engine works

One backtest engine drives DCA-vs-lump-sum win-rates, Coast success rates, and safe-withdrawal success rates. It steps through every historical start year in a 1928–2025 annual series — Damodaran's (NYU Stern) stock and 3-month T-bill returns with BLS CPI-U for inflation — compounding total return with dividends reinvested. Monthly granularity is not used. Honesty layers are toggles, not assumptions baked in silently: idle cash earns a T-bill credit, taxable accounts pay dividend and long-term-gain tax, expense ratios and any advice fee are deducted, and every path is deflated by CPI to show real dollars. The output is always a distribution — a win-rate plus a percentile band — never a single point. No calculator on this site runs Monte Carlo simulation; every percentile shown is computed from actual historical windows.

The ticker projection model — editorial parameters, disclosed

The ticker dividend calculators are forward projections, not backtests, so alongside each fund's sourced yield, expense ratio, and dividend-growth anchor they rest on a small set of editorial parameters — numbers chosen as assumptions, not numbers measured. Contract 2 requires saying so plainly. They are:

All four live as named constants in the open engine (assets/js/calc/ticker-dividend.js) and are asserted by the regression tests, so changing one changes this page's obligations too.

Data freshness and expiry

Year-dependent datasets (tax brackets, contribution limits, ACA figures, COLA) carry a validUntil date. Continuous-integration checks fail the build when today is past that date, so a figure never silently outlives its source. Each result page also stamps the as-of date of the data it used and the date the page was last reviewed. Where legislation is uncertain — for example the enhanced ACA subsidies scheduled to lapse after 2025 — the affected inputs are flagged rather than presented as settled.

Corrections

The contact page promises that substantive corrections are noted with a date rather than fixed silently. This is that record. It covers changes that moved a published number materially, not routine copy edits.

All three entries below are in the forward-looking fund projection model — the ticker calculators. The rolling-window backtest engine described above, which drives the withdrawal-rate, Coast, savings-rate and lump-sum tools, was not involved in any of them and its outputs did not change. The same commit did touch those backtest files, so it is worth being precise: those edits were a button label and a strategy name (“VPW” became “PMT (VPW-style)”), not a formula, a parameter, or a data file. Their regression tests assert the same hand-computed values before and after.

2026-07-22 — covered-call distribution model

The engine treated the return-of-capital portion of a covered-call ETF distribution as if it were destroying principal. Those are different things: a distribution can be classified as return of capital for tax purposes while the fund's net asset value holds. Because the two were conflated, forward projections applied an erosion drag that the funds' own measured history did not show — SPYI was being projected at roughly −6.9%/yr of NAV decay against a record that showed no such impairment. The erosion model is now separate from the tax treatment and is calibrated per fund. Every covered-call projection on the site changed.

2026-07-22 — dividend reinvestment compounding

A defect in the reinvestment loop compounded distributions on a balance that already included them. It was most visible at long horizons. On $25,000 up front plus $500 a month for 25 years — $175,000 paid in — the QQQI base projection came out at about $188.7M, roughly 1,078× the contributions, a figure the slider made visible to anyone who moved it. The same inputs now return about $553,000. The loop is fixed, and the regression suite asserts an implied internal rate of return at or below the model's own ceiling, so this class of runaway cannot ship again.

2026-07-22 — band labels and a phantom method claim

Forward projections were labelled p5/p95, which claims measured percentiles. They are three deterministic low/base/high paths, so they are now labelled as a scenario band. The historical backtesting engines do produce real percentiles and keep the percentile labels. Separately, this page previously described a Monte Carlo step that the engine does not perform; that sentence was removed.

These were found by an adversarial audit I ran against my own engine — simulated specialist critiques generated and then checked against the code, the datasets, and the funds' published records. It was not a review by an outside expert, and the site claims none.

See also