Calculation catalog › Cash flow and summary
Projection result ending net worth
Total net worth remaining at the end of the projection.
Field: endingNetWorth Unit: US dollars Basis: nominal dollars Computed by: Engine Status: Complete chain
Appears in: compare-page (ending net worth); results-headline (KpiBar "Ending net worth" and ResultsPage narrative); report (headline-results block endingNetWorth and ReportPage KPI); scenarios-page (Headline "Ending net worth" and estate "Gross net worth")
Calculation records
-
Projection-result ending net worth Composition record, justified by derivation
Purpose: The terminal net-worth figure the whole-run result republishes from the last year row.
Statement: projection/simulate.ts#simulatePlan publishes projection/internal/types/result.ts#ProjectionResult.endingNetWorth as the last year row's netWorth, or exactly 0 when the projection has no rows. The annual row has already composed investable, property, insurance cash value, ladder value, debt and the non-recourse-capped HECM lines; the terminal field rebuilds none of that. Units: nominal USD. Rounding: none.
Formula:
endingNetWorth = years[years.length - 1].netWorth, or 0 when years is empty-
years: Ordered projection year rows (unit: rows) (domain: possibly empty) -
netWorth: That row's year-end net worth (unit: usd) (domain: may be negative)
Timing: once per projection, at the horizon
Rounding: none
Limits:
- Asserted on a real two-year simulatePlan run whose 2030 row closes at the worksheet's $925,000 and whose 2031 row closes at the worksheet's $901,375.625. Plan assumptions beyond the worksheet's inputs: a single 55-year-old filing single in KY with a zero state rate, zero inflation, zero account and property return, no healthcare charge, one cash account and one property with no carrying costs, and one uninflated 2031 one-time goal sized to spend the difference between the two rows
- The empty-row case cannot be reached through simulatePlan; it is the publishing site's fallback as the field comment states it and a contract statement, not executed evidence
- Substituting ending investable for net worth names a different quantity, which the test asserts against on a run where the two differ by the property value
Provenance: derived by
codex, implemented byclaude.Independent review:
cursorGates (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-result-ending-net-worth.md Mutation receipt: projection-result-ending-net-worth.mutation.md
Evidence tests: simulate.evidence.test.ts
Implemented in: simulate.ts; result.ts
Is the number of: projection-result-ending-net-worth
-
Records that feed this number
-
Annual net worth, with the non-recourse HECM cap Composition record, justified by derivation
Purpose: The year-end balance sheet, including the homes and the debts the investable total leaves out.
Statement: projection/internal/annualYearResultAssembly.ts#annualYearResultAssembly publishes projection/internal/types/result.ts#YearResult.netWorth as snapshot.investableTotal + snapshot.propertyTotal - snapshot.debtTotal + snapshot.insuranceCashValueTotal + ladderValue - snapshot.hecmEffectiveDebt, in that left-to-right association. projection/internal/annualSnapshot.ts#annualSnapshot supplies hecmEffectiveDebt as the sum over open HECM lines of min(loanBalance, the matching property value), the non-recourse limit; the uncapped loan total is published separately as hecmLoanBalance and is never the net-worth subtrahend. Units: nominal USD at year end. Rounding: none; the association is part of the contract.
Formula:
netWorth = investableTotal + propertyTotal - debtTotal + insuranceCashValueTotal + ladderValue - sum over HECM lines of min(loanBalance, propertyValue)-
propertyTotal: Sum of owned property values at year end (unit: usd) (domain: nonnegative) -
debtTotal: Sum of ordinary debt balances (unit: usd) (domain: nonnegative; subtracted) -
insuranceCashValueTotal: Permanent-life cash values (unit: usd) (domain: nonnegative) -
ladderValue: Remaining TIPS-ladder principal at nominal book value (unit: usd) (domain: nonnegative) -
hecmEffectiveDebt: HECM loans capped line by line at the matching home value (unit: usd) (domain: nonnegative; subtracted)
Timing: once per projection year, at the year-result assembly
Rounding: none
Limits:
- The worksheet's case is asserted at annualSnapshot and annualYearResultAssembly, the two functions that compute the cap and the composition, because the worksheet states HECM loan balances of $420,000 and $50,000 as year-end facts: a HECM balance is an accrual of draws, interest and mortgage-insurance premium that no plan can set directly, so those two figures are not a state a plan produces
- Only the cap is capped: a loan above its home's value is limited to that value, while a loan below it is subtracted in full, which is why the worksheet's two homes need two different branches of the same min
- Ordinary debt is subtracted, not added; adding it is the worksheet's third wrong reading and moves the answer by twice the debt
Provenance: derived by
codex, implemented byclaude.Independent review:
cursorGates (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: accounts-net-worth-annual.md Mutation receipt: accounts-net-worth-annual.mutation.md
Evidence tests: annualYearResultAssembly.evidence.test.ts
Implemented in: annualYearResultAssembly.ts; annualSnapshot.ts; result.ts
Is the number of: accounts-net-worth-annual
-
Engine source: engine/src/projection/internal/types/result.ts
(ProjectionResult.endingNetWorth)
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.