Calculation catalog › Optimizer and comparisons

SWR rule result ending after tax estate

After-tax estate left by a displayed safe-withdrawal rule at the end of the plan.

Field: endingAfterTaxEstate Unit: US dollars Basis: nominal dollars Computed by: Engine Status: Complete chain

Appears in: solver-page (withdrawal rule ending after-tax estate); solver-page (SWR rule rows ending after-tax estate (deflated for display))

Calculation records

  • Swr rule ending after tax estate Composition record, justified by derivation

    Purpose: Republish the rule run's already composed after-tax estate.

    Statement: decisions/swrComparator.ts#compareSwrRules republishes the rule run's nominal ProjectionSummary.endingAfterTaxEstate as that rule's ending after-tax estate, without further discounting or recomputation.

    Formula: SwrRuleResult.endingAfterTaxEstate = summary.endingAfterTaxEstate

    • summary.endingAfterTaxEstate: Rule-run after-tax estate from the upstream summary (unit: nominal USD) (domain: finite)
    • summary.endingEstateHeirTax: Heir-tax discount, present only as a discriminator (unit: nominal USD) (domain: nonnegative)

    Timing: one completed rule run

    Rounding: none; copies the supplied summary value

    Limits:

    • Estate tax discounting belongs to the upstream summary and must not be applied twice; publishing ending net worth instead is a different quantity. The worksheet's rule-run ledger is supplied as a ProjectionResult literal at the simulate seam, so the summary composition and the comparator's publication are both the real functions while the ledger run itself is not exercised here.

    Provenance: derived by codex, implemented by claude.

    Independent review: cursor

    Gates (6 of 6 pass): fixture registers a test: pass; pins resolve: pass; families exist: pass; worksheet exists: pass; mutation receipt exists: pass; provenance independent: pass

    Worksheet: swr-rule-ending-after-tax-estate.md Mutation receipt: swr-rule-ending-after-tax-estate.mutation.md

    Evidence tests: swrComparator.evidence.test.ts

    Implemented in: swrComparator.ts

    Is the number of: swr-rule-result-ending-after-tax-estate

Records that feed this number

  • Projection summary ending after tax estate Composition record, justified by derivation

    Purpose: Net the horizon estate of charity carve-outs and assumed heir income tax.

    Statement: projection/compare.ts#summarizeProjection computes nominal ending after-tax estate as horizon net worth minus the amount passing to charity and minus the total assumed heir income tax on inherited pre-tax balances: endingAfterTaxEstate = endingNetWorth - endingEstateToCharity - endingEstateHeirTax.

    Formula: endingAfterTaxEstate = endingNetWorth - endingEstateToCharity - endingEstateHeirTax

    • endingNetWorth: Horizon net worth (unit: nominal USD) (domain: finite)
    • endingEstateToCharity: Amount passing to charity, untaxed (unit: nominal USD) (domain: nonnegative)
    • endingEstateHeirTax: Assumed heir income tax on inherited pre-tax balances (unit: nominal USD) (domain: nonnegative)

    Timing: projection horizon

    Rounding: none stated

    Limits:

    • Charity carve-outs pass untaxed rather than remaining in the heirs' estate, so they are subtracted here even though they are also reported separately in endingEstateToCharity; with no charity destination the identity collapses to net worth minus heir tax. Ignoring charity, adding heir tax instead of subtracting it, or subtracting charity a second time through the heir tax each name a different quantity. The figure is assumed terminal exposure at the horizon, not a death-year return.

    Provenance: derived by codex, implemented by claude.

    Independent review: cursor

    Gates (6 of 6 pass): fixture registers a test: pass; pins resolve: pass; families exist: pass; worksheet exists: pass; mutation receipt exists: pass; provenance independent: pass

    Worksheet: projection-summary-ending-after-tax-estate.md Mutation receipt: projection-summary-ending-after-tax-estate.mutation.md

    Evidence tests: compareSummary.evidence.test.ts

    Implemented in: compare.ts

    Is the number of: projection-summary-ending-after-tax-estate

    Feeds: swr-rule-result-ending-after-tax-estate, scenario-comparison-cell, insight-spending-headroom-rough-annual

  • Swr rule rate and initial spend Model record, justified by derivation

    Purpose: Set initial spending from three published withdrawal-rate parameterizations.

    Statement: decisions/swrComparator.ts#compareSwrRules assigns Bengen 4.7%, Morningstar 3.9%, or ERN 1.75%+0.5(100/CAPE) and multiplies that percent by starting investable dollars to set constant-real initial annual spending before a same-plan ledger comparison.

    Formula: rates = (4.7,3.9,1.75+0.5*(100/CAPE)); initialSpend = startingInvestable * rate/100

    • CAPE: Cyclically adjusted price/earnings ratio (unit: 1) (domain: positive)
    • startingInvestable: Initial investable portfolio (unit: today USD) (domain: nonnegative)

    Timing: initial constant-real annual spending, before ledger comparison

    Rounding: none

    Limits:

    • Published rule parameterizations are planning lenses, not household safety guarantees. The worksheet pins rates and initial spending only; depletion, horizon, estate, and taxes come from the downstream ledger and are feeds.

    Provenance: derived by codex, implemented by codex.

    Independent review: cursor

    Gates (6 of 6 pass): fixture registers a test: pass; pins resolve: pass; families exist: pass; worksheet exists: pass; mutation receipt exists: pass; provenance independent: pass

    Worksheet: swr-rule-rate-and-initial-spend.md Mutation receipt: swr-rule-rate-and-initial-spend.mutation.md

    Evidence tests: swrComparator.evidence.test.ts

    Implemented in: swrComparator.ts

    Is the number of: swr-rule-result-initial-rate-pct, swr-rule-result-initial-annual-spend

    Feeds: swr-rule-result-depletion-year, swr-rule-result-end-year, swr-rule-result-ending-after-tax-estate, swr-rule-result-lifetime-taxes-and-penalties

Engine source: engine/src/decisions/swrComparator.ts (SwrRuleResult.endingAfterTaxEstate)

The evidence links on this page (each record's worksheet, mutation receipt, evidence tests and implementation, and the source links) are pinned to engine commit 2624dbdba9fd, committed 2026-10-11. The live calculation index and output-family census links point at the repository's main branch, so you can check this snapshot against them.