Guth
NewsDocs
Page actions
View as Markdown ↗
Explore MCP tools ↗

instrument mechanism / verified-clean

Monte Carlo Retirement Simulator mechanism

The inspectable method record for Monte Carlo Retirement Simulator, kept separate from implementation and qualification.

Status: VERIFIED_CLEANLifecycle: verified-clean

Model scope

The formula is a reasonable high-level Monte Carlo concept, but the exact financial algorithm is not sufficiently specified for verification. The four deterministic vectors use the valid degenerate case volatility=0 so expected values are hand-checkable without an unseeded random generator. Before PASS, specify withdrawal timing, return convention, failure semantics, withdrawal-rate behavior, return-floor policy, inflation treatment, percentile methodology, and reproducible RNG details.

  • The recurrence is underspecified: it must state whether each year's return is applied before or after the withdrawal. The test vectors assume end-of-year withdrawal followed by return: B_t=(B_{t-1}-W_t)(1+r_t).
  • The failure rule is unspecified. The test vectors define failure when the balance immediately before a scheduled withdrawal is less than that withdrawal; equality is allowed.
  • A normal return distribution can generate r<-1, which implies a loss greater than 100% and a negative portfolio unless returns are floored or a different distribution is used.
  • The withdrawal plan is ambiguous: fixed nominal withdrawals, inflation-adjusted withdrawals, and percentage-of-balance withdrawals produce different algorithms. The test vectors use a fixed nominal withdrawal unless a withdrawal rate is explicitly supplied.
  • The meaning of withdrawal rate is unspecified. The test vector using 4% interprets it as the initial balance multiplied by 0.04, with a fixed nominal withdrawal thereafter.
  • A finite Monte Carlo estimate is random. No random-number seed, generator, draw ordering, or reproducibility contract is specified, so exact stochastic test outputs cannot be verified.

Units and conventions

  • Starting balance and withdrawals are in the same currency units.
  • Mean return and volatility are annual decimal fractions: 0.05 means 5% and 0.20 means 20%, not 5 and 20.
  • The normal draw is an annual simple return, r~N(mu,sigma), rather than a continuously compounded log return.
  • Withdrawals occur once per year at the beginning of the recurrence, followed by that year's return; equivalently, the balance update is B_t=(B_{t-1}-W_t)(1+r_t).
  • A path succeeds only if it can make every scheduled withdrawal; balance equal to the withdrawal is allowed and leaves zero after withdrawal.
  • For deterministic sigma=0 vectors, every trial has the same return and therefore the same path; p5, p50, and p95 are identical.

Inspectable vector

One of 4 source-bound review vectors:

{
  "inputs": {
    "starting_balance": 100000,
    "withdrawal_amount": 5000,
    "mean_return": 0.05,
    "volatility": 0,
    "years": 3,
    "trial_count": 100,
    "withdrawal_timing": "end_of_year",
    "return_model": "simple_annual",
    "return_draws": [
      0.05,
      0.05,
      0.05
    ]
  },
  "expected_outputs": {
    "success_probability_percent": 100,
    "balance_percentiles": {
      "p5": [
        100000,
        99750,
        99487.5,
        99211.875
      ],
      "p50": [
        100000,
        99750,
        99487.5,
        99211.875
      ],
      "p95": [
        100000,
        99750,
        99487.5,
        99211.875
      ]
    }
  },
  "working": "All 100 trials are identical because sigma=0. Year 1: (100000-5000)*1.05 = 95000*1.05 = 99750. Year 2: (99750-5000)*1.05 = 94750*1.05 = 99487.5. Year 3: (99487.5-5000)*1.05 = 94487.5*1.05 = 99211.875. Every withdrawal is affordable, so 100 of 100 trials succeed and every percentile equals the common path."
}

Failure boundary

BREAK_CLAIMED · SELF_FLAGGED

The extreme-magnitude vector produces approximately 1e616, which overflows standard JavaScript Number arithmetic to Infinity. The specification also leaves withdrawal timing and return-unit conventions underspecified, allowing materially different balances for the same apparent inputs.

Other records

Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

  • VERIFIED_LEDGER.json
  • evidence-tranche6/tranche6-results.json
  • BOUNDARY_HAZARD_CATALOG.json