Calculation Methodology

Every projection on this site follows the conventions below. This is the same document our engines are held to internally — not a marketing summary of it. If a number a calculator shows doesn't match what's written here, that's a bug; tell us.

Calculation methodology

Every financial-independence projection in FulcrumWise follows the conventions on this page. They exist so that the same inputs produce the same answer no matter which calculator you open. If you change one engine, change this document too.

Conventions

Monthly compounding, contributions at the end of the month

Balances grow once per month and the monthly contribution lands after that month's growth. The annual return you type in is treated as a nominal annual rate compounded monthly, so the monthly rate is annualRate / 12.

balance_next = balance * (1 + annualRate / 12) + monthlyContribution

A projection reports a fractional number of years. When a balance crosses its target part-way through a month we interpolate linearly inside that month rather than rounding up to the next whole year.

When an input itself is a fractional time horizon (e.g. 10.5 years), it is rounded to the nearest whole month (Math.round(timeHorizon * 12)) before simulating, so contributions and growth are always computed over the same number of months.

Real returns, targets in today's dollars

Long-horizon projections run on the inflation-adjusted ("real") return:

realReturn = (1 + nominalReturn) / (1 + inflation) - 1

Because the growth rate is real, every target and every balance is expressed in today's dollars — the purchasing power you have now, not the larger nominal number you would see on a future statement. This is why results are labelled "in today's dollars", and why we do not also inflate the spending target: doing both would double-count inflation.

Every calculator that projects more than a year ahead takes an inflation input. The default is 2.5%.

Savings measured against take-home income

A savings rate is only meaningful against money you actually receive, so income is taxed before the comparison:

savingsRate = (monthlySavings * 12) / (grossIncome * (1 - effectiveTaxRate))

effectiveTaxRate is your all-in average rate across federal, state, and payroll tax — not your marginal bracket. The default is 22%.

Withdrawals at the start of the period

In the retirement drawdown simulation the year's spending comes out first, and the remaining balance grows for the rest of the year. Growing a full year before withdrawing would assume you live on nothing for twelve months and flatters the result.

The FI number

fiNumber = annualSpending / safeWithdrawalRate

At the default 4% that is 25x annual spending.

PMI (Mortgage / Home Affordability calculators)

Private mortgage insurance is charged whenever the loan-to-value ratio exceeds 80% (i.e. the down payment is under 20%):

monthlyPmi = ltv > 80% ? loanAmount * (pmiRate / 100) / 12 : 0

The default pmiRate is 0.5%/yr, applied to the original loan amount, not the current balance — a common lender simplification for an estimate rather than an amortizing PMI schedule. In the Mortgage calculator, the headline monthly payment is the initial payment, including PMI and any extra monthly principal entered (see "Extra principal and equity" below); as the loan amortizes and the balance crosses back under 80% of the original home price, PMI drops off and the actual payment falls below the quoted figure. The calculator surfaces the month this happens (pmiEndsMonth) so the quoted number isn't mistaken for what you'll pay for the life of the loan. The Home Affordability calculator includes estimated PMI (and HOA) in the front-end DTI test, since real underwriting does the same, but does not model PMI dropping off since it only solves for a single point-in-time affordability figure.

Extra principal and equity (Mortgage calculator)

Extra monthly principal is applied to the principal portion of the level payment, not as an increase to the payment amount itself — the level payment still covers that month's interest first, and the extra goes on top straight to principal. This is why a fixed extra amount pays the loan off sooner rather than changing the size of the regular payment. The headline monthly payment includes the extra (it's money the borrower actually sends every month), so the quoted payment always matches the payoff date shown alongside it.

"Equity %" in the amortization schedule is measured against the original home price, with no appreciation modelled: (homePrice - endingBalance) / homePrice. This is deliberate, not an oversight — the calculator doesn't model home-value appreciation, so this figure answers "how much of what you originally paid have you paid off," the same basis pmiEndsMonth uses for the 80%-of-original-price PMI threshold. A user's actual market equity (what a sale would net) is typically higher whenever the home has appreciated, and this calculator does not estimate that.

Debt minimum-only baseline (Debt Payoff calculator)

The "if you never paid a cent extra" comparison pays each debt's own minimum independently, every month, with no rolling of a cleared debt's freed-up minimum into the others. This is the whole point of the comparison: it's what makes "months saved" and "interest saved" reflect the true benefit of a payoff strategy (avalanche/snowball, with or without extra), rather than understating it against a baseline that quietly already assumes some discipline. A shortcut that pools all original minimums into one payment pool from month one — even at $0 extra — would still redirect a cleared debt's minimum to the others, which is a payoff strategy, not a true baseline.

Tax model (Rent vs. Buy / Buy vs. Stay homeownership benefit)

The mortgage-interest/property-tax tax benefit is itemization-aware, not a flat percentage of interest and property tax. Each year:

deductibleInterest = interest * min(1, $750,000 / loanBalance)
estimatedStateLocalIncomeTax = grossIncome * (stateRate + localRate)
SALT = min($40,400, estimatedStateLocalIncomeTax + propertyTax)
incrementalDeduction = max(0, deductibleInterest + SALT - standardDeduction)
benefit = incrementalDeduction * federalRate

Only the federal marginal rate is applied — state/local rates do not reduce a federal deduction. Instead, taxState/taxLocal feed estimatedStateLocalIncomeTax, which shares the capped SALT bucket with property tax (state/local income tax typically consumes some or all of the cap before property tax counts). The grossIncome input is what state/local income tax is estimated against; in Buy vs. Stay this is a flat figure for the whole 30-year projection, since that calculator doesn't otherwise model income growth.

Constants are the currently-enacted tax-year 2026 figures under the One Big Beautiful Bill Act (OBBBA, Pub. L. 119-21, enacted July 4, 2025), per IRS Rev. Proc. 2025-32:

Constant2026 valueBasis
Standard deduction (single)$16,100OBBBA §70102, indexed for inflation
Standard deduction (married filing jointly)$32,200OBBBA §70102, indexed for inflation
SALT deduction cap$40,400OBBBA §70120; $40,000 in 2025, +1%/year through 2029, reverts to $10,000 in 2030
Mortgage-interest debt cap$750,000OBBBA §70108 made the TCJA cap permanent (was scheduled to revert to $1M in 2026)

Known simplifications:

  • The SALT cap's income-based phase-down (MAGI above $505,000 for 2026) is not modeled — the $40,400 cap is applied flat regardless of income, which overstates the benefit for high earners above the phase-down threshold.
  • The $750k mortgage-interest cap ratio uses the loan balance at the start of the year, not the average balance IRS Pub. 936 prescribes. Since the balance only declines over the year, this slightly understates the deductible share (a conservative approximation) whenever the loan is near the $750k line.
  • Buy vs. Stay's grossIncome does not grow year over year (unlike Rent vs. Buy's grossIncome, which grows with the incomeGrowth input), since that calculator has no income-growth model elsewhere.
  • All four constants (standard deduction, SALT cap, mortgage-interest debt cap) are frozen at their 2026 values for the entire 30-year projection. Under current law the $40,400 SALT cap reverts to $10,000 in 2030, and the standard deduction is not re-projected for future inflation, while income and property tax keep growing with their own inputs — so later projection years understate how much of the itemized deduction gets crowded out, overstating the homeownership tax benefit in the back half of longer projections.

ACA subsidy constants (annual refresh obligation)

The ACA Health Insurance Subsidy calculator (src/lib/aca-calc.ts) ships two dated constant tables, both verified against their primary source on 2026-08-12 (ACA_FIGURES_AS_OF in that file):

  • Applicable percentage table, IRS Rev. Proc. 2025-25 §3.01 — six income-as-%-of-FPL bands. The first (under 133%) and last (300-400%) bands are flat; the four interior bands are linearly interpolated between each band's starting and ending percentage. The 400%-of-FPL line is a hard cliff for plan year 2026: the enhanced premium tax credits that removed that cap expired 2025-12-31, so income at exactly 400% of FPL still gets a credit and income one dollar past it gets none.
  • Federal poverty guidelines, HHS/ASPE, 2026, 48 contiguous states + DC only: $15,960 for one person, rising by a constant $5,680 per additional household member. Alaska and Hawaii publish separate, higher guidelines that this calculator does not implement — it excludes them explicitly in copy rather than silently applying the lower 48-state figures, which would understate their distance from the poverty line and overstate their subsidy.

Both tables are republished annually — the IRS issues a new Rev. Proc. for each plan year and HHS updates the poverty guidelines every January. This is a recurring maintenance commitment, not a one-off build: both constant tables must be re-verified against their primary source and updated for every plan year the calculator remains live, or the site will quietly quote a stale subsidy and a stale cliff line. A multi-year projection to age 65 necessarily holds the current year's figures constant for all future years (next year's numbers do not exist yet), and says so in its copy — that assumption gets weaker the further out the projection runs.

Refinance break-even: never show the naive number alone

The industry-standard refinance break-even — closing costs ÷ monthly payment saving — is arithmetically correct and materially misleading whenever the new loan resets the term, which is the common case: refinancing 25 years remaining into a fresh 30-year loan compares a shorter obligation to a longer one and calls the difference "savings." The Refinance calculator (src/lib/refinance-calc.ts) always computes and surfaces three figures together:

  • The naive break-even (new loan against its own, possibly longer, term).
  • A term-matched break-even — the new rate amortized over the exact months remaining on the current loan, the honest apples-to-apples comparison.
  • The lifetime cost effect — total P&I on the new loan over its full term, plus any upfront fees, compared against the interest you'd pay carrying the current loan to the end of its remaining term. This can be positive (refinancing costs more over its life) even when the naive break-even looks favorable, whenever a longer term is doing the work of the "saving."

Closing costs default to paid upfront, not rolled into the new loan's principal — upfront is the case a break-even question is actually asking about (cash recovered). Rolling costs into the loan is offered as a toggle; doing so removes the cash-outlay break-even entirely (there's nothing to recover, so both break-even figures read N/A) without removing the cost, which still shows up in the lifetime effect through the larger principal.

Barista FIRE: state the indefinite-income assumption in the same breath

"Barista FIRE lowers your number" is mostly an artifact of assuming part-time income continues forever. The popular framing — (annual spending − part-time income) / safe withdrawal rate — is correct arithmetic but never says so, and on typical inputs it can overstate the benefit of Barista FIRE by hundreds of thousands of dollars against a time-limited version of the same idea. src/lib/barista-calc.ts computes both:

  • Framing A (indefinite income): the popular number, shown only alongside an explicit statement that it assumes the part-time income never ends.
  • Framing B (time-limited): the portfolio needed today to cover the income gap for a chosen number of years and still reach the full FI number afterwards — an annuity-due present value at the post-retirement real rate. This barely undercuts the full FI number, because the obligation to reach it doesn't disappear, it's only postponed, and a realistic post-retirement real return doesn't discount a decade-plus-out target by much.

Because Framing B barely moves the number, the calculator's primary output is not a number at all — it's a timeline: how many years earlier you could drop to part-time work, reusing yearsToTarget (already verified in src/lib/fi-math.ts) against both the full FI number and the Framing B threshold. That's the genuine benefit of planning to work part-time: reaching a slightly lower bar sooner, not a permanently smaller one.

Withholding constants (annual refresh obligation)

The Withholding Catch-Up calculator (src/lib/withholding-calc.ts) ships two kinds of dated figures, both verified against their primary source on 2026-08-15 (WITHHOLDING_FIGURES_AS_OF in that file):

  • TY2026 ordinary income brackets and standard deduction, IRS Rev. Proc. 2025-32 §4.01 (brackets) and §4.14(1) (standard deduction). The Head of Household 24%/32% seam ($201,750) and 32%/35% seam ($256,200) are each $25 below the visually similar Single/MFS figures ($201,775 / $256,225) — two independent secondary sources got the HoH seam wrong during verification by propagating Single's value onto it, so this is the single most likely place for the table to drift if re-copied from a secondary source next year.
  • The Social Security wage base feeding MAX_WITHHOLDABLE_FRACTION (the ceiling on how much of a paycheck can be converted to extra withholding) is not independently re-derived here — the engine uses the flat 7.65% employee-side FICA rate as a conservative floor instead, deliberately understating what's withholdable above the wage base rather than depending on a figure that returned HTTP 403 from SSA during verification.

Both the brackets and the standard deduction are republished annually — the IRS issues a new Revenue Procedure for each tax year, typically in October. This is a recurring maintenance commitment: WITHHOLDING_FIGURES_AS_OF and every constant it dates must be re-verified against the TY2027 Rev. Proc. (expected ~October 2026) or the calculator will quietly quote a stale bracket table. The Social Security wage base is announced on a similar ~October cadence and should be rechecked against https://www.ssa.gov/oact/cola/cbb.html at the same time, even though it isn't currently load-bearing.

Two further rules are carried forward from TY2025 Form 2210 rather than independently verified for TY2026: the 90%-of-current-year / 100%-or-110%-of- prior-year safe harbors, and the $1,000 de minimis threshold. Both are long-stable statutory rules unlikely to change, but should be rechecked against the TY2026 Form 2210 instructions once published, expected around January 2027.

Defaults and where they come from

InputDefaultBasis
Annual return7%Long-run US equity returns, roughly 10% nominal less ~3% inflation, rounded conservatively. Treated as nominal here and deflated by your inflation input.
Inflation2.5%The Federal Reserve's 2% target plus a small margin; close to the long-run US CPI average.
Safe withdrawal rate4%The Trinity study (Cooley, Hubbard & Walz, 1998) and Bengen's earlier work, which found a 4% initial withdrawal adjusted for inflation survived 30-year retirements across historical US market data.
Effective tax rate22%A mid-range all-in average rate for a US household earning around the median-to-upper-middle income. Yours will differ; change it.
Post-retirement return5%A more conservative mix than the accumulation portfolio, reflecting a shift toward bonds.

What these models leave out

These are planning tools, not forecasts. Every calculator on this site except the Safe Withdrawal Rate calculator described below deliberately does not model:

  • Sequence-of-returns risk. Growth is a constant rate, not a path. A real portfolio that falls 30% in your first retirement year behaves far worse than the average suggests.

    The Safe Withdrawal Rate calculator (src/lib/swr-calc.ts) is the deliberate exception to this line. Its entire purpose is to model exactly the risk the rest of this document says is out of scope: instead of one smooth constant real return, it replays every historical year-by-year path from the shipped return dataset (src/lib/data/historical-returns.json, see that directory's README.md for provenance) and asks whether a constant real-dollar withdrawal survived it. This is why a "safe" rate sits below the average historical return — the paths that got there, not just the average, are what determine whether a withdrawal plan survives. Do not read this as an inconsistency to fix; it is the reason this calculator exists, and every other calculator stays on the constant-rate model deliberately because the extra complexity isn't worth it for accumulation-phase projections and shorter, less sequence-sensitive calculations. See src/lib/swr-calc.ts's module doc for the withdrawal mechanics and its honest limits (overlapping windows are not independent observations, and taxes/account types/Social Security/dynamic spending are out of scope there too).

  • Taxes in retirement. Withdrawals are treated as spendable in full. Account type (traditional, Roth, taxable) is not modelled.

  • Income growth. Salary and contributions stay flat in real terms.

  • Irregular spending. No college costs, home purchases, medical shocks, or one-off windfalls.

  • Social Security uncertainty. Where it appears, the benefit you enter is taken at face value in today's dollars.

  • Fees. Expense ratios and advisory fees are not deducted from the return.

Treat the output as a direction and a rough magnitude, not a date on a calendar.

Sources

Every primary and secondary source cited across the calculators, in one place. Each is checked by hand; the date below is the last time we confirmed the link still points where it says it does.

  • Determining Withdrawal Rates Using Historical Data

    William P. Bengen, 1994, Journal of Financial Planningchecked 2026-08-12

    The paper that established the '4% rule' — the foundational research this site's safe withdrawal rate defaults trace back to.

  • Retirement Savings: Choosing a Withdrawal Rate That Is Sustainable

    Philip L. Cooley, Carl M. Hubbard, Daniel T. Walz, 1998, AAII Journalchecked 2026-08-12

    The 'Trinity study,' which expands on Bengen across a range of withdrawal rates and portfolio mixes. Only Table 3 in the original paper is inflation-adjusted — the commonly-quoted near-100% success rates come from the nominal-withdrawal Tables 1-2.

  • Safe Withdrawal Rate Series

    Big ERN, Early Retirement Nowchecked 2026-08-12

    A practitioner blog, not peer-reviewed — the most detailed public research on SWR sensitivity to horizon length and asset mix.

  • State of Retirement Income: 2025

    Morningstarchecked 2026-08-12

    Forward-looking base-case starting withdrawal rate, cited for context alongside the fixed 4% default this site uses. The ~3.9% figure is search-attested rather than directly confirmed against the source — treat it as a data point, not a recommendation, and worth checking whether a newer edition has superseded it.

  • Revenue Procedure 2025-32

    Internal Revenue Servicechecked 2026-08-12

    Source of the 2026 standard deduction, SALT cap, and mortgage-interest debt cap figures used in the tax model. §.14 gives the 2026 standard deduction as $16,100 (single/MFS), $32,200 (MFJ), and $24,150 (HoH).

  • Publication 936: Home Mortgage Interest Deduction

    Internal Revenue Servicechecked 2026-08-12

    Pub. 936 prescribes the AVERAGE mortgage balance for the qualified-loan-limit calculation. This site uses the START-OF-YEAR balance instead (see docs/methodology.md, 'Known simplifications') — a documented, conservative deviation, cited here precisely because we diverge from it, not because we comply with it.

  • One Big Beautiful Bill Act, Pub. L. 119-21

    U.S. Congresschecked 2026-08-12

    Statutory basis for the 2026 tax constants (standard deduction indexing, SALT cap, mortgage-interest debt cap).

  • Primary Mortgage Market Survey

    Freddie Macchecked 2026-08-12

    Weekly national average mortgage rate survey, a standard reference for the default mortgage rate.

  • 30-Year Fixed Rate Mortgage Average in the United States (MORTGAGE30US)

    Federal Reserve Bank of St. Louis (FRED)checked 2026-08-12

    Same series as the Freddie Mac PMMS, republished by FRED.

  • What is a debt-to-income ratio?

    Consumer Financial Protection Bureauchecked 2026-08-12

    Defines DTI as total monthly debt payments divided by gross monthly income, matching this calculator's inputs. The page does not itself endorse the specific 28/36 front-end/back-end thresholds this calculator defaults to — those are a common lending convention, not a CFPB rule — so it is cited for the DTI definition, not the exact percentages.

  • How to reduce your debt

    Consumer Financial Protection Bureauchecked 2026-08-12

    Describes the highest-interest-rate ('avalanche') and smallest-balance ('snowball') strategies this calculator lets you compare.

  • Compound Interest Calculator

    U.S. Securities and Exchange Commission (Investor.gov)checked 2026-08-12

    The SEC's own investor-education compound interest calculator, covering the same mechanic (initial amount, recurring contribution, horizon, rate) this calculator models.

  • Consumer Price Index

    U.S. Bureau of Labor Statisticschecked 2026-08-12

    Backs the long-run inflation figures behind this site's 2.5% default inflation input.

  • Retirement Estimator

    Social Security Administrationchecked 2026-08-12

    For a personalized Social Security benefit estimate to use as this calculator's input, rather than the flat figure you'd otherwise guess.

  • Rev. Proc. 2025-25

    Internal Revenue Servicechecked 2026-08-12

    Sets the plan-year 2026 applicable-percentage table this calculator uses to compute a household's required premium contribution at its income-as-%-of-FPL band, including the reinstated 400%-of-FPL cliff.

  • Poverty Guidelines

    U.S. Department of Health and Human Services (ASPE)checked 2026-08-12

    Source of the 48-contiguous-states-plus-DC federal poverty line figures this calculator uses to compute a household's percentage of FPL. Alaska and Hawaii publish separate, higher guidelines this calculator does not implement.

  • Form 2210: Underpayment of Estimated Tax by Individuals, Estates, and Trusts

    Internal Revenue Servicechecked 2026-08-12

    Source of the two statutory safe harbors (90% of current-year tax, or 100%/110% of prior-year tax depending on prior-year AGI) and the $1,000 de minimis threshold the Withholding Catch-Up calculator applies, plus the rule that withheld income tax is credited as though one quarter was paid on each quarterly due date regardless of when it was actually withheld — the asymmetry a year-end W-4 change exploits and an estimated payment cannot.

  • Form 1040-ES: Estimated Tax for Individuals

    Internal Revenue Servicechecked 2026-08-12

    Source of the 2026 quarterly estimated-tax due dates and the safe-harbor mechanics the Withholding Catch-Up calculator's escalation schedule is built around.

See a specific calculator's own sources and assumptions on its page, under How this works and Sources, or browse all calculators.