{
  "version": "2026.1",
  "generated_at": "2026-09-06",
  "generated_by": "scripts/gen_tips_ladder_study.mjs",
  "study": "tips-ladder-vs-4-percent-rule-2026",
  "url": "https://quantcalc.app/research/tips-ladder-vs-4-percent-rule-2026/",
  "license": "CC-BY-4.0",
  "method": {
    "ladder": "Level real annuity: income = capital / a(r, n), a(r, n) = (1 - (1 + r)^-n) / r, income at the end of each year 1..n; flat illustrative real yield r held to maturity; no fees, no taxes, no reinvestment of coupons, no bid-ask; annuity-due variant reported as a sensitivity.",
    "four_percent_rule": "Quoted from the published QuantCalc Monte Carlo studies listed under quoted_sources; not re-simulated here.",
    "horizon_years": 30,
    "capital": 1000000,
    "target_income": 40000,
    "yield_cases": [
      0.015,
      0.02,
      0.025
    ],
    "note": "Yield cases are illustrative assumptions, not market quotes."
  },
  "ladder": [
    {
      "real_yield": 0.015,
      "annuity_factor": 24.01583800623397,
      "income_per_1m": 41639.18826153068,
      "cost_per_dollar_real_income": 24.01583800623397,
      "capital_to_lock_target": 960633.5202493588,
      "residual_for_equities": 39366.479750641156,
      "residual_share": 0.039366479750641156,
      "required_residual_real_cagr_to_rebuy_ladder": 0.11236599800998803,
      "annuity_due": {
        "income_per_1m": 41023.83079953762,
        "capital_to_lock_target": 975043.023053099
      }
    },
    {
      "real_yield": 0.02,
      "annuity_factor": 22.39645555100442,
      "income_per_1m": 44649.92229340293,
      "cost_per_dollar_real_income": 22.39645555100442,
      "capital_to_lock_target": 895858.2220401767,
      "residual_for_equities": 104141.77795982326,
      "residual_share": 0.10414177795982325,
      "required_residual_real_cagr_to_rebuy_ladder": 0.0743698441261813,
      "annuity_due": {
        "income_per_1m": 43774.43362098327,
        "capital_to_lock_target": 913775.3864809802
      }
    },
    {
      "real_yield": 0.025,
      "annuity_factor": 20.93029259276115,
      "income_per_1m": 47777.64073617658,
      "cost_per_dollar_real_income": 20.93029259276115,
      "capital_to_lock_target": 837211.7037104459,
      "residual_for_equities": 162788.2962895541,
      "residual_share": 0.1627882962895541,
      "required_residual_real_cagr_to_rebuy_ladder": 0.05610493115650872,
      "annuity_due": {
        "income_per_1m": 46612.33242553813,
        "capital_to_lock_target": 858141.996303207
      }
    }
  ],
  "reference_points": {
    "zero_yield_income_per_1m": 33333.333333333336,
    "break_even_real_yield_for_target": 0.012190826326174544
  },
  "quoted_sources": {
    "cme_stress_test": {
      "url": "https://quantcalc.app/research/4-percent-rule-cme-stress-test/",
      "dataset": "https://quantcalc.app/research/4-percent-rule-cme-stress-test/data.json",
      "title": "Does the 4% rule survive forward-looking forecasts? Six CMEs stress-tested"
    },
    "sequence_of_returns": {
      "url": "https://quantcalc.app/research/sequence-of-returns-risk-2026/",
      "dataset": "https://quantcalc.app/research/sequence-of-returns-risk-2026/data/summary.json",
      "title": "Retiring into a bear market: same plan, 46% failure vs 0%"
    },
    "historical_cohorts": {
      "url": "https://quantcalc.app/research/safe-withdrawal-by-retirement-cohort-2026/",
      "dataset": "https://quantcalc.app/research/safe-withdrawal-by-retirement-cohort-2026/data/summary.json",
      "title": "The 4% rule across 123 historical retirement cohorts"
    }
  },
  "four_percent_rule_quoted": {
    "plan": {
      "initial_savings": 1000000,
      "annual_withdrawal": 40000,
      "horizon_years": 30,
      "allocation": {
        "us_equity": 0.45,
        "intl_equity": 0.15,
        "bonds": 0.4
      },
      "num_simulations": 10000,
      "sampling": "pseudo-random (Mersenne Twister)"
    },
    "by_forecast_source": [
      {
        "source": "Charles Schwab",
        "key": "schwab",
        "success_rate_30yr": 0.9085,
        "failure_share_30yr": 0.09150000000000003,
        "paths_ran_out": 915,
        "of_paths": 10000,
        "median_terminal": 691352.411254595,
        "p10_terminal": 17750.90702516851,
        "p90_terminal": 1928559.934035635,
        "outlier": false
      },
      {
        "source": "J.P. Morgan",
        "key": "jpmorgan",
        "success_rate_30yr": 0.8556,
        "failure_share_30yr": 0.14439999999999997,
        "paths_ran_out": 1444,
        "of_paths": 10000,
        "median_terminal": 766828.284102446,
        "p10_terminal": 0,
        "p90_terminal": 2708856.0657152077,
        "outlier": false
      },
      {
        "source": "Invesco",
        "key": "invesco",
        "success_rate_30yr": 0.8535,
        "failure_share_30yr": 0.14649999999999996,
        "paths_ran_out": 1465,
        "of_paths": 10000,
        "median_terminal": 498085.82550159364,
        "p10_terminal": 0,
        "p90_terminal": 1564213.9260337828,
        "outlier": false
      },
      {
        "source": "BlackRock",
        "key": "blackrock",
        "success_rate_30yr": 0.8437,
        "failure_share_30yr": 0.1563,
        "paths_ran_out": 1563,
        "of_paths": 10000,
        "median_terminal": 471499.305962846,
        "p10_terminal": 0,
        "p90_terminal": 1513260.4207602516,
        "outlier": false
      },
      {
        "source": "Vanguard",
        "key": "vanguard",
        "success_rate_30yr": 0.7846,
        "failure_share_30yr": 0.21540000000000004,
        "paths_ran_out": 2154,
        "of_paths": 10000,
        "median_terminal": 339503.49489676976,
        "p10_terminal": 0,
        "p90_terminal": 1261060.1294072142,
        "outlier": false
      },
      {
        "source": "GMO",
        "key": "gmo",
        "success_rate_30yr": 0.0246,
        "failure_share_30yr": 0.9754,
        "paths_ran_out": 9754,
        "of_paths": 10000,
        "median_terminal": 0,
        "p10_terminal": 0,
        "p90_terminal": 0,
        "outlier": true
      }
    ],
    "mainstream_range": {
      "failure_share_min": 0.09150000000000003,
      "failure_share_max": 0.21540000000000004,
      "median_terminal_min": 339503.49489676976,
      "median_terminal_max": 766828.284102446
    },
    "sequence_of_returns": {
      "pooled_failure_rate_pct": 6.02,
      "pooled_median_terminal": 1823819,
      "bottom_decile_failure_rate_pct": 45.58,
      "bottom_decile_median_terminal": 49522,
      "top_decile_failure_rate_pct": 0,
      "top_decile_median_terminal": 5355467,
      "n_paths": 50000
    },
    "historical_cohorts": {
      "cohort_count": 123,
      "allocation": "60/40",
      "lasted_30yr_at_4pct_share_pct": 95.9,
      "worst_cohort_year": 1966,
      "worst_cohort_max_swr_pct": 3.69,
      "median_max_swr_pct": 6.15
    }
  }
}
