How Longlight works
This is the text the app carries under Settings. It says how each number is computed and what is left out.
Trust is the whole product, so this document shows the work: how the simulation steps through time, where every formula comes from, which official documents every tax and benefit rule was transcribed from, and, just as important, what Longlight deliberately does not model. If a number in the app matters to you, this page tells you exactly how it was computed.
In one minute
Longlight runs your household month by month to the end of the plan: paychecks, spending, savings, debts, taxes and benefits, from the figures you enter and a bundled data pack of current law.
It shows the same plan three ways: the fixed path (one run on your assumptions as given), simulated futures (thousands of random market paths, for the chance of success) and history (every start year since the 1870s).
Every tax and benefit rule is transcribed from an official document named on this page; today's brackets are held fixed, and amounts can be read in today's dollars or in each year's own.
It does not predict markets, give advice or know your real returns: every result is an estimate under your assumptions, to be revised as life moves.
Nothing leaves your device (no account, no upload, no tracking), and the whole plan exports as a file you own.
What Longlight computes
Longlight simulates a household's finances month by month from a start month to a horizon you choose: income arrives, contributions and expenses post, debts amortize, accounts grow, and once a year US federal taxes and required distributions are applied, and contribution limits are enforced month by month at posting, all from a bundled, versioned data pack. The simulation engine is a pure, deterministic library: given the same plan, the same assumptions, and the same random seed, it produces bit-identical results on the same device and build. The app only ever displays engine output; no screen computes a financial number on its own.
Three run modes share that identical monthly engine. Deterministic mode applies your expected returns exactly. Monte Carlo mode draws thousands of random return paths around those same expectations and reports the distribution. Historical mode replays every qualifying start year of a long US market dataset through your plan. Nothing else changes between modes (same taxes, same rules, same order of operations), so differences between the modes are always attributable to the returns alone.
A path “succeeds” when it never records a shortfall month: a month in which spending could not be fully funded after exhausting every account the withdrawal order allows. Shortfalls are explicit, modeled results: balances never go silently negative, and the success rate is simply the fraction of simulated paths that stay shortfall-free.
A chance of success has dates behind it. For the paths that do run short, the simulation reports the first month each of them does: the earliest, the latest, the month by which half of them have run short (a month some path actually ran short in, never an average of two) and the count for each calendar year. The Chance of success page shows them, because running short in the last years of a long life and running short soon after retiring are different plans with the same percentage.
Today's dollars. The simulation works in each year's own dollars: a salary in 2040 is what the paycheck will say in 2040. The pictures of wealth over time (the projected figures, the journey, the fan of futures, net worth, what's left, the year-by-year tables) are shown in today's dollars, the dollars of the plan's first year, unless you switch them to each year's own (Settings, or the switch on those pages). The conversion is the simulation's: an amount of a year is divided by that year's price level, the cumulative inflation the same run grew its indexed spending and benefits by, so spending that keeps pace with inflation reads the same every year. Each simulated future is converted by its own price level before the percentiles are taken; with a fixed inflation assumption that is the same as dividing the percentile by the level; when futures draw their own inflation it is not, and the honest order of futures is the one in today's dollars. A single year's cash flow, the tax pages and the studies stay in each year's own dollars and say so: a return is filed in the dollars of its year. No result depends on the switch.
Check-ins are compared, never simulated. A check-in records the balances you actually observed at the end of a month; the app sets them beside the fixed path's balances for the same accounts at that month and, when the check-in covers every account and debt, against the Monte Carlo percentile bands. Restarting the plan from a check-in is an ordinary edit: the observed balances become opening balances, the start moves to the following month, and the simulation runs again from there. When the restart lands in a later calendar year, every amount stated in an earlier year's dollars (streams, fixed contributions, Social Security benefits) is brought to the new start year's dollars by the same growth rule the simulation applies (the plan's inflation where indexed, the stream's own rate otherwise), so the restarted plan continues the projection instead of silently re-denominating it; a conversion window that closed before the restart is dropped, and the entered opening lots of an account whose balance moved are cleared to one lot at the projected basis. Every scenario restarts with the baseline, each from its own resolution (its own horizon, its own inflation, its own conversion window) and keeps exactly its own choices, re-expressed the same way. The calendar years the restart moves past enter each wage earner's Social Security earnings record at the wages the fixed path paid (the same growth rule, over the months each stream was active), so the earnings estimate keeps counting them; a year already entered is kept. One thing a restart does not carry: the returns the projection had already filed. The Medicare surcharge looks back to an earlier year's return, so a restarted plan pays the standard premium until it has filed its own look-back years, whatever the original projection's income was in those years; the confirmation says so when someone is enrolled.
The monthly step and its timing conventions
Each simulated month runs in a fixed order. First, start-of-month flows: income posts (payroll tax is withheld from wages here), contributions move from income into accounts (employer match posts in the same month, and limit room is enforced at posting, never a year-end true-up), then expenses post (spending streams, dated events, debt payments, and, each January, the prior year's tax bill). If the month's flows come up short, withdrawals are sized to that month's shortfall and executed in your withdrawal order; a surplus routes to the plan's surplus account: the one you designate under Strategy, else your first cash account, else your first taxable account; only a cash or taxable account can hold it, as a retirement or health account takes money through a contribution rule alone, so every plan carries at least one. Second, end-of-month growth: every balance grows by one month.
Growth uses annual-effective geometric compounding: an account with annual return r grows by (1 + r)^(1/12) each month, so a no-flow year compounds to exactly r. Streams deliberately do not compound monthly: salary growth, expense inflation, and benefit cost-of-living steps apply once a year at the January boundary, like real raises. Debt interest accrues monthly at the contractual annual rate divided by twelve, matching how real amortization schedules are quoted; a loan with a later start month is not a liability until that month, and no proceeds are deposited for it. These asymmetries are deliberate, decided once, and enforced by automated invariant tests.
Fixed-rate accounts that model a dividend split use the price return for monthly growth; once a year, after December's growth, a dividend equal to the dividend yield times the post-growth balance is paid and immediately reinvested (raising cost basis). A no-flow year therefore grows by exactly (1 + p)(1 + y) − 1, deliberately the compounded product, not the sum of the parts.
Money is conserved every single month: the change in total balances equals flows in, minus flows out, plus growth and dividends, exactly. This is a standing automated invariant, not a hope.
Accounts, allocations, and rebalancing
An account's return can be a single fixed rate, a fixed rate split into price and dividend components, or an allocation across asset classes you define (each with its expected compound annual return, volatility, dividend yield, and expense ratio; the expense ratio nets against return before anything else uses it). A class's dividend yield is carved out of its expected return (December's growth is reduced by the yield and the dividend paid from it), so an allocated account's no-flow year compounds to exactly the class return, unlike a fixed-rate price/dividend split, which compounds to (1 + p)(1 + y) − 1. Allocated accounts track one sub-balance per asset class in every mode, so drift and rebalancing behave identically whether returns are expected, random, or replayed.
Deposits into an allocated account buy in at the target weights; withdrawals sell pro-rata across the current sub-balances. Once a year, at the year boundary after December's growth and dividends, sub-balances snap back to their target weights. In a taxable account that rebalance is a taxable event: the asset classes above target sell their oldest lots first (or at average basis, if the account elects it) and the classes below target buy new lots, so the tax drag of real rebalancing is in the numbers. Tax-advantaged accounts rebalance freely.
Expected returns are entered as compound annual growth rates (geometric), not arithmetic means. That choice keeps the Monte Carlo median on the deterministic path: volatility widens the fan of outcomes without silently moving its center.
Monte Carlo simulation
Monthly log returns are drawn independently each month from a multivariate normal distribution across your asset classes: class i's monthly draw is r = μ + σₘ·ε, where μ = ln(1 + R)/12 for net expected return R, σₘ = σ/√12 for annual volatility σ, and the ε across classes are correlated through the Cholesky factor of the correlation matrix you set. Wealth is therefore lognormal. Expected returns, volatilities, and correlations are your assumptions, editable per scenario; they are never estimated behind your back from the historical dataset.
Randomness is fully reproducible. Each path owns an independent generator (xoshiro256++, seeded from a SplitMix64 stream keyed by the run seed and path index; normal draws via Box–Muller in a fixed order), so the same seed produces identical results at any level of parallelism, and running the simulation twice never quietly changes an answer.
Aggregation is exact, not approximated: for each month the paths' net-worth values are sorted and percentiles are read by linear interpolation between order statistics (rank h = (n − 1)·p/100). The fan chart's bands are percentiles of net worth across paths; the dashed line is the deterministic run of the same plan. The fan can be read on a symmetric-log axis at a switch, each gridline ten times the last, so compounding reads as a straight line and the median is not flattened by the luckiest futures; nothing is clipped or dropped either way. With volatility set to zero, Monte Carlo reproduces the deterministic result exactly: an automated invariant, and a good sanity check of the whole pipeline.
Inflation can vary too. With an inflation volatility above zero, each path draws its own yearly price change around your assumption: one lognormal draw of the year's price factor for each plan year after the first (the first year's prices are the starting level, so a plan of N years makes N − 1 draws), independent of returns, with your assumption as its mean and the volatility as its spread, so prices can fall in a year but the price level never turns negative. Because that mean is the average yearly rate, not the compound one, the median path inflates slightly less than the fixed path (the larger the volatility, the more so), whereas returns keep their median on the deterministic line; under historical blocks, below, the price index is centered on its compound rate and the median path inflates exactly as the fixed path does. Inflation-indexed streams and benefit cost-of-living steps follow that path's inflation; the tax law's dollar figures stay fixed, as in every mode. At zero volatility inflation is fixed and no extra random draw is made, so a seed reproduces exactly what it did before the option existed.
A second model, historical blocks, stitches each future from blocks of consecutive months of the Shiller dataset: every block's start month is drawn at random, the block may wrap from the end of the series to its beginning, and every mapped asset class and the consumer price index come from the same months, so crashes cluster, bad decades run long, and inflation and returns keep their historical relationship. History supplies the shape only: before sampling, each class's whole series is scaled by one constant so that its geometric mean equals your expected compound return net of expenses, and the price index likewise to your inflation assumption: your numbers set the center, history sets the ride. A plan that starts mid-year takes a whole year of the sampled history's inflation at its first January, as it does under the fixed assumption, from the months just before its first block. Volatility and correlation settings belong to the normal model; the block model takes history's. Classes without a mapped series compound at their expected return, as in replay.
Known limits: normal draws are independent month to month with thin tails and no regime memory; block draws repeat history's episodes, so they cannot produce anything the record has not seen, and joins between blocks are seams the market never had. Historical replay remains the complement that carries one real sequence, in order, per start year.
Historical replay
Historical mode replays the Shiller US dataset (monthly since 1871) through your plan: every January-anchored start year whose window fully covers your horizon becomes one path. There is no randomness; the value of this mode is exactly that 1966 or 1929 happened, in order, with real inflation attached. A plan in which nothing follows history (no allocated account holding a class mapped to a bundled series, no inflation-indexed stream, no Social Security benefit) is not replayed: every start year would be the same fixed path, and the app says so instead of counting replicas. The History page draws every start's year-end net worth, its chart's top at the 90th percentile of the starts (the richer ones are counted above it, never dropped from a ranking), names the five leanest starts and the preset years 1929, 1966, 1973, 2000 and 2008 where the plan can start in them, and lists every start that ran short with the month it did: readings of the replay, nothing computed anew.
Equity total return from month t to t+1 is (Pₜ₊₁ + D/12)/Pₜ − 1, where D is the annualized dividend rate published for the held month (no look-ahead). Bond returns are constructed as a constant-maturity ten-year ladder rolled monthly with annual-coupon par pricing: buy at par at the month's yield y, and after one month value the position at the new yield y′ with m = 119/12 years remaining as price = (y/y′)(1 − (1 + y′)^(−m)) + (1 + y′)^(−m), for a monthly total return of price + y/12 − 1. When the yield is unchanged this earns exactly y/12, the ladder's sanity anchor. Asset classes without a mapped historical series (for example international equity or cash) compound at their expected return during a replay; that is documented behavior, not a bug.
The replayed CPI series substitutes for your inflation assumption everywhere inflation applies: inflation-indexed streams and benefit cost-of-living steps use the January-over-January CPI ratio of the replayed window, at the first January of a plan that starts mid-year too, where the ratio spans the twelve months of history ending there, so a September start takes a whole year's inflation at its first January in every mode (a window must carry those months, so the dataset's first January cannot anchor a mid-year start). Taxes, however, run unchanged on the nominal ledger under the data pack's fixed current-law dollars: applying today's statute to a 1966 price level is counterfactual either way, and holding the law fixed keeps replays comparable with the standard backtesting tools. Treat historical-mode tax detail as an approximation by construction.
Sources Shiller “U.S. Stock Markets 1871–Present and CAPE Ratio” dataset (ie_data.xls via shillerdata.com)
The longevity overlay
When a household member selects a life-table column, survival is modeled from the Social Security Administration's period life table: the monthly survival factor at attained age x is (1 − qₓ)^(1/12), where qₓ is the table's one-year death probability, taken as certain death beyond the table's last age. For couples, household survival is the probability that either member is alive, computed under an independence assumption (documented simplification: real couples' mortality is correlated).
The overlay never changes the money: it re-weights results. The survival-weighted success rate discounts each failing path by the probability someone is still alive when its first shortfall occurs: running out of money at an age you are unlikely to reach counts for less than running out early. Both the raw and the weighted rates are shown, labeled. The overlay is independent of a planned death: the life table keeps weighting an adult's survival after the month the plan ends their life, as the planning device and the probabilistic overlay are kept apart on purpose (a documented choice, not a rule from a source).
Sources SSA Period Life Table (2026 Trustees Report edition)
US federal tax modeling
Every tax rule in Longlight is transcribed from a named official document, never paraphrased from memory, and every bracket, deduction, threshold, and table value lives in a versioned data pack whose entries are hand-verified against those documents. Each rule ships with automated tests that reproduce its source document's own worked examples. The engine models, per calendar year: ordinary brackets and the standard deduction (including the current temporary senior deduction, whose statutory expiry the projection models rather than ignores); long-term capital gain and qualified-dividend stacking, implemented as a transcription of the IRS worksheet that defines it; taxation of Social Security benefits via the provisional-income worksheet; required minimum distributions from the pack's life-expectancy table at each birth cohort's applicable age; an inherited tax-deferred or Roth account's distributions on the beneficiary's own schedule from Publication 590-B (life-expectancy payments from the Single Life Expectancy Table for an eligible designated beneficiary, the ten-year rule for any other individual, the longer of the two life expectancies when the original owner had reached the required beginning date, a Roth owner always counted as dying before it, and no early-distribution tax on what the beneficiary takes); the additional tax on early retirement-account distributions; net investment income tax; the additional Medicare tax; and payroll tax withheld from wages monthly against the annual wage base. A home sale (an event on a property account) is figured as Publication 523 lays it out: the whole balance leaves the account, selling costs come off the price, the gain is measured against the cost basis you entered, and when you assert eligibility (the ownership, residence and look-back tests are facts about your life the plan cannot derive) up to the pack's maximum for the year's filing status is excluded, a surviving spouse's sale within the pack's window of the death keeping the joint maximum; the remainder joins net long-term gain, and a loss is not deductible. Net investment income, for that tax, is the year's cash interest, modeled dividends, net rental income as Schedule E nets it (after the special allowance; a rental is read as passive, the real estate professional's exception not modeled) and Schedule D net gain (including capital-gain-treated streams and the taxable part of a home sale): Form 8960's interest, dividend, rental and disposition lines (1, 2, 4a and 5); income entered as ordinary never enters it, so a non-qualified annuity's taxable part and royalty income entered that way (Form 8960 lines 3 and 4a) are outside the net investment income tax.
Timing: the year's liability is computed when the tax year closes and paid as a start-of-January expense in the following year, a deliberate settlement lag that avoids circular tax-on-tax iteration. If paying the bill forces withdrawals, the gains those realize belong to the new year's ledger. For anyone paid a salary this means a draw every January: a paycheck is smaller than a year's tax, so the plan takes the rest from the accounts and puts the year's surplus back into savings month by month. The pages name that draw (“January tax settlement” on the withdrawals map, “pays the prior year's tax” on the cash-flow page, “Drawn for tax” in the year-by-year table) and do not count it as a withdrawal: the settlement is the month's last claim, so a January's draws are spending's up to what the month needed without the tax bill, and the settlement's beyond. The final simulated year's liability is reported as an accrued line, never silently dropped, and the estate at the horizon carries it as a liability. There is no withholding or estimated-payment modeling beyond payroll tax; filing status follows the household: one adult files single, or as head of household when chosen, with its own rate table, standard deduction and capital-gain thresholds through the last year a qualifying person lives in the home; a couple files jointly for every year in which both are alive at some point, the year of a planning death included, and single from the following year.
Account tax character: cash interest is ordinary income annually; taxable-account growth is unrealized appreciation until a sale realizes it lot by lot: every deposit and every reinvested dividend is a lot with its own cost and date, sales dispose of the oldest lots first (Publication 550's rule when shares are not identified) unless the account elects average basis for mutual fund shares, a lot held more than one year yields long-term gain and a younger one short-term gain taxed as ordinary income, gains and losses net on Schedule D with a net loss deductible only up to the annual limit the data pack carries and the rest carried forward; modeled December dividends are qualified; tax-deferred withdrawals are ordinary income, with the early-distribution additional tax before the statutory age and no exception categories modeled; Roth and HSA withdrawals are assumed qualified and tax-free; a one-time windfall event is never taxed; it is an inheritance-like arrival that reaches no return, so a taxable bonus belongs in a one-month wage stream, which bears income and payroll tax. Payroll tax is computed on gross wages including elective deferrals, as Publication 15's table states: deferrals are exempt from income-tax withholding but taxable for social security and Medicare. Your own HSA contributions are an adjustment to income (deductible whether or not you itemize, and subtracted before the Social Security benefit worksheet), while employer HSA contributions never enter income. Your own contributions are modeled as made directly, so the wages they come from still bear payroll tax; a salary-reduction contribution through an employer's cafeteria plan, which Publication 969 treats as an employer contribution exempt from employment taxes, is not distinguished; for such a contribution the model overstates payroll tax by the payroll-tax rate on that amount, and nothing else differs.
Education accounts (529 plans): a 529 account grows untaxed, and its contributions are not deducted (Publication 970, chapter 7); the contributions to date are its investment in the plan, the rest of the balance earnings. An expense or one-time expense marked as a qualified education expense is paid from the plan's 529 accounts first, in plan order, as a tax-free distribution; what they cannot cover joins the month's spending. Elementary and secondary expenses count as qualified up to the data pack's yearly limit, which the 2025 Act doubled for years after 2025, applied once per plan year as if for one beneficiary. Any other draw from a 529, for general spending through the withdrawal order or for school expenses above the limit, is a distribution the year measures against its adjusted qualified education expenses: each draw is split into a return of contributions and earnings in the account's own proportion, the earnings beyond the expenses' share of the year's distributions are other income on the return, and the additional tax applies to them at the pack's rate, with none of the publication's exceptions modeled. No tax-free assistance reduces the expenses and the education credits are not modeled, so no coordination is needed. A 529's balance at the horizon passes untaxed to a successor owner on the assumption it stays in education, and counts in the gross estate for the federal estate tax.
Equity compensation (restricted stock units): an RSU vesting income is wages in the month the shares vest, at their value, with payroll tax, as Publication 525's restricted property rule reads: the fair market value is income when the property becomes substantially vested, and the holding period begins then. Kept, the shares land in the brokerage account the income names as a lot at that value, so a later sale's gain is the growth since the vest, long-term after a year; sold at vesting, the proceeds are the month's cash. A kept vest is not cash income on the cash-flow pages and appears among the direct deposits. The payroll tax on a vest leaves the month's cash at the vest and the income tax settles the following January, both as if shares were sold to cover them; no shares are withheld at the vest. Vesting is paced monthly at a twelfth of the year's amount.
Equity compensation (employee stock purchase plans): an ESPP purchases income is what the employee pays for shares each year at the plan's discount, the shares sold as they are bought. The price paid is after-tax salary the wage stream already counts, so the household's cash gains the discount alone, and the discount is wages with payroll tax in the month of purchase, as Publication 525 reads a sale before the holding period is met: the ordinary income is the amount by which the shares' value when the option was exercised exceeded the option price, reported as wages, and the basis rises by it, so the immediate sale has no gain. The discount cannot exceed what the publication's floor on the option price allows; the floor is the data pack's. Kept, the shares land in the brokerage account the income names as a lot at their value with the price paid as their basis, the price a use of the month's cash and the discount a direct deposit, and nothing is income at the purchase. Each later sale reads the publication's holding period requirement, the later of one year after the transfer and two years after the grant, both from the data pack and both counted from the purchase month since the engine grants the option then: sold before it is met, the exercise-date spread of the shares sold is wages whatever the sale fetched and the rest is capital gain or loss by the lot's age; sold after it, the lesser of the grant-date spread and the gain is wages, the rest long-term gain, and a loss is a capital loss with no wages. Those wages join the year's return, and the payroll tax on them is a liability of the return rather than a withholding, as no employer withholds at a brokerage sale. A lookback purchase price, an offering period before the purchase, death while holding the shares, the yearly purchase limit and stock options are not modeled.
Roth conversions: a dated conversion, or the fill-to-bracket rule, moves money from a tax-deferred account into a Roth account as an account-to-account transfer. The amount is ordinary income in that year with no early-distribution tax, as the IRA publication and Form 8606 describe; no nondeductible basis is modeled, so the whole amount is taxable. A year's required minimum distribution cannot be converted and stays behind. The fill-to-bracket rule runs each December, once the year's income is known, and solves for the conversion that lifts taxable income exactly to the chosen bracket's boundary, including the Social Security worksheet's coupling, since converting also raises the taxable share of benefits. The rule measures and executes; the choice of bracket is yours. The Roth sweep on the Roth-window page is a comparison of such rules: each cell is a full run of the plan with only the fill rule changed (a bracket rate through a December, and one run with no rule), and the figures it shows (the estate after the heirs' tax, lifetime income tax, the amount converted, Medicare premiums and the highest surcharge tier met) are that run's own outputs read as they are. Nothing is projected, ranked or recommended.
Itemized deductions: each year the return takes the larger of the standard deduction and Schedule A, figured from the expenses you mark: medical expenses (with the plan's Medicare premiums) over the AGI floor, state and local taxes (the state income tax the plan figures, or its flat estimate, plus property taxes) up to the statutory limit for the year with its high-income phase-down, the interest on a mortgage marked as the home's within the acquisition-debt limit month by month, and cash gifts over the statutory floor up to the AGI limit, then the top-bracket limitation, all from the data pack as the Schedule A instructions and the 2025 statute print them. A return that keeps the standard deduction takes the non-itemizer charitable deduction. Not modeled: married-filing-separately halves, the pre-2018 mortgage limit, charitable carryforwards, noncash gifts, Marketplace premiums as medical expenses, casualty losses, and the state returns' own itemizing (the state modules keep their standard deductions even where the state requires itemizing when the federal return does). A gift marked to come from an IRA is paid as a qualified charitable distribution once the owner is 70½: excluded from income, counted toward the required distribution, capped at the yearly exclusion per person, never also deducted; every tax-deferred account is treated as an IRA for this purpose, and the one-time split-interest election and the post-70½ contribution offset are not modeled.
Marketplace coverage: when the household buys ACA coverage for some months, the enrollment premium is a monthly expense and the premium tax credit is figured at year end exactly as Form 8962 does: household income (adjusted gross income plus the untaxed part of benefits) as a percentage of the prior year's poverty line for the family size, the applicable percentage from the data pack's tax-year table (for 2026, the revenue procedure's bands slid linearly within each band; the pack also carries the IRS's printed 2025 table and the 2027 bands), applied to every plan year, as the rest of the tax law is; the annual or monthly contribution, and the lesser of the enrollment premium and the benchmark premium less that contribution. Under the 2026 table there is no credit above four times the poverty line. Below the poverty line the plan pays no credit either; the Form 8962 exceptions for a Marketplace estimate at or above the line and for lawfully present aliens are not modeled, so a very low-income year loses the credit rather than keeping it. The credit reduces the year's liability, which may turn into a refund settled the following January. The coverage is the household's: from the month of the last living adult's planning death no premium is paid and no month enters Form 8962, the same rule a Medicare premium follows; a surviving spouse keeps the coverage at the family size you entered. Not modeled: advance payments and their reconciliation, the repayment limitation, allocations between tax families, employer-coverage or Medicaid eligibility tests, dependents' income, state-specific Marketplaces, and premium changes within a year (both premiums step each January at the rate you set, default zero).
Medicare premiums: from each person's enrollment month the plan pays the Part B standard premium monthly, plus the income-related monthly adjustment (IRMAA) for Part B and, when chosen, Part D, from the tier the household's modified adjusted gross income of two years earlier falls in under that year's filing status: cliffs, exactly as SSA and CMS publish them. The standard premium, the adjustment amounts and the income thresholds are the pack year's dollars for every simulated year; premiums do not grow with your inflation assumption; a pack update carries new figures. Modified AGI is AGI plus tax-exempt interest, which the app does not model, so AGI stands. For the first two simulated years no earlier return exists, so the standard premium applies. Not modeled: the life-changing-event redetermination, the Part B deductible and cost sharing, Part D plan premiums, the hold-harmless provision, and the married-filing-separately bands.
A plan that starts after January: a tax return covers a whole calendar year, so the first year's filing also carries the months before the plan started: every income stream, benefit and contribution rule dated before the start is posted to that year's ledger for those months (its income, payroll-tax bases, deferrals and contribution-limit room), for taxes only: no balances, spending, withdrawals or events exist before the plan. The tax on those months is assumed to have been withheld at their run rate (the liability of the year they imply, prorated), and the plan settles the rest the following January. A conversion or other lump inside the plan's months is therefore taxed at the margin of a full year, Medicare's look-back and the premium tax credit read a whole year's income, and the Roth fill-to-bracket rule sees the year's real room. The Taxes page shows the assumed withholding beside the filing. Gains, dividends and withdrawals before the start are not modeled; the plan's last calendar year, when the horizon ends mid-year, is filed on its simulated months alone.
Tax law is applied as enacted for the pack's tax year, in nominal dollars, for every simulated year; brackets are not invented forward by an inflation guess. That is a conservative, honest convention (real brackets index; unknown future law is unknowable), and annual data-pack updates are the mechanism by which new law enters the app. State income tax is computed from the state's own tax-year-2025 documents for the fifty states and the District of Columbia: the ten largest (California, Texas, Florida, New York, Pennsylvania, Illinois, Ohio, Georgia, North Carolina and Michigan), the seven that levy no individual income tax (Alaska, Nevada, New Hampshire, South Dakota, Tennessee, Washington and Wyoming), each cited to its own constitution, statute, repeal notice or revenue department's page, the next four by population (New Jersey, Virginia, Arizona and Massachusetts), the six after them (Indiana, Maryland, Missouri, Wisconsin, Colorado and Minnesota), the six flat-rate states after those (Kentucky, Louisiana, Iowa, Utah, Mississippi and Idaho), and the six graduated-rate states next by population (South Carolina, Alabama, Oregon, Oklahoma, Connecticut and Arkansas), and the last twelve (Kansas, New Mexico, Nebraska, West Virginia, Hawaii, Maine, Montana, Rhode Island, Delaware, North Dakota, Vermont and the District of Columbia). Where there is an income tax the return is a resident return: federal adjusted gross income as the starting point, the state's subtractions for Social Security and retirement income (all of it in Illinois and, after 59½, in Pennsylvania; up to New York's per-person cap; Michigan's birth-year tiers and caps; Georgia's per-person exclusion by age, which counts each spouse's own interest, dividends and gains and a little earned income, a jointly held account's income shared equally), its additions (California's HSA deduction, Pennsylvania's retirement-plan deferrals), its standard deduction or exemptions, its rate schedule as printed (with New York's high-income worksheets and California's 1% behavioral health tax), and the fixed credits every filer gets (California's exemption credits; Ohio's exemption, senior citizen, retirement income and joint filing credits; Maryland's senior tax credit; Wisconsin's school property tax, married couple and itemized deduction credits; Minnesota's marriage credit from its table; Indiana's and Minnesota's 529 credits). The third batch brought the rules its booklets print: Indiana's county tax and Maryland's county and city tax on the state's taxable income, at the rate of the county the plan names (the capital region's county until it does), Anne Arundel's brackets and Frederick's banded rates included; Missouri's combined return taxed spouse by spouse on each one's share of the income, its deduction of a share of the federal income tax by Missouri income, its exemption of capital gains and of Social Security from 62, and its private pension exemption phased out by income; Colorado's return starting from the federal taxable income, with the deduction over the limit added back above the income threshold, and its Social Security and pension subtractions by age and income, spouse by spouse; Wisconsin's sliding standard deduction, its exclusion of a share of long-term gains, its retirement income subtraction at 67 that forgoes the credits (the return takes whichever taxes less) and its medical care insurance subtraction; Minnesota's standard and itemized deductions with their high-income limitation, its Social Security subtraction by the worksheet's two methods, its subtraction for persons 65 or older and its 529 credit or subtraction, whichever helps more; Maryland's phased exemptions, pension exclusion net of Social Security for pensions from employee retirement systems, two-income subtraction and the two percent additional tax on capital gains above the income threshold. The fourth batch brought its own: Kentucky's pension exclusion up to its cap for each taxpayer at any age, its one standard deduction (two for a couple with two incomes, who file the combined return), its itemized interest and gifts without a federal Schedule A, its personal credit at 65 and its family size credit from the table; Louisiana's flat rate, its retirement income exemption at 65 and its excess medical deduction; Iowa's return starting from the federal taxable income, with every retirement dollar excluded at 55, a senior's health premiums subtracted under the income limit and the low-income exemption and alternate tax of its worksheets; Utah's taxpayer tax credit in place of a deduction, its retirement, Social Security, health plan and my529 credits; Mississippi's exemptions, its retirement income exempt in total from 59½, and a combined return's columns with the deductions divided to tax least; Idaho's federal standard deduction with its own aged extra, its zero bracket, its health premium subtraction and its food tax credit. Where a state reads the federal itemized deductions or keeps a schedule of its own (Maryland, Missouri, Idaho, Mississippi, Minnesota, Kentucky, Louisiana, Alabama, Oklahoma, Arkansas, Oregon, Kansas, Nebraska, Hawaii, Maine, Delaware and the District of Columbia) they are figured without the state income tax, since that tax is what the return settles; the federal income tax Missouri, Alabama and Oregon deduct, Utah's federal deduction and the federal taxable income Iowa, Colorado, Montana, South Carolina, New Mexico and North Dakota start from are read the same way, except that North Dakota keeps the state income tax in it, as its return does, and New Mexico starts without the federal senior deduction. Left out, and named in the data pack beside each state: the other local taxes, itemized deductions in the states whose own schedule is not on file (California, New York, Georgia, Virginia, Arizona and North Carolina keep the standard deduction), the other credits, Michigan's public-employment and surviving-spouse variants, North Carolina's Bailey deduction, Georgia's dependent exemption and its disability and military routes, Pennsylvania's cost-recovery rule before 59½ and tax forgiveness, and the tax tables; every state is figured on its rate schedule, unrounded, as the federal return is. Washington levies no income tax but an excise tax on long-term capital gains, computed here: seven percent of the year's net long-term gains from securities (a home's or a rental's gain is exempt, as is everything inside a retirement account) above a standard deduction the Department of Revenue adjusts each year, and 2.9 percent more on the portion over one million dollars; the loss adjustments, the allocation of gains to Washington and the other exemptions, deductions and credits are left out, and the tax is carried as the plan's state tax, so it enters the itemized taxes line like a state income tax when the household itemizes. New Jersey's return keeps Social Security and payroll deferrals out but taxes IRA contributions and the HSA deduction when made, carries a category's loss at zero, excludes pension and retirement income by age and income band (the unused part against other income when earned income is small), deducts medical expenses over two percent of gross income and the property taxes on the home up to its cap or takes the small credit instead, and applies its exemptions and rate schedules; below its filing threshold it owes nothing. Virginia subtracts Social Security and the age deduction (in full for the oldest cohort, reduced by income for the rest), takes its standard deduction and exemptions, applies its schedule and the spouse tax adjustment, and owes nothing below its filing threshold. Arizona subtracts Social Security and a quarter of the long-term gains on holdings bought after 2011 whose purchase dates the plan knows, takes its standard deduction raised by a share of the charitable gifts and the exemption for age, and applies its flat rate. Massachusetts taxes its income classes at their rates (the short-term gains higher) after its exemptions and the payroll tax deduction, with no tax status and the limited income credit at the bottom and the surtax on income over its threshold at the top; a homeowner of sixty-five whose total income and home value sit under the limits gets the senior circuit breaker credit, the real estate taxes paid over a tenth of that income, up to the year's maximum, refunded past the tax. What each of the four leaves out is named in the data pack beside the state: dependents, the public-pension exemptions and the state basis in IRAs, itemized deductions, the rest of the credits. Contributions to a 529 account count where the state's booklet allows a deduction or a credit, thirty-six states in all: twenty-eight subtract them from income, Massachusetts, New Jersey, Oklahoma, Pennsylvania and Virginia deduct them after it, and Indiana, Minnesota, Oregon and Utah give a credit, each up to its cap (a cap per beneficiary counts each education account as one; Pennsylvania's is the federal gift exclusion per account per taxpayer; Michigan and Minnesota net the year's withdrawals; New Jersey's, Delaware's and Maine's stop above their income limits; New Mexico's, South Carolina's and West Virginia's are uncapped; Virginia's lifts at seventy). The 2025 state rules stand beside the 2026 federal ones until the next data pack. With no state chosen, the plan applies a flat estimate instead: a single rate you choose, applied to the income left after the standard and senior deductions (never the itemized ones, which the state tax would feed), seeded by the picker from the Tax Foundation's 2025 table (a state's top marginal or single rate, zero where there is no income tax): a reference, not law, and deliberately on the high side for graduated states; the estimate uses whatever rate you accept or type.
The fifth and sixth batches of states carry their own rules too. South Carolina's aged deduction and uncapped 529 subtraction; Alabama's federal income tax deduction and itemized schedule; Oregon's federal tax subtraction, retirement income credit, aged medical subtraction and 529 credit; Oklahoma's itemized schedule; Connecticut's tax recapture, personal tax credit, phase-out add-back and Social Security worksheet; Arkansas's elective separate columns and its low income tax table, a printed table taken as printed, and low income credit; Kansas's itemized schedule; New Mexico's low and middle income exemption, aged medical exemption and uncapped 529 deduction; Nebraska's other tax and credits; West Virginia's Social Security fraction and earned income exclusion; Hawaii's capital gains alternative tax; Maine's property tax based itemized deduction and income limited 529 deduction; Montana's long-term gains rate table and aged deduction; Rhode Island's Social Security birth cutoff; Delaware's aged low income exclusion and income limited 529 deduction; North Dakota's long-term gain and qualified dividend subtractions; Vermont's minimum tax, other tax and medical subtraction; and the District's own return. Indiana's county tax defaults to Marion County and Maryland's local tax to Montgomery County until the plan names its county.
Sources CMS CY2026 Part B notice (90 FR 52063) and SSA Medicare Premiums: Rules for Higher-Income Beneficiaries: Medicare premiums and IRMAA · 2025 Instructions for Form 8962, Rev. Proc. 2025-25 and 2026-26, HHS poverty guidelines 2025–2026: the premium tax credit · Tax Foundation, State Individual Income Tax Rates and Brackets 2025: the state picker's suggestions and the flat estimate (reference, not law) · California 2025 Form 540 booklet and tax rate schedules; New York IT-201-I (2025) and Form IT-201; 2025 Form IL-1040 instructions; 2025 North Carolina D-401; Ohio 2025 IT 1040 instructions; 2025 MI-1040 instruction book; the Pennsylvania Personal Income Tax Guide and the Department's rate page; the Texas Constitution Art. VIII §24-a and the Florida Constitution Art. VII §5: the state returns (ADR-0130); Washington RCW 82.87 and the Department of Revenue's capital gains tax page, the South Dakota, Nevada and Tennessee revenue departments' pages, the Tennessee Constitution Article II §28, New Hampshire TIR 2025-001, the Wyoming tax capacity brief and Alaska's HB 152 fiscal note: the seven states without an income tax; the 2025 NJ-1040, Virginia Form 760, Arizona Form 140 and Massachusetts Form 1 instructions; the 2025 Indiana IT-40 booklet, return and Schedules CT-40 and IN-529, the Maryland resident booklet, the Missouri MO-1040 instructions, the Wisconsin Form 1, its instructions and the Schedule SB, Schedule WD and Form 1-ES instructions, Colorado Book 104 and the Income Tax Topics publication on Social Security, pensions and annuities, and the Minnesota Form M1 instructions with Schedules M1M, M1MA, M1R, M1529 and M1SA: the third batch of states (ADR-0170); the 2025 Kentucky 740 packet instructions, Form 740, Schedule A and Schedule ITC, the Louisiana IT-540 instructions, the Iowa IA 1040 expanded instructions with the income tax reduction and alternate tax worksheets, the Utah TC-40 instructions with my529's statement of its credit cap, the Mississippi Form 80-100 instructions and the Idaho Form 40 and 39R instructions: the fourth batch of states (ADR-0172); the 2025 Alabama Form 40 booklet and return, the Oklahoma 511 packet, the South Carolina SC1040 packet and SC1040TT tables, the Connecticut CT-1040 instructions, the Arkansas AR1000F instructions, indexed brackets, AR1000ADJ and AR1000D, and Oregon Publication OR-17, Schedule OR-A and Form OR-40: the fifth batch (ADR-0173); the Kansas K-40 instructions, the New Mexico PIT-1 packet, rates and table, the Nebraska booklet, calculation schedule and tables, the West Virginia IT-140 booklet, the Hawaii N-11 instructions, the Maine 1040ME instructions, Schedules 1S and 2, tables and rate schedules, the Montana Form 2 instructions, form and tables, the Rhode Island RI-1040 instructions, rate schedule and worksheets, the Delaware PIT-RES instructions, form and table, the North Dakota booklet and tables, the Vermont booklet and rate schedules, and the DC D-40 booklet: the sixth batch (ADR-0174); the 2025 Georgia IT-511 booklet: Georgia's return (ADR-0130) · IRS Publication 15 (2026): payroll tax on elective deferrals; IRS Publication 969 (2025): the HSA deduction · IRS Publication 590-A (2025) and Form 8606 instructions (2025): Roth conversions · IRS Publication 970 (2025), chapter 7: qualified tuition programs (529 plans); P.L. 119-21 §70413(b): the elementary and secondary expense limit · IRS Publication 525 (2025): restricted property (restricted stock units at vesting) and statutory stock options (the employee stock purchase plan's discount as wages on a sale at purchase, the option-price floor, the holding period requirement and the ordinary income of a disqualifying and a qualifying disposition); Instructions for Forms 3921 and 3922 (Rev. April 2025): the figures a purchase-plan lot carries · Rev. Proc. 2025-32 (tax-year inflation adjustments) · Form 1040 instructions: Qualified Dividends and Capital Gain Tax Worksheet · Schedule 1-A (Form 1040) and Public Law 119-21 (senior deduction) · 2025 Instructions for Schedule A (Form 1040); IRS Publications 526, 936 and 502 (2025): itemized deductions · 2025 Schedule SE and its instructions: self-employment tax; 2025 Schedule E and its instructions, IRS Publications 527, 946, 925 and 544 (2025): rental income, depreciation, the passive-loss allowance, the rental sale · Form 6251 (2025) and its instructions: the alternative minimum tax · Pub 915 and its Worksheet 1 (Social Security benefit taxation) · Pub 590-B and IRB 2024-33 final regulations (RMD rules, tables, applicable ages) · Tax Topic 558 (early distributions) · Form 8960 instructions (net investment income tax) · IRS Publication 523 (2025): sale of a home · IRS Publication 550: cost basis and holding period · Instructions for Schedule D and Form 8949: netting, loss limit, carryover · SSA 2026 COLA Fact Sheet (payroll tax rates and wage base)
Contribution limits
Annual contribution limits are enforced from the data pack, transcribed from the IRS notice that sets them. Workplace elective deferrals share one per-person pool across pre-tax and designated-Roth contributions, with the age-based catch-up and the temporary higher catch-up window at the ages the notice specifies (both ages live in the pack, not in code); IRA contributions have their own per-person pool and catch-up, and never exceed the owner's taxable compensation for the year: wages net of pre-tax workplace deferrals, as Publication 590-A defines it; pensions, benefits and investment income do not count, so a Roth IRA rule stops posting when the paychecks stop. On a joint return the spouse with the smaller compensation contributes against the couple's combined pay less the other spouse's IRA contributions (the spousal IRA limit). Clamping happens payroll-style at posting time against the calendar year's remaining room (resetting each January), the employer match is computed on the amount actually posted, and any excess you scheduled simply stays in cash as surplus; conservation holds either way. A percent-of-income rule into a pre-tax or designated-Roth workplace account draws from a wage stream only: from a pension or rent the deferral would be reported but never excluded from income, so the plan refuses it as not yet modeled rather than tax the money twice.
Not yet enforced (each is named in the engineering record with its blocker): the overall annual-additions limit and the compensation cap on plan-counted pay; IRA deduction and Roth-IRA income phase-outs (a fixed contribution into a tax-deferred account, a deductible traditional-IRA contribution, is refused under tax modeling until the deduction and its phase-outs are transcribed); the mandatory-Roth catch-up designation above the wage threshold; and SIMPLE and starter plans.
A self-employed person's own SEP-IRA or solo 401(k) follows IRS Publication 560's worksheets for the self-employed: once a year, in December, the plan's contribution rate is reduced to the rate divided by one plus itself and applied to that year's net earnings after the deductible half of the self-employment tax, capped by the compensation limit times the plan rate and by the yearly dollar limit; a solo 401(k)'s elective deferral counts against the same yearly limit as a workplace deferral, with its catch-up, and is capped by the net earnings left after the employer part. The whole contribution leaves that month's cash into the account and is deducted on Schedule 1 line 16, so it lowers the adjusted gross income every later rule reads. The plan's rate may not exceed the pack's 25%. Not modeled: a Roth solo 401(k), employees of the business, SIMPLE plans and the carryover of an excess contribution.
HSA contributions follow IRS Publication 969: the yearly limit depends on whether the high-deductible plan covers you alone or your family, the additional contribution applies from the year you turn 55, and both are pro-rated by the months your rule runs (the months you are eligible) exactly as Publication 969's examples of the Form 8889 worksheet divides by twelve. Every HSA a person holds shares one limit; in a couple, family coverage on either spouse puts both on a single shared family limit, and each spouse's additional contribution can only go into their own HSA. Employer contributions count against the same limit. A Medicare enrollment you enter for a person ends their contributions by itself: nothing posts from the enrollment month and the year's limit counts only the months before it, as the publication's "Enrolled in Medicare" example; in a couple, the months after one spouse's enrollment count at the other spouse's own coverage limit, because the shared family limit applies only while both are eligible. Not modeled: the last-month rule (which can only raise the limit and brings a testing period), Archer MSA offsets, one-time IRA-to-HSA funding distributions, excess-contribution penalties, and mid-year coverage changes.
Sources Notice 2025-67 (retirement plan limitations) · IRS Publication 590-A (2025): compensation and the spousal IRA limit · IRS Publication 969 (2025): HSA contribution rules · Rev. Proc. 2025-19: 2026 HSA and HDHP dollar limits
Social Security
You enter each worker's primary insurance amount (PIA) in plan-start dollars and a claiming month. The engine applies the official reduction and delayed-credit factors between the earliest claiming age and the maximum crediting age (transcribed from the SSA actuarial tables and the Code of Federal Regulations formulas, including the CFR's own prescribed rounding steps) and pays the benefit monthly from the claim month. A claim past the maximum crediting age earns no further credit and is paid from its own month at that age's amount (the claim month is never moved; no retroactive entitlement is modeled), and a claim at or after a planning death pays nothing, since entitlement ends with the month before death. Cost-of-living adjustments are modeled as your plan's inflation assumption (or the replayed CPI in historical mode), applied in January steps to the PIA before claiming and to the benefit after (a documented proxy, since future COLAs are unknowable) and never negative: when the mode's price level falls, the benefit holds, and it rises again only once the level passes its earlier high, the rule the law states (a COLA measures from the highest index yet recorded, CRS 94-803). Inflation-indexed spending keeps following the price level either way.
Couples get the regulation's spousal and survivor treatment. A spouse whose own primary insurance amount is below half the other's receives, on top of their own benefit, the excess of that half over their own amount, reduced by the spousal factors for the months their spousal entitlement precedes their full retirement age: the dual-entitlement composition of 20 CFR §404.411 and the SSA's operating manual (POMS RS 00615.020, Method C): an early claim reduces the excess, not the whole spousal amount, the reduced amount rounds down to the dime, and delayed credits earned on the own benefit come out of the excess (the combined amount is figured without them, then the credited own benefit is subtracted, POMS RS 00615.694). On a death, the survivor rule: the deceased's benefit including delayed credits, reduced for the months the survivor is short of the widow's or widower's own full retirement age, across the span from age 60 to that age (the regulation keeps a separate birth-year table for survivors, two years behind the retirement one, 20 CFR §404.409), then, when the deceased had claimed early, capped at the larger of the deceased's reduced benefit and 82½ percent of their primary insurance amount (20 CFR §404.338: a ceiling on the reduced amount, not a base reduced again), and offset against the survivor's own reduced benefit (Method B: each benefit reduced on its own, the larger paid). The survivor benefit is paid from the later of the death month and the survivor's 60th-birthday month (the plan never defers it), so the reduction is fixed by that month (20 CFR §404.337: entitlement begins with the first month the application covers, and the plan treats it as filed at once; the survivor's own claim month is the one lever). Both rules read one Social Security entry per adult: a spouse with no record of their own carries an entry at zero, which the plan creates for a partner on its own, and a couple left with a single entry gets neither rule; the editor names the adult it is waiting on. Benefit taxation follows the worksheet described in the tax section. Not modeled: the family maximum, benefits on an ex-spouse's record, child-in-care months, disability and disabled-widow(er) rules, the restricted application (a spousal claim filed ahead of the own benefit), the regulation's later (§404.412, not on file) adjustment of the reduction at full retirement age, remarriage, and birth cohorts before 1943 (the pack's factor tables begin there; an earlier cohort's benefit is refused, not paid).
If you do not have your statement's number, the plan can estimate the PIA from a covered-earnings record the way the Social Security Administration computes it: each year's earnings are capped at that year's contribution and benefit base, indexed to the national average wage of the year you turn 60 (later years unindexed), the highest 35 years are averaged over 420 months and rounded down to the dollar, and the formula's three factors and the bend points of your first eligibility year apply, truncated to the dime, with the published cost-of-living adjustments from that year forward. Every base, wage index, bend point and adjustment comes from the data pack. For a worker whose age-60 year has no wage index on file yet, the record is indexed to the latest wage index on file, priced with the bend points of the latest eligibility year that index reaches, and stated in today's dollars (the data pack's dollars year, not the plan's); years not yet worked are assumed at current pay, read in the estimate's own dollars year whichever year the plan starts (a plan states its pay in its starting year's dollars; the estimate brings it back at the plan's inflation). It is an estimate you choose to adopt; the number the engine pays is always the one on the plan. The estimate is stated in the data pack's dollars year; a plan's PIA is stated in its starting year's dollars, so adopting brings the estimate to that year at the plan's inflation assumption, the engine's own index, and a plan pays the same benefit whichever year it starts. Without an entered record the editors' figure rests on the plan's wage years alone (the years ahead from the plan's start) and is labelled so; adopting waits for a record, so the onboarding's estimate, priced from the year work began, is never offered to be replaced by that shorter one.
Sources SSA OCACT early/delayed retirement factor tables · 20 CFR §404.410 and §§404.311–.407 (reduction formulas, spousal and survivor rules, via the official CFR) · 20 CFR §404.411 and POMS RS 00615.020, .201 and .694 (dual entitlement: the spousal excess, its reduction and rounding, delayed credits) · 20 CFR §404.409 (the two full-retirement-age tables: retirement and spousal, and widow's or widower's: via the official CFR) · SSA OCACT benefit calculation examples (2026) and the national average wage index series · CRS R46658, Social Security: Benefit Calculation (AIME rules; base, bend-point and wage-index history) · SSA Federal Register cost-of-living and other determinations notices for 2025 and 2026 · CRS 94-803, Social Security: Cost-of-Living Adjustments (COLA history)
Pensions and annuities
A pension or annuity is an income stream with a start month, an amount, a tax treatment you choose (ordinary income without payroll tax by default), and either a fixed yearly increase or inflation indexing. For couples it can carry a survivor share: after the owner's planning death the stream continues to the surviving spouse at that share of what the owner would have received, on the same growth schedule, until the survivor's own planning death or the stream's end. A share of one is a joint-life payout; no share ends the stream with its owner, the same convention Social Security benefits follow.
Not modeled: annuity exclusion ratios (the return-of-basis part of a non-qualified annuity payment is not carved out; enter the taxable portion, or mark a non-taxable payout tax-free), pension lump-sum options, cost-of-living caps and tiers, and pre-retirement survivor benefits that differ from the in-pay share; a non-qualified annuity's taxable part and royalty income entered as ordinary (Form 8960 lines 3 and 4a) are outside the net investment income tax, which counts interest, dividends, net rental income and capital gains.
Spending, withdrawal order, and strategies
Spending is streams (recurring, with growth or inflation indexing), dated one-time events, and debt service. A stream's amount is stated in the dollars of its first active year inside the plan (a stream that began before the plan is stated in the plan's first-year dollars) unless it is marked as stated in the plan's first year, in which case the engine grows it from then; the retirement-spending split states the retired amount that way, as a share of today's spending in today's dollars, so it keeps pace with the working years' spending rather than restarting at a nominal figure. An expense stream is a household cost: it runs from its start to its own end date or the horizon whatever happens to the people (a planning death ends that person's income and benefits, never an expense, even after both adults' planning deaths), so a cost that should stop with someone needs its own end date. A stream that starts after the plan's last month never pays and is not an error: the plan runs, and the editors say so. When a month's spending exceeds its income, the gap is withdrawn following your ordered account list (cash and taxable first, then tax-deferred, then Roth order by default, fully rearrangeable), sized to that month's shortfall only. Required minimum distributions are enforced in December: whatever the year's ordinary withdrawals have not already covered is force-distributed, first toward December's spending, the excess deposited to that same surplus account (in a taxable account it becomes cost basis), never back into the retirement account it left.
The optional percentage-of-portfolio strategy spends a fixed fraction of the drawdown portfolio's prior-December balance each year, paid monthly in twelfths, on top of any itemized streams. It is deliberately not inflation-indexed (percent-of-balance self-adjusts by construction), and in Monte Carlo and historical modes each path uses its own balances, so sequence-of-returns effects on spending emerge naturally. Milestones (portfolio targets and markers) are computed by the engine from the same ledgers the charts read; a portfolio target is an amount in the plan's first-year dollars, grown by the path's price level to the year it is measured in, so a million is a million of today's money whenever it is reached.
The optional guardrail rule is the alternative to the percentage strategy: each January the drawdown portfolio's prior-December value is read against its running peak (in nominal dollars), and when a reading falls below the peak by more than the trigger, every expense stream is paid at one minus the cut for the calendar year; one-time events and debt service are never trimmed. The trim stays in force until a reading recovers to within the restore distance of the peak, which must be smaller than the trigger, so the rule has hysteresis rather than a threshold it could flap around. Each simulated path reads its own balances, so the years the rule engages differ from future to future; the fixed path's guardrail years are listed beside the withdrawal map, and every month's multiplier is recorded in the ledger. This is a product rule, stated in full here, not a transcription of any published method.
Two published rules are offered beside it, each a layer on top of the itemized streams like the percentage strategy, each from the month you choose (the month after the last paycheck by default). The variable percentage withdrawal (the Bogleheads VPW method, from the author's own worksheet on file) reads, each January, the VPW Table's percentage for the younger living adult's age attained that year and the plan's stock share (never above the table's 10 percent cap) and spends that share of the drawdown portfolio's prior-December value in twelfths. The table prints 30 to 90 percent stocks; every other share is priced by the table's own construction, the level withdrawal that spreads the portfolio to age 100 at the worksheet's fixed growth trends of 5.0 percent for stocks and 1.9 percent for bonds, blended by the share and rounded to the tenth of a percent the table prints, a construction the data pack's load gate proves against every printed cell. An age below the table's first row is refused. The Guyton-Klinger decision rules (Guyton and Klinger, Journal of Financial Planning, March 2006, with Klinger's 2007 restatement, both on file) set the first year's withdrawal at the initial rate times that reading and, each January after, raise it by the path's own prior-year inflation unless the drawdown portfolio's total return over that year was negative and the raised amount's rate would exceed the initial rate (the modified withdrawal rule, with no make-up); then the capital preservation rule cuts the amount 10 percent when its rate has risen more than 20 percent above the initial rate, except in the plan's final 15 years, and the prosperity rule raises it 10 percent when the rate has fallen more than 20 percent below. The paper's inflation-rule cap is not applied, as the paper itself drops it once the capital preservation rule is in force; its portfolio management rule (which asset class funds the withdrawal) is not modeled, because withdrawals here follow the account order and an allocated account sells at its target weights. A deflation year lowers the amount as printed. Each simulated path applies the rules to its own balances, inflation and returns; the fixed path's years are listed beside the withdrawal map with each year's rate, amount and rule action, all read from the ledger.
Long-term care is a spending-phase template like the others: a stream that starts in an adult's birthday month at the age you choose, runs for the years you choose and rises with inflation, with the yearly cost yours to set in today's dollars (the template and the care page state the plan's first year, and the plan grows the figure with inflation to the year care starts; a care stream whose editor states no year is priced in the dollars of the year it starts, and the care page reads it as it is); it opens at the CareScout Cost of Care Survey's annual median for the care setting you pick (a nursing home's semi-private room by default), in the plan's state where the survey prints one and nationally otherwise, a suggestion from a filed source that the engine itself never reads. The long-term care page runs the plan without any care stream and with one built from the age, years and cost you set, and reports the chance of success, the fixed path's estate and first shortfall for each, the care demanded of the fixed path (the difference of the two runs' spending, in which a month that runs short keeps its full amount and the unpaid part is a shortfall) beside how much of it the accounts paid, and how many years of care the fixed path absorbs before it runs short: a comparison, not a forecast that care will be needed. Under an active guardrail a cut engaged on one side scales every other stream too, so the change is then in the spending asked, not the care alone.
Sources Bogleheads wiki, Variable percentage withdrawal, and the VPW Table construction worksheet (v2.9): the VPW method and its table · Guyton and Klinger, Decision Rules and Maximum Initial Withdrawal Rates (Journal of Financial Planning, March 2006), with Klinger's 2007 restatement: the Guyton-Klinger rules · CareScout Cost of Care Survey 2025 and its methodology: the care cost medians the long-term care study seeds
The estate at the horizon
The estate at the horizon is what the plan leaves at its last month: the same balances and debts the charts show, less the household's own income tax for the final simulated year, which has no following January to settle in and is carried as a liability of the estate (a fill-to-bracket conversion in the plan's final December is credited to the Roth and charged its tax in the same figure), sorted by how the tax law treats each on inheritance. Tax-deferred balances are income to the beneficiaries when drawn (Publication 590-B), so they are shown net of the heirs' income tax at the rate the plan assumes; the character is the law's, the rate is yours, because the heirs' bracket and the years they spread distributions over (the publication's 10-year rule for designated beneficiaries who are not eligible for life-expectancy payments) are theirs, not the plan's, and the tax is figured as if paid at the horizon, with no discount for the years the heirs may spread it over. A health savings account left to anyone but a spouse stops being one, and its fair market value becomes taxable to the beneficiary in the year of death (Publication 969), so it is taxed like a tax-deferred balance. Roth balances pass untaxed on the app's standing assumption of qualified distributions. Taxable accounts and other assets pass at market value because inherited property takes the fair market value at the date of death as its basis (Publication 551): the unrealized gain the lot ledgers carry at the horizon is never taxed, and the page names it. The view values what passes beyond the household; spousal rollovers and a spouse's succession to a health savings account happen inside it.
The federal estate tax is figured on that estate under Form 706, Part II, when the plan models taxes. The gross estate is every account and other asset at its value at the horizon (the instructions' gross estate includes all property in which the decedent had an interest, retirement accounts among it); the debts outstanding and the final year's accrued income tax come off it as the deductions of Schedule K, and the remainder is the taxable estate. The tentative tax on it follows Table A, the unified rate schedule, and the applicable credit, Table A's tax on the applicable exclusion amount, comes off it, so only an estate above the exclusion owes anything, at the schedule's top rate on the excess. The basic exclusion amount is the data pack's figure for its tax year (Revenue Procedure 2025-32 under the 2025 Act), held fixed in nominal dollars for the plan's later years as the brackets are, although the law indexes it for inflation after 2026; read in today's dollars, the tax is deflated with the rest. A married couple's estate is the survivor's: the first spouse's estate passes to the survivor under the marital deduction (Schedule M), and the survivor's applicable exclusion carries the deceased spouse's unused exclusion, the whole basic exclusion amount, with the portability election assumed (Part VI). No lifetime gift, no state death tax deduction and no other credit enters the computation. The page shows the tax, what passes after it and the lines behind it; a plan that models no taxes states its estate before any estate tax.
Across the simulated futures, each path's terminal net worth is reduced by that path's own accrued final-year tax, by its federal estate tax under the same exclusion, and by the heirs' tax on its tax-deferred and HSA balances, and the after-tax estate is reported at the same percentiles as the fan; the estate tax is reported the same way, with the share of futures that owe any. Not modeled: state estate and inheritance taxes and the federal deduction for them, lifetime gifts and the gift tax, the generation-skipping transfer tax, charitable and administration deductions, an unused exclusion from a spouse who died before the plan, the income-in-respect-of-a-decedent deduction, alternate and special-use valuation, the appreciated-property exception for gifts made to the decedent within a year of death, community-property basis rules, probate and selling costs, trusts and charitable beneficiaries, the five-year clock for a Roth's beneficiaries, and the reduction of an inherited HSA's taxable value by the decedent's medical expenses paid within a year.
Sources IRS Publication 551 (12-2025): basis of inherited property · IRS Publication 590-B (2025): beneficiaries of traditional and Roth IRAs · IRS Publication 969 (2025): death of the HSA holder · IRS Instructions for Form 706 (Rev. July 2026): Part II tax computation, Table A, the applicable credit, portability of the deceased spousal unused exclusion · IRS Revenue Procedure 2025-32: the 2026 basic exclusion amount (section 2.14)
Data sources and updates
Every number the engine uses comes from a versioned data pack bundled with the app: tax brackets and deductions, contribution limits, RMD tables and applicable ages, Social Security factors, the historical market and inflation series, and the life table. Each pack value is transcribed from an authoritative document (IRS revenue procedures, notices, publications, and form instructions; the statute itself where it is the clearest source; SSA actuarial tables and the CFR; the Shiller dataset) and hand-verified against that document before release. An automated audit run on every change confirms each pack value still appears in its cited source, and a second audit confirms no tax number is hard-coded anywhere in the engine.
Packs are versioned by tax year and updated with app releases: a new tax year, a new Social Security or life-table edition, or a refreshed market series arrives as an ordinary App Store update, never through a download of the app's own. One value is currently tracked as provisional: one birth cohort's RMD applicable age rests on proposed regulations and is flagged in the pack until the IRS finalizes it.
Sources docs/sources/SOURCES.md: the full manifest with editions, dates, and per-rule usage
Precision and rounding
The engine computes in full floating-point precision and never rounds internally; at household magnitudes the accumulated error over a lifetime of monthly steps is far below a cent. It rounds only where a source prescribes a step as part of the rule, and then exactly that step: the Social Security Administration's (a benefit reduction rounds up to the next dime, a reduced spousal amount rounds down to the dime, an estimated primary insurance amount and each cost-of-living adjustment truncate to the dime, the estimate's wage-indexed earnings and their total round to the cent, the averaged indexed earnings round down to the dollar, and bend points derived for an eligibility year the pack does not print round to the dollar) and Form 8962's (the applicable figure to a hundredth of a percent, household income as a percentage of the poverty line with the decimals dropped, the annual and monthly contribution amounts to the whole dollar). One prescribed step is deliberately not taken: the law rounds each monthly Social Security payment down to the whole dollar (42 U.S.C. §415(g), as CRS R46658 states it), and the engine pays the benefit to the dime, a stated simplification worth under a dollar a month per benefit. The capital-gains worksheet, the benefit-taxation worksheet and every other tax line are computed unrounded, carrying cents; the whole-dollar rounding the forms allow is not applied, so a line can differ from a form filled in by hand by less than a dollar. Each prescribed step is exercised by its rule's worked-example tests.
Displays round to whole dollars (banker's rounding at the presentation boundary only); percentages show integer precision in summaries and one decimal in detail views. JSON export carries full precision: exporting a plan, importing it, and re-running produces bit-identical results: an automated invariant.
What Longlight does not model
Honesty about scope is part of the methodology. Not modeled in this version; taxes: the state credits, subtractions and local income taxes each state's block lists as left out (every state and the District of Columbia have their own return on file; Indiana's and Maryland's local taxes are computed); tax credits other than the premium tax credit; the minimum tax credit a year's alternative minimum tax earns against a later year (the tax itself is figured on Form 6251 every year); tax-exempt (municipal) interest (the Social Security benefit worksheet, the Medicare surcharge look-back and the premium tax credit all count it; a tax-free stream reaches none of them); the blindness addition to the standard deduction (only the aged addition is counted); married filing separately (two returns with rules of their own) and the qualifying-surviving-spouse filing status for the two years after a spouse's death (a couple files single from the year after a planning death); the joint life and last survivor table for an owner whose sole-beneficiary spouse is more than ten years younger (Publication 590-B's Table II; every owner's required distribution uses the Uniform Lifetime Table, Table III, whatever the spouse's age); specific-share identification chosen lot by lot (highest cost first), wash sales, and the halved loss limit of separate returns; early-distribution exception categories; a self-employment loss, the optional methods of Schedule SE, the qualified business income deduction and the self-employed health insurance deduction (self-employment income itself is modeled: Schedule SE per person on 92.35% of the net profit, the social security part above the wages already taxed, half deductible; a SEP-IRA or solo 401(k) is a contribution rule of its own); a rental's personal use, real estate professional status, the at-risk rules, improvements after purchase and personal property in the unit, a rental loan's points, origination fees and original issue discount, and a refinance's share that is not the rental's (a rental is modeled: Schedule E with the vacancy share, the expenses, the interest of a loan secured by the property, straight-line depreciation of the building over 27.5 years with the mid-month convention, the special allowance for actively managed rentals phased out over the pack's band of modified AGI, the loss carried forward and released at the sale, the sale's unrecaptured section 1250 gain taxed at up to 25% through the Schedule D Tax Worksheet); a taxable windfall (a windfall event is never taxed; a taxable bonus is a one-month wage stream); withholding and estimated payments during the year (beyond the withholding assumed for the months before a mid-year plan start); future bracket indexing (current-law dollars are held fixed, refreshed by pack updates); a non-qualified annuity's taxable part and royalty income entered as ordinary (Form 8960 lines 3 and 4a) are outside the net investment income tax, which counts interest, dividends, net rental income and capital gains.
Accounts and rules: the overall annual-additions limit, the plan-compensation cap outside the self-employed plan's worksheet, IRA and Roth-IRA income phase-outs, the mandatory-Roth catch-up designation, SIMPLE and starter plans, and the HSA last-month rule; for a 529 account, the state deduction or credit for contributions beyond the thirty-six states whose booklets carry one (California allows none, North Carolina's is repealed, Illinois' and Vermont's live on schedules not on file) and the carryforward of contributions above a cap, a rollover to a Roth IRA or another 529, student loan repayments and apprenticeship costs as qualified expenses, the exceptions to the additional tax (a scholarship, death or disability), coordination with the education credits and tax-free assistance, the per-beneficiary application of the elementary and secondary limit (applied once per plan year), and the statutory exclusion of a 529 from the gross estate (counted at value until the statute is on file); for an inherited account, a surviving spouse's yearly recalculation of the life expectancy (a spouse who treats the account as their own leaves it unmarked), an eligible beneficiary's election of the ten-year rule, a trust or estate as beneficiary (the five-year rule), the excise tax on a missed distribution, and an inheritance that arrives during the plan; equity compensation beyond restricted stock units and purchase-plan shares: a purchase plan's lookback price and offering period (the option is granted in the purchase month), the yearly purchase limit and the compensation on death while holding the shares, incentive and nonstatutory stock options (a wage stream for the bargain element in the year of exercise stands in), the section 83(b) election, dividends on unvested restricted stock, and a vest's withholding (the payroll tax and the income tax are paid from the household's cash, as if shares were sold to cover them); an employer contribution that is not a match on the employee's own deferral (a flat share of pay); buying an annuity inside the plan (the payout is an income stream; the premium is a one-time expense you enter) and buying or renting the next home after a sale (the proceeds land in an account; the next home or the rent is entered by hand); annuity exclusion ratios and pension lump-sum options; the five-year clock and nondeductible basis on Roth conversions (a conversion is modeled as fully taxable ordinary income) and conversions straight from employer plans; the five-year clock for a Roth's beneficiaries; deferring a first RMD to the following spring (modeled as taken in the attainment year); unmarried couples filing separately while planning jointly.
Markets and life: normal Monte Carlo draws are independent monthly normals, with no fat tails, regimes, or predictability (historical blocks and replay are the complements); under normal draws inflation varies only as the yearly volatility you set, independently of returns; asset classes without a mapped series compound deterministically inside replays and blocks; couples' mortality is treated as independent; a planning death is modeled as a spousal rollover: the deceased's accounts pass to the surviving adult at the death month, the early-withdrawal penalty keys on the survivor's age from then and required distributions from the January after (the year of death keeps the deceased owner's own requirement), and with no living owner neither is enforced, never as an inherited account on a beneficiary's own schedule; long-term care insurance and Medicaid; state estate and inheritance taxes (and the federal deduction for them), lifetime gifts and the gift tax, the generation-skipping transfer tax, and the years heirs may spread inherited distributions over (the heirs' tax is stated undiscounted); a Social Security amount re-figured from a shorter or longer working life (the amount entered is what is paid, whatever month the paychecks stop; the retirement-date search holds it as entered and says so); no earnings test on benefits claimed while working; the whole-dollar rounding of each monthly Social Security payment (benefits are paid to the dime); choosing a later survivor claim, and switching between survivor and own benefits on a date of your own (the survivor benefit starts at the later of the death month and age 60 and the survivor's own claim month is the one lever); no spending-model behavioral feedbacks beyond the strategies described above. When any of these would change a decision you are weighing, that is precisely when to involve a professional.
Privacy and your data
Longlight runs entirely on your devices. There are no accounts, no analytics, no third-party SDKs, and no network calls of the app's own; an automated audit run on every change confirms that no networking code exists in it at all. iCloud sync is off by default; when you turn it on, plans sync through your personal iCloud with financial values stored in encrypted fields. Full-fidelity JSON export means your data is never locked in: the exported file, plus this document, is enough to reconstruct every result.
Disclaimer
Longlight is an educational and informational tool. It is not financial, investment, tax, or legal advice, and using it does not create an advisory or fiduciary relationship with anyone. No output of this app is a recommendation to buy, sell, or hold any investment, to claim a benefit at a particular time, or to take any other financial action.
Everything Longlight shows is a hypothetical projection built from the numbers and assumptions you enter. Projections are not predictions and not guarantees. Markets, tax law, benefit rules, and your own life will differ from any model, often substantially. Historical results do not guarantee future outcomes.
The tax and benefit modeling is a simplification of current law, applied as enacted for the data pack's tax year. Real tax outcomes depend on details the model does not capture. The methodology document describes exactly what is modeled, what is assumed, and what is left out; read it before relying on any number.
Before acting on anything this app helped you think about, verify the numbers independently and consider talking to a qualified professional: a fee-only fiduciary advisor, a CPA, or both.
Your plan data stays on your device (and in your personal iCloud, only if you turn syncing on). Longlight has no accounts, no analytics, and no servers that see your numbers.