Calculation catalog › Insights
Insight monte carlo success delta
Change in Monte Carlo success rate, in percentage points, between the previewed plan and the plan, on the headline's model, path count and seed, so the baseline is the headline success rate.
Field: Insight Monte Carlo success delta Unit: percent Basis: no dollar basis Computed by: UI-native Status: Complete chain
Appears in: insights (InsightCardView "Monte Carlo success" line after Preview)
Calculation records
-
Monte Carlo success rate change on shared paths Composition record, justified by derivation
Purpose: The change in Monte Carlo success rate between a plan and a previewed change to it, on the same market paths as the headline rate.
Statement: decisions/stochastic.ts#compareMonteCarloSuccessRates publishes compareScalars(baseline.successRate, proposal.successRate): proposal minus baseline, a fraction of paths, refusing with a RangeError two runs with different path counts or from different start years (each run states the calendar year its paths start in). The Insight preview (owner decision R11) runs both plans on the headline configuration: the headline market model built from the base plan (the plan's inflation mean, 12 percent return volatility, and per-class shocks for a plan with allocated accounts), the engine's default seed (monte-carlo-default-seed, the same for every plan), and the path count and start year of the headline run it reuses for the base side (1,000 paths, or 10,000 when the Monte Carlo page published a finer run; the start year that run was simulated from, which after a New Year the plan object outlived is the previous year), so path N is one market for both plans and the baseline is the rate the reader was shown. decisions/stochastic.ts#attachStochasticMetrics prices every entry with its own plan's tax calculator when the decision context has a per-plan builder. With 912 and 948 successes of 1,000 the change is 0.03599999999999992, printed +3.6 points. Units: a fraction of paths, printed in percentage points to one decimal. Rounding: none.
Formula:
delta = r_p − r_b with r = s / N; refused when N_b ≠ N_p or Y_b ≠ Y_p-
s: Paths on which the plan never runs short (unit: paths) (domain: 0 to N) -
N: Paths simulated, the same seeded paths for both plans (unit: paths) (domain: >= 1) -
Y: Calendar year the run's paths start in (unit: calendar year) (domain: integer)
Timing: once per preview
Rounding: none; the card prints points to one decimal
Limits:
- A success share on N paths moves in steps of 1/N; a change of a few steps is sampling noise even on shared paths.
- The comparison says nothing about the paths that fail in both plans, or how deep their shortfall is.
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: insight-monte-carlo-success-delta.md Mutation receipt: insight-monte-carlo-success-delta.mutation.md
Evidence tests: stochastic.evidence.test.ts
Implemented in: stochastic.ts; scalarComparison.ts
Is the number of: insight-monte-carlo-success-delta
-
Records that feed this number
-
Default Monte Carlo seed and the headline run's options Data record, justified by derivation
Purpose: The one base seed every plan's default Monte Carlo draws its markets from, and the headline configuration every host can match.
Statement: DEFAULT_MONTE_CARLO_SEED = 0x5eeded = 6,221,293 (decision D-MC-DEFAULT-SEED, 2026-09-28) is the base seed of every default Monte Carlo run, the same for every plan whatever its id: the headline success rate, the Monte Carlo page until the reader re-rolls (Re-roll replaces it for that page's runs only and is never saved), every comparison the planner pairs with the headline run (the Insight preview, Scenarios, the Social Security analysis, relocation, Optimize), the risk-based guardrail threshold solve, which stores the seed beside the thresholds, and the Optimize tournament's downside-resilience metric. headlineMonteCarloOptions(plan, startYear, pathCount = 1000) publishes { startYear, pathCount, seed: DEFAULT_MONTE_CARLO_SEED, model: buildLognormalModelConfigForPlan(plan, 12) }, so a host that uses it draws the app's markets. Path i is seeded with derivePathSeed(6,221,293, i): 2,931,854,348 for path 0 and 3,741,805,609 for path 1. Before the decision the planner hashed the plan id (FNV-1a), so Duplicate, Save to My Plans and import drew new markets and two plans compared side by side ran on independent markets. Units: unsigned 32-bit integer. Rounding: none.
Formula:
seed = 0x5eeded = 6,221,293 for every plan; pathSeed_i = derivePathSeed(seed, i); headline = { pathCount 1000, seed, lognormal(plan, 12) }-
seed: Base Monte Carlo seed of a default run (unit: uint32) (domain: 6,221,293) -
i: Zero-based path index (unit: 1) (domain: integer >= 0; worksheet 0 and 1)
Timing: once per run; the page's Re-roll replaces it for that page only
Rounding: none
Limits:
- Any fixed seed is one draw from the same sampling distribution: a headline rate on 1,000 paths still carries about 1.4 points of sampling error, which one seed for every plan does not remove; it removes the id's part of it and pairs every comparison
- The value was kept because it was already the tournament's seed, before any figure was measured on it; choosing a seed by its outcomes would bias every figure
- An allocated plan draws class shocks after each year's return and inflation draws, so an allocated plan and a single-return plan share only their first year's draws even on one seed
- RetireGolden-MCP adopted these options in 0.12.0: run_monte_carlo with no arguments runs headlineMonteCarloOptions (1,000 paths, this seed, the plan's lognormal model at 12 percent), where through 0.11.x it ran 200 paths on seed 42 with a plain lognormal model; an explicit seed, pathCount or returnVolPct replaces only its own default, and returnVolPct sets only the market factor, since an allocated account draws its classes' own volatilities
- Risk-based thresholds saved before schema v6 carry no stored seed and were solved on the plan-id seed; the Spending card says so and offers to solve again (guardrailThresholdSeedBasis)
Provenance: derived by
claude, implemented byclaude.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: monte-carlo-default-seed.md Mutation receipt: monte-carlo-default-seed.mutation.md
Evidence tests: headline.evidence.test.ts
Implemented in: rng.ts; headline.ts
Feeds: monte-carlo-success-rate, monte-carlo-investable-fan-percentiles, monte-carlo-ending-investable-histogram, monte-carlo-ending-after-tax-estate-percentiles, monte-carlo-depletion-probability-by-year, insight-monte-carlo-success-delta, risk-based-guardrail-solved-balance-thresholds
-
Transformations
- decisions/stochastic.ts#compareMonteCarloSuccessRates(base, previewed).delta, a fraction the card prints in points; the base is the headline run (useMcSuccessRate.ts#headlineMcRun) and the previewed plan runs with headlineMcRunOptions(base plan, base path count).
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.