Methods

Methods & Formulas

Spending Engines

Total (needs-based):

Desired income \(S\) is covered first by guaranteed income \(P_t\); portfolio supplies the gap.

\[ P_t \;=\; \sum_{i}\; \text{amt}_i \,\bigl(1+(\text{COLA}_{i}^{\text{nom}}-\text{CPI})\bigr)^{\max(0,\,t-\text{start}_i)} \]

\[ \text{Withdraw}_t \;=\; \max\{0,\; S - P_t\} \]


Legacy (fixed from portfolio):

Portfolio withdrawal is set once: \(\text{Withdraw}_t = W_0\) (no COLA in this view here).

Guardrails & Tuning ?

What are guardrails? A rule set that nudges your real spending up or down when the portfolio gets far ahead or behind plan. Each time the rules force a downward adjustment, we count one instability event.

Two metrics you can optimize for (pick one):

  • Success Rate — fraction of Monte Carlo paths that never run out of money: SuccessRate = (# paths with PVT > 0) / N.
    Prioritizes not depleting assets.
  • Spending Stability — share of (path, year) points without a forced cut: Stability = 1 − (downward_cuts) / (N·T).
    Prioritizes few/no pay cuts during retirement.

These goals can trade off: higher Success Rate often requires more frequent/earlier spending cuts (lower Stability), and vice-versa.

How the guardrails act (conceptual):

  • Compute a funded ratio each year: FRt = PVt / PV_targett.
  • If FRtUpper Rail → next year’s real spend ↑ by raisePct.
  • If FRtLower Rail → next year’s real spend ↓ by cut% (counts as an instability event).
Practical defaults (you can tune)
  • Rails: Lower = 0.85–0.90, Upper = 1.10–1.20 (±10–15% around plan).
  • raisePct: 0.03–0.10 (3–10% real increase when well ahead).
  • cut%: 0.05–0.10 (5–10% real decrease when behind).

Pick broader rails and smaller moves if you want smoother spending; tighter rails and larger moves if you want aggressive course-correction.

What the “80% / 90% target” means:

You set a target for the metric you care about (e.g., Spending Stability = 80% or Success Rate = 90%). The optimizer searches for the starting spend that hits the target, given your rails and move sizes.

Performance note. Tuning is compute-intensive: each step runs a full Monte Carlo (≈ N paths × T years). To keep pages snappy, use modest defaults (N=500–1,000; 8–12 search steps), reuse a fixed random seed for tuning, and defer chart redraws until the end. Heavy runs can be offloaded to a Web Worker.

Inputs: target ∈ [0,1] (e.g., 0.80), metric ∈ {SuccessRate, Stability}
        rails (lower, upper), move sizes (cut%, raisePct)

lo = low feasible start-spend;  hi = high feasible start-spend
repeat until convergence:
    mid = (lo + hi) / 2
    # metric(mid) runs a Monte Carlo at starting spend = mid, with guardrails applied.
    # It returns a single number in [0,1]:
    #   - SuccessRate:  fraction of paths that finish with PV_T > 0
    #   - Stability:    1 − (downward_cuts) / (N · T)
    m = metric(mid)

    if m < target:
        # performance is worse than goal → spend likely too high
        hi = mid
    else:
        lo = mid
return mid  # tuned starting spend that meets the target
Glossary & unit tips
  • Instability event: a year in a path where the rule applies a downward spend change.
  • Success Rate: share of paths with PV never hitting zero before horizon.
  • Spending Stability: 1 − (downward cuts)/(N·T). “100%” means no cuts occurred.
  • Percent inputs: You can enter 0.10 or 10; both are treated as 10% on this page.

Portfolio Path (per year)

How the portfolio evolves each year

  • Start with last year’s balance \( \text{PV}_t \)
  • Subtract spending \( \text{Withdraw}_t \)
  • Apply investment return \( r_t \)

\[ \text{PV}_{t+1} \;=\; \bigl(\text{PV}_t - \text{Withdraw}_t\bigr)\,\bigl(1 + r_t\bigr) \]

Two-asset return model (standardized notation)

The portfolio return \( r_t \) combines stock and bond returns using fixed allocation weights:

  • \( w_S \): weight in stocks (e.g., 60%)
  • \( w_B \): weight in bonds (e.g., 40%)
  • \( r_t = w_S\,R_{S,t} + w_B\,R_{B,t} \)

We draw correlated annual returns for stocks and bonds:

\[ \begin{aligned} R_{S,t}&\sim \log\mathcal{N}\!\bigl(\mu_S-\tfrac12\sigma_S^2,\;\sigma_S^2\bigr)-1\\ R_{B,t}&\sim \log\mathcal{N}\!\bigl(\mu_B-\tfrac12\sigma_B^2,\;\sigma_B^2\bigr)-1\\ \mathrm{corr}\!\bigl(R_{S,t},R_{B,t}\bigr)&=\rho \end{aligned} \]

Weights & rebalancing. \(w_S\) and \(w_B\) are the portfolio’s target allocations. We assume annual rebalancing so \( w_S + w_B = 1 \) each year. On this page they are fixed for demo; in the main calculator they follow your chosen allocation.

Parameters used here (demo): \(w_S=0.6\), \(w_B=0.4\), \(\mu_S=0.06\), \(\sigma_S=0.18\), \(\mu_B=0.00\), \(\sigma_B=0.06\), \(\rho=0.10\).

Why these values?
  • \(\mu\): illustrative long-run real return assumptions (e.g., ~6% stocks, ~0% bonds).
  • \(\sigma\): stylized annualized volatilities (stocks ~18%, bonds ~6%).
  • \(\rho\): modest positive correlation (0.10) to reflect diversification.

These are placeholders for exploring risk/return trade-offs, not forecasts.

Risk Summaries

Percentiles (p10 / p50 / p90)

These summarize the distribution of outcomes at the horizon across all Monte Carlo paths: p10 is a poorer scenario (only 10% of simulations did worse), p50 is the median, and p90 is an optimistic case.

Max drawdown

Largest peak-to-trough decline over time: \[ \mathrm{MDD} \;=\; \max_{t}\;\frac{\mathrm{Peak}_t - \mathrm{PV}_t}{\mathrm{Peak}_t}, \quad \mathrm{Peak}_t=\max_{0\le s\le t}\mathrm{PV}_s \]

Bigger drawdowns mean deeper temporary losses before recovery—useful for stress tolerance and cash-buffer planning.

Your Inputs Plugged Into the Math

Scroll to Top