Calculation catalog › Ladders and valuation
Income floor ladder yield pct
Annual real income generated by the modeled ladder as a percentage of its total purchase cost.
Field: Income-floor ladder yield Unit: percent Basis: no dollar basis Computed by: UI transformation Status: Complete chain
Appears in: income-floor (annual real income as percent of total cost)
Calculation records
-
Ladder income as a percent of its cost Formula record, justified by derivation
Purpose: How much level real income a ladder quote pays each year for each dollar it costs, as the Income floor section prints it.
Statement: ladder/ladderMath.ts#ladderIncomeYieldPct returns (targetAnnualRealIncome / totalCost) × 100 for a ladder quote and refuses a cost that is not a positive finite number. quotePlanLadder prices a plan ladder with buildLadder on planLadderWindow, the anchor rule simulatePlan also calls (the purchase year, or the year before the projection for a ladder already owned; the first payout no earlier than the year after the anchor; no ladder when the window is empty or the amount is not positive), and publishes the yield and each rung's maturity year, the anchor year plus the rung's maturity offset. A one-year ladder of $10,200 at a flat 2 percent costs $10,000 and yields 102 percent; two years of $10,200 at 2 percent cost $19,803.92156862745 and yield 51.504950495049506 percent, the level annuity rate 1.0404 / 2.02. Units: percent per year, real. Rounding: none; the page prints two decimals.
Formula:
yield = (A / C) · 100, with C the sum of the rung prices-
A: Level real income the ladder pays each payout year (targetAnnualRealIncome) (unit: today USD per year) (domain: > 0) -
C: Total real cost of the rungs (totalCost) (unit: today USD) (domain: > 0)
Timing: at quote time, on the curve the quote used
Rounding: none
Limits:
- The ratio inherits the construction's planning simplifications: annual coupons, par yields read as spot rates, and the embedded curve's date.
- On a deferred ladder the cost includes the coupons paid before the first payout year, which the target income does not count, so the yield is below the level annuity rate; a one-year ladder yields more than 100 percent.
Provenance: derived by
claude, implemented byclaude-subagent.Independent review:
codexGates (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: income-floor-ladder-yield-pct.md Mutation receipt: income-floor-ladder-yield-pct.mutation.md
Evidence tests: ladderMath.incomeYield.evidence.test.ts
Implemented in: ladderMath.ts; simulate.ts
Is the number of: income-floor-ladder-yield-pct
-
Records that feed this number
-
Par real yield at a maturity: linear interpolation with flat endpoints Formula record, justified by derivation
Purpose: The real yield the ladder engine reads off the TIPS curve at any maturity.
Statement: Given a curve of (maturity m_i years, par real yield y_i percent) points sorted ascending and a finite maturity m, the yield is y_first when m <= m_first, y_last when m >= m_last, and otherwise y_i + (m - m_i)(y_{i+1} - y_i)/(m_{i+1} - m_i) on the first segment with m <= m_{i+1}. An empty curve yields 0. Units: percent per year, real. Rounding: none; the production function returns a binary float.
Formula:
y(m) = y_i + (m - m_i)(y_{i+1} - y_i)/(m_{i+1} - m_i) for m_i <= m <= m_{i+1}; y(m) = y_first for m <= m_first; y(m) = y_last for m >= m_last-
m: Maturity, years from the anchor year (unit: years) (domain: finite m) -
m_i: Maturity of curve point i (unit: years) (domain: strictly ascending in i) -
y_i: Par real yield at curve point i (unit: percent/year) (domain: y_i > -100) -
y(m): Interpolated par real yield at m (unit: percent/year) (domain: between the yields of the bracketing points)
Timing: annual maturities; time-invariant lookup on one dated curve
Rounding: none
Limits:
- Endpoints are held flat, never extrapolated: a maturity beyond the last point reads the last yield, and one before the first point reads the first
- The curve must already be sorted ascending by maturity; the function neither sorts nor validates it
- An empty curve returns 0% rather than refusing
- Every caller consumes the interpolated par yield as a spot rate (the par-as-spot planning approximation documented in the ladderMath.ts header)
Provenance: derived by
codex, implemented byclaude-subagent.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: ladder-real-yield-interpolation.md Mutation receipt: ladder-real-yield-interpolation.mutation.md
Evidence tests: ladderMath.evidence.test.ts
Implemented in: ladderMath.ts
Feeds: income-floor-ladder-yield-pct, ladder-rung-coupon-rate-pct, funded-ratio-result-essential-spending-pv, funded-ratio-result-guaranteed-income-pv, funded-ratio-result-funded-ratio-pct, funded-ratio-result-unfunded-pv
-
-
Embedded Treasury par real-yield curve, 2026-06-30 Data record, justified by dataset
Purpose: The offline TIPS real-yield snapshot every ladder quote and funded ratio discounts on.
Statement: Five par real yields in percent per year at 5, 7, 10, 20 and 30 years, dated 2026-06-30, taken from the U.S. Treasury Daily Par Real Yield Curve and stored as {asOfIso, source, points[]} sorted ascending by maturity. Consumers interpolate linearly between points and hold the endpoints flat (ladder-real-yield-interpolation). The stored row is the official 2026-06-30 row exactly as Treasury publishes it: 1.93, 2.06, 2.20, 2.54 and 2.73. Rounding: none; the yields keep the hundredth of a percent Treasury publishes.
Limits:
- Stored exactly as published, with no rounding to the nearest 5 basis points (decision D-TREASURY, 2026-09-25). Until 2026-09-27 the stored row was 1.85/2.05/2.25/2.55/2.70, which the worksheet showed was neither the official row nor its nearest 5 basis points: 8 basis points below the official row at 5 years, 1 below at 7, 5 above at 10, 1 above at 20 and 3 below at 30. Every ladder quote and funded ratio priced on the curve moved with the correction
- Maturities below 5 years read the 5-year yield and above 30 years the 30-year yield (flat endpoints)
- Par yields are consumed as spot rates by every ladder and funded-ratio calculation
- Refresh cadence is annual with the published parameters; the opt-in FedInvest fetch never replaces this snapshot
Dataset: U.S. Department of the Treasury, Daily Treasury Par Real Yield Curve Rates, row dated 06/30/2026 (5, 7, 10, 20 and 30 year columns) , as of 2026-06-30 , retrieved 2026-09-27
Provenance: derived by
claude, implemented byclaude-subagent.Independent review:
codexGates (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: treasury-real-yield-curve-2026.md Mutation receipt: treasury-real-yield-curve-2026.mutation.md
Evidence tests: realYieldCurve2026.evidence.test.ts
Implemented in: realYieldCurve2026.ts
Feeds: income-floor-ladder-yield-pct, ladder-rung-cost, ladder-rung-coupon-rate-pct, ladder-build-total-cost, funded-ratio-result-essential-spending-pv, funded-ratio-result-guaranteed-income-pv, funded-ratio-result-funded-ratio-pct, funded-ratio-result-unfunded-pv
Transformations
- (targetAnnualRealIncome / totalCost) × 100 in ladder/ladderMath.ts#ladderIncomeYieldPct, on the quote ladder/ladderMath.ts#quotePlanLadder builds with the ledger's window (planLadderWindow).
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.