Calculation catalog › Cash flow and summary
Year result tax exempt interest
Tax-exempt interest income received during the projection year.
Field: taxExemptInterest Unit: US dollars Basis: nominal dollars Computed by: Engine Status: Complete chain
Appears in: csv (taxExemptInterest); chart (Income by source "Tax-exempt interest" series); scenarios-page (Annual "Tax-exempt interest" and lifetime "Tax-exempt interest"); cash-flow-drilldown (taxExemptInterest source line)
Calculation records
-
Annual tax-exempt interest, and the ACA-year maximum Formula record, justified by derivation
Purpose: Municipal interest the year really generates, raised to an attested household total in an ACA year.
Statement: projection/internal/types/result.ts#YearResult.taxExemptInterest is the account-generated federally tax-exempt interest total, except in a year with an active ACA contract whose taxExemptInterest state is known, when it is max(attested household total, plan-generated subset). Generated account interest is the stated taxable-account balance times taxExemptInterestYieldPct/100. Cash and balances always follow the generated figure. Units: nominal USD per year. Rounding: none.
Formula:
generated = B x q; published = known ACA contract ? max(attested, generated) : generated-
B: Taxable-account start-of-year balance (unit: usd) (domain: nonnegative) -
q: Tax-exempt interest yield (unit: 1) (domain: taxExemptInterestYieldPct / 100) -
attested: Household tax-exempt interest on a known ACA contract (unit: usd/year) (domain: nonnegative)
Timing: once per projection year, after the account yield pass
Rounding: none
Limits:
- Both cases asserted as the published field of a real simulatePlan 2026 row: one municipal sleeve at the worksheet's 200,000 balance and 2-percent tax-exempt yield, zero account return and zero inflation. Plan assumptions beyond the worksheet's inputs: a 60-year-old filing single in KY at a zero state rate, the sleeve does not reinvest its yield, and Case B adds a 2026 ACA contract at a 500-per-month enrollment premium whose taxExemptInterest state is known at the worksheet's 6,000; the enrollment premium is what makes the contract active and is not read by this field
- The ACA maximum characterizes income only; the test also asserts that the generated 4,000 remains the cash-real income member in Case A
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: year-result-tax-exempt-interest.md Mutation receipt: year-result-tax-exempt-interest.mutation.md
Evidence tests: simulate.evidence.test.ts
Implemented in: result.ts; annualAggregateRothConversionPhase.ts
Is the number of: year-result-tax-exempt-interest
Feeds: income-total-annual, tax-total-annual
-
Engine source: engine/src/projection/internal/types/result.ts
(YearResult.taxExemptInterest)
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.