Calculation catalog › Monte Carlo
Annuitization payout rate pct
Annual annuity payout as a percent of premium at the payment start age, from the embedded default quote table or the user quote.
Field: SPIA payout rate Unit: percent Basis: no dollar basis Computed by: Engine Status: Complete chain
Appears in: monte-carlo-page (Annuitization paragraph "payout rate X% at age Y"); insights (annuitizationHeadroom card illustrative monthly income (spiaPayoutRate))
Calculation records
-
Life-only SPIA payout-rate linear interpolation Data record, justified by dataset
Purpose: The default annual payout-rate fraction of premium at a start age, from the embedded female-conservative anchors.
Statement: Anchors (age, annual payout/premium): (60, 0.060), (65, 0.070), (70, 0.084), (75, 0.103), (80, 0.129), (85, 0.153), the last extrapolated. Below 60 the rate is 0.060; above 85 it is 0.153; otherwise linear in age between the bracketing anchors. At 67.5, t = (67.5 − 65)/5 = 1/2 and the rate is 0.070 + 0.5 · (0.084 − 0.070) = 0.077, so $100,000 of premium pays $7,700 per year. Units: fraction of premium per year. Rounding: none after the table's source-side 0.1-percentage-point rounding down. Absolute tolerance 1e-12 on the rate.
Formula:
r(a) = r_i + (a − a_i)(r_{i+1} − r_i)/(a_{i+1} − a_i) for a_i <= a <= a_{i+1}; r(a) = r_60 for a <= 60; r(a) = r_85 for a >= 85-
a: Payment start age (unit: years) (domain: worksheet 67.5) -
r(a): Annual life-only payout as a fraction of premium (unit: 1/year) (domain: between the bracketing anchors) -
premium: Illustrative premium (unit: usd) (domain: worksheet 100,000)
Timing: a time-invariant lookup on the dated quote table
Rounding: none after the source-side 0.1-percentage-point rounding down of the anchors
Limits:
- Planning defaults only; a user-entered quote always wins
- The age-85 anchor is extrapolated, not quoted
- Female column is the conservative unisex default; male quotes are higher
- annuitization-sweep-annual-income is premium times this rate and annuitization-sweep-premium is the grid premium; those families are fed, not this interpolation's published number
Dataset: annuity.org April 2026 $100,000 monthly-payout table by age/sex; anchors take the female column conservatively, rounded down to 0.1%; age 85 is extrapolated , as of 2026-04-01 , retrieved 2026-07-15
Provenance: derived by
codex, implemented bygrok.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: spia-payout-rate-interpolation.md Mutation receipt: spia-payout-rate-interpolation.mutation.md
Evidence tests: spiaQuotes.evidence.test.ts
Implemented in: spiaQuotes.ts
Is the number of: annuitization-payout-rate-pct
Feeds: annuitization-sweep-annual-income, annuitization-sweep-premium
-
Records that feed this number
-
Temporary deferred-QLAC payout-rate placeholder Model record, justified by derivation
Purpose: A conservative annual payout-rate fraction used for a deferred QLAC starting at 80–85 until a quoted deferred rate is sourced.
Statement: QLAC_DEFERRED_PAYOUT_RATE = 0.16 (annual payout / premium) with no interpolation or rounding. For a $100,000 premium the annual payout is $16,000 and the monthly illustration is 16,000/12 = $1,333.33333333333. Units: fraction of premium per year. Rounding: none on the rate; exact cents on the annual figure; monthly illustration tolerance 1e-9 dollars.
Formula:
payout_annual = 0.16 · premium; payout_monthly = payout_annual / 12-
premium: QLAC premium (unit: usd) (domain: worksheet 100,000) -
0.16: Placeholder annual payout-rate fraction (unit: 1/year) (domain: constant)
Timing: a constant; applied when a deferred QLAC candidate is sized
Rounding: none
Limits:
- No direct deferred quote was obtained; the constant is a placeholder to be replaced at the next refresh of the published parameters
- It is intended to understate candidates (16% vs the age-85 immediate 15.3%), not to represent a sourced market quote
- The census has no QLAC-specific family; annuitization-payout-rate-pct and annuitization-sweep-annual-income are named as the nearest families this placeholder feeds when a deferred QLAC candidate is sized, and are not this constant's published number
Provenance: derived by
codex, implemented bygrok.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: qlac-deferred-payout-placeholder.md Mutation receipt: qlac-deferred-payout-placeholder.mutation.md
Evidence tests: spiaQuotes.evidence.test.ts
Implemented in: spiaQuotes.ts
Feeds: annuitization-payout-rate-pct, annuitization-sweep-annual-income
-
Engine source: engine/src/decisions/annuitization.ts
(AnnuitizationSweep.payoutRatePct)
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.