Calculation catalog › Monte Carlo
Display fan band widths
The 10th to 90th and 25th to 75th percentile ranges of investable assets drawn and printed on the Range of outcomes chart, read from the engine's fan percentiles.
Field: Fan chart percentile ranges Unit: US dollars Basis: nominal dollars Computed by: UI transformation Status: Complete chain
Appears in: monte-carlo-page (Range of outcomes range areas [p10, p90] and [p25, p75]; tooltip "10th to 90th percentile $X to $Y")
Calculation records
-
Fan chart percentile ranges Composition record, justified by derivation
Purpose: The two bands the Range of outcomes chart draws each year, as the pairs of percentile levels they span.
Statement: The Range of outcomes chart draws, for each fan row that montecarlo/run.ts#aggregateMonteCarlo publishes, the range from p10 to p90 and the range from p25 to p75 (owner decision R14): each band is the pair of the row's two levels, never their difference, and the tooltip prints the pair as "$low to $high". For a year whose sorted investable balances across eleven paths are 0, 400,000, 600,000, 600,000, 700,000, 800,000, 900,000, 1,000,000, 1,000,000, 1,300,000 and 2,000,000, the outer band spans $400,000 to $1,300,000 and the inner $600,000 to $1,000,000, where the chart used to stack widths of $900,000 and $400,000 on transparent bases. Units: nominal dollars of the year. Rounding: none; the page prints whole dollars.
Formula:
outer band = [p10, p90]; inner band = [p25, p75], per fan row-
p10, p25, p75, p90: The fan row's interpolated percentile levels of investable balances across paths (monte-carlo-investable-fan-percentiles) (unit: usd, nominal of the year) (domain: p10 <= p25 <= p75 <= p90)
Timing: once per fan row
Rounding: none
Limits:
- The pairing and the tooltip text are the chart's, done in planner-ui by planner/format.ts fanOuterBand and fanInnerBand (the two bands' data keys) and fmtMoneyOrRange (the tooltip), which the census names as this family's UI sources; the registry pins only engine code, so implementedBy names the engine function that publishes the levels, the engine's fan percentiles, whose own record states how each is interpolated.
- A band's width (p90 minus p10) is not published: it is not a level of any path, and the chart printed it as one before R14.
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: display-fan-band-widths.md Mutation receipt: display-fan-band-widths.mutation.md
Evidence tests: run.fanRanges.evidence.test.ts
Implemented in: run.ts
Is the number of: display-fan-band-widths
-
Transformations
- None after R14: each band is the pair [p10, p90] or [p25, p75] of MonteCarloSummary.fan (format.ts#fanOuterBand and #fanInnerBand, the chart's data keys), drawn as a range area; the tooltip prints the pair as "$low to $high" (format.ts#fmtMoneyOrRange).
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.