<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Calculators on LibreLeo: Financial Freedom for Globally Mobile Investors</title><link>https://libreleo.com/tags/calculators/</link><description>Tools, math, and lived experience for expats building wealth across borders. Passive portfolios and active income from a Dubai-based trader.</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Copyright © 2026 | All rights reserved</copyright><lastBuildDate>Mon, 22 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://libreleo.com/tags/calculators/index.xml" rel="self" type="application/rss+xml"/><item><title>Monte Carlo Retirement Calculator</title><link>https://libreleo.com/calculators/monte-carlo-retirement-calculator/</link><pubDate>Mon, 22 Jun 2026 00:00:00 +0000</pubDate><guid>https://libreleo.com/calculators/monte-carlo-retirement-calculator/</guid><description>Interactive Monte Carlo simulator. 10,000 scenarios by default, up to 100,000. Four portfolios, two withdrawal strategies, log-normal compounding, fat-tail mode. Run your real retirement numbers.</description><content:encoded><![CDATA[
  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow" style="background-color: #1e3a5f"
  
  >
  <span
    
      class="text-primary-400 pe-3 flex items-center"
    
    >
    
  </span>

  <span
    
      style="color: #ffffff"
    
    ><strong>Want to understand the methodology?</strong> Learn why Monte Carlo simulation matters and how it models market volatility in our <strong><a href="/posts/monte-carlo-simulation-retirement-planning/" >Complete Guide to Monte Carlo Retirement Planning</a></strong>.</span>
</div>


<h2 class="relative group">Interactive Calculator
    <div id="interactive-calculator" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#interactive-calculator" aria-label="Anchor">#</a>
    </span>
    
</h2>

<div class="monte-carlo-calculator" id="monte-carlo-app">
  
  <div class="mc-header">
    <h2>🎲 Monte Carlo Retirement Calculator</h2>
    <p class="mc-subtitle">Simulate your financial future with 10,000 scenarios (up to 100,000)</p>
  </div>

  
  <div class="mc-section">
    <h3>1. Choose Your Portfolio</h3>
    <div class="portfolio-grid">
      <div class="portfolio-card" data-portfolio="1">
        <div class="portfolio-header">
          <input type="radio" name="portfolio" id="p1" value="1" checked>
          <label for="p1">
            <strong>Dividend-Focused</strong>
            <span class="badge">Original</span>
          </label>
        </div>
        <div class="portfolio-details">
          <p class="portfolio-desc">Heavy dividend tilt with growth</p>
          <ul class="portfolio-assets">
            <li>VTI: 35% • SCHG: 15%</li>
            <li>SCHD: 30% • SGOV: 20%</li>
          </ul>
          <div class="portfolio-stats">
            <span>ER: 0.0525%</span>
            <span class="exp-return-label" data-portfolio="1">Exp Return: —</span>
          </div>
        </div>
      </div>

      <div class="portfolio-card recommended" data-portfolio="2">
        <div class="portfolio-header">
          <input type="radio" name="portfolio" id="p2" value="2">
          <label for="p2">
            <strong>Classic Three-Fund</strong>
            <span class="badge recommended-badge">⭐ Recommended</span>
          </label>
        </div>
        <div class="portfolio-details">
          <p class="portfolio-desc">Ultimate simple, diversified portfolio</p>
          <ul class="portfolio-assets">
            <li>VTI: 54% • VXUS: 26%</li>
            <li>BND: 20%</li>
          </ul>
          <div class="portfolio-stats">
            <span>ER: 0.0404%</span>
            <span class="exp-return-label" data-portfolio="2">Exp Return: —</span>
          </div>
        </div>
      </div>

      <div class="portfolio-card" data-portfolio="3">
        <div class="portfolio-header">
          <input type="radio" name="portfolio" id="p3" value="3">
          <label for="p3">
            <strong>Golden Butterfly</strong>
            <span class="badge">All-Weather</span>
          </label>
        </div>
        <div class="portfolio-details">
          <p class="portfolio-desc">All market conditions with gold</p>
          <ul class="portfolio-assets">
            <li>VTI: 30% • VXUS: 10%</li>
            <li>SHY: 20% • TLT: 20% • GLD: 20%</li>
          </ul>
          <div class="portfolio-stats">
            <span>ER: 0.1560%</span>
            <span class="exp-return-label" data-portfolio="3">Exp Return: —</span>
          </div>
        </div>
      </div>

      <div class="portfolio-card" data-portfolio="4">
        <div class="portfolio-header">
          <input type="radio" name="portfolio" id="p4" value="4">
          <label for="p4">
            <strong>Modern Bogleheads</strong>
            <span class="badge">TIPS & REITs</span>
          </label>
        </div>
        <div class="portfolio-details">
          <p class="portfolio-desc">Enhanced diversification + inflation</p>
          <ul class="portfolio-assets">
            <li>VTI: 40% • VXUS: 20%</li>
            <li>VNQ: 10% • VTIP: 15% • BND: 15%</li>
          </ul>
          <div class="portfolio-stats">
            <span>ER: 0.0485%</span>
            <span class="exp-return-label" data-portfolio="4">Exp Return: —</span>
          </div>
        </div>
      </div>
    </div>
  </div>

  
  <div class="mc-section">
    <h3>2. Set Your Parameters</h3>
    <div class="input-grid">
      <div class="input-group">
        <label for="initial-value">
          Starting Portfolio Value
          <span class="help-text">How much are you starting with?</span>
        </label>
        <div class="input-with-prefix">
          <span class="prefix">$</span>
          <input type="number" id="initial-value" value="1000000" min="10000" step="10000">
        </div>
      </div>

      <div class="input-group">
        <label for="withdrawal-rate">
          Annual Withdrawal Rate
          <span class="help-text">% of portfolio value</span>
        </label>
        <div class="input-with-suffix">
          <input type="number" id="withdrawal-rate" value="3.0" min="1" max="10" step="0.1">
          <span class="suffix">%</span>
        </div>
      </div>

      <div class="input-group">
        <label for="withdrawal-strategy">
          Withdrawal Strategy
          <span class="help-text">How withdrawals adjust over time</span>
        </label>
        <select id="withdrawal-strategy">
          <option value="constant">Constant Dollar (Traditional SWR)</option>
          <option value="dynamic">Dynamic Spending (Vanguard)</option>
        </select>
      </div>

      <div class="input-group">
        <label for="years">
          Simulation Duration
          <span class="help-text">Years until you turn 100</span>
        </label>
        <div class="input-with-suffix">
          <input type="number" id="years" value="50" min="10" max="70" step="5">
          <span class="suffix">years</span>
        </div>
      </div>

      <div class="input-group">
        <label for="advisor-fee">
          Additional Fees (optional)
          <span class="help-text">Robo-advisor or financial advisor fee</span>
        </label>
        <div class="input-with-suffix">
          <input type="number" id="advisor-fee" value="0" min="0" max="2" step="0.05">
          <span class="suffix">%</span>
        </div>
      </div>
    </div>

    <div class="advanced-options">
      <button type="button" class="toggle-advanced" id="toggle-advanced">
        <span class="toggle-text">⚙️ Advanced Options</span>
        <span class="arrow">▼</span>
      </button>
      <div class="advanced-content" id="advanced-content" style="display: none;">
        <div class="input-grid">
          <div class="input-group">
            <label for="simulations">
              Number of Simulations
              <span class="help-text">More = more accurate (slower)</span>
            </label>
            <select id="simulations">
              <option value="1000">1,000 (Fast)</option>
              <option value="10000" selected>10,000 (Recommended)</option>
              <option value="50000">50,000 (Accurate)</option>
              <option value="100000">100,000 (Very Accurate)</option>
            </select>
          </div>

          <div class="input-group">
            <label for="inflation">
              Inflation Rate
              <span class="help-text">Expected annual inflation</span>
            </label>
            <div class="input-with-suffix">
              <input type="number" id="inflation" value="2.5" min="0" max="10" step="0.1">
              <span class="suffix">%</span>
            </div>
          </div>

          <div class="input-group checkbox-group">
            <label>
              <input type="checkbox" id="fat-tails">
              <span>Enable Fat-Tail Mode</span>
              <span class="help-text">Better models black swan events</span>
            </label>
          </div>

          <div class="input-group" id="dynamic-floor-group" style="display: none;">
            <label for="dynamic-floor">
              Dynamic Floor
              <span class="help-text">% below inflation-adjusted spending</span>
            </label>
            <div class="input-with-suffix">
              <input type="number" id="dynamic-floor" value="2.5" min="0" max="20" step="0.5">
              <span class="suffix">%</span>
            </div>
          </div>

          <div class="input-group" id="dynamic-ceiling-group" style="display: none;">
            <label for="dynamic-ceiling">
              Dynamic Ceiling
              <span class="help-text">% above inflation-adjusted spending</span>
            </label>
            <div class="input-with-suffix">
              <input type="number" id="dynamic-ceiling" value="5.0" min="0" max="20" step="0.5">
              <span class="suffix">%</span>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>

  
  <div class="mc-section">
    <button type="button" class="btn-primary btn-large" id="run-simulation">
      <span class="btn-text">🚀 Run Simulation</span>
      <span class="btn-loading" style="display: none;">⏳ Running...</span>
    </button>
  </div>

  
  <div class="mc-section results-section" id="results-section" style="display: none;">
    <h3>📊 Simulation Results</h3>

    
    <div class="summary-grid">
      <div class="summary-card success">
        <div class="card-header">Median Outcome</div>
        <div class="card-value" id="median-value">$0</div>
        <div class="card-subtitle" id="median-real">$0 real</div>
      </div>

      <div class="summary-card warning">
        <div class="card-header">Worst Case (5th %ile)</div>
        <div class="card-value" id="p5-value">$0</div>
        <div class="card-subtitle" id="p5-real">$0 real</div>
      </div>

      <div class="summary-card info">
        <div class="card-header">Best Case (95th %ile)</div>
        <div class="card-value" id="p95-value">$0</div>
        <div class="card-subtitle" id="p95-real">$0 real</div>
      </div>

      <div class="summary-card" id="depletion-card">
        <div class="card-header">Depletion Risk</div>
        <div class="card-value" id="depletion-prob">0.0%</div>
        <div class="card-subtitle">Chance of running out</div>
      </div>
    </div>

    
    <p class="growth-context" id="growth-context">
      Without withdrawals, your median outcome would be
      <strong id="no-wd-median">$0</strong>
      (<span id="no-wd-median-real">$0 real</span>).
      Your withdrawals cost about
      <strong id="wd-cost">$0</strong>
      of median compound growth over the horizon. <em>That's the real price of retirement spending.</em>
    </p>

    
    <div class="chart-container">
      <h4>Portfolio Growth Over Time</h4>
      <p class="chart-caption">
        The dashed brass line is the <strong>median path with no withdrawals</strong> — your portfolio's pure growth potential against the same market shocks. The gap between it and the solid green median is what your spending costs you, year by year.
      </p>
      <canvas id="growth-chart"></canvas>
    </div>

    <div class="chart-container">
      <h4>Distribution of Final Values</h4>
      <canvas id="distribution-chart"></canvas>
    </div>

    
    <div class="results-table">
      <h4>Detailed Metrics</h4>
      <table>
        <thead>
          <tr>
            <th>Metric</th>
            <th>Nominal Value</th>
            <th>Real Value (Today's $)</th>
          </tr>
        </thead>
        <tbody id="results-table-body">
        </tbody>
      </table>
    </div>

    
    <div class="risk-metrics">
      <h4>Risk Analysis</h4>
      <div class="metrics-grid">
        <div class="metric-item">
          <span class="metric-label">Median Max Drawdown</span>
          <span class="metric-value" id="median-drawdown">0%</span>
        </div>
        <div class="metric-item">
          <span class="metric-label">Worst Drawdown (95th %ile)</span>
          <span class="metric-value" id="worst-drawdown">0%</span>
        </div>
        <div class="metric-item">
          <span class="metric-label">Sharpe Ratio</span>
          <span class="metric-value" id="sharpe-ratio">0.00</span>
        </div>
        <div class="metric-item">
          <span class="metric-label">Sortino Ratio</span>
          <span class="metric-value" id="sortino-ratio">0.00</span>
        </div>
      </div>
    </div>

    
    <div class="risk-metrics">
      <h4>S&P 500 Benchmark Comparison</h4>
      <div class="metrics-grid">
        <div class="metric-item">
          <span class="metric-label">S&P 500 Median (Nominal)</span>
          <span class="metric-value" id="sp500-median">$0</span>
        </div>
        <div class="metric-item">
          <span class="metric-label">S&P 500 Median (Real)</span>
          <span class="metric-value" id="sp500-median-real">$0</span>
        </div>
        <div class="metric-item">
          <span class="metric-label">Beat S&P 500 (Nominal)</span>
          <span class="metric-value" id="beat-sp500">0%</span>
        </div>
        <div class="metric-item">
          <span class="metric-label">Beat S&P 500 (Real)</span>
          <span class="metric-value" id="beat-sp500-real">0%</span>
        </div>
      </div>
    </div>

    
    <div class="risk-metrics">
      <h4>Fee Impact Analysis</h4>
      <div class="metrics-grid">
        <div class="metric-item">
          <span class="metric-label">Blended Expense Ratio</span>
          <span class="metric-value" id="blended-er">0.00%</span>
        </div>
        <div class="metric-item">
          <span class="metric-label">Total Annual Fee</span>
          <span class="metric-value" id="total-fee">0.00%</span>
        </div>
        <div class="metric-item">
          <span class="metric-label">Fee Drag (Total)</span>
          <span class="metric-value" id="fee-drag">0.0%</span>
        </div>
        <div class="metric-item">
          <span class="metric-label">Cost of Fees</span>
          <span class="metric-value" id="fee-cost">$0</span>
        </div>
      </div>
    </div>

    
    <div class="results-table">
      <h4>Withdrawal Analysis (First 10 Years)</h4>
      <table>
        <thead>
          <tr>
            <th>Year</th>
            <th>Average</th>
            <th>Median</th>
            <th>5th %ile</th>
            <th>95th %ile</th>
          </tr>
        </thead>
        <tbody id="withdrawal-table-first">
        </tbody>
      </table>
    </div>

    <div class="results-table">
      <h4>Withdrawal Analysis (Last 10 Years)</h4>
      <table>
        <thead>
          <tr>
            <th>Year</th>
            <th>Average</th>
            <th>Median</th>
            <th>5th %ile</th>
            <th>95th %ile</th>
          </tr>
        </thead>
        <tbody id="withdrawal-table-last">
        </tbody>
      </table>
    </div>

    
    <div class="risk-metrics">
      <h4>Goal Probability Analysis</h4>
      <p style="margin-bottom: 1rem; color: var(--mc-text-secondary);">Probability of reaching target by end of simulation:</p>
      <div class="metrics-grid">
        <div class="metric-item">
          <span class="metric-label">$1.5M</span>
          <span class="metric-value" id="goal-1500000">0%</span>
        </div>
        <div class="metric-item">
          <span class="metric-label">$2M</span>
          <span class="metric-value" id="goal-2000000">0%</span>
        </div>
        <div class="metric-item">
          <span class="metric-label">$3M</span>
          <span class="metric-value" id="goal-3000000">0%</span>
        </div>
        <div class="metric-item">
          <span class="metric-label">$5M</span>
          <span class="metric-value" id="goal-5000000">0%</span>
        </div>
        <div class="metric-item">
          <span class="metric-label">$10M</span>
          <span class="metric-value" id="goal-10000000">0%</span>
        </div>
      </div>
    </div>

    
    <div class="export-buttons">
      <button type="button" class="btn-secondary" id="export-csv">
        📥 Export to CSV
      </button>
      <button type="button" class="btn-secondary" id="copy-results">
        📋 Copy Results
      </button>
    </div>
  </div>

  
  <details class="mc-methodology">
    <summary>📐 Methodology &amp; assumptions</summary>
    <div class="mc-methodology-body">
      <h4>Engine</h4>
      <ul>
        <li><strong>Monthly Geometric Brownian Motion</strong> per asset, log-normal compounding (<code>value &times; exp(r)</code>) so portfolios can't go below zero.</li>
        <li><strong>Cholesky-decomposed correlation matrix</strong> drives correlated monthly returns across the assets in the chosen portfolio.</li>
        <li><strong>Fat-tail mode</strong> swaps Normal for Student's t (df=5) with variance correction.</li>
        <li><strong>Annual rebalance</strong> at year-end. Per-asset withdrawals are taken at target weights, which has a monthly partial-rebalance side effect.</li>
      </ul>
      <h4>What the metrics actually measure</h4>
      <ul>
        <li><strong>Median / 5th / 95th percentile</strong> — distribution of terminal portfolio values across paths.</li>
        <li><strong>Depletion risk</strong> — share of paths where terminal value &lt; $1.</li>
        <li><strong>Sharpe / Sortino</strong> — per-path risk-adjusted return computed from each simulation's gross monthly portfolio returns (annualized), then averaged across paths. <em>Not</em> a cross-path outcome-dispersion proxy.</li>
        <li><strong>Max drawdown</strong> — peak-to-trough decline of portfolio value <em>including withdrawals</em>. For retirees this conflates market loss with normal liquidation; expect drawdowns to climb over a long horizon even in benign markets.</li>
        <li><strong>P(beat S&amp;P 500)</strong> — the SP500 path shares VTI's correlated monthly shock (empirical ρ≈0.98) so the comparison happens in the same market state, not parallel universes.</li>
      </ul>
      <h4>Assumptions you should know about</h4>
      <ul>
        <li>Expected returns and volatilities are <strong>conservative empirical estimates</strong> (2000-2025 monthly data for US/intl equities, bonds, REITs, TIPS, gold). Bond and TIPS volatility have been bumped to ~4.5-5% to match empirical, not the textbook 3%.</li>
        <li><strong>No taxes.</strong> Withdrawals are pre-tax. Your real spending power depends on your jurisdiction.</li>
        <li><strong>No cash buffer mechanic.</strong> Real retirees often hold 1-2 years cash; not modelled. Biases outcomes slightly worse than reality for disciplined defenders.</li>
        <li><strong>Asset correlations are historical.</strong> Equity/long-bond correlation, in particular, has trended positive since 2022; the simulator uses a benign-decade prior. Treat Golden Butterfly's downside numbers as optimistic.</li>
      </ul>
      <p class="mc-methodology-note">
        Plan from the 5th percentile, not the median. Stack a regime-change haircut on top before sizing your spending. Monte Carlo is a stress test, not a forecast.
      </p>
    </div>
  </details>
</div>


<style>
:root {
  --mc-bg-primary: #ffffff;
  --mc-bg-secondary: #f9fafb;
  --mc-border: #e5e7eb;
  --mc-text-primary: #1f2937;
  --mc-text-secondary: #6b7280;
  --mc-card-bg: #ffffff;
  --mc-card-selected-bg: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
  --mc-card-recommended-bg: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
  --mc-primary-color: #2563eb;
  --mc-success-color: #22c55e;
  --mc-warning-color: #f59e0b;
  --mc-danger-color: #ef4444;
  --mc-input-bg: #ffffff;
  --mc-input-border: #d1d5db;
  --mc-button-bg: #2563eb;
  --mc-button-text: #ffffff;
  --mc-button-hover-bg: #1d4ed8;
}

.dark {
  --mc-bg-primary: #1a202c;
  --mc-bg-secondary: #2d3748;
  --mc-border: #4a5568;
  --mc-text-primary: #e5e7eb;
  --mc-text-secondary: #9ca3af;
  --mc-card-bg: #2d3748;
  --mc-card-selected-bg: linear-gradient(135deg, #1e3a5f 0%, #2d4a7c 100%);
  --mc-card-recommended-bg: linear-gradient(135deg, #1e3a5f 0%, #2563eb 100%);
  --mc-primary-color: #3b82f6;
  --mc-success-color: #10b981;
  --mc-warning-color: #f59e0b;
  --mc-danger-color: #ef4444;
  --mc-input-bg: #1a202c;
  --mc-input-border: #4a5568;
  --mc-button-bg: #3b82f6;
  --mc-button-text: #ffffff;
  --mc-button-hover-bg: #2563eb;
}

.monte-carlo-calculator {
  max-width: 1200px;
  margin: 2rem auto;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
  background: var(--mc-bg-primary);
  color: var(--mc-text-primary);
}

.mc-header {
  text-align: center;
  margin-bottom: 2rem;
}

.mc-header h2 {
  font-size: 2rem;
  margin-bottom: 0.5rem;
  color: var(--mc-text-primary);
}

.mc-subtitle {
  color: var(--mc-text-secondary);
  font-size: 1.1rem;
}

.mc-section {
  border-radius: 12px;
  padding: 2rem;
  margin-bottom: 1.5rem;
}

.mc-section h3 {
  margin-top: 0;
  margin-bottom: 1.5rem;
  color: var(--mc-text-primary);
  font-size: 1.5rem;
}

 
.portfolio-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 1rem;
}

.portfolio-card {
  background: var(--mc-card-bg);
  border: 2px solid var(--mc-border);
  border-radius: 8px;
  padding: 1rem;
  cursor: pointer;
  transition: all 0.3s ease;
}

.portfolio-card:hover {
  border-color: var(--mc-primary-color);
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

.portfolio-card.selected {
  border-color: var(--mc-primary-color);
  background: var(--mc-card-selected-bg);
}

.portfolio-card.recommended:not(.selected) {
  border-color: var(--mc-border);
}

.portfolio-card.recommended .recommended-badge {
  background: var(--mc-primary-color);
  color: white;
  padding: 0.125rem 0.5rem;
  border-radius: 4px;
  font-size: 0.75rem;
  margin-left: 0.5rem;
}

.portfolio-header {
  display: flex;
  align-items: center;
  margin-bottom: 0.75rem;
}

.portfolio-header input[type="radio"] {
  display: none;
}

.portfolio-header label {
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 1rem;
  flex: 1;
}

.badge {
  font-size: 0.75rem;
  padding: 0.25rem 0.5rem;
  border-radius: 4px;
  background: var(--mc-border);
  color: var(--mc-text-primary);
  font-weight: 500;
}

.recommended-badge {
  background: var(--mc-primary-color);
  color: white;
}

.portfolio-desc {
  font-size: 0.875rem;
  color: var(--mc-text-secondary);
  margin-bottom: 0.5rem;
}

.portfolio-assets {
  list-style: none;
  padding: 0;
  margin: 0.5rem 0;
  font-size: 0.875rem;
  color: var(--mc-text-primary);
}

.portfolio-assets li {
  margin: 0.25rem 0;
}

.portfolio-stats {
  display: flex;
  justify-content: space-between;
  margin-top: 0.75rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--mc-border);
  font-size: 0.75rem;
  color: var(--mc-text-secondary);
}

 
.input-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 1.5rem;
}

.input-group {
  display: flex;
  flex-direction: column;
}

.input-group label {
  font-weight: 600;
  margin-bottom: 0.5rem;
  color: var(--mc-text-primary);
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.help-text {
  font-size: 0.75rem;
  font-weight: 400;
  color: var(--mc-text-secondary);
}

.input-with-prefix,
.input-with-suffix {
  display: flex;
  align-items: center;
  background: var(--mc-input-bg);
  border: 1px solid var(--mc-input-border);
  border-radius: 6px;
  overflow: hidden;
}

.prefix,
.suffix {
  padding: 0.75rem;
  background: var(--mc-bg-secondary);
  color: var(--mc-text-secondary);
  font-weight: 600;
}

.input-with-prefix input,
.input-with-suffix input {
  flex: 1;
  border: none;
  padding: 0.75rem;
  font-size: 1rem;
}

input[type="number"],
select {
  padding: 0.75rem;
  border: 1px solid var(--mc-input-border);
  border-radius: 6px;
  font-size: 1rem;
  background: var(--mc-input-bg);
  color: var(--mc-text-primary);
}

input:focus,
select:focus {
  outline: none;
  border-color: var(--mc-primary-color);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}

 
.toggle-advanced {
  background: none;
  border: none;
  color: var(--mc-primary-color);
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 1rem;
  padding: 0.5rem 0;
  margin-bottom: 1rem;
  text-decoration: none !important;
}

.toggle-advanced span {
  text-decoration: none !important;
}

.toggle-advanced:hover {
  opacity: 0.8;
}

.arrow {
  transition: transform 0.3s ease;
}

.toggle-advanced.active .arrow {
  transform: rotate(180deg);
}

.toggle-advanced.active,
.toggle-advanced.active span,
.toggle-advanced .toggle-text {
  text-decoration: none !important;
}

.toggle-advanced.active .toggle-text {
  text-decoration: none !important;
}

.checkbox-group label {
  flex-direction: row;
  align-items: center;
  gap: 0.5rem;
}

.checkbox-group input[type="checkbox"] {
  width: 1.25rem;
  height: 1.25rem;
  cursor: pointer;
  accent-color: var(--mc-primary-color);
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  border: 2px solid var(--mc-border);
  border-radius: 4px;
  background-color: var(--mc-bg);
  position: relative;
  transition: all 0.2s ease;
}

.checkbox-group input[type="checkbox"]:checked {
  background-color: var(--mc-primary-color);
  border-color: var(--mc-primary-color);
}

.checkbox-group input[type="checkbox"]:checked::after {
  content: '✓';
  position: absolute;
  color: white;
  font-size: 1rem;
  font-weight: bold;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.checkbox-group input[type="checkbox"]:focus {
  outline: 2px solid var(--mc-primary-color);
  outline-offset: 2px;
}

 
.btn-primary,
.btn-secondary {
  padding: 1rem 2rem;
  border: none;
  border-radius: 8px;
  font-size: 1rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.3s ease;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
}

.btn-primary {
  background: var(--mc-button-bg);
  color: var(--mc-button-text);
  width: 100%;
}

.btn-primary:hover:not(:disabled) {
  background: var(--mc-button-hover-bg);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);
}

.btn-primary:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

.btn-secondary {
  background: var(--mc-card-bg);
  color: var(--mc-text-primary);
  border: 1px solid var(--mc-input-border);
}

.btn-secondary:hover {
  background: var(--mc-bg-secondary);
}

.btn-large {
  font-size: 1.25rem;
  padding: 1.25rem 2.5rem;
}

 
.summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1rem;
  margin-bottom: 2rem;
}

.summary-card {
  background: var(--mc-card-bg);
  border: 2px solid var(--mc-border);
  border-radius: 8px;
  padding: 1.5rem;
  text-align: center;
}

.summary-card.success {
  border-color: var(--mc-success-color);
  background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%);
}

.dark .summary-card.success {
  background: linear-gradient(135deg, #064e3b 0%, #065f46 100%);
}

.summary-card.warning {
  border-color: var(--mc-warning-color);
  background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%);
}

.dark .summary-card.warning {
  background: linear-gradient(135deg, #78350f 0%, #92400e 100%);
}

.summary-card.info {
  border-color: var(--mc-primary-color);
  background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
}

.dark .summary-card.info {
  background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 100%);
}

.card-header {
  font-size: 0.875rem;
  color: var(--mc-text-secondary);
  margin-bottom: 0.5rem;
  font-weight: 600;
}

.card-value {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--mc-text-primary);
  margin-bottom: 0.25rem;
}

.card-subtitle {
  font-size: 0.875rem;
  color: var(--mc-text-secondary);
}

 
.chart-container {
  background: white;
  border: 1px solid var(--color-neutral-200, #e5e7eb);
  border-radius: 8px;
  padding: 1.5rem;
  margin-bottom: 1.5rem;
}

.chart-container h4 {
  margin-top: 0;
  margin-bottom: 0.5rem;
  color: var(--color-neutral-800, #1f2937);
}

.chart-caption {
  margin: 0 0 1rem;
  font-size: 0.85rem;
  line-height: 1.5;
  color: var(--mc-text-secondary);
}

.chart-caption strong {
  color: #8a6f2c;
  font-weight: 600;
}

.chart-container canvas {
  max-height: 500px !important;
  height: 500px !important;
}

 
.results-table {
  background: white;
  border: 1px solid var(--color-neutral-200, #e5e7eb);
  border-radius: 8px;
  padding: 1.5rem;
  margin-bottom: 1.5rem;
  overflow-x: auto;
}

table {
  width: 100%;
  border-collapse: collapse;
}

thead th {
  background: var(--color-neutral-100, #f3f4f6);
  padding: 0.75rem;
  text-align: left;
  font-weight: 600;
  color: var(--color-neutral-700, #374151);
  border-bottom: 2px solid var(--color-neutral-300, #d1d5db);
}

tbody td {
  padding: 0.75rem;
  border-bottom: 1px solid var(--color-neutral-200, #e5e7eb);
}

tbody tr:hover {
  background: var(--color-neutral-50, #f9fafb);
}

 
.risk-metrics {
  background: white;
  border: 1px solid var(--color-neutral-200, #e5e7eb);
  border-radius: 8px;
  padding: 1.5rem;
  margin-bottom: 1.5rem;
}

.metrics-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1.5rem;
}

.metric-item {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.metric-label {
  font-size: 0.875rem;
  color: var(--color-neutral-600, #6b7280);
  font-weight: 500;
}

.metric-value {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--color-neutral-900, #111827);
}

 
.export-buttons {
  display: flex;
  gap: 1rem;
  justify-content: center;
  flex-wrap: wrap;
}

 
.growth-context {
  background: var(--mc-bg-secondary);
  border-left: 3px solid var(--mc-primary-color);
  padding: 1rem 1.25rem;
  margin: 0 0 2rem;
  border-radius: 0 6px 6px 0;
  color: var(--mc-text-primary);
  font-size: 0.95rem;
  line-height: 1.55;
}

.growth-context strong {
  color: var(--mc-primary-color);
  font-weight: 700;
}

.growth-context em {
  color: var(--mc-text-secondary);
  font-style: italic;
}

 
.mc-methodology {
  margin-top: 2rem;
  border: 1px solid var(--mc-border);
  border-radius: 8px;
  background: var(--mc-card-bg);
  padding: 0.75rem 1rem;
}

.mc-methodology > summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--mc-text-primary);
  padding: 0.25rem 0;
  list-style: none;
}

.mc-methodology > summary::-webkit-details-marker { display: none; }

.mc-methodology > summary::before {
  content: '▸';
  display: inline-block;
  margin-right: 0.5rem;
  transition: transform 0.2s ease;
  color: var(--mc-text-secondary);
}

.mc-methodology[open] > summary::before {
  transform: rotate(90deg);
}

.mc-methodology-body {
  padding-top: 0.75rem;
  font-size: 0.9rem;
  color: var(--mc-text-secondary);
  line-height: 1.55;
}

.mc-methodology-body h4 {
  color: var(--mc-text-primary);
  font-size: 0.95rem;
  margin: 1rem 0 0.5rem;
}

.mc-methodology-body h4:first-of-type { margin-top: 0; }

.mc-methodology-body ul {
  margin: 0 0 0.5rem 1.25rem;
  padding: 0;
}

.mc-methodology-body li {
  margin-bottom: 0.4rem;
}

.mc-methodology-body code {
  background: var(--mc-bg-secondary);
  padding: 0.05rem 0.35rem;
  border-radius: 3px;
  font-size: 0.85em;
}

.mc-methodology-note {
  margin-top: 1rem;
  padding: 0.75rem 1rem;
  background: var(--mc-bg-secondary);
  border-left: 3px solid var(--mc-primary-color);
  border-radius: 0 4px 4px 0;
  font-style: italic;
}

 
@media (max-width: 768px) {
  .portfolio-grid {
    grid-template-columns: 1fr;
  }

  .input-grid {
    grid-template-columns: 1fr;
  }

  .summary-grid {
    grid-template-columns: 1fr;
  }

  .metrics-grid {
    grid-template-columns: 1fr;
  }
}

 
@media (prefers-color-scheme: dark) {
  .mc-header h2,
  .mc-section h3,
  .card-value,
  .metric-value {
    color: var(--color-neutral-100, #f3f4f6);
  }

  .mc-subtitle,
  .portfolio-desc,
  .card-subtitle,
  .metric-label {
    color: var(--color-neutral-400, #9ca3af);
  }

  .mc-section,
  .portfolio-card,
  .summary-card,
  .chart-container,
  .results-table,
  .risk-metrics {
    background: var(--color-neutral-800, #1f2937);
    border-color: var(--color-neutral-700, #374151);
  }

  input,
  select {
    background: var(--color-neutral-700, #374151);
    color: var(--color-neutral-100, #f3f4f6);
    border-color: var(--color-neutral-600, #4b5563);
  }
}
</style>


<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>


<script>
(function() {
  'use strict';

  
  const PORTFOLIOS = {
    1: {
      name: 'Dividend-Focused Portfolio',
      assets: {
        'VTI': {arithMean: 0.10, sd: 0.17, weight: 0.35, er: 0.0003},
        'SCHG': {arithMean: 0.105, sd: 0.18, weight: 0.15, er: 0.0004},
        'SCHD': {arithMean: 0.105, sd: 0.17, weight: 0.30, er: 0.0006},
        'SGOV': {arithMean: 0.04, sd: 0.02, weight: 0.20, er: 0.0009}
      },
      correlation: [
        [1.00, 0.90, 0.80, 0.10],
        [0.90, 1.00, 0.70, 0.10],
        [0.80, 0.70, 1.00, 0.15],
        [0.10, 0.10, 0.15, 1.00]
      ]
    },
    2: {
      name: 'Classic Three-Fund Bogleheads',
      assets: {
        'VTI': {arithMean: 0.10, sd: 0.17, weight: 0.54, er: 0.0003},
        'VXUS': {arithMean: 0.08, sd: 0.18, weight: 0.26, er: 0.0007},
        'BND': {arithMean: 0.04, sd: 0.045, weight: 0.20, er: 0.0003}
      },
      correlation: [
        [1.00, 0.85, 0.15],
        [0.85, 1.00, 0.10],
        [0.15, 0.10, 1.00]
      ]
    },
    3: {
      name: 'Golden Butterfly (All-Weather)',
      assets: {
        'VTI': {arithMean: 0.10, sd: 0.17, weight: 0.30, er: 0.0003},
        'VXUS': {arithMean: 0.08, sd: 0.18, weight: 0.10, er: 0.0007},
        'SHY': {arithMean: 0.025, sd: 0.01, weight: 0.20, er: 0.0015},
        'TLT': {arithMean: 0.05, sd: 0.12, weight: 0.20, er: 0.0015},
        'GLD': {arithMean: 0.045, sd: 0.16, weight: 0.20, er: 0.0040}
      },
      correlation: [
        [1.00, 0.85, 0.10, -0.05, 0.00],
        [0.85, 1.00, 0.10, -0.05, 0.00],
        [0.10, 0.10, 1.00, 0.40, 0.05],
        [-0.05, -0.05, 0.40, 1.00, 0.10],
        [0.00, 0.00, 0.05, 0.10, 1.00]
      ]
    },
    4: {
      name: 'Modern Bogleheads (TIPS & REITs)',
      assets: {
        'VTI': {arithMean: 0.10, sd: 0.17, weight: 0.40, er: 0.0003},
        'VXUS': {arithMean: 0.08, sd: 0.18, weight: 0.20, er: 0.0007},
        'VNQ': {arithMean: 0.09, sd: 0.23, weight: 0.10, er: 0.0012},
        'VTIP': {arithMean: 0.03, sd: 0.05, weight: 0.15, er: 0.0004},
        'BND': {arithMean: 0.04, sd: 0.045, weight: 0.15, er: 0.0003}
      },
      correlation: [
        [1.00, 0.85, 0.75, 0.10, 0.15],
        [0.85, 1.00, 0.70, 0.10, 0.10],
        [0.75, 0.70, 1.00, 0.20, 0.20],
        [0.10, 0.10, 0.20, 1.00, 0.70],
        [0.15, 0.10, 0.20, 0.70, 1.00]
      ]
    }
  };

  
  function arithmeticToGeometric(arithMean, sd) {
    return arithMean - (sd * sd) / 2;
  }

  function normalRandom() {
    
    let u = 0, v = 0;
    while(u === 0) u = Math.random();
    while(v === 0) v = Math.random();
    return Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v);
  }

  
  function studentTRandom(df) {
    
    const z = normalRandom();
    let chiSq = 0;
    for (let i = 0; i < df; i++) {
      const n = normalRandom();
      chiSq += n * n;
    }
    return z / Math.sqrt(chiSq / df);
  }

  function choleskyDecomposition(matrix) {
    const n = matrix.length;
    const L = Array(n).fill(0).map(() => Array(n).fill(0));

    for (let i = 0; i < n; i++) {
      for (let j = 0; j <= i; j++) {
        let sum = 0;
        for (let k = 0; k < j; k++) {
          sum += L[i][k] * L[j][k];
        }

        if (i === j) {
          L[i][j] = Math.sqrt(Math.max(0, matrix[i][i] - sum));
        } else {
          L[i][j] = (matrix[i][j] - sum) / (L[j][j] || 1);
        }
      }
    }

    return L;
  }

  function multiplyMatrixVector(matrix, vector) {
    return matrix.map(row =>
      row.reduce((sum, val, i) => sum + val * vector[i], 0)
    );
  }

  function percentile(arr, p) {
    const sorted = [...arr].sort((a, b) => a - b);
    const index = (p / 100) * (sorted.length - 1);
    const lower = Math.floor(index);
    const upper = Math.ceil(index);
    const weight = index % 1;

    if (lower === upper) return sorted[lower];
    return sorted[lower] * (1 - weight) + sorted[upper] * weight;
  }

  
  function runSimulation(params) {
    const portfolio = PORTFOLIOS[params.portfolioId];
    const assets = Object.values(portfolio.assets);
    const assetNames = Object.keys(portfolio.assets);
    const nAssets = assets.length;

    
    const weights = assets.map(a => a.weight);
    const geometricReturns = assets.map(a => arithmeticToGeometric(a.arithMean, a.sd));
    const stdDevs = assets.map(a => a.sd);
    const expenseRatios = assets.map(a => a.er);

    const blendedER = expenseRatios.reduce((sum, er, i) => sum + er * weights[i], 0);
    const totalFee = blendedER + params.advisorFee;
    const netReturns = geometricReturns.map(r => r - totalFee);

    
    const grossReturn = geometricReturns.reduce((sum, r, i) => sum + r * weights[i], 0);
    const portfolioNetReturn = netReturns.reduce((sum, r, i) => sum + r * weights[i], 0);

    
    
    
    
    
    
    const correlation = portfolio.correlation;
    const cholesky = choleskyDecomposition(correlation);

    
    const SP500_PROXY = {
      mean: arithmeticToGeometric(0.10, 0.16),
      sd: 0.16,
      er: 0.0003
    };
    const sp500MeanAfterFees = SP500_PROXY.mean - SP500_PROXY.er - params.advisorFee;

    
    const nMonths = params.years * 12;
    const DEPLETION_THRESHOLD = 1.0;
    const initialAnnualWithdrawal = params.initialValue * params.withdrawalRate;

    
    const finalValues = [];
    const finalSP500Values = [];
    const finalNoWithdrawalValues = []; 
    const annualValuesOverTime = [];
    const annualNoWithdrawalValuesOverTime = []; 
    const annualSP500ValuesOverTime = [];
    const annualWithdrawalsHistory = [];
    const maxDrawdowns = [];
    const sp500MaxDrawdowns = [];
    const pathSharpes = [];  
    const pathSortinos = []; 

    
    
    
    
    const SP500_VTI_CORR = 0.98;
    const SP500_INDEP_WEIGHT = Math.sqrt(1 - SP500_VTI_CORR * SP500_VTI_CORR);

    
    for (let sim = 0; sim < params.nSimulations; sim++) {
      let assetValues = weights.map(w => params.initialValue * w);
      let noWithdrawalAssetValues = weights.map(w => params.initialValue * w);
      let sp500Value = params.initialValue;
      const monthlyValues = [params.initialValue];
      const monthlyNoWithdrawalValues = [params.initialValue];
      const monthlySP500Values = [params.initialValue];
      const monthlyWithdrawals = [];
      const monthlySP500Withdrawals = [];
      const pathMonthlyReturns = []; 
      let maxValue = params.initialValue;
      let maxSP500Value = params.initialValue;
      let maxDD = 0;
      let maxSP500DD = 0;
      let lastYearSpending = initialAnnualWithdrawal;
      let lastYearSP500Spending = initialAnnualWithdrawal;
      let currentYearWithdrawal = initialAnnualWithdrawal;
      let currentYearSP500Withdrawal = initialAnnualWithdrawal;

      
      const monthlyNetReturns = netReturns.map(r => r / 12);
      const monthlyStdDevs = stdDevs.map(sd => sd / Math.sqrt(12));
      const monthlySP500Mean = sp500MeanAfterFees / 12;
      const monthlySP500Sd = SP500_PROXY.sd / Math.sqrt(12);

      
      for (let month = 0; month < nMonths; month++) {
        const yearIndex = Math.floor(month / 12);
        const monthInYear = month % 12;

        
        let monthlyReturns, monthlySP500Return;

        
        
        
        let vtiStandardizedZ;
        let tScale = 1;

        if (params.fatTails) {
          
          tScale = Math.sqrt(5 / (5 - 2));
          const z = Array(nAssets).fill(0).map(() => studentTRandom(5));
          const correlatedZ = multiplyMatrixVector(cholesky, z);
          monthlyReturns = correlatedZ.map((cz, i) => {
            const scaledZ = cz / tScale;
            return monthlyNetReturns[i] + scaledZ * monthlyStdDevs[i];
          });
          vtiStandardizedZ = correlatedZ[0] / tScale;

          const sp500IndepZ = studentTRandom(5) / tScale;
          const sp500Shock = SP500_VTI_CORR * vtiStandardizedZ
                           + SP500_INDEP_WEIGHT * sp500IndepZ;
          monthlySP500Return = monthlySP500Mean + sp500Shock * monthlySP500Sd;
        } else {
          
          const z = Array(nAssets).fill(0).map(() => normalRandom());
          const correlatedZ = multiplyMatrixVector(cholesky, z);
          monthlyReturns = correlatedZ.map((cz, i) => monthlyNetReturns[i] + cz * monthlyStdDevs[i]);
          vtiStandardizedZ = correlatedZ[0];

          const sp500IndepZ = normalRandom();
          const sp500Shock = SP500_VTI_CORR * vtiStandardizedZ
                           + SP500_INDEP_WEIGHT * sp500IndepZ;
          monthlySP500Return = monthlySP500Mean + sp500Shock * monthlySP500Sd;
        }

        
        
        
        const grossPortfolioReturn = monthlyReturns.reduce(
          (sum, r, i) => sum + r * weights[i], 0
        );
        pathMonthlyReturns.push(grossPortfolioReturn);

        
        
        
        
        
        monthlyReturns = monthlyReturns.map(r => Math.max(-1.0, Math.min(1.0, r)));
        monthlySP500Return = Math.max(-1.0, Math.min(1.0, monthlySP500Return));

        assetValues = assetValues.map((val, i) => val * Math.exp(monthlyReturns[i]));
        noWithdrawalAssetValues = noWithdrawalAssetValues.map(
          (val, i) => val * Math.exp(monthlyReturns[i])
        );
        sp500Value *= Math.exp(monthlySP500Return);

        let portfolioValue = assetValues.reduce((sum, val) => sum + val, 0);

        
        if (monthInYear === 0) {
          if (params.withdrawalStrategy === 'constant') {
            
            currentYearWithdrawal = initialAnnualWithdrawal * Math.pow(1 + params.inflation, yearIndex);
            currentYearSP500Withdrawal = currentYearWithdrawal;
          } else {
            
            if (yearIndex === 0) {
              currentYearWithdrawal = portfolioValue * params.withdrawalRate;
              currentYearSP500Withdrawal = sp500Value * params.withdrawalRate;
            } else {
              
              const rawSpending = portfolioValue * params.withdrawalRate;
              const inflationAdjustedLast = lastYearSpending * (1 + params.inflation);
              const floor = inflationAdjustedLast * (1 - params.dynamicFloor);
              const ceiling = inflationAdjustedLast * (1 + params.dynamicCeiling);
              currentYearWithdrawal = Math.max(floor, Math.min(ceiling, rawSpending));

              
              const rawSP500Spending = sp500Value * params.withdrawalRate;
              const inflationAdjustedLastSP500 = lastYearSP500Spending * (1 + params.inflation);
              const floorSP500 = inflationAdjustedLastSP500 * (1 - params.dynamicFloor);
              const ceilingSP500 = inflationAdjustedLastSP500 * (1 + params.dynamicCeiling);
              currentYearSP500Withdrawal = Math.max(floorSP500, Math.min(ceilingSP500, rawSP500Spending));
            }
            lastYearSpending = currentYearWithdrawal;
            lastYearSP500Spending = currentYearSP500Withdrawal;
          }
        }

        
        const monthlyWithdrawalAmount = currentYearWithdrawal / 12;
        const monthlySP500WithdrawalAmount = currentYearSP500Withdrawal / 12;

        const withdrawal = Math.min(monthlyWithdrawalAmount, portfolioValue);
        const sp500Withdrawal = Math.min(monthlySP500WithdrawalAmount, sp500Value);

        monthlyWithdrawals.push(withdrawal);
        monthlySP500Withdrawals.push(sp500Withdrawal);

        
        assetValues = assetValues.map((val, i) =>
          Math.max(0, val - withdrawal * weights[i])
        );
        sp500Value = Math.max(0, sp500Value - sp500Withdrawal);

        portfolioValue = assetValues.reduce((sum, val) => sum + val, 0);

        
        if (monthInYear === 11 && portfolioValue > 0) {
          assetValues = weights.map(w => portfolioValue * w);
        }
        
        
        
        if (monthInYear === 11) {
          const noWPV = noWithdrawalAssetValues.reduce((s, v) => s + v, 0);
          if (noWPV > 0) {
            noWithdrawalAssetValues = weights.map(w => noWPV * w);
          }
        }

        monthlyValues.push(portfolioValue);
        monthlyNoWithdrawalValues.push(
          noWithdrawalAssetValues.reduce((s, v) => s + v, 0)
        );
        monthlySP500Values.push(sp500Value);

        
        maxValue = Math.max(maxValue, portfolioValue);
        maxSP500Value = Math.max(maxSP500Value, sp500Value);
        const drawdown = maxValue > 0 ? (maxValue - portfolioValue) / maxValue : 0;
        const sp500Drawdown = maxSP500Value > 0 ? (maxSP500Value - sp500Value) / maxSP500Value : 0;
        maxDD = Math.max(maxDD, drawdown);
        maxSP500DD = Math.max(maxSP500DD, sp500Drawdown);
      }

      
      const annualValues = [params.initialValue];
      const annualNoWithdrawalValues = [params.initialValue];
      const annualSP500Values = [params.initialValue];
      const annualWithdrawals = [];

      for (let year = 0; year < params.years; year++) {
        const startMonth = year * 12;
        const endMonth = startMonth + 12;

        const yearWithdrawal = monthlyWithdrawals.slice(startMonth, endMonth)
          .reduce((sum, w) => sum + w, 0);
        annualWithdrawals.push(yearWithdrawal);

        annualValues.push(monthlyValues[endMonth]);
        annualNoWithdrawalValues.push(monthlyNoWithdrawalValues[endMonth]);
        annualSP500Values.push(monthlySP500Values[endMonth]);
      }

      const finalValue = monthlyValues[monthlyValues.length - 1];
      const finalSP500Value = monthlySP500Values[monthlySP500Values.length - 1];

      finalValues.push(finalValue);
      finalSP500Values.push(finalSP500Value);
      finalNoWithdrawalValues.push(
        noWithdrawalAssetValues.reduce((s, v) => s + v, 0)
      );
      annualValuesOverTime.push(annualValues);
      annualNoWithdrawalValuesOverTime.push(annualNoWithdrawalValues);
      annualSP500ValuesOverTime.push(annualSP500Values);
      annualWithdrawalsHistory.push(annualWithdrawals);
      maxDrawdowns.push(maxDD);
      sp500MaxDrawdowns.push(maxSP500DD);

      
      
      
      
      const monthlyRf = 0.03 / 12;
      const n = pathMonthlyReturns.length;
      const mMean = pathMonthlyReturns.reduce((a, b) => a + b, 0) / n;
      const mVar = pathMonthlyReturns.reduce((s, r) => s + (r - mMean) ** 2, 0) / n;
      const mStd = Math.sqrt(mVar);
      const annualizedExcess = (mMean - monthlyRf) * 12;
      const annualizedStd = mStd * Math.sqrt(12);
      pathSharpes.push(annualizedStd > 0 ? annualizedExcess / annualizedStd : 0);

      
      const downs = pathMonthlyReturns
        .map(r => r - monthlyRf)
        .filter(d => d < 0);
      const downVar = downs.reduce((s, d) => s + d * d, 0) / n; 
      const downStd = Math.sqrt(downVar) * Math.sqrt(12);
      pathSortinos.push(downStd > 0 ? annualizedExcess / downStd : Infinity);
    }

    
    const inflationAdjustor = Math.pow(1 + params.inflation, params.years);
    const finalRealValues = finalValues.map(v => v / inflationAdjustor);
    const finalSP500RealValues = finalSP500Values.map(v => v / inflationAdjustor);

    
    const sharpeRatio = pathSharpes.reduce((a, b) => a + b, 0) / pathSharpes.length;
    const finiteSortinos = pathSortinos.filter(s => Number.isFinite(s));
    const sortinoRatio = finiteSortinos.length > 0
      ? finiteSortinos.reduce((a, b) => a + b, 0) / finiteSortinos.length
      : Infinity;

    
    const sp500MedianNominal = percentile(finalSP500Values, 50);
    const sp500MedianReal = percentile(finalSP500RealValues, 50);
    const probBeatSP500Nominal = finalValues.filter((v, i) => v > finalSP500Values[i]).length / finalValues.length;
    const probBeatSP500Real = finalRealValues.filter((v, i) => v > finalSP500RealValues[i]).length / finalRealValues.length;

    
    const goals = [1_500_000, 2_000_000, 3_000_000, 5_000_000, 10_000_000];
    const goalProbabilities = {};
    goals.forEach(goal => {
      goalProbabilities[goal] = finalValues.filter(v => v >= goal).length / finalValues.length;
    });

    
    const feeImpact = Math.pow(1 + grossReturn, params.years) / Math.pow(1 + portfolioNetReturn, params.years) - 1;
    const feeCost = params.initialValue * feeImpact;

    const noWithdrawalMedian = percentile(finalNoWithdrawalValues, 50);
    const noWithdrawalMedianReal = noWithdrawalMedian / inflationAdjustor;
    const withdrawalCostMedian = noWithdrawalMedian - percentile(finalValues, 50);
    const withdrawalCostMedianReal = withdrawalCostMedian / inflationAdjustor;

    const results = {
      median: percentile(finalValues, 50),
      p5: percentile(finalValues, 5),
      p95: percentile(finalValues, 95),
      mean: finalValues.reduce((a, b) => a + b, 0) / finalValues.length,

      noWithdrawalMedian: noWithdrawalMedian,
      noWithdrawalMedianReal: noWithdrawalMedianReal,
      withdrawalCostMedian: withdrawalCostMedian,
      withdrawalCostMedianReal: withdrawalCostMedianReal,

      medianReal: percentile(finalRealValues, 50),
      p5Real: percentile(finalRealValues, 5),
      p95Real: percentile(finalRealValues, 95),
      meanReal: finalRealValues.reduce((a, b) => a + b, 0) / finalRealValues.length,

      depletionProb: finalValues.filter(v => v < DEPLETION_THRESHOLD).length / finalValues.length,

      medianDrawdown: percentile(maxDrawdowns, 50),
      worstDrawdown: percentile(maxDrawdowns, 95),

      sharpeRatio: sharpeRatio,
      sortinoRatio: sortinoRatio,

      
      sp500MedianNominal: sp500MedianNominal,
      sp500MedianReal: sp500MedianReal,
      sp500MedianDrawdown: percentile(sp500MaxDrawdowns, 50),
      probBeatSP500Nominal: probBeatSP500Nominal,
      probBeatSP500Real: probBeatSP500Real,

      
      blendedER: blendedER,
      totalFee: totalFee,
      grossReturn: grossReturn,
      portfolioNetReturn: portfolioNetReturn,
      feeImpact: feeImpact,
      feeCost: feeCost,

      
      goalProbabilities: goalProbabilities,

      valuesOverTime: annualValuesOverTime,
      noWithdrawalValuesOverTime: annualNoWithdrawalValuesOverTime,
      sp500ValuesOverTime: annualSP500ValuesOverTime,
      withdrawalsHistory: annualWithdrawalsHistory,
      finalValues: finalValues,
      finalRealValues: finalRealValues,

      portfolioName: portfolio.name
    };

    return results;
  }

  
  
  
  function computePortfolioGeoReturn(portfolio) {
    const a = Object.values(portfolio.assets);
    const w = a.map(x => x.weight);
    const sd = a.map(x => x.sd);
    const mu = a.map(x => x.arithMean);
    const corr = portfolio.correlation;

    const portArith = mu.reduce((s, m, i) => s + m * w[i], 0);
    let portVar = 0;
    for (let i = 0; i < a.length; i++) {
      for (let j = 0; j < a.length; j++) {
        portVar += w[i] * w[j] * sd[i] * sd[j] * corr[i][j];
      }
    }
    return portArith - portVar / 2;
  }

  
  const UI = {
    init() {
      this.renderExpectedReturns();
      this.bindEvents();
    },

    renderExpectedReturns() {
      document.querySelectorAll('.exp-return-label').forEach(el => {
        const id = parseInt(el.dataset.portfolio);
        const p = PORTFOLIOS[id];
        if (!p) return;
        const geo = computePortfolioGeoReturn(p);
        el.textContent = `Exp Return: ${(geo * 100).toFixed(1)}%`;
      });
    },

    bindEvents() {
      
      document.querySelectorAll('.portfolio-card').forEach(card => {
        card.addEventListener('click', (e) => {
          
          if (e.target.tagName === 'INPUT' || e.target.tagName === 'LABEL') {
            return;
          }

          const radio = card.querySelector('input[type="radio"]');
          if (radio) {
            radio.checked = true;
            
            radio.dispatchEvent(new Event('change'));
          }
        });
      });

      
      document.querySelectorAll('input[name="portfolio"]').forEach(radio => {
        radio.addEventListener('change', (e) => {
          document.querySelectorAll('.portfolio-card').forEach(c => {
            c.classList.remove('selected');
          });
          if (e.target.checked) {
            e.target.closest('.portfolio-card').classList.add('selected');
          }
        });
      });

      
      const checkedRadio = document.querySelector('input[name="portfolio"]:checked');
      if (checkedRadio) {
        checkedRadio.closest('.portfolio-card').classList.add('selected');
      }

      
      const toggleBtn = document.getElementById('toggle-advanced');
      const advancedContent = document.getElementById('advanced-content');
      toggleBtn.addEventListener('click', () => {
        const isVisible = advancedContent.style.display !== 'none';
        advancedContent.style.display = isVisible ? 'none' : 'block';
        toggleBtn.classList.toggle('active', !isVisible);
      });

      
      const withdrawalStrategySelect = document.getElementById('withdrawal-strategy');
      const dynamicFloorGroup = document.getElementById('dynamic-floor-group');
      const dynamicCeilingGroup = document.getElementById('dynamic-ceiling-group');

      withdrawalStrategySelect.addEventListener('change', (e) => {
        const isDynamic = e.target.value === 'dynamic';
        dynamicFloorGroup.style.display = isDynamic ? 'block' : 'none';
        dynamicCeilingGroup.style.display = isDynamic ? 'block' : 'none';

        
        if (isDynamic && advancedContent.style.display === 'none') {
          advancedContent.style.display = 'block';
          toggleBtn.classList.add('active');
        }
      });

      
      document.getElementById('run-simulation').addEventListener('click', () => {
        this.runSimulation();
      });

      
      document.getElementById('export-csv').addEventListener('click', () => {
        this.exportCSV();
      });

      document.getElementById('copy-results').addEventListener('click', () => {
        this.copyResults();
      });
    },

    getParams() {
      const selectedPortfolio = document.querySelector('input[name="portfolio"]:checked');
      if (!selectedPortfolio) {
        throw new Error('Please select a portfolio before running the simulation');
      }

      const withdrawalStrategy = document.getElementById('withdrawal-strategy')?.value || 'constant';
      const isDynamic = withdrawalStrategy === 'dynamic';

      
      
      const num = (id, divisor = 1) => {
        const raw = document.getElementById(id)?.value;
        const v = parseFloat(raw);
        return Number.isFinite(v) ? v / divisor : null;
      };
      const intNum = (id) => {
        const v = parseInt(document.getElementById(id)?.value);
        return Number.isFinite(v) ? v : null;
      };

      const params = {
        portfolioId: parseInt(selectedPortfolio.value),
        initialValue: num('initial-value') ?? 1000000,
        withdrawalRate: num('withdrawal-rate', 100) ?? 0.04,
        withdrawalStrategy: withdrawalStrategy,
        years: intNum('years') ?? 30,
        advisorFee: num('advisor-fee', 100) ?? 0,
        nSimulations: intNum('simulations') ?? 10000,
        inflation: num('inflation', 100) ?? 0.025,
        fatTails: document.getElementById('fat-tails')?.checked ?? false,
        dynamicFloor: isDynamic ? (num('dynamic-floor', 100) ?? 0.025) : 0,
        dynamicCeiling: isDynamic ? (num('dynamic-ceiling', 100) ?? 0.05) : 0
      };

      
      if (isNaN(params.portfolioId) || isNaN(params.initialValue) || isNaN(params.withdrawalRate)) {
        console.error('Invalid params:', params);
        throw new Error('Invalid input values detected');
      }

      return params;
    },

    async runSimulation() {
      const btn = document.getElementById('run-simulation');
      const btnText = btn.querySelector('.btn-text');
      const btnLoading = btn.querySelector('.btn-loading');

      try {
        btn.disabled = true;
        btnText.style.display = 'none';
        btnLoading.style.display = 'inline';

        
        await new Promise(resolve => setTimeout(resolve, 100));

        const params = this.getParams();
        const results = runSimulation(params);

        this.displayResults(results, params);

        
        document.getElementById('results-section').scrollIntoView({ behavior: 'smooth' });
      } catch (error) {
        console.error('Simulation error:', error);
        alert('Error running simulation: ' + error.message + '\n\nPlease check that you have selected a portfolio and all inputs are valid.\n\nCheck browser console (F12) for details.');
      } finally {
        btn.disabled = false;
        btnText.style.display = 'inline';
        btnLoading.style.display = 'none';
      }
    },

    displayResults(results, params) {
      
      document.getElementById('results-section').style.display = 'block';

      
      this.updateCard('median-value', results.median);
      this.updateCard('median-real', results.medianReal, true);
      this.updateCard('p5-value', results.p5);
      this.updateCard('p5-real', results.p5Real, true);
      this.updateCard('p95-value', results.p95);
      this.updateCard('p95-real', results.p95Real, true);

      
      document.getElementById('no-wd-median').textContent =
        this.formatCurrency(results.noWithdrawalMedian);
      document.getElementById('no-wd-median-real').textContent =
        this.formatCurrency(results.noWithdrawalMedianReal) + ' real';
      document.getElementById('wd-cost').textContent =
        this.formatCurrency(results.withdrawalCostMedian);

      
      const depletionCard = document.getElementById('depletion-card');
      const depletionProb = document.getElementById('depletion-prob');
      depletionProb.textContent = (results.depletionProb * 100).toFixed(1) + '%';

      if (results.depletionProb === 0) {
        depletionCard.classList.add('success');
        depletionCard.classList.remove('warning');
      } else if (results.depletionProb < 0.05) {
        depletionCard.classList.add('info');
        depletionCard.classList.remove('warning', 'success');
      } else {
        depletionCard.classList.add('warning');
        depletionCard.classList.remove('success', 'info');
      }

      
      this.updateTable(results, params);

      
      document.getElementById('median-drawdown').textContent =
        (results.medianDrawdown * 100).toFixed(1) + '%';
      document.getElementById('worst-drawdown').textContent =
        (results.worstDrawdown * 100).toFixed(1) + '%';
      document.getElementById('sharpe-ratio').textContent = results.sharpeRatio.toFixed(2);
      document.getElementById('sortino-ratio').textContent =
        isFinite(results.sortinoRatio) ? results.sortinoRatio.toFixed(2) : '∞';

      
      document.getElementById('sp500-median').textContent = this.formatCurrency(results.sp500MedianNominal);
      document.getElementById('sp500-median-real').textContent = this.formatCurrency(results.sp500MedianReal);
      document.getElementById('beat-sp500').textContent = (results.probBeatSP500Nominal * 100).toFixed(1) + '%';
      document.getElementById('beat-sp500-real').textContent = (results.probBeatSP500Real * 100).toFixed(1) + '%';

      
      document.getElementById('blended-er').textContent = (results.blendedER * 100).toFixed(4) + '%';
      document.getElementById('total-fee').textContent = (results.totalFee * 100).toFixed(4) + '%';
      document.getElementById('fee-drag').textContent = (results.feeImpact * 100).toFixed(1) + '%';
      document.getElementById('fee-cost').textContent = this.formatCurrency(results.feeCost);

      
      document.getElementById('goal-1500000').textContent =
        (results.goalProbabilities[1_500_000] * 100).toFixed(1) + '%';
      document.getElementById('goal-2000000').textContent =
        (results.goalProbabilities[2_000_000] * 100).toFixed(1) + '%';
      document.getElementById('goal-3000000').textContent =
        (results.goalProbabilities[3_000_000] * 100).toFixed(1) + '%';
      document.getElementById('goal-5000000').textContent =
        (results.goalProbabilities[5_000_000] * 100).toFixed(1) + '%';
      document.getElementById('goal-10000000').textContent =
        (results.goalProbabilities[10_000_000] * 100).toFixed(1) + '%';

      
      this.updateWithdrawalTables(results, params);

      
      this.drawCharts(results, params);

      
      this.currentResults = results;
      this.currentParams = params;
    },

    updateCard(id, value, isSubtitle = false) {
      const el = document.getElementById(id);
      if (isSubtitle) {
        el.textContent = this.formatCurrency(value) + ' real';
      } else {
        el.textContent = this.formatCurrency(value);
      }
    },

    formatCurrency(value) {
      return '$' + value.toLocaleString('en-US', {
        maximumFractionDigits: 0
      });
    },

    updateTable(results, params) {
      const tbody = document.getElementById('results-table-body');
      tbody.innerHTML = '';

      const rows = [
        ['Average Ending Value', results.mean, results.meanReal],
        ['Median Ending Value', results.median, results.medianReal],
        ['5th Percentile', results.p5, results.p5Real],
        ['95th Percentile', results.p95, results.p95Real]
      ];

      rows.forEach(([metric, nominal, real]) => {
        const tr = document.createElement('tr');
        tr.innerHTML = `
          <td>${metric}</td>
          <td>${this.formatCurrency(nominal)}</td>
          <td>${this.formatCurrency(real)}</td>
        `;
        tbody.appendChild(tr);
      });
    },

    updateWithdrawalTables(results, params) {
      
      const nYears = params.years;
      const withdrawalStats = [];

      for (let year = 0; year < nYears; year++) {
        const withdrawalsAtYear = results.withdrawalsHistory.map(path => path[year]);
        withdrawalStats.push({
          year: year + 1,
          average: withdrawalsAtYear.reduce((a, b) => a + b, 0) / withdrawalsAtYear.length,
          median: percentile(withdrawalsAtYear, 50),
          p5: percentile(withdrawalsAtYear, 5),
          p95: percentile(withdrawalsAtYear, 95)
        });
      }

      
      const firstTableBody = document.getElementById('withdrawal-table-first');
      firstTableBody.innerHTML = '';
      const first10 = withdrawalStats.slice(0, Math.min(10, nYears));

      first10.forEach(stat => {
        const tr = document.createElement('tr');
        tr.innerHTML = `
          <td>${stat.year}</td>
          <td>${this.formatCurrency(stat.average)}</td>
          <td>${this.formatCurrency(stat.median)}</td>
          <td>${this.formatCurrency(stat.p5)}</td>
          <td>${this.formatCurrency(stat.p95)}</td>
        `;
        firstTableBody.appendChild(tr);
      });

      
      const lastTableBody = document.getElementById('withdrawal-table-last');
      lastTableBody.innerHTML = '';
      const last10 = withdrawalStats.slice(Math.max(0, nYears - 10));

      last10.forEach(stat => {
        const tr = document.createElement('tr');
        tr.innerHTML = `
          <td>${stat.year}</td>
          <td>${this.formatCurrency(stat.average)}</td>
          <td>${this.formatCurrency(stat.median)}</td>
          <td>${this.formatCurrency(stat.p5)}</td>
          <td>${this.formatCurrency(stat.p95)}</td>
        `;
        lastTableBody.appendChild(tr);
      });
    },

    drawCharts(results, params) {
      this.drawGrowthChart(results, params);
      this.drawDistributionChart(results);
    },

    drawGrowthChart(results, params) {
      const ctx = document.getElementById('growth-chart');

      
      const years = Array.from({length: params.years + 1}, (_, i) => i);
      const p5OverTime = [];
      const p50OverTime = [];
      const p95OverTime = [];
      const noWdMedianOverTime = []; 

      for (let year = 0; year <= params.years; year++) {
        const valuesAtYear = results.valuesOverTime.map(path => path[year]);
        p5OverTime.push(percentile(valuesAtYear, 5));
        p50OverTime.push(percentile(valuesAtYear, 50));
        p95OverTime.push(percentile(valuesAtYear, 95));

        const noWdAtYear = results.noWithdrawalValuesOverTime.map(path => path[year]);
        noWdMedianOverTime.push(percentile(noWdAtYear, 50));
      }

      if (this.growthChart) {
        this.growthChart.destroy();
      }

      this.growthChart = new Chart(ctx, {
        type: 'line',
        data: {
          labels: years,
          datasets: [
            {
              label: 'Median, no withdrawals',
              data: noWdMedianOverTime,
              borderColor: 'rgba(184, 146, 58, 0.85)',  
              backgroundColor: 'rgba(184, 146, 58, 0)',
              borderWidth: 2,
              borderDash: [8, 6],
              pointRadius: 0,
              fill: false,
              tension: 0.15
            },
            {
              label: '95th Percentile',
              data: p95OverTime,
              borderColor: 'rgba(59, 130, 246, 0.8)',
              backgroundColor: 'rgba(59, 130, 246, 0.1)',
              fill: '+1'
            },
            {
              label: 'Median (50th)',
              data: p50OverTime,
              borderColor: 'rgba(16, 185, 129, 0.8)',
              backgroundColor: 'rgba(16, 185, 129, 0.1)',
              borderWidth: 3,
              fill: '+1'
            },
            {
              label: '5th Percentile',
              data: p5OverTime,
              borderColor: 'rgba(245, 158, 11, 0.8)',
              backgroundColor: 'rgba(245, 158, 11, 0.1)',
              fill: false
            }
          ]
        },
        options: {
          responsive: true,
          maintainAspectRatio: false,
          plugins: {
            legend: {
              position: 'top',
            },
            tooltip: {
              callbacks: {
                label: (context) => {
                  return context.dataset.label + ': ' +
                    this.formatCurrency(context.parsed.y);
                }
              }
            }
          },
          scales: {
            y: {
              beginAtZero: true,
              ticks: {
                callback: (value) => this.formatCurrency(value)
              }
            },
            x: {
              title: {
                display: true,
                text: 'Years'
              }
            }
          }
        }
      });
    },

    drawDistributionChart(results) {
      const ctx = document.getElementById('distribution-chart');

      
      const bins = 30;
      const min = Math.min(...results.finalValues);
      const max = Math.max(...results.finalValues);
      const binSize = (max - min) / bins;
      const histogram = Array(bins).fill(0);

      results.finalValues.forEach(value => {
        const binIndex = Math.min(Math.floor((value - min) / binSize), bins - 1);
        histogram[binIndex]++;
      });

      const labels = Array(bins).fill(0).map((_, i) =>
        this.formatCurrency(min + (i + 0.5) * binSize)
      );

      if (this.distributionChart) {
        this.distributionChart.destroy();
      }

      this.distributionChart = new Chart(ctx, {
        type: 'bar',
        data: {
          labels: labels,
          datasets: [{
            label: 'Frequency',
            data: histogram,
            backgroundColor: 'rgba(16, 185, 129, 0.6)',
            borderColor: 'rgba(16, 185, 129, 1)',
            borderWidth: 1
          }]
        },
        options: {
          responsive: true,
          maintainAspectRatio: false,
          plugins: {
            legend: {
              display: false
            }
          },
          scales: {
            y: {
              beginAtZero: true,
              title: {
                display: true,
                text: 'Number of Simulations'
              }
            },
            x: {
              title: {
                display: true,
                text: 'Final Portfolio Value'
              },
              ticks: {
                maxRotation: 45,
                minRotation: 45
              }
            }
          }
        }
      });
    },

    exportCSV() {
      if (!this.currentResults) return;

      const results = this.currentResults;
      const params = this.currentParams;

      let csv = 'Monte Carlo Retirement Simulation Results\n\n';
      csv += `Portfolio,${results.portfolioName}\n`;
      csv += `Initial Value,$${params.initialValue.toLocaleString()}\n`;
      csv += `Withdrawal Rate,${(params.withdrawalRate * 100).toFixed(1)}%\n`;
      csv += `Years,${params.years}\n`;
      csv += `Simulations,${params.nSimulations.toLocaleString()}\n\n`;

      csv += 'Metric,Nominal Value,Real Value\n';
      csv += `Median,${results.median.toFixed(0)},${results.medianReal.toFixed(0)}\n`;
      csv += `5th Percentile,${results.p5.toFixed(0)},${results.p5Real.toFixed(0)}\n`;
      csv += `95th Percentile,${results.p95.toFixed(0)},${results.p95Real.toFixed(0)}\n`;
      csv += `Mean,${results.mean.toFixed(0)},${results.meanReal.toFixed(0)}\n`;
      csv += `Depletion Probability,${(results.depletionProb * 100).toFixed(2)}%\n`;
      csv += `Median Max Drawdown,${(results.medianDrawdown * 100).toFixed(1)}%\n`;

      const blob = new Blob([csv], { type: 'text/csv' });
      const url = window.URL.createObjectURL(blob);
      const a = document.createElement('a');
      a.href = url;
      a.download = 'monte-carlo-results.csv';
      a.click();
    },

    copyResults() {
      if (!this.currentResults) return;

      const results = this.currentResults;
      const params = this.currentParams;

      let text = `Monte Carlo Retirement Simulation Results\n\n`;
      text += `Portfolio: ${results.portfolioName}\n`;
      text += `Initial Value: $${params.initialValue.toLocaleString()}\n`;
      text += `Withdrawal Rate: ${(params.withdrawalRate * 100).toFixed(1)}%\n\n`;
      text += `Median Ending: ${this.formatCurrency(results.median)} (${this.formatCurrency(results.medianReal)} real)\n`;
      text += `5th Percentile: ${this.formatCurrency(results.p5)} (${this.formatCurrency(results.p5Real)} real)\n`;
      text += `95th Percentile: ${this.formatCurrency(results.p95)} (${this.formatCurrency(results.p95Real)} real)\n`;
      text += `Depletion Risk: ${(results.depletionProb * 100).toFixed(1)}%\n`;

      navigator.clipboard.writeText(text).then(() => {
        alert('Results copied to clipboard!');
      });
    }
  };

  
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', () => UI.init());
  } else {
    UI.init();
  }
})();
</script>

<hr>

<h2 class="relative group">How to Use This Calculator
    <div id="how-to-use-this-calculator" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#how-to-use-this-calculator" aria-label="Anchor">#</a>
    </span>
    
</h2>

<h3 class="relative group">Step 1: Choose Your Portfolio
    <div id="step-1-choose-your-portfolio" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-1-choose-your-portfolio" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Select from four professionally designed portfolios:</p>
<table>
	<thead>
			<tr>
					<th>Portfolio</th>
					<th>Best For</th>
					<th>Expected Geometric Return</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Dividend-Focused</strong></td>
					<td>Income seekers, US-focused investors</td>
					<td>8.2%</td>
			</tr>
			<tr>
					<td><strong>Three-Fund Bogleheads</strong></td>
					<td>Most investors (lowest fees, global diversification)</td>
					<td>7.4%</td>
			</tr>
			<tr>
					<td><strong>Golden Butterfly</strong></td>
					<td>Conservative investors worried about crashes</td>
					<td>5.9%</td>
			</tr>
			<tr>
					<td><strong>Modern Bogleheads</strong></td>
					<td>Inflation-conscious investors</td>
					<td>6.8%</td>
			</tr>
	</tbody>
</table>
<p>Returns are computed directly from each portfolio's asset assumptions and full covariance matrix using the portfolio-level Itô correction (μ minus half the portfolio variance). The calculator renders the same numbers live on each card.</p>

<h3 class="relative group">Step 2: Set Your Withdrawal Rate
    <div id="step-2-set-your-withdrawal-rate" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-2-set-your-withdrawal-rate" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>This determines how much you withdraw annually. The calculator supports two strategies:</p>
<p><strong>Constant Dollar (Traditional):</strong> Fixed inflation-adjusted withdrawals regardless of portfolio value. Simple but rigid.</p>
<p><strong>Dynamic Spending (Vanguard):</strong> Withdrawals adjust based on portfolio performance with floor/ceiling bounds. More sustainable for aggressive rates.</p>
<p><strong>Quick guide:</strong></p>
<ul>
<li>2.5-3.0% = Very conservative (50-year horizons)</li>
<li>3.0-3.5% = Moderate (40-year horizons)</li>
<li>4.0%+ = Aggressive (30-year horizons or with flexibility)</li>
</ul>

<h3 class="relative group">Step 3: Set Duration
    <div id="step-3-set-duration" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-3-set-duration" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Enter years until age 100 (or your planning horizon). Add 5-10 years as a buffer.</p>

<h3 class="relative group">Step 4: Add Fees (Optional)
    <div id="step-4-add-fees-optional" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-4-add-fees-optional" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Beyond ETF expense ratios, add any advisor or platform fees:</p>
<ul>
<li><strong>0.00%</strong> - DIY at Vanguard/Fidelity/Schwab</li>
<li><strong>0.25%</strong> - Robo-advisors</li>
<li><strong>1.00%</strong> - Traditional advisor (costs ~39% of wealth over 50 years!)</li>
</ul>

<h3 class="relative group">Step 5: Run Simulation
    <div id="step-5-run-simulation" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-5-run-simulation" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Click <strong>Run Simulation</strong> and wait 2-10 seconds. The default run is 10,000 scenarios. For tighter percentiles bump to 50,000 or 100,000 from Advanced Options (slower, more accurate).</p>
<hr>

<h2 class="relative group">Understanding Your Results
    <div id="understanding-your-results" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#understanding-your-results" aria-label="Anchor">#</a>
    </span>
    
</h2>
<table>
	<thead>
			<tr>
					<th>Metric</th>
					<th>What It Means</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Median Outcome</strong></td>
					<td>Most likely result (50th percentile)</td>
			</tr>
			<tr>
					<td><strong>5th Percentile</strong></td>
					<td>Your safety net. Plan around this number, not the median.</td>
			</tr>
			<tr>
					<td><strong>Depletion Risk</strong></td>
					<td>Probability of running out of money</td>
			</tr>
			<tr>
					<td><strong>Sharpe/Sortino Ratio</strong></td>
					<td>Risk-adjusted return (higher = better). Computed per simulation path from gross monthly returns, then averaged across paths.</td>
			</tr>
			<tr>
					<td><strong>Growth potential context</strong></td>
					<td>A sentence under the cards shows your median outcome <strong>without withdrawals</strong> and how much spending cost you in compound growth. Anchors the magnitude of the headline numbers.</td>
			</tr>
			<tr>
					<td><strong>Growth chart, dashed brass line</strong></td>
					<td>The median path of a parallel portfolio that compounds with the same market shocks but never withdraws. The gap between it and the solid green median is the real, year-by-year cost of your retirement spending.</td>
			</tr>
			<tr>
					<td><strong>Max Drawdown</strong></td>
					<td>Worst peak-to-trough decline. Includes the withdrawal effect, so retirement runs naturally show larger drawdowns than markets alone.</td>
			</tr>
	</tbody>
</table>
<p><strong>Depletion risk guidelines:</strong></p>
<ul>
<li>0-5% = Very safe</li>
<li>5-10% = Acceptable</li>
<li>10%+ = Consider reducing withdrawal rate</li>
</ul>
<hr>

<h2 class="relative group">Advanced Options
    <div id="advanced-options" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#advanced-options" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p><strong>Fat-Tail Mode:</strong> Layers a Student's t-distribution (df=5) on top of the default log-normal compounding to model extreme events (crashes and booms) more realistically than the bell curve alone. Recommended for conservative planning. If your plan survives fat-tail mode at a punishing withdrawal rate, your plan is genuinely robust.</p>
<p><strong>Dynamic Spending Bounds:</strong> Adjust floor (-2.5% default) and ceiling (+5% default) to control withdrawal variability.</p>
<hr>

<h2 class="relative group">Privacy &amp; Accuracy
    <div id="privacy--accuracy" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#privacy--accuracy" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>All calculations run in your browser. No data is collected or stored.</p>
<p>The engine is professional-grade:</p>
<ul>
<li><strong>Monthly Geometric Brownian Motion</strong> per asset. Returns compound via <code>value × exp(r)</code>, so portfolios mathematically cannot fall below zero.</li>
<li><strong>Cholesky-decomposed correlation matrix</strong> drives correlated monthly shocks across the assets in the chosen portfolio.</li>
<li><strong>Fat-tail mode</strong> swaps the Normal driver for a variance-corrected Student's t-distribution (df=5).</li>
<li><strong>Annual rebalance</strong> at year-end. Withdrawals are taken at target weights (this has a monthly partial-rebalance side effect, disclosed in the methodology box inside the calculator).</li>
<li><strong>Sharpe and Sortino</strong> are computed per simulation path from monthly gross portfolio returns, then averaged across paths. That's the textbook formulation, not a cross-path outcome-dispersion proxy.</li>
<li><strong>S&amp;P 500 comparison</strong> shares VTI's correlated monthly shock (empirical correlation 0.98). The &quot;probability of beating the S&amp;P&quot; is therefore measured in the same market state, not in two parallel universes.</li>
<li><strong>Expected return labels</strong> on each portfolio card are derived directly from the asset assumptions plus the full covariance matrix, not hardcoded marketing numbers.</li>
<li><strong>Parallel no-withdrawal portfolio</strong> runs alongside the main simulation using the same Cholesky-correlated monthly shocks. Its median terminal value (and its full annual path on the chart) anchors the cost of your spending. If your median outcome is $16M and the no-withdrawal median is $40M, withdrawals cost you $24M of compound growth. The dashed brass line on the growth chart is that parallel portfolio's median path over time.</li>
</ul>
<p>Open the <strong>Methodology and assumptions</strong> disclosure inside the calculator for the full set of caveats (no taxes, no cash buffer, historical correlations, the drawdown-includes-withdrawals convention).</p>
<hr>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow" style="background-color: #0f5132"
  
  >
  <span
    
      class="text-primary-400 pe-3 flex items-center"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span>
  </span>

  <span
    
      style="color: #ffffff"
    
    ><strong>Ready to dive deeper?</strong> Our <strong><a href="/posts/monte-carlo-simulation-retirement-planning/" >Complete Guide to Monte Carlo Retirement Planning</a></strong> explains sequence of returns risk, the 4% rule limitations, and how to build safety margins into your plan.</span>
</div>


  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow bg-primary-100 dark:bg-primary-900"
  
  >
  <span
    
      class="text-primary-400 pe-3 flex items-center"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span>
  </span>

  <span
    
      class="dark:text-neutral-300"
    
    ><strong>Disclaimer:</strong> This calculator reflects my personal views and is for educational purposes only. It is not financial advice. Every situation is different. Always check your country's specific tax and investment rules before acting. See the full <a href="/disclaimer/" >Disclaimer</a> and <a href="/privacy/" >Privacy Policy</a> for the long version.</span>
</div>

]]></content:encoded><media:content url="https://libreleo.com/img/featured/monte-carlo-retirement-calculator.webp" medium="image"/></item><item><title>How to Use the Compound Interest Calculator</title><link>https://libreleo.com/calculators/compound-interest-calculator/</link><pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate><guid>https://libreleo.com/calculators/compound-interest-calculator/</guid><description>Step-by-step guide to using our free compound interest calculator to see how your investments grow over time</description><content:encoded><![CDATA[<span class="flex cursor-pointer">
  
  
  
  
    <span
      class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
  
    
Updated: 19/06/2026

  </span>
</span>


<p><strong>Want the full breakdown?</strong> Read <a href="/posts/compound-interest-complete-guide/" >Compound Interest: Complete Guide</a></p>
<hr>

<h2 class="relative group">Calculator
    <div id="calculator" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#calculator" aria-label="Anchor">#</a>
    </span>
    
</h2>

<style>
    :root {
        --ci-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
        --ci-background-color: #ffffff;
        --ci-text-color: #1a202c;
        --ci-text-secondary: #4a5568;
        --ci-border-color: #e2e8f0;
        --ci-input-bg: #ffffff;
        --ci-input-border: #cbd5e0;
        --ci-button-bg: #3b82f6;
        --ci-button-hover: #2563eb;
        --ci-button-text: #ffffff;
        --ci-result-bg: #f7fafc;
        --ci-result-gradient-start: #d6e9fa;
        --ci-result-gradient-end: #d6e9fa;
        --ci-green: #10b981;
        --ci-blue: #3b82f6;
        --ci-light-blue: #60a5fa;
        --ci-gray-bar: #e5e7eb;
    }

    .dark {
        --ci-background-color: #2d2d2d;
        --ci-text-color: #f8f9fa;
        --ci-text-secondary: #adb5bd;
        --ci-border-color: #444;
        --ci-input-bg: #333;
        --ci-input-border: #555;
        --ci-button-bg: #3b82f6;
        --ci-button-hover: #2563eb;
        --ci-button-text: #ffffff;
        --ci-result-bg: #1a1a1a;
        --ci-result-gradient-start: #595b5c;
        --ci-result-gradient-end: #595b5c;
        --ci-green: #10b981;
        --ci-blue: #3b82f6;
        --ci-light-blue: #60a5fa;
        --ci-gray-bar: #4b5563;
    }

    .ci-calculator {
        font-family: var(--ci-font-family);
        background-color: var(--ci-background-color);
        color: var(--ci-text-color);
        border: 1px solid var(--ci-border-color);
        border-radius: 0.75rem;
        padding: 1.5rem;
        margin: 2rem auto;
        max-width: 64rem;
        box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
    }

    .ci-header {
        margin-bottom: 1.5rem;
    }

    .ci-header h2 {
        margin: 0 0 0.5rem 0;
        font-size: 1.875rem;
        font-weight: 700;
        color: var(--ci-text-color);
    }

    .ci-header p {
        margin: 0;
        color: var(--ci-text-secondary);
    }

    .ci-inputs {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
        gap: 1.5rem;
        margin-bottom: 2rem;
    }

    .ci-input-full {
        grid-column: 1 / -1;
    }

    .ci-input-group label {
        display: block;
        font-size: 0.875rem;
        font-weight: 500;
        color: var(--ci-text-color);
        margin-bottom: 0.5rem;
    }

    .ci-input-group input,
    .ci-input-group select {
        width: 100%;
        padding: 0.5rem 1rem;
        border: 1px solid var(--ci-input-border);
        border-radius: 0.375rem;
        background-color: var(--ci-input-bg);
        color: var(--ci-text-color);
        font-size: 1rem;
        box-sizing: border-box;
    }

    .ci-input-group input:focus,
    .ci-input-group select:focus {
        outline: none;
        border-color: var(--ci-button-bg);
        box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
    }

    .ci-results {
        background: linear-gradient(135deg, var(--ci-result-gradient-start) 0%, var(--ci-result-gradient-end) 100%);
        border-radius: 0.5rem;
        padding: 1.5rem;
        margin-bottom: 1.5rem;
    }

    .ci-results h3 {
        margin: 0 0 1rem 0;
        font-size: 1.125rem;
        font-weight: 600;
        color: var(--ci-text-color);
    }

    .ci-result-cards {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
        gap: 1rem;
        margin-bottom: 1.5rem;
    }

    .ci-result-card {
        background-color: var(--ci-background-color);
        border-radius: 0.5rem;
        padding: 1rem;
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
    }

    .ci-result-label {
        font-size: 0.875rem;
        color: var(--ci-text-secondary);
        margin-bottom: 0.25rem;
    }

    .ci-result-value {
        font-size: 1.5rem;
        font-weight: 700;
    }

    .ci-result-value.green {
        color: var(--ci-green);
    }

    .ci-result-value.blue {
        color: var(--ci-blue);
    }

    .ci-result-value.light-blue {
        color: var(--ci-light-blue);
    }

    .ci-progress {
        margin-top: 1.5rem;
    }

    .ci-progress-labels {
        display: flex;
        justify-content: space-between;
        font-size: 0.875rem;
        color: var(--ci-text-secondary);
        margin-bottom: 0.5rem;
    }

    .ci-progress-bar {
        position: relative;
        height: 2rem;
        background-color: var(--ci-gray-bar);
        border-radius: 9999px;
        overflow: hidden;
    }

    .ci-progress-segment {
        position: absolute;
        top: 0;
        height: 100%;
        transition: width 0.5s ease;
    }

    .ci-progress-segment.contributions {
        left: 0;
        background-color: var(--ci-blue);
    }

    .ci-progress-segment.interest {
        right: 0;
        background-color: var(--ci-light-blue);
    }

    .ci-progress-percent {
        display: flex;
        justify-content: space-between;
        font-size: 0.75rem;
        color: var(--ci-text-secondary);
        margin-top: 0.25rem;
    }

    .ci-chart-container {
        background-color: var(--ci-background-color);
        border-radius: 0.5rem;
        padding: 1.5rem;
        margin-bottom: 1.5rem;
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
    }

    .ci-chart-container h3 {
        margin: 0 0 1rem 0;
        font-size: 1.125rem;
        font-weight: 600;
        color: var(--ci-text-color);
    }

    #ci-chart {
        width: 100%;
        max-height: 600px;
    }

    .ci-calculator input[type="number"]::-webkit-inner-spin-button,
    .ci-calculator input[type="number"]::-webkit-outer-spin-button {
        -webkit-appearance: none;
        margin: 0;
    }

    .ci-calculator input[type="number"] {
        -moz-appearance: textfield;
    }

    @media (max-width: 768px) {
        .ci-calculator {
            padding: 1rem;
        }

        #ci-chart {
            height: 400px;
        }

        .ci-inputs {
            grid-template-columns: 1fr;
        }
    }
</style>

<div class="ci-calculator">

    
<script>
(function () {
  if (window.finfreeCurrency) return;  

  var SYMBOLS = {
    USD: '$',
    EUR: '€',
    GBP: '£',
    CHF: 'CHF ',
    AED: 'AED ',
    SGD: 'S$',
    HKD: 'HK$',
    CNY: 'CN¥',
    PHP: '₱',
    MYR: 'RM ',
    INR: '₹'
  };

  var STORAGE_KEY = 'finfree-currency';
  var EVENT_NAME = 'finfree-currency-change';

  function safeRead() {
    try { return localStorage.getItem(STORAGE_KEY) || 'USD'; } catch (e) { return 'USD'; }
  }
  function safeWrite(code) {
    try { localStorage.setItem(STORAGE_KEY, code); } catch (e) {}
  }

  window.finfreeCurrency = {
    getCode: function () { return safeRead(); },
    getSymbol: function () { return SYMBOLS[safeRead()] || '$'; },
    getSymbolFor: function (code) { return SYMBOLS[code] || '$'; },
    set: function (code) {
      if (!SYMBOLS[code]) return;
      safeWrite(code);
      var detail = { code: code, symbol: SYMBOLS[code] };
      document.dispatchEvent(new CustomEvent(EVENT_NAME, { detail: detail }));
    },
    EVENT_NAME: EVENT_NAME,
    SYMBOLS: SYMBOLS
  };

  
  document.addEventListener(EVENT_NAME, function (e) {
    var selectors = document.querySelectorAll('select[data-finfree-currency]');
    selectors.forEach(function (s) {
      if (s.value !== e.detail.code) s.value = e.detail.code;
    });
  });

  document.addEventListener('DOMContentLoaded', function () {
    var current = safeRead();
    var selectors = document.querySelectorAll('select[data-finfree-currency]');
    selectors.forEach(function (s) {
      s.value = current;
      s.addEventListener('change', function () {
        window.finfreeCurrency.set(s.value);
      });
    });
  });
})();
</script>

<style>
  .finfree-currency-selector {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    margin-bottom: 14px;
    font-size: 0.85em;
    color: var(--muted, #666);
  }
  .finfree-currency-selector select {
    padding: 4px 8px;
    border: 1px solid var(--input-border, #ced4da);
    border-radius: 4px;
    background-color: var(--input-bg, #ffffff);
    color: var(--card-text, #212529);
    font-size: 0.95em;
  }
</style>

<div class="finfree-currency-selector">
  <label for="finfree-currency-select-1782461070867236000">Currency:</label>
  <select id="finfree-currency-select-1782461070867239000" data-finfree-currency>
    <option value="USD">USD ($)</option>
    <option value="EUR">EUR (€)</option>
    <option value="GBP">GBP (£)</option>
    <option value="CHF">CHF (Fr.)</option>
    <option value="AED">AED (د.إ)</option>
    <option value="SGD">SGD (S$)</option>
    <option value="HKD">HKD (HK$)</option>
    <option value="CNY">CNY (¥)</option>
    <option value="PHP">PHP (₱)</option>
    <option value="MYR">MYR (RM)</option>
    <option value="INR">INR (₹)</option>
  </select>
</div>


    
    <div class="ci-header">
        <h2>Compound Interest Calculator</h2>
        <p>See how your money grows over time with compound interest</p>
    </div>

    
    <div class="ci-inputs">
        
        <div class="ci-input-group">
            <label for="ci-initial">Initial Investment (<span data-currency-prefix>$</span>)</label>
            <input type="number" id="ci-initial" value="10000" min="0" step="100">
        </div>

        
        <div class="ci-input-group">
            <label for="ci-monthly">Monthly Contribution (<span data-currency-prefix>$</span>)</label>
            <input type="number" id="ci-monthly" value="500" min="0" step="50">
        </div>

        
        <div class="ci-input-group">
            <label for="ci-years">Time Period (Years)</label>
            <input type="number" id="ci-years" value="20" min="1" max="50" step="1">
        </div>

        
        <div class="ci-input-group">
            <label for="ci-rate">Annual Interest Rate (%)</label>
            <input type="number" id="ci-rate" value="5" min="0" max="20" step="0.1">
        </div>

        
        <div class="ci-input-group ci-input-full">
            <label for="ci-frequency">Compounding Frequency</label>
            <select id="ci-frequency">
                <option value="365">Daily</option>
                <option value="12" selected>Monthly</option>
                <option value="4">Quarterly</option>
                <option value="1">Annually</option>
            </select>
        </div>
    </div>

    
    <div class="ci-results">
        <h3>Your Investment Growth</h3>

        <div class="ci-result-cards">
            <div class="ci-result-card">
                <p class="ci-result-label">Final Balance</p>
                <p id="ci-final" class="ci-result-value green">$0</p>
            </div>

            <div class="ci-result-card">
                <p class="ci-result-label">Total Contributions</p>
                <p id="ci-contributions" class="ci-result-value blue">$0</p>
            </div>

            <div class="ci-result-card">
                <p class="ci-result-label">Interest Earned</p>
                <p id="ci-interest" class="ci-result-value light-blue">$0</p>
            </div>
        </div>

        <div class="ci-progress">
            <div class="ci-progress-labels">
                <span>Contributions</span>
                <span>Interest Earned</span>
            </div>
            <div class="ci-progress-bar">
                <div id="ci-contributions-bar" class="ci-progress-segment contributions" style="width: 50%"></div>
                <div id="ci-interest-bar" class="ci-progress-segment interest" style="width: 50%"></div>
            </div>
            <div class="ci-progress-percent">
                <span id="ci-contributions-percent">50%</span>
                <span id="ci-interest-percent">50%</span>
            </div>
        </div>
    </div>

    
    <div class="ci-chart-container">
        <h3>Growth Over Time</h3>
        <canvas id="ci-chart"></canvas>
    </div>

</div>

<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.0/dist/chart.umd.min.js"></script>

<script>
let ciChart = null;

function _csym() { return (window.finfreeCurrency && window.finfreeCurrency.getSymbol()) || '$'; }
function _ciSyncSymbols() {
  var sym = _csym();
  document.querySelectorAll('.ci-calculator [data-currency-prefix]').forEach(function (el) { el.textContent = sym; });
}
document.addEventListener('finfree-currency-change', function () { _ciSyncSymbols(); try { ciCalculate(); } catch (e) {} });
document.addEventListener('DOMContentLoaded', _ciSyncSymbols);

function ciCalculate() {
    const initial = parseFloat(document.getElementById('ci-initial').value) || 0;
    const monthly = parseFloat(document.getElementById('ci-monthly').value) || 0;
    const years = parseInt(document.getElementById('ci-years').value) || 1;
    const rate = parseFloat(document.getElementById('ci-rate').value) / 100 || 0;
    const frequency = parseInt(document.getElementById('ci-frequency').value) || 12;

    const periods = years;
    const ratePerPeriod = rate / frequency;
    const totalPeriods = years * frequency;

    
    const futureValuePrincipal = initial * Math.pow(1 + ratePerPeriod, totalPeriods);

    let futureValueContributions = 0;
    if (monthly > 0 && rate > 0) {
        
        
        
        
        const contributionPerPeriod = monthly * 12 / frequency;
        futureValueContributions = contributionPerPeriod * ((Math.pow(1 + ratePerPeriod, totalPeriods) - 1) / ratePerPeriod) * (1 + ratePerPeriod);
    } else if (monthly > 0) {
        futureValueContributions = monthly * years * 12;
    }

    const finalBalance = futureValuePrincipal + futureValueContributions;
    const totalContributions = initial + (monthly * years * 12);
    const interestEarned = finalBalance - totalContributions;

    
    document.getElementById('ci-final').textContent = _csym() + finalBalance.toLocaleString('en-US', {maximumFractionDigits: 2});
    document.getElementById('ci-contributions').textContent = _csym() + totalContributions.toLocaleString('en-US', {maximumFractionDigits: 2});
    document.getElementById('ci-interest').textContent = _csym() + interestEarned.toLocaleString('en-US', {maximumFractionDigits: 2});

    
    const contributionsPercent = (totalContributions / finalBalance) * 100;
    const interestPercent = (interestEarned / finalBalance) * 100;

    document.getElementById('ci-contributions-bar').style.width = contributionsPercent + '%';
    document.getElementById('ci-interest-bar').style.width = interestPercent + '%';
    document.getElementById('ci-contributions-percent').textContent = contributionsPercent.toFixed(1) + '%';
    document.getElementById('ci-interest-percent').textContent = interestPercent.toFixed(1) + '%';

    
    const chartLabels = [];
    const balanceData = [];
    const contributionsData = [];
    const interestData = [];

    for (let year = 0; year <= years; year++) {
        chartLabels.push('Year ' + year);

        if (year === 0) {
            balanceData.push(initial);
            contributionsData.push(initial);
            interestData.push(0);
        } else {
            const yearsPassed = year;
            const periodsPassedTotal = yearsPassed * frequency;
            const monthsPassed = yearsPassed * 12;

            const fvPrincipal = initial * Math.pow(1 + ratePerPeriod, periodsPassedTotal);

            let fvContributions = 0;
            if (monthly > 0 && rate > 0) {
                const monthlyRate = rate / 12;
                fvContributions = monthly * ((Math.pow(1 + monthlyRate, monthsPassed) - 1) / monthlyRate) * (1 + monthlyRate);
            } else if (monthly > 0) {
                fvContributions = monthly * monthsPassed;
            }

            const yearBalance = fvPrincipal + fvContributions;
            const yearContributions = initial + (monthly * monthsPassed);
            const yearInterest = yearBalance - yearContributions;

            balanceData.push(yearBalance);
            contributionsData.push(yearContributions);
            interestData.push(yearInterest);
        }
    }

    ciUpdateChart(chartLabels, balanceData, contributionsData, interestData);
}

function ciUpdateChart(labels, balance, contributions, interest) {
    const ctx = document.getElementById('ci-chart');

    if (ciChart) {
        ciChart.destroy();
    }

    const isDark = document.documentElement.classList.contains('dark');
    const textColor = isDark ? '#e5e7eb' : '#374151';
    const gridColor = isDark ? '#4b5563' : '#e5e7eb';

    ciChart = new Chart(ctx, {
        type: 'line',
        data: {
            labels: labels,
            datasets: [
                {
                    label: 'Total Balance',
                    data: balance,
                    borderColor: '#10b981',
                    backgroundColor: 'rgba(16, 185, 129, 0.1)',
                    borderWidth: 3,
                    fill: true,
                    tension: 0.4
                },
                {
                    label: 'Contributions',
                    data: contributions,
                    borderColor: '#3b82f6',
                    backgroundColor: 'rgba(59, 130, 246, 0.1)',
                    borderWidth: 2,
                    fill: true,
                    tension: 0.4
                },
                {
                    label: 'Interest Earned',
                    data: interest,
                    borderColor: '#60a5fa',
                    backgroundColor: 'rgba(96, 165, 250, 0.1)',
                    borderWidth: 2,
                    fill: true,
                    tension: 0.4
                }
            ]
        },
        options: {
            responsive: true,
            maintainAspectRatio: false,
            plugins: {
                legend: {
                    labels: {
                        color: textColor,
                        font: {
                            size: 12
                        }
                    }
                },
                tooltip: {
                    callbacks: {
                        label: function(context) {
                            let label = context.dataset.label || '';
                            if (label) {
                                label += ': ';
                            }
                            label += _csym() + context.parsed.y.toLocaleString('en-US', {maximumFractionDigits: 2});
                            return label;
                        }
                    }
                }
            },
            scales: {
                x: {
                    ticks: {
                        color: textColor
                    },
                    grid: {
                        color: gridColor
                    }
                },
                y: {
                    ticks: {
                        color: textColor,
                        callback: function(value) {
                            return _csym() + value.toLocaleString('en-US', {maximumFractionDigits: 0});
                        }
                    },
                    grid: {
                        color: gridColor
                    }
                }
            }
        }
    });
}


document.addEventListener('DOMContentLoaded', function() {
    const inputs = ['ci-initial', 'ci-monthly', 'ci-years', 'ci-rate', 'ci-frequency'];
    inputs.forEach(id => {
        const element = document.getElementById(id);
        if (element) {
            element.addEventListener('input', ciCalculate);
            element.addEventListener('change', ciCalculate);
        }
    });

    ciCalculate();
});


const ciObserver = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutation) {
        if (mutation.attributeName === 'class') {
            ciCalculate();
        }
    });
});

ciObserver.observe(document.documentElement, {
    attributes: true
});
</script>

<hr>

<h2 class="relative group">Input Fields
    <div id="input-fields" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#input-fields" aria-label="Anchor">#</a>
    </span>
    
</h2>
<table>
	<thead>
			<tr>
					<th>Field</th>
					<th>What to Enter</th>
					<th>Typical Values</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Initial Investment</strong></td>
					<td>Starting lump sum</td>
					<td>$0 - $50,000</td>
			</tr>
			<tr>
					<td><strong>Monthly Contribution</strong></td>
					<td>Regular monthly amount</td>
					<td>$100 - $2,000</td>
			</tr>
			<tr>
					<td><strong>Time Period</strong></td>
					<td>Years to grow</td>
					<td>10 - 40 years</td>
			</tr>
			<tr>
					<td><strong>Annual Return</strong></td>
					<td>Expected yearly return</td>
					<td>5% - 10%</td>
			</tr>
			<tr>
					<td><strong>Compounding Frequency</strong></td>
					<td>How often interest compounds</td>
					<td>Monthly (most common)</td>
			</tr>
	</tbody>
</table>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="tip">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span></div>
        <div class="grow">
          Tip
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Use <strong>7%</strong> for inflation-adjusted S&amp;P 500 returns. Use <strong>10%</strong> for nominal (before inflation).</p></div></div><hr>

<h2 class="relative group">Example
    <div id="example" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#example" aria-label="Anchor">#</a>
    </span>
    
</h2>
<table>
	<thead>
			<tr>
					<th>Input</th>
					<th>Value</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Initial</td>
					<td>$5,000</td>
			</tr>
			<tr>
					<td>Monthly</td>
					<td>$500</td>
			</tr>
			<tr>
					<td>Years</td>
					<td>25</td>
			</tr>
			<tr>
					<td>Return</td>
					<td>7%</td>
			</tr>
			<tr>
					<td>Frequency</td>
					<td>Monthly</td>
			</tr>
	</tbody>
</table>
<p><strong>Result:</strong> $436,311 final balance — $155,000 contributed, $281,311 earned from compounding.</p>
<hr>

<h2 class="relative group">Quick Tips
    <div id="quick-tips" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#quick-tips" aria-label="Anchor">#</a>
    </span>
    
</h2>
<ul>
<li><strong>Be conservative</strong> — Markets don't return 7% every year</li>
<li><strong>Account for inflation</strong> — $436K in 25 years buys less than $436K today</li>
<li><strong>Factor in fees</strong> — 1% annual fees cost tens of thousands over decades</li>
<li><strong>Start now</strong> — Time matters more than timing</li>
</ul>
<hr>

<h2 class="relative group">Related Calculators
    <div id="related-calculators" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#related-calculators" aria-label="Anchor">#</a>
    </span>
    
</h2>
<ul>
<li><a href="/calculators/interactive_calculator_to_your_fire_number/" >FIRE Calculator</a> — When can you retire?</li>
<li><a href="/calculators/interactive_safe_withdrawal_rate_calculator/" >SWR Calculator</a> — Safe withdrawal rates</li>
<li><a href="/calculators/emergency-fund-calculator/" >Emergency Fund Calculator</a> — How much safety net?</li>
</ul>
<hr>
<p><strong>Learn the math:</strong> <a href="/posts/compound-interest-complete-guide/" >Compound Interest: Complete Guide</a></p>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow bg-primary-100 dark:bg-primary-900"
  
  >
  <span
    
      class="text-primary-400 pe-3 flex items-center"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span>
  </span>

  <span
    
      class="dark:text-neutral-300"
    
    ><strong>Disclaimer:</strong> This calculator reflects my personal views and is for educational purposes only. It is not financial advice. Every situation is different. Always check your country's specific tax and investment rules before acting. See the full <a href="/disclaimer/" >Disclaimer</a> and <a href="/privacy/" >Privacy Policy</a> for the long version.</span>
</div>

]]></content:encoded><media:content url="https://libreleo.com/img/featured/compound-interest-calculator.webp" medium="image"/></item><item><title>How Much Do You Need Invested for Passive Income? The SWR Approach</title><link>https://libreleo.com/posts/swr-passive-income-investment-required/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://libreleo.com/posts/swr-passive-income-investment-required/</guid><description>Calculate exactly how much you need invested to generate your target monthly passive income using Safe Withdrawal Rate principles. A practical guide with examples.</description><content:encoded><![CDATA[<div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl">
  Ever wondered exactly how much money you'd need invested to quit your job and live off passive income?
</div>

<p>In this post, I'll show you how to calculate your &quot;freedom number&quot; using Safe Withdrawal Rate (SWR) principles. You'll learn why different SWR rates dramatically change your required investment, and how to pick the right rate for your situation.</p>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="tip">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span></div>
        <div class="grow">
          Tip
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p><strong>Try the Calculator:</strong> Want to see your numbers instantly? Use my free <a href="/calculators/swr-passive-income-calculator/" >SWR Passive Income Calculator</a></p></div></div><hr>

<h2 class="relative group">The simple formula behind passive income
    <div id="the-simple-formula-behind-passive-income" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-simple-formula-behind-passive-income" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>The calculation for how much you need invested is straightforward:</p>


$$\text{Investment Required} = \frac{\text{Annual Income Goal}}{\text{SWR Rate}}$$<p>Take your annual income goal and divide it by your chosen withdrawal rate.</p>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow" style="background-color: #1e3a5f"
  
  >
  <span
    
      class="pe-3 flex items-center" style="color: #60a5fa"
    
    >
    
  </span>

  <span
    
      style="color: #e2e8f0"
    
    ><strong>Example:</strong> Want $3,000 per month? That's $36,000 per year. At a 4% withdrawal rate, you'd need $36,000 ÷ 0.04 = <strong>$900,000</strong> invested.</span>
</div>

<p>Your choice of SWR percentage changes everything.</p>
<hr>

<h2 class="relative group">Why your SWR choice matters so much
    <div id="why-your-swr-choice-matters-so-much" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-your-swr-choice-matters-so-much" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>The Safe Withdrawal Rate is the percentage of your portfolio you can withdraw each year without running out of money over a typical retirement. The classic &quot;4% rule&quot; comes from the famous Trinity Study, which found that historically, a 4% initial withdrawal rate (adjusted for inflation) had a very high success rate over 30-year periods. I've got another calculator for this. Check it out here: <strong><a href="/calculators/interactive_safe_withdrawal_rate_calculator/" >SWR Calculator</a></strong></p>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="note">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span></div>
        <div class="grow">
          Note
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p><strong>My personal take:</strong> For me, 4% is too aggressive and probably outdated. Especially as people are living longer today. Well for some like Dave Ramsey, even 8% is ok. Honestly speaking, I think it's crazy. At that pace, your portfolio will run out faster than you expect. Just my personal opinion.</p></div></div>
<h3 class="relative group">Conservative vs aggressive SWR
    <div id="conservative-vs-aggressive-swr" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#conservative-vs-aggressive-swr" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Let's say you want that same $3,000 per month in passive income:</p>
<table>
	<thead>
			<tr>
					<th>SWR Rate</th>
					<th>Investment Required</th>
					<th>Risk Level</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>3.0%</td>
					<td>$1,200,000</td>
					<td>Very Conservative</td>
			</tr>
			<tr>
					<td>3.5%</td>
					<td>$1,028,571</td>
					<td>Conservative</td>
			</tr>
			<tr>
					<td>4.0%</td>
					<td>$900,000</td>
					<td>Standard</td>
			</tr>
			<tr>
					<td>4.5%</td>
					<td>$800,000</td>
					<td>Moderate</td>
			</tr>
			<tr>
					<td>5.0%</td>
					<td>$720,000</td>
					<td>Aggressive</td>
			</tr>
			<tr>
					<td>5.5%</td>
					<td>$654,545</td>
					<td>Very Aggressive</td>
			</tr>
			<tr>
					<td>6.0%</td>
					<td>$600,000</td>
					<td>High Risk</td>
			</tr>
	</tbody>
</table>
<p>See how much that changes things? The difference between a 3% and 6% SWR is literally double the investment amount. Above is a standard chart. As I mentioned, personally I think 4% is already quite aggressive. The world has changed! Bonds are not the same, the dollar is depreciating daily, inflation is high, etc.</p>
<p>So which one should you use?</p>
<hr>

<h2 class="relative group">Picking the right SWR for your situation
    <div id="picking-the-right-swr-for-your-situation" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#picking-the-right-swr-for-your-situation" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>It depends on your circumstances.</p>
<div
  class="tab__container w-full"
  
  >
  <div class="tab__nav" role="tablist">
    <div class="flex flex-wrap gap-1"><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 tab--active"
          role="tab"
          aria-selected="true"
          data-tab-index="0"
          data-tab-label="Lower Rate (3-3.5%)">
          <span class="flex items-center gap-1">
            
            Lower Rate (3-3.5%)
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="1"
          data-tab-label="Standard Rate (4%)">
          <span class="flex items-center gap-1">
            
            Standard Rate (4%)
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="2"
          data-tab-label="Higher Rate (4.5-5%)">
          <span class="flex items-center gap-1">
            
            Higher Rate (4.5-5%)
          </span>
        </button></div>
  </div>
  <div class="tab__content mt-4"><div class="tab__panel tab--active" data-tab-index="0">
        <p><strong>Use a lower rate if:</strong></p>
<ul>
<li>You're retiring early (before 50) and need your money to last 40+ years</li>
<li>You're naturally risk-averse and would lose sleep over market downturns</li>
<li>You have no other income sources like pensions or rental properties</li>
<li>You want a larger buffer for healthcare costs or unexpected expenses</li>
</ul>
      </div><div class="tab__panel " data-tab-index="1">
        <p><strong>Use the standard rate if:</strong></p>
<ul>
<li>You're planning a traditional 20 to 30-year retirement</li>
<li>You're comfortable with some market volatility</li>
<li>You have flexibility to reduce spending during downturns</li>
<li>Your portfolio is well-diversified across global markets</li>
</ul>
      </div><div class="tab__panel " data-tab-index="2">
        <p><strong>Use a higher rate if:</strong></p>
<ul>
<li>You have other reliable income sources</li>
<li>You're willing to adjust spending based on portfolio performance</li>
<li>You have a shorter time horizon</li>
<li>You're fine with accepting more risk for a lower investment target</li>
</ul>
      </div></div>
</div>

<hr>

<h2 class="relative group">Building your freedom number
    <div id="building-your-freedom-number" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#building-your-freedom-number" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>An example:</p>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow" style="background-color: #1e3a5f"
  
  >
  <span
    
      class="pe-3 flex items-center" style="color: #60a5fa"
    
    >
    
  </span>

  <span
    
      style="color: #e2e8f0"
    
    ><p><strong>Claudia's Story:</strong></p>
<p>Claudia wants to achieve financial independence. She's calculated that she needs $4,000 per month ($48,000 per year) to cover all her expenses comfortably. She's 35 and plans to retire early, so she wants a more conservative approach.</p>
<p><strong>At 3.5% SWR:</strong> $48,000 ÷ 0.035 = <strong>$1,371,429</strong></p>
<p>That's her freedom number. Once her investment portfolio hits roughly $1.37 million, she can theoretically live off the returns indefinitely.</p>
</span>
</div>

<p>But Claudia's smart. She also calculates what she'd need at different SWR rates:</p>
<table>
	<thead>
			<tr>
					<th>SWR Rate</th>
					<th>Investment Required</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>3.0%</td>
					<td>$1,600,000</td>
			</tr>
			<tr>
					<td>4.0%</td>
					<td>$1,200,000</td>
			</tr>
			<tr>
					<td>4.5%</td>
					<td>$1,066,667</td>
			</tr>
	</tbody>
</table>
<p>Now she has a range. She knows her &quot;very safe&quot; number is $1.6M, her &quot;comfortable&quot; number is $1.37M, and her &quot;minimum viable&quot; number is around $1.2M.</p>
<p>This gives her flexibility. Maybe she hits $1.2M and decides to go part-time instead of fully retiring. Or she pushes to $1.6M for complete peace of mind.</p>
<hr>

<h2 class="relative group">The heat map perspective
    <div id="the-heat-map-perspective" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-heat-map-perspective" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>One thing I find helpful is looking at multiple income levels and SWR rates simultaneously. You quickly see patterns:</p>
<ul>
<li>Lower SWR rates always require more investment (obviously)</li>
<li>Small differences in income add up fast when multiplied by 25-33x</li>
<li>The &quot;sweet spot&quot; for most people sits between 3.5% and 4.5%</li>
</ul>
<p>When you look at a grid of all these numbers together, you start to get a feel for where you want to land. Green cells show more achievable targets; red cells show numbers that might take longer to reach.</p>
<hr>

<h2 class="relative group">What this doesn't include
    <div id="what-this-doesnt-include" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-this-doesnt-include" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Before you lock in your freedom number, keep a few things in mind:</p>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="warning">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M506.3 417l-213.3-364c-16.33-28-57.54-28-73.98 0l-213.2 364C-10.59 444.9 9.849 480 42.74 480h426.6C502.1 480 522.6 445 506.3 417zM232 168c0-13.25 10.75-24 24-24S280 154.8 280 168v128c0 13.25-10.75 24-23.1 24S232 309.3 232 296V168zM256 416c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 401.9 273.4 416 256 416z"/></svg>
</span></div>
        <div class="grow">
          Warning
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>The numbers above are simplified estimates. Real-world factors like taxes, inflation, and market timing can significantly impact how much you actually need. Build in extra margin.</p></div></div><table>
	<thead>
			<tr>
					<th>Factor</th>
					<th>Why It Matters</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Taxes vary wildly</strong></td>
					<td>Depending on where you live and how your investments are structured, you might need to account for taxes on your withdrawals. Some countries tax capital gains heavily; others don't tax them at all. Check your local rules.</td>
			</tr>
			<tr>
					<td><strong>Inflation is real</strong></td>
					<td>The SWR framework assumes you'll adjust withdrawals for inflation each year. Your $4,000/month today might need to be $5,000/month in 10 years to maintain the same lifestyle.</td>
			</tr>
			<tr>
					<td><strong>Sequence of returns matters</strong></td>
					<td>A market crash in your first few years of retirement is far more damaging than one 15 years in. This is why many people use slightly lower SWR rates for added protection.</td>
			</tr>
			<tr>
					<td><strong>Life changes</strong></td>
					<td>Your expenses won't stay static forever. Health issues, moving to other countries, new hobbies - all of these affect how much you actually need.</td>
			</tr>
	</tbody>
</table>
<hr>

<h2 class="relative group">Taking action
    <div id="taking-action" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#taking-action" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Here's what I'd suggest:</p>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow" style="background-color: #0f5132"
  
  >
  <span
    
      class="pe-3 flex items-center" style="color: #75b798"
    
    >
    
  </span>

  <span
    
      style="color: #d1e7dd"
    
    ><p><strong>Your Action Plan:</strong></p>
<ol>
<li><strong>Calculate your monthly expenses.</strong> Be honest. Include everything from rent to that streaming subscription you need.</li>
<li><strong>Add a buffer.</strong> Take your monthly number and add 10-20% for unexpected costs and lifestyle inflation.</li>
<li><strong>Pick your SWR.</strong> Conservative (3-3.5%) if you're young or risk-averse, standard (4%) for a 30-year horizon, or moderate (4.5%) if you have other income.</li>
<li><strong>Run the calculation.</strong> Multiply your annual expenses by 25 (for 4% SWR), 28.5 (for 3.5%), or 33.3 (for 3%).</li>
<li><strong>Track your progress.</strong> Now you have a concrete target. Watch your net worth grow toward it.</li>
</ol></span>
</div>

<hr>

<h2 class="relative group">Your turn
    <div id="your-turn" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#your-turn" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Whether you need $500,000 or $2,000,000, you've got a number to work toward.</p>
<p>If you want to explore different scenarios quickly, try the <a href="/calculators/swr-passive-income-calculator/" >SWR Passive Income Calculator</a>. It'll generate a complete grid showing exactly how much you need for various income levels and SWR combinations.</p>
<hr>

<h2 class="relative group">Related resources
    <div id="related-resources" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#related-resources" aria-label="Anchor">#</a>
    </span>
    
</h2>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow" style="background-color: #1e3a5f"
  
  >
  <span
    
      class="pe-3 flex items-center" style="color: #60a5fa"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M172.5 131.1C228.1 75.51 320.5 75.51 376.1 131.1C426.1 181.1 433.5 260.8 392.4 318.3L391.3 319.9C381 334.2 361 337.6 346.7 327.3C332.3 317 328.9 297 339.2 282.7L340.3 281.1C363.2 249 359.6 205.1 331.7 177.2C300.3 145.8 249.2 145.8 217.7 177.2L105.5 289.5C73.99 320.1 73.99 372 105.5 403.5C133.3 431.4 177.3 435 209.3 412.1L210.9 410.1C225.3 400.7 245.3 404 255.5 418.4C265.8 432.8 262.5 452.8 248.1 463.1L246.5 464.2C188.1 505.3 110.2 498.7 60.21 448.8C3.741 392.3 3.741 300.7 60.21 244.3L172.5 131.1zM467.5 380C411 436.5 319.5 436.5 263 380C213 330 206.5 251.2 247.6 193.7L248.7 192.1C258.1 177.8 278.1 174.4 293.3 184.7C307.7 194.1 311.1 214.1 300.8 229.3L299.7 230.9C276.8 262.1 280.4 306.9 308.3 334.8C339.7 366.2 390.8 366.2 422.3 334.8L534.5 222.5C566 191 566 139.1 534.5 108.5C506.7 80.63 462.7 76.99 430.7 99.9L429.1 101C414.7 111.3 394.7 107.1 384.5 93.58C374.2 79.2 377.5 59.21 391.9 48.94L393.5 47.82C451 6.731 529.8 13.25 579.8 63.24C636.3 119.7 636.3 211.3 579.8 267.7L467.5 380z"/></svg>
</span>
  </span>

  <span
    
      style="color: #e2e8f0"
    
    ><p><strong>Explore More:</strong></p>
<ul>
<li><strong><a href="/calculators/swr-passive-income-calculator/" >SWR Passive Income Calculator</a></strong> - Generate your personalized grid</li>
<li><strong><a href="/calculators/interactive_safe_withdrawal_rate_calculator/" >SWR Calculator</a></strong> - Stress-test your withdrawal rate with historical data</li>
<li><strong><a href="/posts/swr-checklist-practical-steps-for-retirement-withdrawal-planning/" >SWR Checklist</a></strong> - Step-by-step guide to retirement planning</li>
<li><strong><a href="/calculators/interactive_calculator_to_your_fire_number/" >FIRE Calculator</a></strong> - Calculate your financial independence number</li>
</ul></span>
</div>

<hr>
<p><strong>What's your target passive income?</strong> Drop a comment below!</p>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow bg-primary-100 dark:bg-primary-900"
  
  >
  <span
    
      class="text-primary-400 pe-3 flex items-center"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span>
  </span>

  <span
    
      class="dark:text-neutral-300"
    
    ><strong>Disclaimer:</strong> This post reflects my personal views and is for educational purposes only. It is not financial advice. Every situation is different. Always check your country's specific tax and investment rules before acting. See the full <a href="/disclaimer/" >Disclaimer</a> and <a href="/privacy/" >Privacy Policy</a> for the long version.</span>
</div>

]]></content:encoded><media:content url="https://libreleo.com/img/featured/swr-passive-income-investment-required.webp" medium="image"/></item><item><title>SWR Passive Income Calculator: Find Your Freedom Number</title><link>https://libreleo.com/calculators/swr-passive-income-calculator/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://libreleo.com/calculators/swr-passive-income-calculator/</guid><description>Use this free calculator to instantly see how much investment you need to generate your target monthly passive income at various Safe Withdrawal Rates.</description><content:encoded><![CDATA[<div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl">
  Want to know exactly how much you need invested to live off passive income? Enter your target monthly income and see a complete grid of investment requirements across different withdrawal rates.
</div>

<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="tip">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span></div>
        <div class="grow">
          Tip
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p><strong>New to Safe Withdrawal Rates?</strong> Read the complete guide first: <a href="/posts/swr-passive-income-investment-required/" >How Much Do You Need Invested for Passive Income?</a></p></div></div><hr>

<h2 class="relative group">SWR Passive Income Calculator
    <div id="swr-passive-income-calculator" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#swr-passive-income-calculator" aria-label="Anchor">#</a>
    </span>
    
</h2>

<style>
    :root {
        --swr-pi-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
        --swr-pi-background-color: #f8f9fa;
        --swr-pi-card-background-color: #ffffff;
        --swr-pi-border-color: #dee2e6;
        --swr-pi-text-color: #212529;
        --swr-pi-label-color: #495057;
        --swr-pi-input-background-color: #ffffff;
        --swr-pi-input-border-color: #ced4da;
        --swr-pi-button-background-color: #004085;
        --swr-pi-button-text-color: #ffffff;
        --swr-pi-button-hover-background-color: #002752;
        --swr-pi-results-background-color: #e9ecef;
        --swr-pi-header-background: #333;
        --swr-pi-header-text: #ffffff;
    }

    .dark {
        --swr-pi-background-color: #1a1a1a;
        --swr-pi-card-background-color: #2d2d2d;
        --swr-pi-border-color: #444;
        --swr-pi-text-color: #f8f9fa;
        --swr-pi-label-color: #adb5bd;
        --swr-pi-input-background-color: #333;
        --swr-pi-input-border-color: #555;
        --swr-pi-results-background-color: #343a40;
        --swr-pi-header-background: #1a1a1a;
        --swr-pi-header-text: #ffffff;
    }

    .swr-pi-calculator {
        font-family: var(--swr-pi-font-family);
        background-color: var(--swr-pi-card-background-color);
        color: var(--swr-pi-text-color);
        border: 1px solid var(--swr-pi-border-color);
        border-radius: 0.5rem;
        padding: 2rem;
        margin: 2rem 0;
        box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
    }

    .swr-pi-calculator h3 {
        margin-top: 0;
        margin-bottom: 1.5rem;
        text-align: center;
        color: var(--swr-pi-text-color);
        font-size: 1.6rem;
        font-weight: 700;
    }

    .swr-pi-subtitle {
        text-align: center;
        color: var(--swr-pi-label-color);
        margin-bottom: 1.5rem;
        font-size: 0.95rem;
    }

    .swr-pi-input-section {
        display: flex;
        flex-wrap: wrap;
        gap: 1rem;
        justify-content: center;
        align-items: flex-end;
        margin-bottom: 2rem;
    }

    .swr-pi-form-group {
        display: flex;
        flex-direction: column;
    }

    .swr-pi-form-group label {
        margin-bottom: 0.5rem;
        font-weight: 500;
        color: var(--swr-pi-label-color);
        font-size: 0.9rem;
    }

    .swr-pi-form-group input,
    .swr-pi-form-group select {
        padding: 0.6rem 0.8rem;
        border: 1px solid var(--swr-pi-input-border-color);
        border-radius: 0.25rem;
        background-color: var(--swr-pi-input-background-color);
        color: var(--swr-pi-text-color);
        font-size: 1rem;
        min-width: 150px;
    }

    .swr-pi-button {
        padding: 0.6rem 1.5rem;
        border: none;
        border-radius: 0.25rem;
        background-color: var(--swr-pi-button-background-color);
        color: var(--swr-pi-button-text-color);
        cursor: pointer;
        font-weight: 500;
        font-size: 1rem;
        transition: background-color 0.15s ease-in-out;
        height: fit-content;
    }

    .swr-pi-button:hover {
        background-color: var(--swr-pi-button-hover-background-color);
    }

     
    .swr-pi-grid-container {
        overflow-x: auto;
        margin-top: 1.5rem;
    }

    .swr-pi-grid {
        width: 100%;
        border-collapse: separate;
        border-spacing: 0;
        font-size: 0.8rem;
        border-radius: 0.5rem;
        overflow: hidden;
        border: 1px solid var(--swr-pi-border-color);
    }

    .swr-pi-grid th {
        background-color: var(--swr-pi-header-background);
        color: var(--swr-pi-header-text);
        padding: 0.75rem 0.5rem;
        text-align: center;
        font-weight: 600;
        border-bottom: 1px solid var(--swr-pi-border-color);
        border-right: 1px solid var(--swr-pi-border-color);
    }

    .swr-pi-grid th:last-child {
        border-right: none;
    }

    .swr-pi-grid td {
        padding: 0.6rem 0.5rem;
        text-align: center;
        border-bottom: 1px solid var(--swr-pi-border-color);
        border-right: 1px solid var(--swr-pi-border-color);
        font-weight: 500;
        transition: transform 0.1s ease;
    }

    .swr-pi-grid td:last-child {
        border-right: none;
    }

    .swr-pi-grid tbody tr:last-child td {
        border-bottom: none;
    }

    .swr-pi-grid td:first-child {
        background-color: var(--swr-pi-header-background);
        color: var(--swr-pi-header-text);
        font-weight: 600;
        text-align: right;
        padding-right: 1rem;
    }

    .swr-pi-grid tr:hover td:not(:first-child) {
        transform: scale(1.02);
    }

     
    .swr-pi-cell-1 { background-color: #2ecc71; color: #000; }
    .swr-pi-cell-2 { background-color: #58d68d; color: #000; }
    .swr-pi-cell-3 { background-color: #82e0aa; color: #000; }
    .swr-pi-cell-4 { background-color: #abebc6; color: #000; }
    .swr-pi-cell-5 { background-color: #d5f5e3; color: #000; }
    .swr-pi-cell-6 { background-color: #fcf3cf; color: #000; }
    .swr-pi-cell-7 { background-color: #f9e79f; color: #000; }
    .swr-pi-cell-8 { background-color: #f5b041; color: #000; }
    .swr-pi-cell-9 { background-color: #eb984e; color: #000; }
    .swr-pi-cell-10 { background-color: #e74c3c; color: #fff; }

    .swr-pi-highlight {
        outline: 3px solid var(--swr-pi-button-background-color);
        outline-offset: -3px;
        font-weight: 700 !important;
    }

     
    .swr-pi-legend {
        display: flex;
        justify-content: center;
        align-items: center;
        gap: 0.5rem;
        margin-top: 1rem;
        font-size: 0.85rem;
        color: var(--swr-pi-label-color);
    }

    .swr-pi-legend-gradient {
        display: flex;
        height: 20px;
        width: 200px;
        border-radius: 3px;
        overflow: hidden;
    }

    .swr-pi-legend-gradient span {
        flex: 1;
    }

     
    .swr-pi-summary {
        background-color: var(--swr-pi-results-background-color);
        border-radius: 0.5rem;
        padding: 1.5rem;
        margin-top: 1.5rem;
        border: 1px solid var(--swr-pi-border-color);
    }

    .swr-pi-summary h4 {
        margin: 0 0 1rem 0;
        color: var(--swr-pi-text-color);
        font-size: 1.1rem;
    }

    .swr-pi-summary-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
        gap: 1rem;
    }

    .swr-pi-summary-item {
        text-align: center;
    }

    .swr-pi-summary-item .label {
        font-size: 0.85rem;
        color: var(--swr-pi-label-color);
        margin-bottom: 0.25rem;
    }

    .swr-pi-summary-item .value {
        font-size: 1.3rem;
        font-weight: 700;
        color: var(--swr-pi-text-color);
    }

    .swr-pi-summary-item .subtext {
        font-size: 0.8rem;
        color: var(--swr-pi-label-color);
    }

     
    @media (max-width: 600px) {
        .swr-pi-calculator {
            padding: 1rem;
        }

        .swr-pi-grid {
            font-size: 0.75rem;
        }

        .swr-pi-grid th,
        .swr-pi-grid td {
            padding: 0.4rem 0.25rem;
        }
    }
</style>

<div class="swr-pi-calculator">
    <h3>Investment Required for Passive Income</h3>
    <p class="swr-pi-subtitle">Calculate how much you need invested to generate your target monthly income at various Safe Withdrawal Rates</p>

    <div class="swr-pi-input-section">
        <div class="swr-pi-form-group">
            <label for="swr-pi-monthly-income">Target Monthly Income</label>
            <input type="number" id="swr-pi-monthly-income" value="3000" min="100" step="100" placeholder="$3,000">
        </div>
        <div class="swr-pi-form-group">
            <label for="swr-pi-currency">Currency</label>
            <select id="swr-pi-currency">
                <option value="$" selected>$ USD</option>
                <option value="€">€ EUR</option>
                <option value="£">£ GBP</option>
                <option value="¥">¥ JPY</option>
                <option value="A$">A$ AUD</option>
                <option value="C$">C$ CAD</option>
            </select>
        </div>
        <button class="swr-pi-button" id="swr-pi-calculate-btn">Calculate</button>
    </div>

    <div class="swr-pi-grid-container" id="swr-pi-results">
        
    </div>
</div>

<script>
(function() {
    'use strict';

    const monthlyIncomeInput = document.getElementById('swr-pi-monthly-income');
    const currencySelect = document.getElementById('swr-pi-currency');
    const calculateBtn = document.getElementById('swr-pi-calculate-btn');
    const resultsDiv = document.getElementById('swr-pi-results');

    
    const SWR_RATES = [3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0];

    
    const INCOME_MULTIPLIERS = [
        { mult: 10/3, label: '10x' },    
        { mult: 8/3, label: '8x' },
        { mult: 2, label: '6x' },
        { mult: 5/3, label: '5x' },
        { mult: 4/3, label: '4x' },
        { mult: 1, label: 'TARGET' },
        { mult: 2/3, label: '2x' },
        { mult: 1/3, label: '1x' },
        { mult: 1/6, label: '0.5x' },
        { mult: 1/30, label: '0.1x' }
    ];

    function formatCurrency(amount, currency) {
        if (amount >= 1000000) {
            return currency + (amount / 1000000).toFixed(2) + 'M';
        } else if (amount >= 1000) {
            return currency + (amount / 1000).toFixed(0) + 'K';
        }
        return currency + amount.toLocaleString(undefined, { maximumFractionDigits: 0 });
    }

    function formatIncome(amount, currency) {
        return currency + amount.toLocaleString(undefined, { maximumFractionDigits: 0 });
    }

    function calculateInvestmentRequired(monthlyIncome, swrRate) {
        
        const annualIncome = monthlyIncome * 12;
        return annualIncome / (swrRate / 100);
    }

    function getCellColorClass(investment, minInvestment, maxInvestment) {
        
        const range = maxInvestment - minInvestment;
        if (range === 0) return 'swr-pi-cell-5';

        const normalized = (investment - minInvestment) / range;
        const colorIndex = Math.min(10, Math.max(1, Math.ceil(normalized * 10)));
        return `swr-pi-cell-${colorIndex}`;
    }

    function generateGrid() {
        const targetMonthly = parseFloat(monthlyIncomeInput.value) || 3000;
        const currency = currencySelect.value;

        
        const incomeSteps = generateIncomeSteps(targetMonthly);

        
        let allInvestments = [];
        incomeSteps.forEach(income => {
            SWR_RATES.forEach(rate => {
                allInvestments.push(calculateInvestmentRequired(income, rate));
            });
        });

        const minInvestment = Math.min(...allInvestments);
        const maxInvestment = Math.max(...allInvestments);

        
        let html = '<table class="swr-pi-grid">';

        
        html += '<thead><tr>';
        html += '<th>Monthly Passive<br>Income</th>';
        SWR_RATES.forEach(rate => {
            const isStandard = rate === 4.0;
            html += `<th>${rate.toFixed(1)}%${isStandard ? '<br><small>(Standard)</small>' : ''}</th>`;
        });
        html += '</tr></thead>';

        
        html += '<tbody>';
        incomeSteps.forEach(income => {
            const isTarget = income === targetMonthly;
            html += '<tr>';
            html += `<td>${formatIncome(income, currency)}/mo</td>`;

            SWR_RATES.forEach(rate => {
                const investment = calculateInvestmentRequired(income, rate);
                const colorClass = getCellColorClass(investment, minInvestment, maxInvestment);
                const highlightClass = (isTarget && rate === 4.0) ? ' swr-pi-highlight' : '';
                html += `<td class="${colorClass}${highlightClass}">${formatCurrency(investment, currency)}</td>`;
            });

            html += '</tr>';
        });

        
        html += '<tr>';
        html += '<td style="font-size: 0.8rem;">SWR Rate →</td>';
        SWR_RATES.forEach(rate => {
            html += `<td style="background-color: var(--swr-pi-header-background); color: var(--swr-pi-header-text); font-size: 0.85rem;">${rate.toFixed(1)}%</td>`;
        });
        html += '</tr>';

        html += '</tbody></table>';

        
        html += `
            <div class="swr-pi-legend">
                <span>Lower Investment</span>
                <div class="swr-pi-legend-gradient">
                    <span style="background: #2ecc71;"></span>
                    <span style="background: #58d68d;"></span>
                    <span style="background: #82e0aa;"></span>
                    <span style="background: #abebc6;"></span>
                    <span style="background: #d5f5e3;"></span>
                    <span style="background: #fcf3cf;"></span>
                    <span style="background: #f9e79f;"></span>
                    <span style="background: #f5b041;"></span>
                    <span style="background: #eb984e;"></span>
                    <span style="background: #e74c3c;"></span>
                </div>
                <span>Higher Investment</span>
            </div>
        `;

        
        const targetAt4 = calculateInvestmentRequired(targetMonthly, 4.0);
        const targetAt3 = calculateInvestmentRequired(targetMonthly, 3.0);
        const targetAt5 = calculateInvestmentRequired(targetMonthly, 5.0);
        const annualIncome = targetMonthly * 12;

        html += `
            <div class="swr-pi-summary">
                <h4>Summary for ${formatIncome(targetMonthly, currency)}/month (${formatIncome(annualIncome, currency)}/year)</h4>
                <div class="swr-pi-summary-grid">
                    <div class="swr-pi-summary-item">
                        <div class="label">Conservative (3% SWR)</div>
                        <div class="value">${formatCurrency(targetAt3, currency)}</div>
                        <div class="subtext">Higher safety margin</div>
                    </div>
                    <div class="swr-pi-summary-item">
                        <div class="label">Standard (4% SWR)</div>
                        <div class="value">${formatCurrency(targetAt4, currency)}</div>
                        <div class="subtext">Traditional "4% Rule"</div>
                    </div>
                    <div class="swr-pi-summary-item">
                        <div class="label">Aggressive (5% SWR)</div>
                        <div class="value">${formatCurrency(targetAt5, currency)}</div>
                        <div class="subtext">Higher withdrawal risk</div>
                    </div>
                </div>
            </div>
        `;

        resultsDiv.innerHTML = html;
    }

    function generateIncomeSteps(target) {
        
        
        const steps = [];

        
        const magnitude = Math.pow(10, Math.floor(Math.log10(target)));
        const roundTo = magnitude >= 1000 ? 500 : (magnitude >= 100 ? 100 : 50);

        
        const multipliers = [10, 8, 6, 5, 4, 3, 2, 1.5, 1, 0.75, 0.5, 0.25, 0.1];

        multipliers.forEach(mult => {
            let value = target * mult;
            
            if (value >= 10000) {
                value = Math.round(value / 1000) * 1000;
            } else if (value >= 1000) {
                value = Math.round(value / 500) * 500;
            } else if (value >= 100) {
                value = Math.round(value / 100) * 100;
            } else {
                value = Math.round(value / 50) * 50;
            }

            if (value >= 100 && !steps.includes(value)) {
                steps.push(value);
            }
        });

        
        if (!steps.includes(target)) {
            steps.push(target);
        }

        
        steps.sort((a, b) => b - a);

        
        if (steps.length > 12) {
            const targetIndex = steps.indexOf(target);
            
            const startIndex = Math.max(0, targetIndex - 5);
            const endIndex = Math.min(steps.length, startIndex + 12);
            return steps.slice(startIndex, endIndex);
        }

        return steps;
    }

    
    calculateBtn.addEventListener('click', generateGrid);

    monthlyIncomeInput.addEventListener('keypress', (e) => {
        if (e.key === 'Enter') {
            generateGrid();
        }
    });

    
    generateGrid();
})();
</script>

<hr>

<h2 class="relative group">How to use this calculator
    <div id="how-to-use-this-calculator" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#how-to-use-this-calculator" aria-label="Anchor">#</a>
    </span>
    
</h2>

<h3 class="relative group">Step 1: Enter your target monthly income
    <div id="step-1-enter-your-target-monthly-income" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-1-enter-your-target-monthly-income" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Type in how much passive income you want each month. This should cover all your living expenses and a buffer for unexpected costs.</p>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="note">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span></div>
        <div class="grow">
          Note
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p><strong>Not sure what number to use?</strong> Add up your monthly expenses:</p></div></div><table>
	<thead>
			<tr>
					<th>Category</th>
					<th>Examples</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Housing</strong></td>
					<td>Rent, mortgage, property taxes</td>
			</tr>
			<tr>
					<td><strong>Utilities</strong></td>
					<td>Electric, water, internet, phone</td>
			</tr>
			<tr>
					<td><strong>Food</strong></td>
					<td>Groceries, dining out</td>
			</tr>
			<tr>
					<td><strong>Transport</strong></td>
					<td>Car payment, fuel, insurance, transit</td>
			</tr>
			<tr>
					<td><strong>Insurance</strong></td>
					<td>Health, life, home</td>
			</tr>
			<tr>
					<td><strong>Entertainment</strong></td>
					<td>Subscriptions, hobbies, travel</td>
			</tr>
			<tr>
					<td><strong>Buffer</strong></td>
					<td>Add 10-20% extra for unexpected costs</td>
			</tr>
	</tbody>
</table>

<h3 class="relative group">Step 2: Select your currency
    <div id="step-2-select-your-currency" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-2-select-your-currency" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Choose your local currency from the dropdown. The calculator supports USD, EUR, GBP, JPY, AUD, and CAD.</p>

<h3 class="relative group">Step 3: Click calculate
    <div id="step-3-click-calculate" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-3-click-calculate" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Hit the button and the grid populates instantly.</p>
<hr>

<h2 class="relative group">Reading the results
    <div id="reading-the-results" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#reading-the-results" aria-label="Anchor">#</a>
    </span>
    
</h2>

<h3 class="relative group">The grid explained
    <div id="the-grid-explained" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-grid-explained" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>The table shows investment amounts required for:</p>
<table>
	<thead>
			<tr>
					<th>Element</th>
					<th>What It Shows</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Rows</strong></td>
					<td>Different monthly income levels (0.1x to 10x your target)</td>
			</tr>
			<tr>
					<td><strong>Columns</strong></td>
					<td>Different SWR rates (3% to 6%)</td>
			</tr>
			<tr>
					<td><strong>Green cells</strong></td>
					<td>Lower investment required (more achievable)</td>
			</tr>
			<tr>
					<td><strong>Red cells</strong></td>
					<td>Higher investment required (bigger target)</td>
			</tr>
			<tr>
					<td><strong>Highlighted cell</strong></td>
					<td>Your exact target at the standard 4% SWR</td>
			</tr>
	</tbody>
</table>

<h3 class="relative group">The summary section
    <div id="the-summary-section" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-summary-section" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Below the grid, you'll see three key numbers for your target income:</p>
<div
  class="tab__container w-full"
  
  >
  <div class="tab__nav" role="tablist">
    <div class="flex flex-wrap gap-1"><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 tab--active"
          role="tab"
          aria-selected="true"
          data-tab-index="0"
          data-tab-label="Conservative (3%)">
          <span class="flex items-center gap-1">
            
            Conservative (3%)
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="1"
          data-tab-label="Standard (4%)">
          <span class="flex items-center gap-1">
            
            Standard (4%)
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="2"
          data-tab-label="Aggressive (5%)">
          <span class="flex items-center gap-1">
            
            Aggressive (5%)
          </span>
        </button></div>
  </div>
  <div class="tab__content mt-4"><div class="tab__panel tab--active" data-tab-index="0">
        <p><strong>Highest investment, lowest risk</strong></p>
<p>Best for:</p>
<ul>
<li>Early retirees (before 50)</li>
<li>Risk-averse investors</li>
<li>Those with no other income sources</li>
<li>40+ year retirement horizons</li>
</ul>

      </div><div class="tab__panel " data-tab-index="1">
        <p><strong>The classic &quot;4% rule&quot; amount</strong></p>
<p>Best for:</p>
<ul>
<li>Traditional 30-year retirement</li>
<li>Diversified portfolios</li>
<li>Those comfortable with some volatility</li>
<li>Flexibility to adjust spending</li>
</ul>

      </div><div class="tab__panel " data-tab-index="2">
        <p><strong>Lower investment, higher risk</strong></p>
<p>Best for:</p>
<ul>
<li>Those with other income sources</li>
<li>Shorter time horizons</li>
<li>Willingness to adjust lifestyle</li>
<li>Higher risk tolerance</li>
</ul>

      </div></div>
</div>

<hr>

<h2 class="relative group">Quick example
    <div id="quick-example" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#quick-example" aria-label="Anchor">#</a>
    </span>
    
</h2>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow" style="background-color: #1e3a5f"
  
  >
  <span
    
      class="pe-3 flex items-center" style="color: #60a5fa"
    
    >
    
  </span>

  <span
    
      style="color: #e2e8f0"
    
    ><p><strong>Target:</strong> $3,000/month passive income</p>
<table>
	<thead>
			<tr>
					<th>SWR Rate</th>
					<th>Investment Needed</th>
					<th>Risk Level</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>3%</td>
					<td>$1,200,000</td>
					<td>Conservative</td>
			</tr>
			<tr>
					<td>4%</td>
					<td>$900,000</td>
					<td>Standard</td>
			</tr>
			<tr>
					<td>5%</td>
					<td>$720,000</td>
					<td>Aggressive</td>
			</tr>
	</tbody>
</table>
<p>The difference between conservative and aggressive is <strong>$480,000</strong>. That's why understanding your risk tolerance matters.</p>
</span>
</div>

<hr>

<h2 class="relative group">Tips for best results
    <div id="tips-for-best-results" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#tips-for-best-results" aria-label="Anchor">#</a>
    </span>
    
</h2>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="important">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M287.9 0C297.1 0 305.5 5.25 309.5 13.52L378.1 154.8L531.4 177.5C540.4 178.8 547.8 185.1 550.7 193.7C553.5 202.4 551.2 211.9 544.8 218.2L433.6 328.4L459.9 483.9C461.4 492.9 457.7 502.1 450.2 507.4C442.8 512.7 432.1 513.4 424.9 509.1L287.9 435.9L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.9 115.1 483.9L142.2 328.4L31.11 218.2C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C270.4 5.249 278.7 0 287.9 0L287.9 0zM287.9 78.95L235.4 187.2C231.9 194.3 225.1 199.3 217.3 200.5L98.98 217.9L184.9 303C190.4 308.5 192.9 316.4 191.6 324.1L171.4 443.7L276.6 387.5C283.7 383.7 292.2 383.7 299.2 387.5L404.4 443.7L384.2 324.1C382.9 316.4 385.5 308.5 391 303L476.9 217.9L358.6 200.5C350.7 199.3 343.9 194.3 340.5 187.2L287.9 78.95z"/></svg></span></div>
        <div class="grow">
          Important
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p><strong>Key considerations:</strong></p>
<ul>
<li><strong>Start conservative</strong> — If retiring early (before 50), lean toward 3-3.5% SWR</li>
<li><strong>Include taxes</strong> — Your withdrawal may need to be higher depending on your country's tax rules</li>
<li><strong>Check multiple scenarios</strong> — Look at both &quot;minimum viable&quot; and &quot;comfortable&quot; income levels</li>
<li><strong>Revisit annually</strong> — Recalculate as your expenses and goals change</li>
</ul></div></div><hr>

<h2 class="relative group">Next steps
    <div id="next-steps" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#next-steps" aria-label="Anchor">#</a>
    </span>
    
</h2>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow" style="background-color: #0f5132"
  
  >
  <span
    
      class="pe-3 flex items-center" style="color: #75b798"
    
    >
    
  </span>

  <span
    
      style="color: #d1e7dd"
    
    ><p><strong>Now that you know your target number:</strong></p>
<ol>
<li><strong>Calculate your current savings rate</strong> — How much are you saving each month?</li>
<li><strong>Project when you'll reach your goal</strong> — Use a compound interest calculator</li>
<li><strong>Consider ways to close the gap faster</strong> — Increase income or reduce expenses</li>
</ol></span>
</div>

<hr>

<h2 class="relative group">Related resources
    <div id="related-resources" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#related-resources" aria-label="Anchor">#</a>
    </span>
    
</h2>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow" style="background-color: #1e3a5f"
  
  >
  <span
    
      class="pe-3 flex items-center" style="color: #60a5fa"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M172.5 131.1C228.1 75.51 320.5 75.51 376.1 131.1C426.1 181.1 433.5 260.8 392.4 318.3L391.3 319.9C381 334.2 361 337.6 346.7 327.3C332.3 317 328.9 297 339.2 282.7L340.3 281.1C363.2 249 359.6 205.1 331.7 177.2C300.3 145.8 249.2 145.8 217.7 177.2L105.5 289.5C73.99 320.1 73.99 372 105.5 403.5C133.3 431.4 177.3 435 209.3 412.1L210.9 410.1C225.3 400.7 245.3 404 255.5 418.4C265.8 432.8 262.5 452.8 248.1 463.1L246.5 464.2C188.1 505.3 110.2 498.7 60.21 448.8C3.741 392.3 3.741 300.7 60.21 244.3L172.5 131.1zM467.5 380C411 436.5 319.5 436.5 263 380C213 330 206.5 251.2 247.6 193.7L248.7 192.1C258.1 177.8 278.1 174.4 293.3 184.7C307.7 194.1 311.1 214.1 300.8 229.3L299.7 230.9C276.8 262.1 280.4 306.9 308.3 334.8C339.7 366.2 390.8 366.2 422.3 334.8L534.5 222.5C566 191 566 139.1 534.5 108.5C506.7 80.63 462.7 76.99 430.7 99.9L429.1 101C414.7 111.3 394.7 107.1 384.5 93.58C374.2 79.2 377.5 59.21 391.9 48.94L393.5 47.82C451 6.731 529.8 13.25 579.8 63.24C636.3 119.7 636.3 211.3 579.8 267.7L467.5 380z"/></svg>
</span>
  </span>

  <span
    
      style="color: #e2e8f0"
    
    ><p><strong>Explore More:</strong></p>
<ul>
<li><strong><a href="/posts/swr-passive-income-investment-required/" >SWR Passive Income Guide</a></strong> — Full explanation of freedom numbers</li>
<li><strong><a href="/calculators/interactive_safe_withdrawal_rate_calculator/" >SWR Calculator</a></strong> — Stress-test your withdrawal rate with 150+ years of data</li>
<li><strong><a href="/posts/swr-checklist-practical-steps-for-retirement-withdrawal-planning/" >SWR Checklist</a></strong> — Step-by-step retirement planning guide</li>
<li><strong><a href="/calculators/interactive_calculator_to_your_fire_number/" >FIRE Calculator</a></strong> — Calculate your financial independence number</li>
<li><strong><a href="/calculators/how-to-use-savings-rate-calculator/" >Savings Rate Calculator</a></strong> — Find out how much you're actually saving</li>
</ul></span>
</div>

<hr>
<p><strong>Questions about the calculator?</strong> Drop a comment below!</p>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow bg-primary-100 dark:bg-primary-900"
  
  >
  <span
    
      class="text-primary-400 pe-3 flex items-center"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span>
  </span>

  <span
    
      class="dark:text-neutral-300"
    
    ><strong>Disclaimer:</strong> This calculator reflects my personal views and is for educational purposes only. It is not financial advice. Every situation is different. Always check your country's specific tax and investment rules before acting. See the full <a href="/disclaimer/" >Disclaimer</a> and <a href="/privacy/" >Privacy Policy</a> for the long version.</span>
</div>

]]></content:encoded><media:content url="https://libreleo.com/img/featured/swr-passive-income-calculator.webp" medium="image"/></item><item><title>How to Use the Savings Rate Calculator</title><link>https://libreleo.com/calculators/how-to-use-savings-rate-calculator/</link><pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate><guid>https://libreleo.com/calculators/how-to-use-savings-rate-calculator/</guid><description>Step-by-step guide to calculating your savings rate and understanding what percentage of your income you're actually saving</description><content:encoded><![CDATA[<span class="flex cursor-pointer">
  
  
  
  
    <span
      class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
  
    
Updated: 19/06/2026

  </span>
</span>


<div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl">
  Your savings rate is probably the most important number in personal finance. Not your salary. Not your investment returns. Your savings rate. Use this calculator to find yours.
</div>

<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="tip">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span></div>
        <div class="grow">
          Tip
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p><strong>Want to understand the full power of your savings rate?</strong> Read my complete guide: <a href="/posts/savings-rate-fire-guide/" >Why Your Savings Rate Matters More Than Investment Returns</a></p></div></div><hr>

<h2 class="relative group">Savings Rate Calculator
    <div id="savings-rate-calculator" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#savings-rate-calculator" aria-label="Anchor">#</a>
    </span>
    
</h2>

<style>
    :root {
        --sr-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
        --sr-background-color: #ffffff;
        --sr-text-color: #1a202c;
        --sr-text-secondary: #4a5568;
        --sr-border-color: #e2e8f0;
        --sr-input-bg: #ffffff;
        --sr-input-border: #cbd5e0;
        --sr-button-bg: #3b82f6;
        --sr-button-hover: #2563eb;
        --sr-button-text: #ffffff;
        --sr-result-bg: #f7fafc;
        --sr-error-bg: #fee2e2;
        --sr-error-border: #fca5a5;
        --sr-error-text: #991b1b;
        --sr-green-light: #d1fae5;
        --sr-green-border: #6ee7b7;
        --sr-green-text: #065f46;
        --sr-blue-light: #dbeafe;
        --sr-blue-border: #93c5fd;
        --sr-blue-text: #1e40af;
        --sr-purple-light: #e9d5ff;
        --sr-purple-border: #c084fc;
        --sr-purple-text: #6b21a8;
        --sr-bar-savings: #10b981;
        --sr-bar-spending: #ef4444;
        --sr-benchmark-bar: #3b82f6;
    }

    .dark {
        --sr-background-color: #2d2d2d;
        --sr-text-color: #f8f9fa;
        --sr-text-secondary: #adb5bd;
        --sr-border-color: #444;
        --sr-input-bg: #333;
        --sr-input-border: #555;
        --sr-button-bg: #3b82f6;
        --sr-button-hover: #2563eb;
        --sr-button-text: #ffffff;
        --sr-result-bg: #1a1a1a;
        --sr-error-bg: #7f1d1d;
        --sr-error-border: #991b1b;
        --sr-error-text: #fca5a5;
        --sr-green-light: #064e3b;
        --sr-green-border: #059669;
        --sr-green-text: #6ee7b7;
        --sr-blue-light: #1e3a8a;
        --sr-blue-border: #3b82f6;
        --sr-blue-text: #93c5fd;
        --sr-purple-light: #581c87;
        --sr-purple-border: #9333ea;
        --sr-purple-text: #e9d5ff;
        --sr-bar-savings: #10b981;
        --sr-bar-spending: #ef4444;
        --sr-benchmark-bar: #3b82f6;
    }

    .sr-calculator {
        font-family: var(--sr-font-family);
        background-color: var(--sr-background-color);
        color: var(--sr-text-color);
        border: 1px solid var(--sr-border-color);
        border-radius: 0.75rem;
        padding: 2rem;
        margin: 2rem auto;
        max-width: 64rem;
        box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
    }

    .sr-header {
        margin-bottom: 2rem;
    }

    .sr-header h2 {
        margin: 0 0 0.5rem 0;
        font-size: 1.875rem;
        font-weight: 700;
        color: var(--sr-text-color);
    }

    .sr-header p {
        margin: 0;
        color: var(--sr-text-secondary);
    }

    .sr-inputs {
        display: flex;
        flex-direction: column;
        gap: 1.5rem;
        margin-bottom: 2rem;
    }

    .sr-input-group label {
        display: block;
        font-size: 0.875rem;
        font-weight: 600;
        color: var(--sr-text-color);
        margin-bottom: 0.5rem;
    }

    .sr-input-group label span {
        font-weight: 400;
        color: var(--sr-text-secondary);
        margin-left: 0.25rem;
    }

    .sr-input-wrapper {
        position: relative;
    }

    .sr-input-wrapper .currency {
        position: absolute;
        left: 0.75rem;
        top: 50%;
        transform: translateY(-50%);
        color: var(--sr-text-secondary);
        font-size: 1.125rem;
    }

    .sr-input-group input {
        width: 100%;
        padding: 0.75rem 1rem 0.75rem 2rem;
        border: 1px solid var(--sr-input-border);
        border-radius: 0.5rem;
        background-color: var(--sr-input-bg);
        color: var(--sr-text-color);
        font-size: 1.125rem;
        box-sizing: border-box;
    }

    .sr-input-group input:focus {
        outline: none;
        border-color: var(--sr-button-bg);
        box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
    }

    .sr-input-group .hint {
        margin-top: 0.25rem;
        font-size: 0.75rem;
        color: var(--sr-text-secondary);
    }

    .sr-error {
        display: none;
        margin-bottom: 1.5rem;
        padding: 1rem;
        background-color: var(--sr-error-bg);
        border: 1px solid var(--sr-error-border);
        border-radius: 0.5rem;
    }

    .sr-error.visible {
        display: block;
    }

    .sr-error p {
        margin: 0;
        color: var(--sr-error-text);
        font-size: 0.875rem;
        font-weight: 500;
    }

    .sr-results {
        display: none;
    }

    .sr-results.visible {
        display: block;
    }

    .sr-rate-display {
        text-align: center;
        margin-bottom: 2rem;
    }

    .sr-rate-number {
        font-size: 3.75rem;
        font-weight: 700;
        background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%);
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
        background-clip: text;
        margin-bottom: 0.5rem;
    }

    .sr-rate-label {
        color: var(--sr-text-secondary);
        font-size: 0.875rem;
        text-transform: uppercase;
        letter-spacing: 0.05em;
    }

    .sr-visual-bar {
        position: relative;
        height: 3rem;
        background-color: var(--sr-result-bg);
        border-radius: 9999px;
        overflow: hidden;
        margin-bottom: 2rem;
    }

    .sr-savings-bar, .sr-spending-bar {
        position: absolute;
        top: 0;
        height: 100%;
        display: flex;
        align-items: center;
        padding: 0 0.75rem;
        transition: width 0.5s ease;
    }

    .sr-savings-bar {
        left: 0;
        background: linear-gradient(90deg, #10b981 0%, #059669 100%);
        justify-content: flex-end;
    }

    .sr-spending-bar {
        right: 0;
        background: linear-gradient(90deg, #f87171 0%, #ef4444 100%);
        justify-content: flex-start;
    }

    .sr-bar-text {
        color: white;
        font-weight: 600;
        font-size: 0.875rem;
    }

    .sr-bar-labels {
        display: flex;
        justify-content: space-between;
        margin-top: 0.5rem;
        font-size: 0.75rem;
        color: var(--sr-text-secondary);
    }

    .sr-breakdown {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
        gap: 1rem;
        margin-bottom: 2rem;
    }

    .sr-card {
        padding: 1rem;
        border-radius: 0.5rem;
        border: 1px solid;
    }

    .sr-card.green {
        background-color: var(--sr-green-light);
        border-color: var(--sr-green-border);
    }

    .sr-card.blue {
        background-color: var(--sr-blue-light);
        border-color: var(--sr-blue-border);
    }

    .sr-card.purple {
        background-color: var(--sr-purple-light);
        border-color: var(--sr-purple-border);
    }

    .sr-card-label {
        font-size: 0.75rem;
        text-transform: uppercase;
        letter-spacing: 0.05em;
        margin-bottom: 0.25rem;
    }

    .sr-card.green .sr-card-label {
        color: var(--sr-green-text);
    }

    .sr-card.blue .sr-card-label {
        color: var(--sr-blue-text);
    }

    .sr-card.purple .sr-card-label {
        color: var(--sr-purple-text);
    }

    .sr-card-value {
        font-size: 1.5rem;
        font-weight: 700;
    }

    .sr-card.green .sr-card-value {
        color: var(--sr-green-text);
    }

    .sr-card.blue .sr-card-value {
        color: var(--sr-blue-text);
    }

    .sr-card.purple .sr-card-value {
        color: var(--sr-purple-text);
    }

    .sr-fire-note {
        margin-bottom: 2rem;
        padding: 0.75rem 1rem;
        background-color: var(--sr-result-bg);
        border-left: 3px solid var(--sr-text-secondary);
        border-radius: 0.25rem;
    }

    .sr-fire-note p {
        margin: 0;
        font-size: 0.8125rem;
        color: var(--sr-text-secondary);
        line-height: 1.5;
    }

    .sr-fire-note strong {
        color: var(--sr-text-color);
    }

    .sr-benchmark {
        background-color: var(--sr-result-bg);
        border-radius: 0.5rem;
        padding: 1.5rem;
        margin-bottom: 1.5rem;
    }

    .sr-benchmark h3 {
        margin: 0 0 1rem 0;
        font-size: 1.125rem;
        font-weight: 600;
        color: var(--sr-text-color);
    }

    .sr-benchmark-row {
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-bottom: 0.75rem;
    }

    .sr-benchmark-label {
        font-size: 0.875rem;
        color: var(--sr-text-color);
        min-width: 150px;
    }

    .sr-benchmark-bar-container {
        flex: 1;
        margin: 0 1rem;
        height: 0.5rem;
        background-color: var(--sr-input-bg);
        border-radius: 9999px;
        overflow: hidden;
    }

    .sr-benchmark-bar-fill {
        height: 100%;
        transition: width 0.5s ease;
    }

    .sr-benchmark-percent {
        font-size: 0.875rem;
        font-weight: 500;
        color: var(--sr-text-secondary);
        min-width: 3rem;
        text-align: right;
    }

    .sr-interpretation {
        padding: 1rem;
        border-left: 4px solid;
        border-radius: 0.25rem;
    }

    .sr-interpretation p {
        margin: 0;
        font-size: 0.875rem;
        color: var(--sr-text-color);
    }

    .sr-actions {
        display: flex;
        gap: 0.75rem;
        margin-top: 1.5rem;
    }

    .sr-button {
        flex: 1;
        padding: 0.75rem 1.5rem;
        border: none;
        border-radius: 0.5rem;
        font-weight: 600;
        cursor: pointer;
        transition: all 0.2s;
    }

    .sr-button-primary {
        background-color: var(--sr-button-bg);
        color: var(--sr-button-text);
    }

    .sr-button-primary:hover {
        background-color: var(--sr-button-hover);
        box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
    }

    .sr-button-secondary {
        background-color: var(--sr-input-bg);
        color: var(--sr-text-color);
        border: 1px solid var(--sr-border-color);
    }

    .sr-button-secondary:hover {
        background-color: var(--sr-result-bg);
    }

    @media (max-width: 640px) {
        .sr-rate-number {
            font-size: 3rem;
        }

        .sr-breakdown {
            grid-template-columns: 1fr;
        }
    }
</style>

<div class="sr-calculator">

    
<script>
(function () {
  if (window.finfreeCurrency) return;  

  var SYMBOLS = {
    USD: '$',
    EUR: '€',
    GBP: '£',
    CHF: 'CHF ',
    AED: 'AED ',
    SGD: 'S$',
    HKD: 'HK$',
    CNY: 'CN¥',
    PHP: '₱',
    MYR: 'RM ',
    INR: '₹'
  };

  var STORAGE_KEY = 'finfree-currency';
  var EVENT_NAME = 'finfree-currency-change';

  function safeRead() {
    try { return localStorage.getItem(STORAGE_KEY) || 'USD'; } catch (e) { return 'USD'; }
  }
  function safeWrite(code) {
    try { localStorage.setItem(STORAGE_KEY, code); } catch (e) {}
  }

  window.finfreeCurrency = {
    getCode: function () { return safeRead(); },
    getSymbol: function () { return SYMBOLS[safeRead()] || '$'; },
    getSymbolFor: function (code) { return SYMBOLS[code] || '$'; },
    set: function (code) {
      if (!SYMBOLS[code]) return;
      safeWrite(code);
      var detail = { code: code, symbol: SYMBOLS[code] };
      document.dispatchEvent(new CustomEvent(EVENT_NAME, { detail: detail }));
    },
    EVENT_NAME: EVENT_NAME,
    SYMBOLS: SYMBOLS
  };

  
  document.addEventListener(EVENT_NAME, function (e) {
    var selectors = document.querySelectorAll('select[data-finfree-currency]');
    selectors.forEach(function (s) {
      if (s.value !== e.detail.code) s.value = e.detail.code;
    });
  });

  document.addEventListener('DOMContentLoaded', function () {
    var current = safeRead();
    var selectors = document.querySelectorAll('select[data-finfree-currency]');
    selectors.forEach(function (s) {
      s.value = current;
      s.addEventListener('change', function () {
        window.finfreeCurrency.set(s.value);
      });
    });
  });
})();
</script>

<style>
  .finfree-currency-selector {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    margin-bottom: 14px;
    font-size: 0.85em;
    color: var(--muted, #666);
  }
  .finfree-currency-selector select {
    padding: 4px 8px;
    border: 1px solid var(--input-border, #ced4da);
    border-radius: 4px;
    background-color: var(--input-bg, #ffffff);
    color: var(--card-text, #212529);
    font-size: 0.95em;
  }
</style>

<div class="finfree-currency-selector">
  <label for="finfree-currency-select-1782461070868172000">Currency:</label>
  <select id="finfree-currency-select-1782461070868174000" data-finfree-currency>
    <option value="USD">USD ($)</option>
    <option value="EUR">EUR (€)</option>
    <option value="GBP">GBP (£)</option>
    <option value="CHF">CHF (Fr.)</option>
    <option value="AED">AED (د.إ)</option>
    <option value="SGD">SGD (S$)</option>
    <option value="HKD">HKD (HK$)</option>
    <option value="CNY">CNY (¥)</option>
    <option value="PHP">PHP (₱)</option>
    <option value="MYR">MYR (RM)</option>
    <option value="INR">INR (₹)</option>
  </select>
</div>


    
    <div class="sr-header">
        <h2>Savings Rate Calculator</h2>
        <p>Calculate what percentage of your income you're actually saving</p>
    </div>

    
    <div class="sr-inputs">
        
        <div class="sr-input-group">
            <label for="sr-monthly-income">
                Monthly Take-Home Income
                <span>(after taxes)</span>
            </label>
            <div class="sr-input-wrapper">
                <span class="currency" data-currency-prefix>$</span>
                <input type="number" id="sr-monthly-income" placeholder="e.g. 5000" min="0" step="100">
            </div>
            <p class="hint">Include all sources of income after taxes</p>
        </div>

        
        <div class="sr-input-group">
            <label for="sr-monthly-spending">
                Monthly Spending
                <span>(all expenses)</span>
            </label>
            <div class="sr-input-wrapper">
                <span class="currency" data-currency-prefix>$</span>
                <input type="number" id="sr-monthly-spending" placeholder="e.g. 3500" min="0" step="100">
            </div>
            <p class="hint">Include rent, food, entertainment, everything</p>
        </div>
    </div>

    
    <div class="sr-fire-note">
        <p><strong>Assumptions:</strong> "Years to FIRE" assumes 7% annual returns and a 4% safe withdrawal rate (25x annual expenses). It's a rough estimate; your real timeline depends on market returns, taxes, currency, and life changes.</p>
    </div>

    
    <div id="sr-error" class="sr-error">
        <p></p>
    </div>

    
    <div id="sr-results" class="sr-results">
        
        <div class="sr-rate-display">
            <div id="sr-rate-number" class="sr-rate-number">0%</div>
            <p class="sr-rate-label">Your Savings Rate</p>
        </div>

        
        <div class="sr-visual-bar">
            <div id="sr-savings-bar" class="sr-savings-bar" style="width: 0%;">
                <span id="sr-savings-text" class="sr-bar-text"></span>
            </div>
            <div id="sr-spending-bar" class="sr-spending-bar" style="width: 0%;">
                <span id="sr-spending-text" class="sr-bar-text"></span>
            </div>
        </div>
        <div class="sr-bar-labels">
            <span>💰 Savings</span>
            <span>💸 Spending</span>
        </div>

        
        <div class="sr-breakdown">
            <div class="sr-card green">
                <div class="sr-card-label">Monthly Savings</div>
                <div id="sr-monthly-savings" class="sr-card-value">$0</div>
            </div>
            <div class="sr-card blue">
                <div class="sr-card-label">Annual Savings</div>
                <div id="sr-annual-savings" class="sr-card-value">$0</div>
            </div>
            <div class="sr-card purple">
                <div class="sr-card-label">Years to FIRE</div>
                <div id="sr-years-fire" class="sr-card-value">--</div>
            </div>
        </div>

        
        <div class="sr-fire-note">
            <p><strong>Note:</strong> Years to FIRE assumes 7% annual returns and 4% safe withdrawal rate (25x expenses). This is a rough estimate - actual timelines vary based on market performance, taxes, life changes, and personal circumstances.</p>
        </div>

        
        <div class="sr-benchmark">
            <h3>How Do You Compare?</h3>
            <div class="sr-benchmark-row">
                <span class="sr-benchmark-label">US Average (14%)</span>
                <div class="sr-benchmark-bar-container">
                    <div class="sr-benchmark-bar-fill" style="width: 14%; background-color: #9ca3af;"></div>
                </div>
                <span class="sr-benchmark-percent">14%</span>
            </div>
            <div class="sr-benchmark-row">
                <span class="sr-benchmark-label">FIRE Community (50%+)</span>
                <div class="sr-benchmark-bar-container">
                    <div class="sr-benchmark-bar-fill" style="width: 50%; background-color: #10b981;"></div>
                </div>
                <span class="sr-benchmark-percent">50%+</span>
            </div>
            <div class="sr-benchmark-row">
                <span class="sr-benchmark-label" style="font-weight: 600;">Your Rate</span>
                <div class="sr-benchmark-bar-container">
                    <div id="sr-your-bar" class="sr-benchmark-bar-fill" style="width: 0%; background-color: var(--sr-benchmark-bar);"></div>
                </div>
                <span id="sr-your-percent" class="sr-benchmark-percent" style="font-weight: 600;">0%</span>
            </div>
        </div>

        
        <div id="sr-interpretation" class="sr-interpretation">
            <p></p>
        </div>
    </div>

    
    <div class="sr-actions">
        <button onclick="srCalculate()" class="sr-button sr-button-primary">Calculate</button>
        <button onclick="srReset()" class="sr-button sr-button-secondary">Reset</button>
    </div>
</div>

<script>
function _srSym() { return (window.finfreeCurrency && window.finfreeCurrency.getSymbol()) || '$'; }
function _srSyncSymbols() {
  var sym = _srSym();
  document.querySelectorAll('.sr-calculator [data-currency-prefix]').forEach(function (el) { el.textContent = sym; });
}
document.addEventListener('finfree-currency-change', function () { _srSyncSymbols(); try { srCalculate(); } catch (e) {} });
document.addEventListener('DOMContentLoaded', _srSyncSymbols);

function srCalculate() {
    const income = parseFloat(document.getElementById('sr-monthly-income').value) || 0;
    const spending = parseFloat(document.getElementById('sr-monthly-spending').value) || 0;

    const errorDiv = document.getElementById('sr-error');
    const resultsDiv = document.getElementById('sr-results');

    errorDiv.classList.remove('visible');

    if (income <= 0) {
        srShowError('Please enter a valid monthly income greater than 0');
        resultsDiv.classList.remove('visible');
        return;
    }

    if (spending < 0) {
        srShowError('Monthly spending cannot be negative');
        resultsDiv.classList.remove('visible');
        return;
    }

    if (spending > income) {
        srShowError('Your spending exceeds your income. You have a negative savings rate.');
    }

    const monthlySavings = income - spending;
    const savingsRate = (monthlySavings / income) * 100;
    const annualSavings = monthlySavings * 12;

    let yearsToFIRE = '--';
    if (savingsRate > 0 && monthlySavings > 0) {
        const returnRate = 0.07;
        const expenseMultiplier = 25;
        const annualSpending = spending * 12;
        const x = (expenseMultiplier * annualSpending) / annualSavings;
        if (x > 1) {
            yearsToFIRE = Math.ceil(Math.log(1 + x) / Math.log(1 + returnRate)) + ' years';
        } else {
            yearsToFIRE = '0 years';
        }
    }

    document.getElementById('sr-rate-number').textContent = savingsRate.toFixed(1) + '%';
    document.getElementById('sr-monthly-savings').textContent = _srSym() + monthlySavings.toLocaleString('en-US', { maximumFractionDigits: 0 });
    document.getElementById('sr-annual-savings').textContent = _srSym() + annualSavings.toLocaleString('en-US', { maximumFractionDigits: 0 });
    document.getElementById('sr-years-fire').textContent = yearsToFIRE;

    const savingsPercent = Math.max(0, Math.min(100, savingsRate));
    const spendingPercent = 100 - savingsPercent;

    document.getElementById('sr-savings-bar').style.width = savingsPercent + '%';
    document.getElementById('sr-spending-bar').style.width = spendingPercent + '%';

    if (savingsPercent > 0) {
        document.getElementById('sr-savings-text').textContent = savingsPercent.toFixed(0) + '%';
    } else {
        document.getElementById('sr-savings-text').textContent = '';
    }

    if (spendingPercent > 0) {
        document.getElementById('sr-spending-text').textContent = spendingPercent.toFixed(0) + '%';
    } else {
        document.getElementById('sr-spending-text').textContent = '';
    }

    document.getElementById('sr-your-bar').style.width = Math.min(100, savingsPercent) + '%';
    document.getElementById('sr-your-percent').textContent = savingsPercent.toFixed(0) + '%';

    srUpdateInterpretation(savingsRate);

    resultsDiv.classList.add('visible');
}

function srShowError(message) {
    const errorDiv = document.getElementById('sr-error');
    errorDiv.querySelector('p').textContent = message;
    errorDiv.classList.add('visible');
}

function srUpdateInterpretation(rate) {
    const interpDiv = document.getElementById('sr-interpretation');
    let message = '';
    let style = '';

    if (rate < 0) {
        message = '⚠️ Warning: You\'re spending more than you earn. Focus on reducing expenses or increasing income to avoid debt.';
        style = 'background-color: var(--sr-error-bg); border-color: var(--sr-error-border);';
    } else if (rate < 10) {
        message = '📊 Below average: Your savings rate is below the US average. Small increases here can make a big difference over time.';
        style = 'background-color: #fed7aa; border-color: #fb923c;';
    } else if (rate < 20) {
        message = '✅ Good start: You\'re saving at or above the US average (14%). Keep building this habit!';
        style = 'background-color: #98884a; border-color: #fbbf24;';
    } else if (rate < 40) {
        message = '💪 Strong savings: You\'re well above average. You\'re on track for financial security.';
        style = 'background-color: var(--sr-green-light); border-color: var(--sr-green-border);';
    } else if (rate < 60) {
        message = '🚀 Excellent: You\'re in FIRE territory! At this rate, early retirement is within reach.';
        style = 'background-color: var(--sr-blue-light); border-color: var(--sr-blue-border);';
    } else {
        message = '🏆 Outstanding: You\'re crushing it! This savings rate will accelerate your path to financial independence.';
        style = 'background-color: var(--sr-purple-light); border-color: var(--sr-purple-border);';
    }

    interpDiv.setAttribute('style', style);
    interpDiv.querySelector('p').textContent = message;
}

function srReset() {
    document.getElementById('sr-monthly-income').value = '';
    document.getElementById('sr-monthly-spending').value = '';
    document.getElementById('sr-results').classList.remove('visible');
    document.getElementById('sr-error').classList.remove('visible');
}

document.getElementById('sr-monthly-income').addEventListener('keypress', function(e) {
    if (e.key === 'Enter') srCalculate();
});

document.getElementById('sr-monthly-spending').addEventListener('keypress', function(e) {
    if (e.key === 'Enter') srCalculate();
});
</script>

<hr>

<h2 class="relative group">How to Use This Calculator
    <div id="how-to-use-this-calculator" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#how-to-use-this-calculator" aria-label="Anchor">#</a>
    </span>
    
</h2>

<h3 class="relative group">Step 1: Enter your monthly take-home income
    <div id="step-1-enter-your-monthly-take-home-income" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-1-enter-your-monthly-take-home-income" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>This is what you actually receive after taxes. Include:</p>
<table>
	<thead>
			<tr>
					<th>Income Type</th>
					<th>Include?</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Salary (after tax)</td>
					<td>✅ Yes</td>
			</tr>
			<tr>
					<td>Any side hustle income</td>
					<td>✅ Yes</td>
			</tr>
			<tr>
					<td>Rental income</td>
					<td>✅ Yes</td>
			</tr>
			<tr>
					<td>Investment dividends</td>
					<td>✅ Yes</td>
			</tr>
			<tr>
					<td>Pre-tax amounts</td>
					<td>❌ No</td>
			</tr>
			<tr>
					<td>Money you never see</td>
					<td>❌ No</td>
			</tr>
	</tbody>
</table>

<h3 class="relative group">Step 2: Enter your monthly spending
    <div id="step-2-enter-your-monthly-spending" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-2-enter-your-monthly-spending" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Be honest here. Include everything you spend:</p>
<table>
	<thead>
			<tr>
					<th>Category</th>
					<th>Examples</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Housing</strong></td>
					<td>Rent, mortgage, utilities</td>
			</tr>
			<tr>
					<td><strong>Food</strong></td>
					<td>Groceries, dining out</td>
			</tr>
			<tr>
					<td><strong>Transportation</strong></td>
					<td>Car payment, insurance, gas, transit</td>
			</tr>
			<tr>
					<td><strong>Subscriptions</strong></td>
					<td>Streaming, gym, software</td>
			</tr>
			<tr>
					<td><strong>Entertainment</strong></td>
					<td>Hobbies, travel, fun</td>
			</tr>
			<tr>
					<td><strong>Everything else</strong></td>
					<td>If money left your account, count it</td>
			</tr>
	</tbody>
</table>

<h3 class="relative group">Step 3: Review your results
    <div id="step-3-review-your-results" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-3-review-your-results" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>The calculator instantly shows you:</p>
<table>
	<thead>
			<tr>
					<th>Result</th>
					<th>What It Means</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Savings Rate %</strong></td>
					<td>Percentage of income you're keeping</td>
			</tr>
			<tr>
					<td><strong>Monthly Savings</strong></td>
					<td>Dollar amount saved per month</td>
			</tr>
			<tr>
					<td><strong>Annual Savings</strong></td>
					<td>Yearly total</td>
			</tr>
			<tr>
					<td><strong>Years to FIRE</strong></td>
					<td>Estimated time to financial independence</td>
			</tr>
	</tbody>
</table>
<hr>

<h2 class="relative group">Understanding Your Results
    <div id="understanding-your-results" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#understanding-your-results" aria-label="Anchor">#</a>
    </span>
    
</h2>

<h3 class="relative group">The visual breakdown
    <div id="the-visual-breakdown" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-visual-breakdown" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>The progress bar shows exactly how your income splits between savings (green) and spending (red). If that green bar is tiny, you know what needs to change.</p>

<h3 class="relative group">Benchmark comparison
    <div id="benchmark-comparison" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#benchmark-comparison" aria-label="Anchor">#</a>
    </span>
    
</h3>
<div
  class="tab__container w-full"
  
  >
  <div class="tab__nav" role="tablist">
    <div class="flex flex-wrap gap-1"><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 tab--active"
          role="tab"
          aria-selected="true"
          data-tab-index="0"
          data-tab-label="Average (14%)">
          <span class="flex items-center gap-1">
            
            Average (14%)
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="1"
          data-tab-label="Good (25-35%)">
          <span class="flex items-center gap-1">
            
            Good (25-35%)
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="2"
          data-tab-label="FIRE (50%&#43;)">
          <span class="flex items-center gap-1">
            
            FIRE (50%&#43;)
          </span>
        </button></div>
  </div>
  <div class="tab__content mt-4"><div class="tab__panel tab--active" data-tab-index="0">
        <p><strong>Most people save around 14%</strong></p>
<p>This is the typical savings rate. It's fine for basic retirement at 65, but won't get you to early retirement.</p>

      </div><div class="tab__panel " data-tab-index="1">
        <p><strong>Above average savers</strong></p>
<p>You're doing better than most. At this rate, you could potentially retire 5-10 years early.</p>

      </div><div class="tab__panel " data-tab-index="2">
        <p><strong>Serious early retirement territory</strong></p>
<p>People pursuing FIRE often hit 50% or higher. At this rate, financial independence becomes possible in 15-17 years.</p>

      </div></div>
</div>


<h3 class="relative group">Years to FIRE estimate
    <div id="years-to-fire-estimate" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#years-to-fire-estimate" aria-label="Anchor">#</a>
    </span>
    
</h3>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="note">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span></div>
        <div class="grow">
          Note
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>This calculation assumes:</p>
<ul>
<li>The 4% withdrawal rule (you need 25× annual expenses saved)</li>
<li>7% annual investment returns</li>
<li>Your current savings rate stays constant</li>
</ul>
<p>It's just an estimate, not a guarantee.</p></div></div><hr>

<h2 class="relative group">Example Calculation
    <div id="example-calculation" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#example-calculation" aria-label="Anchor">#</a>
    </span>
    
</h2>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow" style="background-color: #1e3a5f"
  
  >
  <span
    
      class="pe-3 flex items-center" style="color: #60a5fa"
    
    >
    
  </span>

  <span
    
      style="color: #e2e8f0"
    
    ><p><strong>Sample Calculation:</strong></p>
<table>
	<thead>
			<tr>
					<th>Input</th>
					<th>Amount</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Monthly income (after tax)</td>
					<td>$5,000</td>
			</tr>
			<tr>
					<td>Monthly spending</td>
					<td>$3,500</td>
			</tr>
			<tr>
					<td><strong>Monthly savings</strong></td>
					<td><strong>$1,500</strong></td>
			</tr>
	</tbody>
</table>
<p><strong>Savings Rate:</strong> ($1,500 ÷ $5,000) × 100 = <strong>30%</strong></p>
<p><strong>Annual Savings:</strong> $1,500 × 12 = <strong>$18,000</strong></p>
<p>At 30%, you'd hit financial independence in roughly <strong>28 years</strong> (assuming 7% returns).</p>
</span>
</div>

<hr>

<h2 class="relative group">What If My Number Is Low?
    <div id="what-if-my-number-is-low" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-if-my-number-is-low" aria-label="Anchor">#</a>
    </span>
    
</h2>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="important">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M287.9 0C297.1 0 305.5 5.25 309.5 13.52L378.1 154.8L531.4 177.5C540.4 178.8 547.8 185.1 550.7 193.7C553.5 202.4 551.2 211.9 544.8 218.2L433.6 328.4L459.9 483.9C461.4 492.9 457.7 502.1 450.2 507.4C442.8 512.7 432.1 513.4 424.9 509.1L287.9 435.9L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.9 115.1 483.9L142.2 328.4L31.11 218.2C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C270.4 5.249 278.7 0 287.9 0L287.9 0zM287.9 78.95L235.4 187.2C231.9 194.3 225.1 199.3 217.3 200.5L98.98 217.9L184.9 303C190.4 308.5 192.9 316.4 191.6 324.1L171.4 443.7L276.6 387.5C283.7 383.7 292.2 383.7 299.2 387.5L404.4 443.7L384.2 324.1C382.9 316.4 385.5 308.5 391 303L476.9 217.9L358.6 200.5C350.7 199.3 343.9 194.3 340.5 187.2L287.9 78.95z"/></svg></span></div>
        <div class="grow">
          Important
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p><strong>Don't panic.</strong> Most people don't even know their savings rate exists as a metric. Just calculating it puts you ahead.</p></div></div><p>If you're below 10%, focus on these three things:</p>
<ol>
<li><strong>Track your spending</strong> for one month (awareness alone helps)</li>
<li><strong>Cut one big expense</strong> (not lattes—find a real expense like unused subscriptions or a cheaper phone plan)</li>
<li><strong>Automate savings</strong> (save before you can spend it)</li>
</ol>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow" style="background-color: #0f5132"
  
  >
  <span
    
      class="pe-3 flex items-center" style="color: #75b798"
    
    >
    
  </span>

  <span
    
      style="color: #d1e7dd"
    
    ><strong>Small improvements compound.</strong> Going from 10% to 15% doesn't sound dramatic, but it could cut years off your working life.</span>
</div>

<hr>

<h2 class="relative group">Why This Calculator Matters
    <div id="why-this-calculator-matters" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-this-calculator-matters" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Your savings rate is the single biggest lever you control on your path to financial independence.</p>
<ul>
<li>You can't control the stock market</li>
<li>You can't force your boss to give you a raise. But if you get it, it usually barely covers inflation.</li>
<li>But you <strong>can</strong> control how much of your income you keep</li>
</ul>
<hr>
<p><strong>Questions or feedback?</strong> Leave a comment below—I'd love to hear about your savings rate journey!</p>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow bg-primary-100 dark:bg-primary-900"
  
  >
  <span
    
      class="text-primary-400 pe-3 flex items-center"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span>
  </span>

  <span
    
      class="dark:text-neutral-300"
    
    ><strong>Disclaimer:</strong> This calculator reflects my personal views and is for educational purposes only. It is not financial advice. Every situation is different. Always check your country's specific tax and investment rules before acting. See the full <a href="/disclaimer/" >Disclaimer</a> and <a href="/privacy/" >Privacy Policy</a> for the long version.</span>
</div>

]]></content:encoded><media:content url="https://libreleo.com/img/featured/how-to-use-savings-rate-calculator.webp" medium="image"/></item><item><title>Safe Withdrawal Rate (SWR) Calculator</title><link>https://libreleo.com/calculators/interactive_safe_withdrawal_rate_calculator/</link><pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate><guid>https://libreleo.com/calculators/interactive_safe_withdrawal_rate_calculator/</guid><description>An interactive calculator to explore the success rate of different withdrawal strategies using historical data.</description><content:encoded><![CDATA[
  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow bg-primary-100 dark:bg-primary-900"
  
  >
  <span
    
      class="text-primary-400 pe-3 flex items-center"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span>
  </span>

  <span
    
      class="dark:text-neutral-300"
    
    ><strong>Calculator updated</strong> with the dataset 1871 - 2025.</span>
</div>

<p>The Safe Withdrawal Rate (SWR) is the maximum rate at which a retiree can withdraw money from a retirement account each year with a low risk of depleting the funds during their lifetime.</p>
<p>This interactive calculator allows you to run your own simulations based on historical data for various asset classes. You can adjust the simulation parameters, such as the number of years, the withdrawal rate, and the portfolio allocation, to see how these changes affect the success rate.</p>
<p>Try it yourself!</p>

<style>
    :root {
        --swr-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
        --swr-background-color: #f8f9fa;
        --swr-card-background-color: #ffffff;
        --swr-border-color: #dee2e6;
        --swr-text-color: #212529;
        --swr-label-color: #495057;
        --swr-input-background-color: #ffffff;
        --swr-input-border-color: #ced4da;
        --swr-button-background-color: #004085;
        --swr-button-text-color: #ffffff;
        --swr-button-hover-background-color: #002752;
        --swr-results-background-color: #e9ecef;
        --swr-success-color: #28a745;
        --swr-failure-color: #dc3545;
        --swr-spinner-color: #007bff;
    }

    .dark {
        --swr-background-color: #1a1a1a;
        --swr-card-background-color: #2d2d2d;
        --swr-border-color: #444;
        --swr-text-color: #f8f9fa;
        --swr-label-color: #adb5bd;
        --swr-input-background-color: #333;
        --swr-input-border-color: #555;
        --swr-results-background-color: #343a40;
    }

    .swr-calculator {
        font-family: var(--swr-font-family);
        background-color: var(--swr-card-background-color);
        color: var(--swr-text-color);
        border: 1px solid var(--swr-border-color);
        border-radius: 0.5rem;
        padding: 2rem;
        margin: 2rem 0;
        box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
    }

    .swr-calculator h3 {
        margin-top: 0;
        margin-bottom: 1.5rem;
        text-align: center;
        color: var(--swr-text-color);
        font-size: 1.8rem;
        font-weight: 700;
    }

    .swr-form-grid {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
        gap: 1.5rem;
        margin-bottom: 1.5rem;
    }

    .swr-form-group {
        display: flex;
        flex-direction: column;
    }

    .swr-form-group label {
        margin-bottom: 0.5rem;
        font-weight: 500;
        color: var(--swr-label-color);
        font-size: 0.9rem;
    }

    .swr-form-group input,
    .swr-form-group select {
        padding: 0.5rem;
        border: 1px solid var(--swr-input-border-color);
        border-radius: 0.25rem;
        background-color: var(--swr-input-background-color);
        color: var(--swr-text-color);
        font-size: 0.95rem;
    }

    .swr-section-title {
        font-size: 1.2rem;
        font-weight: 600;
        margin: 1.5rem 0 1rem 0;
        padding-bottom: 0.5rem;
        border-bottom: 2px solid var(--swr-border-color);
        color: var(--swr-text-color);
    }

    #swr-portfolio-container {
        margin: 1rem 0;
    }

    .swr-portfolio-assets {
        display: flex;
        flex-direction: column;
        gap: 0.75rem;
        border: 1px solid var(--swr-border-color);
        border-radius: 0.25rem;
        padding: 1rem;
        background-color: var(--swr-input-background-color);
    }

    .swr-portfolio-asset-row {
        display: flex;
        gap: 0.75rem;
        align-items: center;
    }

    .swr-portfolio-asset-row select {
        flex: 3;
        padding: 0.5rem;
        border: 1px solid var(--swr-input-border-color);
        border-radius: 0.25rem;
        background-color: var(--swr-input-background-color);
        color: var(--swr-text-color);
    }

    .swr-portfolio-asset-row input {
        flex: 1;
        padding: 0.5rem;
        border: 1px solid var(--swr-input-border-color);
        border-radius: 0.25rem;
        background-color: var(--swr-input-background-color);
        color: var(--swr-text-color);
        text-align: right;
    }

    .swr-portfolio-asset-row button {
        padding: 0.5rem 0.75rem;
        background-color: var(--swr-failure-color);
        color: white;
        border: none;
        border-radius: 0.25rem;
        cursor: pointer;
        font-size: 1.2rem;
        line-height: 1;
        transition: opacity 0.15s ease;
    }

    .swr-portfolio-asset-row button:hover {
        opacity: 0.8;
    }

    .swr-portfolio-footer {
        display: flex;
        justify-content: space-between;
        align-items: center;
        margin-top: 0.75rem;
        padding-top: 0.75rem;
        border-top: 1px solid var(--swr-border-color);
    }

    .swr-button {
        padding: 0.6rem 1.2rem;
        border: none;
        border-radius: 0.25rem;
        background-color: var(--swr-button-background-color);
        color: var(--swr-button-text-color);
        cursor: pointer;
        font-weight: 500;
        transition: background-color 0.15s ease-in-out;
    }

    .swr-button:hover {
        background-color: var(--swr-button-hover-background-color);
    }

    .swr-button:disabled {
        opacity: 0.6;
        cursor: not-allowed;
    }

    .swr-allocation-total {
        font-weight: 600;
        color: var(--swr-text-color);
    }

    .swr-allocation-total.invalid {
        color: var(--swr-failure-color);
    }

    .swr-allocation-total.valid {
        color: var(--swr-success-color);
    }

    #swr-results {
        margin-top: 2rem;
        padding: 1.5rem;
        background-color: var(--swr-results-background-color);
        border-radius: 0.25rem;
        border: 1px solid var(--swr-border-color);
    }

    #swr-results h4 {
        margin-top: 0;
        margin-bottom: 1rem;
        color: var(--swr-text-color);
        font-size: 1.3rem;
    }

    #swr-results p {
        margin: 0.5rem 0;
        color: var(--swr-text-color);
        line-height: 1.6;
    }

    .swr-spinner {
        border: 3px solid rgba(0, 123, 255, 0.1);
        border-top: 3px solid var(--swr-spinner-color);
        border-radius: 50%;
        width: 40px;
        height: 40px;
        animation: spin 1s linear infinite;
        margin: 2rem auto;
    }

    @keyframes spin {
        0% { transform: rotate(0deg); }
        100% { transform: rotate(360deg); }
    }

    .swr-advanced-toggle {
        text-align: center;
        margin: 1.5rem 0;
    }

    .swr-advanced-toggle button {
        background: none;
        border: 1px solid var(--swr-border-color);
        color: var(--swr-text-color);
        padding: 0.5rem 1rem;
        border-radius: 0.25rem;
        cursor: pointer;
        font-size: 0.9rem;
    }

    .swr-advanced-toggle button:hover {
        background-color: var(--swr-input-background-color);
    }

    .swr-advanced-options {
        display: none;
        margin-top: 1rem;
    }

    .swr-advanced-options.show {
        display: block;
    }

    .swr-help-text {
        font-size: 0.85rem;
        color: var(--swr-label-color);
        margin-top: 0.25rem;
        font-style: italic;
    }
</style>

<div class="swr-calculator">
    <h3>Safe Withdrawal Rate Calculator</h3>

    
    <div class="swr-form-grid">
        <div class="swr-form-group">
            <label for="swr-initial-value">Initial Portfolio Value ($)</label>
            <input type="number" id="swr-initial-value" value="1000000" min="1" step="1000">
        </div>
        <div class="swr-form-group">
            <label for="swr-withdrawal-rate">Withdrawal Rate (%)</label>
            <input type="number" id="swr-withdrawal-rate" value="4.0" min="0" max="20" step="0.1">
        </div>
        <div class="swr-form-group">
            <label for="swr-years">Retirement Period (years)</label>
            <input type="number" id="swr-years" value="30" min="1" max="60" step="1">
        </div>
        <div class="swr-form-group">
            <label for="swr-fees">Annual Fees / TER (%)</label>
            <input type="number" id="swr-fees" value="0.1" min="0" max="5" step="0.01">
            <span class="swr-help-text">Total Expense Ratio</span>
        </div>
    </div>

    <div class="swr-form-grid">
        <div class="swr-form-group">
            <label for="swr-start-year">Start Year</label>
            <input type="number" id="swr-start-year" value="1871" min="1871" max="2025">
        </div>
        <div class="swr-form-group">
            <label for="swr-end-year">End Year</label>
            <input type="number" id="swr-end-year" value="2025" min="1871" max="2025">
        </div>
        <div class="swr-form-group">
            <label for="swr-inflation">Inflation Data</label>
            <select id="swr-inflation">
                <option value="us_inflation" selected>US Inflation</option>
                <option value="no_inflation">No Inflation</option>
            </select>
        </div>
        <div class="swr-form-group">
            <label for="swr-withdraw-frequency">Withdrawal Frequency</label>
            <select id="swr-withdraw-frequency">
                <option value="1">Monthly</option>
                <option value="3">Quarterly</option>
                <option value="6">Semi-Annually</option>
                <option value="12" selected>Yearly</option>
            </select>
        </div>
    </div>

    
    <div class="swr-section-title">Portfolio Allocation</div>
    <div id="swr-portfolio-container">
        <div class="swr-portfolio-assets" id="swr-portfolio-list"></div>
        <div class="swr-portfolio-footer">
            <button class="swr-button" id="swr-add-asset-btn">+ Add Asset</button>
            <span class="swr-allocation-total" id="swr-allocation-total">Total: 0%</span>
        </div>
    </div>

    
    <div class="swr-advanced-toggle" style="display: none;">
        <button id="swr-advanced-toggle-btn">Show Advanced Options</button>
    </div>

    
    <div class="swr-advanced-options" id="swr-advanced-options">
        <div class="swr-section-title">Withdrawal Strategy</div>
        <div class="swr-form-grid">
            <div class="swr-form-group">
                <label for="swr-withdrawal-method">Withdrawal Method</label>
                <select id="swr-withdrawal-method">
                    <option value="standard" selected>Standard (Constant)</option>
                    <option value="current">Current Portfolio %</option>
                    <option value="vanguard">Vanguard Dynamic</option>
                </select>
                <span class="swr-help-text">How withdrawals adjust over time</span>
            </div>
            <div class="swr-form-group">
                <label for="swr-minimum">Minimum Withdrawal (% of initial)</label>
                <input type="number" id="swr-minimum" value="3.0" min="0" max="10" step="0.1">
                <span class="swr-help-text">Floor for dynamic methods</span>
            </div>
        </div>

        <div class="swr-section-title">Rebalancing</div>
        <div class="swr-form-grid">
            <div class="swr-form-group">
                <label for="swr-rebalance">Rebalancing Strategy</label>
                <select id="swr-rebalance">
                    <option value="none" selected>No Rebalancing</option>
                    <option value="monthly">Monthly</option>
                    <option value="yearly">Yearly</option>
                    <option value="threshold">Threshold-Based</option>
                </select>
            </div>
            <div class="swr-form-group">
                <label for="swr-threshold">Rebalancing Threshold (%)</label>
                <input type="number" id="swr-threshold" value="5.0" min="0" max="50" step="1">
                <span class="swr-help-text">Only for threshold-based</span>
            </div>
        </div>

        <div class="swr-section-title">Final Threshold</div>
        <div class="swr-form-grid">
            <div class="swr-form-group">
                <label for="swr-final-threshold">Required Final % of Initial</label>
                <input type="number" id="swr-final-threshold" value="0" min="0" max="100" step="1">
                <span class="swr-help-text">0 = Can deplete fully</span>
            </div>
            <div class="swr-form-group">
                <label for="swr-final-inflation">
                    <input type="checkbox" id="swr-final-inflation" checked>
                    Adjust final threshold for inflation
                </label>
            </div>
        </div>
    </div>

    
    <div style="text-align: center; margin-top: 2rem;">
        <button class="swr-button" id="swr-calculate-btn" style="font-size: 1.1rem; padding: 0.75rem 2rem;">
            Calculate Success Rate
        </button>
    </div>

    
    <div id="swr-results" style="display: none;"></div>
</div>

<script>
(function() {
    'use strict';

    
    const portfolioListDiv = document.getElementById('swr-portfolio-list');
    const addAssetBtn = document.getElementById('swr-add-asset-btn');
    const allocationTotalSpan = document.getElementById('swr-allocation-total');
    const calculateBtn = document.getElementById('swr-calculate-btn');
    const resultsDiv = document.getElementById('swr-results');
    const advancedToggleBtn = document.getElementById('swr-advanced-toggle-btn');
    const advancedOptions = document.getElementById('swr-advanced-options');

    
    const AVAILABLE_ASSETS = [
        { value: 'us_stocks', label: 'US Stocks' },
        { value: 'us_bonds', label: 'US Bonds' },
        { value: 'ex_us_stocks', label: 'International Stocks (Ex-US)' },
        { value: 'gold', label: 'Gold' },
        { value: 'commodities', label: 'Commodities' },
        { value: 'cash', label: 'Cash' }
    ];

    
    
    const MONTHLY_REBALANCING_COST = 0.005;    
    const YEARLY_REBALANCING_COST = 0.01;      
    const THRESHOLD_REBALANCING_COST = 0.01;   

    
    const embeddedData = {
        'us_stocks': `1,1871,100.00\n2,1871,101.87\n3,1871,104.87\n4,1871,108.45\n5,1871,111.47\n6,1871,111.08\n7,1871,109.55\n8,1871,111.18\n9,1871,112.81\n10,1871,107.49\n11,1871,109.13\n12,1871,112.25\n1,1872,115.42\n2,1872,116.54\n3,1872,120.62\n4,1872,124.73\n5,1872,125.26\n6,1872,124.59\n7,1872,124.23\n8,1872,123.32\n9,1872,122.12\n10,1872,123.07\n11,1872,123.38\n12,1872,126.80\n1,1873,128.35\n2,1873,130.23\n3,1873,129.65\n4,1873,128.47\n5,1873,129.50\n6,1873,128.64\n7,1873,129.07\n8,1873,129.82\n9,1873,120.51\n10,1873,110.84\n11,1873,107.56\n12,1873,118.48\n1,1874,125.34\n2,1874,129.55\n3,1874,128.43\n4,1874,125.28\n5,1874,122.89\n6,1874,122.89\n7,1874,123.57\n8,1874,124.60\n9,1874,127.37\n10,1874,127.72\n11,1874,129.13\n12,1874,129.49\n1,1875,130.26\n2,1875,130.68\n3,1875,132.89\n4,1875,135.42\n5,1875,131.06\n6,1875,128.87\n7,1875,129.91\n8,1875,131.32\n9,1875,130.52\n10,1875,129.34\n11,1875,131.89\n12,1875,132.61\n1,1876,136.42\n2,1876,139.10\n3,1876,139.47\n4,1876,134.79\n5,1876,130.46\n6,1876,130.41\n7,1876,129.53\n8,1876,124.73\n9,1876,117.92\n10,1876,117.79\n11,1876,116.46\n12,1876,116.34\n1,1877,116.13\n2,1877,109.83\n3,1877,104.70\n4,1877,97.90\n5,1877,98.45\n6,1877,91.92\n7,1877,96.19\n8,1877,103.36\n9,1877,110.13\n10,1877,113.10\n11,1877,111.84\n12,1877,111.85\n1,1878,112.31\n2,1878,110.63\n3,1878,112.83\n4,1878,116.78\n5,1878,117.69\n6,1878,120.75\n7,1878,123.38\n8,1878,122.50\n9,1878,125.63\n10,1878,124.78\n11,1878,124.84\n12,1878,124.45\n1,1879,129.93\n2,1879,134.96\n3,1879,133.67\n4,1879,138.28\n5,1879,145.23\n6,1879,147.16\n7,1879,150.02\n8,1879,151.98\n9,1879,158.12\n10,1879,175.92\n11,1879,185.86\n12,1879,186.06\n1,1880,193.78\n2,1880,198.24\n3,1880,202.22\n4,1880,198.64\n5,1880,183.65\n6,1880,184.91\n7,1880,194.36\n8,1880,202.40\n9,1880,202.73\n10,1880,209.39\n11,1880,221.46\n12,1880,231.13\n1,1881,245.74\n2,1881,245.62\n3,1881,249.43\n4,1881,249.78\n5,1881,261.61\n6,1881,265.50\n7,1881,257.38\n8,1881,252.23\n9,1881,255.19\n10,1881,252.06\n11,1881,254.53\n12,1881,248.43\n1,1882,245.32\n2,1882,241.17\n3,1882,241.67\n4,1882,242.64\n5,1882,240.52\n6,1882,240.51\n7,1882,255.28\n8,1882,263.75\n9,1882,267.50\n10,1882,261.69\n11,1882,251.57\n12,1882,253.79\n1,1883,253.86\n2,1883,249.05\n3,1883,253.49\n4,1883,260.14\n5,1883,256.37\n6,1883,260.34\n7,1883,257.13\n8,1883,246.64\n9,1883,250.68\n10,1883,245.18\n11,1883,249.85\n12,1883,245.95\n1,1884,239.73\n2,1884,247.26\n3,1884,247.33\n4,1884,238.70\n5,1884,219.50\n6,1884,211.98\n7,1884,213.20\n8,1884,228.10\n9,1884,221.51\n10,1884,215.42\n11,1884,212.33\n12,1884,212.85\n1,1885,209.04\n2,1885,216.51\n3,1885,218.07\n4,1885,218.57\n5,1885,217.07\n6,1885,217.07\n7,1885,226.13\n8,1885,239.77\n9,1885,237.68\n10,1885,252.45\n11,1885,269.81\n12,1885,268.69\n1,1886,269.64\n2,1886,275.77\n3,1886,270.98\n4,1886,268.25\n5,1886,263.95\n6,1886,276.91\n7,1886,282.01\n8,1886,285.00\n9,1886,293.32\n10,1886,301.67\n11,1886,310.04\n12,1886,302.93\n1,1887,300.65\n2,1887,299.43\n3,1887,307.41\n4,1887,315.40\n5,1887,321.80\n6,1887,313.51\n7,1887,306.91\n8,1887,300.28\n9,1887,297.49\n10,1887,288.65\n11,1887,295.33\n12,1887,294.80\n1,1888,298.17\n2,1888,297.62\n3,1888,287.50\n4,1888,289.79\n5,1888,294.90\n6,1888,286.83\n7,1888,295.34\n8,1888,302.73\n9,1888,311.27\n10,1888,310.55\n11,1888,305.14\n12,1888,300.29\n1,1889,307.10\n2,1889,311.60\n3,1889,306.13\n4,1889,306.54\n5,1889,315.82\n6,1889,322.19\n7,1889,316.71\n8,1889,321.97\n9,1889,330.84\n10,1889,325.90\n11,1889,323.96\n12,1889,323.23\n1,1890,327.86\n2,1890,325.20\n3,1890,323.77\n4,1890,331.54\n5,1890,346.71\n6,1890,345.27\n7,1890,343.89\n8,1890,336.90\n9,1890,332.39\n10,1890,318.41\n11,1890,296.25\n12,1890,290.38\n1,1891,306.60\n2,1891,311.48\n3,1891,306.85\n4,1891,318.15\n5,1891,317.99\n6,1891,312.71\n7,1891,308.72\n8,1891,320.23\n9,1891,347.35\n10,1891,348.49\n11,1891,344.42\n12,1891,356.10\n1,1892,363.87\n2,1892,365.72\n3,1892,370.91\n4,1892,371.47\n5,1892,372.71\n6,1892,371.94\n7,1892,373.17\n8,1892,379.79\n9,1892,371.56\n10,1892,380.27\n11,1892,380.19\n12,1892,377.37\n1,1893,385.55\n2,1893,380.02\n3,1893,367.61\n4,1893,368.98\n5,1893,337.67\n6,1893,322.98\n7,1893,294.21\n8,1893,288.51\n9,1893,310.37\n10,1893,320.88\n11,1893,327.16\n12,1893,316.99\n1,1894,311.78\n2,1894,317.31\n3,1894,327.94\n4,1894,333.51\n5,1894,322.32\n6,1894,319.13\n7,1894,313.72\n8,1894,326.77\n9,1894,333.19\n10,1894,324.01\n11,1894,325.23\n12,1894,323.46\n1,1895,320.92\n2,1895,317.62\n3,1895,318.84\n4,1895,333.71\n5,1895,353.20\n6,1895,361.24\n7,1895,363.91\n8,1895,370.44\n9,1895,373.91\n10,1895,369.63\n11,1895,358.34\n12,1895,338.40\n1,1896,335.56\n2,1896,350.76\n3,1896,346.40\n4,1896,350.73\n5,1896,350.28\n6,1896,345.08\n7,1896,323.88\n8,1896,306.62\n9,1896,323.88\n10,1896,332.29\n11,1896,356.13\n12,1896,344.27\n1,1897,345.42\n2,1897,343.32\n3,1897,345.31\n4,1897,335.75\n5,1897,338.57\n6,1897,355.50\n7,1897,372.50\n8,1897,397.87\n9,1897,418.30\n10,1897,406.02\n11,1897,392.89\n12,1897,402.53\n1,1898,414.73\n2,1898,415.10\n3,1898,397.58\n4,1898,391.98\n5,1898,418.95\n6,1898,436.55\n7,1898,439.58\n8,1898,457.31\n9,1898,457.79\n10,1898,449.57\n11,1898,465.81\n12,1898,496.14\n1,1899,535.31\n2,1899,556.94\n3,1899,566.25\n4,1899,574.70\n5,1899,552.14\n6,1899,541.07\n7,1899,561.27\n8,1899,577.04\n9,1899,572.24\n10,1899,571.07\n11,1899,583.43\n12,1899,545.27\n1,1900,554.22\n2,1900,565.93\n3,1900,572.21\n4,1900,581.30\n5,1900,555.58\n6,1900,540.82\n7,1900,542.59\n8,1900,551.84\n9,1900,551.84\n10,1900,540.73\n11,1900,562.32\n12,1900,608.32\n1,1901,667.84\n2,1901,686.88\n3,1901,713.45\n4,1901,775.22\n5,1901,738.13\n6,1901,813.76\n7,1901,761.35\n8,1901,774.07\n9,1901,772.48\n10,1901,766.08\n11,1901,784.80\n12,1901,774.56\n1,1902,793.52\n2,1902,802.72\n3,1902,806.15\n4,1902,836.14\n5,1902,836.53\n6,1902,834.05\n7,1902,855.40\n8,1902,880.82\n9,1902,885.39\n10,1902,859.95\n11,1902,829.37\n12,1902,812.84\n1,1903,856.87\n2,1903,854.46\n3,1903,823.59\n4,1903,792.61\n5,1903,779.94\n6,1903,739.60\n7,1903,718.73\n8,1903,688.44\n9,1903,674.64\n10,1903,655.56\n11,1903,660.50\n12,1903,693.63\n1,1904,707.79\n2,1904,691.29\n3,1904,691.74\n4,1904,711.41\n5,1904,699.02\n6,1904,702.71\n7,1904,734.49\n8,1904,762.06\n9,1904,798.42\n10,1904,847.98\n11,1904,896.61\n12,1904,908.08\n1,1905,930.64\n2,1905,974.30\n3,1905,1004.79\n4,1905,995.41\n5,1905,949.25\n6,1905,963.22\n7,1905,996.27\n8,1905,1036.22\n9,1905,1042.51\n10,1905,1060.17\n11,1905,1057.48\n12,1905,1086.60\n1,1906,1127.20\n2,1906,1122.29\n3,1906,1098.01\n4,1906,1086.27\n5,1906,1060.68\n6,1906,1077.74\n7,1906,1053.15\n8,1906,1134.20\n9,1906,1172.56\n10,1906,1169.00\n11,1906,1167.83\n12,1906,1160.93\n1,1907,1131.62\n2,1907,1099.90\n3,1907,995.84\n4,1907,1004.67\n5,1907,973.98\n6,1907,946.82\n7,1907,987.21\n8,1907,917.37\n9,1907,911.87\n10,1907,817.01\n11,1907,773.21\n12,1907,816.95\n1,1908,855.94\n2,1908,828.84\n3,1908,866.79\n4,1908,917.54\n5,1908,976.28\n6,1908,976.28\n7,1908,1016.12\n8,1908,1063.82\n9,1908,1056.32\n10,1908,1073.45\n11,1908,1150.36\n12,1908,1180.60\n1,1909,1188.83\n2,1909,1159.05\n3,1909,1179.23\n4,1909,1236.54\n5,1909,1282.12\n6,1909,1309.26\n7,1909,1332.53\n8,1909,1369.28\n9,1909,1375.31\n10,1909,1385.42\n11,1909,1383.37\n12,1909,1404.54\n1,1910,1379.35\n2,1910,1334.94\n3,1910,1372.84\n4,1910,1344.69\n5,1910,1327.52\n6,1910,1268.74\n7,1910,1209.74\n8,1910,1244.32\n9,1910,1258.05\n10,1910,1321.27\n11,1910,1325.21\n12,1910,1293.60\n1,1911,1330.63\n2,1911,1359.21\n3,1911,1348.81\n4,1911,1348.50\n5,1911,1383.08\n6,1911,1416.33\n7,1911,1415.99\n8,1911,1353.91\n9,1911,1285.64\n10,1911,1298.62\n11,1911,1356.32\n12,1911,1367.92\n1,1912,1374.95\n2,1912,1368.47\n3,1912,1413.59\n4,1912,1463.47\n5,1912,1464.71\n6,1912,1473.61\n7,1912,1481.00\n8,1912,1520.82\n9,1912,1534.39\n10,1912,1537.15\n11,1912,1525.86\n12,1912,1476.92\n1,1913,1470.26\n2,1913,1423.93\n3,1913,1402.92\n4,1913,1407.31\n5,1913,1374.92\n6,1913,1311.91\n7,1913,1335.88\n8,1913,1377.79\n9,1913,1397.06\n10,1913,1358.84\n11,1913,1330.58\n12,1913,1334.89\n1,1914,1395.59\n2,1914,1419.93\n3,1914,1399.06\n4,1914,1371.35\n5,1914,1385.73\n6,1914,1384.77\n7,1914,1313.92\n8,1914,1204.61\n9,1914,1209.95\n10,1914,1149.09\n11,1914,1198.59\n12,1914,1285.78\n1,1915,1314.61\n2,1915,1303.17\n3,1915,1342.73\n4,1915,1449.89\n5,1915,1422.13\n6,1915,1444.33\n7,1915,1444.95\n8,1915,1512.36\n9,1915,1574.60\n10,1915,1667.98\n11,1915,1732.48\n12,1915,1742.39\n1,1916,1721.23\n2,1916,1703.66\n3,1916,1705.40\n4,1916,1694.11\n5,1916,1738.82\n6,1916,1763.69\n7,1916,1747.33\n8,1916,1768.83\n9,1916,1849.54\n10,1916,1915.41\n11,1916,1968.14\n12,1916,1898.13\n1,1917,1861.44\n2,1917,1767.93\n3,1917,1832.71\n4,1917,1815.17\n5,1917,1763.91\n6,1917,1810.36\n7,1917,1771.17\n8,1917,1729.56\n9,1917,1657.31\n10,1917,1578.45\n11,1917,1457.85\n12,1917,1419.06\n1,1918,1532.27\n2,1918,1574.49\n3,1918,1524.69\n4,1918,1554.82\n5,1918,1590.12\n6,1918,1635.96\n7,1918,1636.11\n8,1918,1682.61\n9,1918,1664.49\n10,1918,1760.80\n11,1918,1744.79\n12,1918,1781.67\n1,1919,1763.08\n2,1919,1832.45\n3,1919,1852.92\n4,1919,1959.86\n5,1919,2129.58\n6,1919,2078.81\n7,1919,2216.64\n8,1919,2053.06\n9,1919,2103.47\n10,1919,2273.36\n11,1919,2149.02\n12,1919,2150.03\n1,1920,2097.67\n2,1920,1952.27\n3,1920,2154.50\n4,1920,2007.56\n5,1920,1937.22\n6,1920,1929.86\n7,1920,1893.72\n8,1920,1937.92\n9,1920,1937.92\n10,1920,1971.91\n11,1920,1823.00\n12,1920,1726.70\n1,1921,1808.51\n2,1921,1803.68\n3,1921,1771.43\n4,1921,1820.91\n5,1921,1796.62\n6,1921,1673.89\n7,1921,1729.59\n8,1921,1704.88\n9,1921,1761.04\n10,1921,1811.36\n11,1921,1937.66\n12,1921,1978.77\n1,1922,2005.12\n2,1922,2076.45\n3,1922,2154.48\n4,1922,2287.59\n5,1922,2414.93\n6,1922,2324.24\n7,1922,2364.52\n8,1922,2543.48\n9,1922,2518.06\n10,1922,2588.78\n11,1922,2473.41\n12,1922,2528.74\n1,1923,2542.68\n2,1923,2719.12\n3,1923,2692.53\n4,1923,2631.96\n5,1923,2537.09\n6,1923,2352.34\n7,1923,2409.23\n8,1923,2459.61\n9,1923,2395.11\n10,1923,2400.44\n11,1923,2546.96\n12,1923,2634.18\n1,1924,2725.45\n2,1924,2681.16\n3,1924,2622.33\n4,1924,2613.66\n5,1924,2641.36\n6,1924,2749.64\n7,1924,2884.25\n8,1924,2912.39\n9,1924,2929.57\n10,1924,2917.20\n11,1924,3132.47\n12,1924,3311.28\n1,1925,3392.82\n2,1925,3437.13\n3,1925,3223.17\n4,1925,3336.71\n5,1925,3523.78\n6,1925,3554.00\n7,1925,3696.79\n8,1925,3723.81\n9,1925,3837.00\n10,1925,4072.57\n11,1925,4077.08\n12,1925,4289.65\n1,1926,4299.56\n2,1926,4126.53\n3,1926,3898.71\n4,1926,3994.15\n5,1926,4052.64\n6,1926,4245.33\n7,1926,4342.75\n8,1926,4551.62\n9,1926,4675.18\n10,1926,4548.08\n11,1926,4669.49\n12,1926,4767.44\n1,1927,4688.44\n2,1927,4932.67\n3,1927,4985.18\n4,1927,5091.65\n5,1927,5378.71\n6,1927,5349.04\n7,1927,5718.92\n8,1927,5995.87\n9,1927,6211.46\n10,1927,5965.70\n11,1927,6392.59\n12,1927,6537.39\n1,1928,6526.68\n2,1928,6434.39\n3,1928,7156.00\n4,1928,7411.93\n5,1928,7529.21\n6,1928,7248.00\n7,1928,7363.11\n8,1928,7934.44\n9,1928,8149.72\n10,1928,8293.43\n11,1928,9314.66\n12,1928,9368.60\n1,1929,9929.73\n2,1929,9898.52\n3,1929,9901.73\n4,1929,10088.07\n5,1929,9682.55\n6,1929,10799.69\n7,1929,11321.16\n8,1929,12460.78\n9,1929,11880.34\n10,1929,9538.86\n11,1929,8293.22\n12,1929,8534.15\n1,1930,9101.72\n2,1930,9328.95\n3,1930,10102.86\n4,1930,10037.12\n5,1930,9907.09\n6,1930,8306.94\n7,1930,8640.33\n8,1930,8738.66\n9,1930,7627.41\n10,1930,6979.34\n11,1930,6859.77\n12,1930,6378.65\n1,1931,6722.90\n2,1931,7521.95\n3,1931,7026.97\n4,1931,6380.76\n5,1931,5533.66\n6,1931,6334.24\n7,1931,5886.95\n8,1931,5973.94\n9,1931,4204.05\n10,1931,4585.66\n11,1931,4158.98\n12,1931,3581.11\n1,1932,3498.06\n2,1932,3706.39\n3,1932,3286.60\n4,1932,2637.38\n5,1932,2037.58\n6,1932,2036.57\n7,1932,2820.80\n8,1932,3900.05\n9,1932,3775.03\n10,1932,3260.94\n11,1932,3087.27\n12,1932,3263.78\n1,1933,3303.17\n2,1933,2705.45\n3,1933,2809.83\n4,1933,4015.06\n5,1933,4675.87\n6,1933,5306.89\n7,1933,4847.61\n8,1933,5420.38\n9,1933,4817.56\n10,1933,4398.06\n11,1933,4869.51\n12,1933,4990.15\n1,1934,5535.25\n2,1934,5344.20\n3,1934,5359.56\n4,1934,5229.90\n5,1934,4816.96\n6,1934,4933.08\n7,1934,4377.19\n8,1934,4628.09\n9,1934,4625.08\n10,1934,4487.00\n11,1934,4882.45\n12,1934,4873.35\n1,1935,4689.24\n2,1935,4517.25\n3,1935,4390.20\n4,1935,4831.88\n5,1935,5005.59\n6,1935,5359.68\n7,1935,5825.84\n8,1935,5970.92\n9,1935,6129.76\n10,1935,6616.87\n11,1935,6891.64\n12,1935,7173.97\n1,1936,7666.84\n2,1936,7817.30\n3,1936,8035.76\n4,1936,7436.53\n5,1936,7801.51\n6,1936,8065.26\n7,1936,8647.46\n8,1936,8743.85\n9,1936,8785.44\n10,1936,9481.89\n11,1936,9549.66\n12,1936,9527.10\n1,1937,9924.99\n2,1937,10107.03\n3,1937,10043.52\n4,1937,9249.92\n5,1937,9190.07\n6,1937,8745.56\n7,1937,9675.81\n8,1937,9181.22\n9,1937,7913.58\n10,1937,7148.29\n11,1937,6458.85\n12,1937,6168.06\n1,1938,6294.54\n2,1938,6718.36\n3,1938,5071.71\n4,1938,5822.24\n5,1938,5602.17\n6,1938,7024.76\n7,1938,7563.17\n8,1938,7389.21\n9,1938,7538.73\n10,1938,8131.05\n11,1938,7892.79\n12,1938,8215.80\n1,1939,7678.87\n2,1939,7957.39\n3,1939,6904.14\n4,1939,6892.28\n5,1939,7349.44\n6,1939,6906.59\n7,1939,7689.44\n8,1939,7172.33\n9,1939,8381.49\n10,1939,8293.09\n11,1939,7919.57\n12,1939,8141.08\n1,1940,7888.07\n2,1940,7971.88\n3,1940,8089.13\n4,1940,8083.29\n5,1940,6181.88\n6,1940,6696.79\n7,1940,6936.92\n8,1940,7152.82\n9,1940,7267.50\n10,1940,7588.71\n11,1940,7307.86\n12,1940,7320.25\n1,1941,7010.94\n2,1941,6945.15\n3,1941,7011.28\n4,1941,6599.74\n5,1941,6658.29\n6,1941,7058.23\n7,1941,7488.12\n8,1941,7466.70\n9,1941,7435.91\n10,1941,6974.15\n11,1941,6721.98\n12,1941,6458.86\n1,1942,6590.62\n2,1942,6423.86\n3,1942,6075.53\n4,1942,5851.80\n5,1942,6268.15\n6,1942,6425.81\n7,1942,6667.08\n8,1942,6754.04\n9,1942,6974.76\n10,1942,7462.71\n11,1942,7398.67\n12,1942,7820.11\n1,1943,8419.79\n2,1943,8885.52\n3,1943,9393.71\n4,1943,9441.70\n5,1943,9905.35\n6,1943,10141.90\n7,1943,9632.77\n8,1943,9772.94\n9,1943,10046.27\n10,1943,9955.51\n11,1943,9246.32\n12,1943,9834.38\n1,1944,10029.59\n2,1944,10047.97\n3,1944,10261.92\n4,1944,10178.70\n5,1944,10635.32\n6,1944,11223.03\n7,1944,11035.73\n8,1944,11177.53\n9,1944,11189.17\n10,1944,11235.89\n11,1944,11326.75\n12,1944,11771.12\n1,1945,11987.59\n2,1945,12774.50\n3,1945,12233.34\n4,1945,13358.17\n5,1945,13559.95\n6,1945,13563.65\n7,1945,13341.50\n8,1945,14165.16\n9,1945,14808.98\n10,1945,15308.37\n11,1945,15855.43\n12,1945,16062.94\n1,1946,17234.94\n2,1946,16090.34\n3,1946,16888.01\n4,1946,17576.04\n5,1946,18022.69\n6,1946,17371.20\n7,1946,16982.09\n8,1946,15797.90\n9,1946,14251.10\n10,1946,14199.52\n11,1946,14087.43\n12,1946,14748.93\n1,1947,15146.62\n2,1947,14987.12\n3,1947,14799.05\n4,1947,14283.61\n5,1947,14214.01\n6,1947,15027.99\n7,1947,15640.44\n8,1947,15256.03\n9,1947,15108.22\n10,1947,15505.86\n11,1947,15133.13\n12,1947,15521.78\n1,1948,14980.44\n2,1948,14346.62\n3,1948,15515.92\n4,1948,16003.58\n5,1948,17326.87\n6,1948,17465.80\n7,1948,16595.87\n8,1948,16803.82\n9,1948,16376.56\n10,1948,17563.48\n11,1948,15746.38\n12,1948,16313.24\n1,1949,16427.98\n2,1949,15863.87\n3,1949,16430.76\n4,1949,16180.03\n5,1949,15665.33\n6,1949,15717.46\n7,1949,16806.50\n8,1949,17100.15\n9,1949,17593.53\n10,1949,18221.12\n11,1949,18349.38\n12,1949,19260.20\n1,1950,19705.47\n2,1950,20014.56\n3,1950,20209.29\n4,1950,21237.86\n5,1950,22189.86\n6,1950,21020.05\n7,1950,21330.07\n8,1950,22156.04\n9,1950,23527.72\n10,1950,23772.74\n11,1950,23897.41\n12,1950,25149.80\n1,1951,26846.23\n2,1951,27176.69\n3,1951,26835.88\n4,1951,28290.42\n5,1951,27306.64\n6,1951,26760.96\n7,1951,28761.32\n8,1951,30191.47\n9,1951,30191.47\n10,1951,29928.71\n11,1951,30003.67\n12,1951,31324.80\n1,1952,31977.55\n2,1952,30966.15\n3,1952,32598.52\n4,1952,31362.58\n5,1952,32236.28\n6,1952,33889.98\n7,1952,34659.69\n8,1952,34326.57\n9,1952,33819.25\n10,1952,33945.31\n11,1952,35695.51\n12,1952,37120.23\n1,1953,37020.27\n2,1953,36513.08\n3,1953,35809.32\n4,1953,35024.11\n5,1953,35093.04\n6,1953,34686.10\n7,1953,35742.55\n8,1953,33840.81\n9,1953,34048.72\n10,1953,35970.23\n11,1953,36460.96\n12,1953,36712.38\n1,1954,38775.70\n2,1954,39070.80\n3,1954,40420.24\n4,1954,42586.30\n5,1954,44172.67\n6,1954,44393.23\n7,1954,47105.64\n8,1954,45697.31\n9,1954,49684.42\n10,1954,48914.81\n11,1954,53059.63\n12,1954,55951.04\n1,1955,57151.37\n2,1955,57570.95\n3,1955,57498.77\n4,1955,59854.16\n5,1955,59981.54\n6,1955,65125.23\n7,1955,69310.75\n8,1955,68984.32\n9,1955,69984.22\n10,1955,68064.23\n11,1955,73385.17\n12,1955,73535.76\n1,1956,71101.26\n2,1956,73787.11\n3,1956,79146.13\n4,1956,79226.44\n5,1956,74254.75\n6,1956,77418.25\n7,1956,81656.45\n8,1956,78786.66\n9,1956,75469.34\n10,1956,76107.16\n11,1956,75508.44\n12,1956,78408.96\n1,1957,75371.77\n2,1957,73149.36\n3,1957,74830.29\n4,1957,77839.93\n5,1957,80961.47\n6,1957,81105.00\n7,1957,82280.44\n8,1957,77912.39\n9,1957,73340.86\n10,1957,71247.45\n11,1957,72651.49\n12,1957,69898.84\n1,1958,73145.30\n2,1958,71895.28\n3,1958,74372.80\n4,1958,76994.53\n5,1958,78401.89\n6,1958,80702.93\n7,1958,84438.96\n8,1958,85698.74\n9,1958,90103.64\n10,1958,92652.07\n11,1958,94990.72\n12,1958,100196.11\n1,1959,100844.59\n2,1959,101094.42\n3,1959,101418.04\n4,1959,105624.14\n5,1959,107896.82\n6,1959,107784.83\n7,1959,111823.35\n8,1959,110420.68\n9,1959,105660.61\n10,1959,107132.63\n11,1959,108832.18\n12,1959,112123.89\n1,1960,104413.82\n2,1960,105675.22\n3,1960,104511.26\n4,1960,102986.57\n5,1960,106059.64\n6,1960,108439.37\n7,1960,106062.48\n8,1960,109143.16\n9,1960,102862.72\n10,1960,102924.13\n11,1960,107382.03\n12,1960,112665.49\n1,1961,120094.43\n2,1961,123635.78\n3,1961,127107.81\n4,1961,127912.03\n5,1961,130676.33\n6,1961,127243.77\n7,1961,131718.58\n8,1961,134625.56\n9,1961,132298.71\n10,1961,136379.13\n11,1961,142079.54\n12,1961,142872.70\n1,1962,137800.38\n2,1962,140383.11\n3,1962,139901.15\n4,1962,131577.08\n5,1962,120608.50\n6,1962,111085.12\n7,1962,118497.36\n8,1962,120661.40\n9,1962,115198.78\n10,1962,116074.11\n11,1962,128226.66\n12,1962,130322.71\n1,1963,137095.55\n2,1963,133510.65\n3,1963,138617.62\n4,1963,145724.92\n5,1963,148195.75\n6,1963,145586.11\n7,1963,145469.31\n8,1963,152948.52\n9,1963,151649.04\n10,1963,156936.58\n11,1963,155685.05\n12,1963,159894.58\n1,1964,164613.17\n2,1964,166651.28\n3,1964,169594.80\n4,1964,171052.07\n5,1964,173437.77\n6,1964,176713.82\n7,1964,180376.37\n8,1964,177889.55\n9,1964,183440.44\n10,1964,185376.86\n11,1964,184870.57\n12,1964,186049.48\n1,1965,192684.33\n2,1965,192866.42\n3,1965,190533.69\n4,1965,197538.45\n5,1965,196490.72\n6,1965,187417.99\n7,1965,190429.44\n8,1965,195213.20\n9,1965,201958.22\n10,1965,207989.19\n11,1965,206676.57\n12,1965,209037.42\n1,1966,210578.51\n2,1966,207340.60\n3,1966,203344.71\n4,1966,208052.87\n5,1966,197328.39\n6,1966,194684.20\n7,1966,192618.91\n8,1966,178197.70\n9,1966,177505.53\n10,1966,186499.67\n11,1966,187637.59\n12,1966,187915.10\n1,1967,203171.44\n2,1967,204136.83\n3,1967,212751.22\n4,1967,222306.85\n5,1967,211221.07\n6,1967,215493.16\n7,1967,225842.71\n8,1967,231695.47\n9,1967,231695.47\n10,1967,225546.37\n11,1967,226371.73\n12,1967,232906.62\n1,1968,223288.02\n2,1968,216911.19\n3,1968,219546.84\n4,1968,237822.58\n5,1968,241407.66\n6,1968,244218.41\n7,1968,240325.08\n8,1968,253712.98\n9,1968,253712.98\n10,1968,256174.10\n11,1968,269094.46\n12,1968,258531.79\n1,1969,257059.11\n2,1969,245526.04\n3,1969,254628.50\n4,1969,260751.41\n5,1969,260829.96\n6,1969,246990.70\n7,1969,232790.77\n8,1969,242785.47\n9,1969,237376.84\n10,1969,248243.95\n11,1969,240456.81\n12,1969,236645.64\n1,1970,219228.22\n2,1970,231460.92\n3,1970,232480.93\n4,1970,212132.53\n5,1970,199888.42\n6,1970,190578.98\n7,1970,205244.60\n8,1970,215067.99\n9,1970,223104.67\n10,1970,221017.98\n11,1970,232199.23\n12,1970,246077.56\n1,1971,256729.46\n2,1971,259751.96\n3,1971,270005.48\n4,1971,280498.15\n5,1971,269537.83\n6,1971,270426.25\n7,1971,259948.98\n8,1971,270032.21\n9,1971,268852.40\n10,1971,258315.90\n11,1971,258360.10\n12,1971,281329.31\n1,1972,287131.49\n2,1972,294051.09\n3,1972,297555.37\n4,1972,299569.74\n5,1972,304953.90\n6,1972,299505.29\n7,1972,300922.14\n8,1972,312008.63\n9,1972,311213.88\n10,1972,314851.64\n11,1972,330520.74\n12,1972,334600.73\n1,1973,329623.44\n2,1973,318016.62\n3,1973,318312.57\n4,1973,306091.32\n5,1973,301079.45\n6,1973,299870.17\n7,1973,312043.16\n8,1973,301382.57\n9,1973,314255.67\n10,1973,314665.93\n11,1973,279655.70\n12,1973,285109.12\n1,1974,283082.21\n2,1974,282897.70\n3,1974,277154.59\n4,1974,267192.61\n5,1974,259090.91\n6,1974,256157.09\n7,1974,237122.22\n8,1974,216610.37\n9,1974,191659.40\n10,1974,223813.50\n11,1974,212820.56\n12,1974,209444.24\n1,1975,236101.32\n2,1975,251178.81\n3,1975,257568.81\n4,1975,270698.10\n5,1975,283594.71\n6,1975,297126.89\n7,1975,277989.99\n8,1975,273100.96\n9,1975,264610.31\n10,1975,281888.53\n11,1975,289823.50\n12,1975,287462.24\n1,1976,322451.17\n2,1976,319757.49\n3,1976,330556.49\n4,1976,327929.89\n5,1976,324229.43\n6,1976,338514.26\n7,1976,336828.39\n8,1976,344806.18\n9,1976,344806.18\n10,1976,338246.40\n11,1976,336727.02\n12,1976,355517.78\n1,1977,338709.44\n2,1977,332532.69\n3,1977,329032.78\n4,1977,330314.57\n5,1977,323750.06\n6,1977,339659.36\n7,1977,335416.35\n8,1977,329630.91\n9,1977,330090.28\n10,1977,317093.78\n11,1977,326979.54\n12,1977,329252.22\n1,1978,310383.87\n2,1978,304088.07\n3,1978,313066.62\n4,1978,341243.35\n5,1978,344130.39\n6,1978,339526.84\n7,1978,359318.63\n8,1978,370126.47\n9,1978,368939.32\n10,1978,336673.43\n11,1978,343801.60\n12,1978,350455.75\n1,1979,365964.01\n2,1979,354183.65\n3,1979,375311.99\n4,1979,377584.77\n5,1979,369291.84\n6,1979,385225.98\n7,1979,390314.50\n8,1979,412757.85\n9,1979,414491.43\n10,1979,387840.37\n11,1979,406164.48\n12,1979,414774.58\n1,1980,440532.86\n2,1980,440467.47\n3,1980,397502.81\n4,1980,415784.03\n5,1980,437083.79\n6,1980,450816.48\n7,1980,482133.49\n8,1980,486951.41\n9,1980,501220.23\n10,1980,511300.03\n11,1980,565702.71\n12,1980,548607.74\n1,1981,525628.92\n2,1981,534729.11\n3,1981,556129.68\n4,1981,545262.03\n5,1981,546545.31\n6,1981,543051.83\n7,1981,544100.27\n8,1981,512570.32\n9,1981,487245.04\n10,1981,513509.50\n11,1981,534627.81\n12,1981,520886.57\n1,1982,514127.83\n2,1982,485389.18\n3,1982,482856.45\n4,1982,504625.72\n5,1982,487324.35\n6,1982,479907.48\n7,1982,471374.78\n8,1982,528555.37\n9,1982,535105.33\n10,1982,596706.54\n11,1982,620816.82\n12,1982,632790.14\n1,1983,656350.39\n2,1983,671409.56\n3,1983,696242.32\n4,1983,751037.77\n5,1983,744404.58\n6,1983,773367.51\n7,1983,750521.46\n8,1983,761711.04\n9,1983,772192.99\n10,1983,763225.87\n11,1983,779282.40\n12,1983,775165.88\n1,1984,770831.60\n2,1984,743699.13\n3,1984,756570.40\n4,1984,763602.46\n5,1984,721186.75\n6,1984,736696.05\n7,1984,727535.17\n8,1984,807866.95\n9,1984,808034.51\n10,1984,811036.01\n11,1984,801841.38\n12,1984,822856.26\n1,1985,886955.24\n2,1985,897762.14\n3,1985,898348.49\n4,1985,897425.53\n5,1985,949148.49\n6,1985,963891.69\n7,1985,962504.52\n8,1985,954256.37\n9,1985,924429.07\n10,1985,967066.34\n11,1985,1033341.30\n12,1985,1083270.48\n1,1986,1089263.50\n2,1986,1170567.48\n3,1986,1235816.97\n4,1986,1221824.96\n5,1986,1286693.06\n6,1986,1308359.95\n7,1986,1235163.54\n8,1986,1326681.46\n9,1986,1216931.12\n10,1986,1287158.99\n11,1986,1318441.14\n12,1986,1284796.00\n1,1987,1457773.33\n2,1987,1515290.29\n3,1987,1558985.34\n4,1987,1544923.40\n5,1987,1558053.56\n6,1987,1636516.58\n7,1987,1719323.76\n8,1987,1783329.33\n9,1987,1744134.13\n10,1987,1368537.43\n11,1987,1255729.38\n12,1987,1351231.68\n1,1988,1397279.02\n2,1988,1473705.53\n3,1988,1428177.75\n4,1988,1445623.23\n5,1988,1456462.40\n6,1988,1523302.10\n7,1988,1518998.15\n8,1988,1466005.46\n9,1988,1528464.65\n10,1988,1571022.87\n11,1988,1548633.60\n12,1988,1562163.41\n1,1989,1691030.27\n2,1989,1648887.68\n3,1989,1687355.24\n4,1989,1772493.55\n5,1989,1846776.30\n6,1989,1836303.54\n7,1989,2002101.22\n8,1989,2041241.44\n9,1989,2043106.30\n10,1989,1985754.97\n11,1989,2026251.45\n12,1989,2111843.68\n1,1990,1935611.52\n2,1990,1960543.79\n3,1990,2005541.10\n4,1990,1962288.34\n5,1990,2153619.86\n6,1990,2148216.69\n7,1990,2132231.38\n8,1990,1939499.84\n9,1990,1899320.55\n10,1990,1837255.11\n11,1990,1956015.63\n12,1990,2010501.30\n1,1991,2098062.30\n2,1991,2248104.36\n3,1991,2279085.13\n4,1991,2307993.22\n5,1991,2407558.24\n6,1991,2339187.27\n7,1991,2404337.11\n8,1991,2441218.71\n9,1991,2420109.14\n10,1991,2452648.51\n11,1991,2393547.16\n12,1991,2623018.11\n1,1992,2574137.96\n2,1992,2607475.78\n3,1992,2556763.57\n4,1992,2631833.82\n5,1992,2658045.79\n6,1992,2605386.69\n7,1992,2711826.00\n8,1992,2656323.12\n9,1992,2687539.04\n10,1992,2723917.52\n11,1992,2788651.73\n12,1992,2822875.50\n1,1993,2871296.27\n2,1993,2876951.02\n3,1993,2946147.77\n4,1993,2874938.50\n5,1993,2976122.28\n6,1993,2960486.97\n7,1993,2962745.59\n8,1993,3060456.68\n9,1993,3036990.05\n10,1993,3108943.08\n11,1993,3070262.24\n12,1993,3107384.47\n1,1994,3213025.33\n2,1994,3125819.81\n3,1994,2989542.72\n4,1994,3043044.01\n5,1994,3077568.56\n6,1994,3002131.90\n7,1994,3120154.13\n8,1994,3227840.32\n9,1994,3148909.09\n10,1994,3219653.52\n11,1994,3102375.05\n12,1994,3147410.64\n1,1995,3230066.12\n2,1995,3355947.01\n3,1995,3454970.62\n4,1995,3554459.07\n5,1995,3698862.80\n6,1995,3784777.69\n7,1995,3910292.17\n8,1995,3920119.61\n9,1995,4066858.52\n10,1995,4070954.65\n11,1995,4249664.17\n12,1995,4365285.60\n1,1996,4478949.18\n2,1996,4520473.80\n3,1996,4622220.87\n4,1996,4631277.21\n5,1996,4750715.85\n6,1996,4806924.20\n7,1996,4558148.38\n8,1996,4673802.62\n9,1996,4916267.44\n10,1996,5051860.93\n11,1996,5430515.34\n12,1996,5326050.27\n1,1997,5658794.09\n2,1997,5703146.08\n3,1997,5468911.80\n4,1997,5795295.40\n5,1997,6134290.05\n6,1997,6423578.76\n7,1997,6934687.57\n8,1997,6750908.46\n9,1997,6904707.59\n10,1997,6674110.07\n11,1997,7124859.70\n12,1997,7102995.43\n1,1998,7335386.72\n2,1998,7687665.10\n3,1998,8093811.18\n4,1998,8175241.65\n5,1998,8036180.94\n6,1998,8361087.96\n7,1998,8272055.86\n8,1998,7076105.33\n9,1998,7529403.43\n10,1998,8237706.31\n11,1998,8635321.06\n12,1998,9132932.86\n1,1999,9465463.39\n2,1999,9203228.85\n3,1999,9587970.03\n4,1999,9959268.91\n5,1999,9667765.33\n6,1999,10263755.42\n7,1999,9938290.58\n8,1999,9894080.78\n9,1999,9622844.59\n10,1999,10165743.54\n11,1999,10439779.76\n12,1999,11054642.69\n1,2000,10499231.11\n2,2000,10300483.90\n3,2000,11308116.21\n4,2000,11087422.69\n5,2000,10742920.95\n6,2000,11007769.58\n7,2000,10835671.84\n8,2000,11508722.82\n9,2000,10899016.98\n10,2000,10855053.27\n11,2000,9999245.85\n12,2000,9766515.50\n1,2001,10404686.46\n2,2001,9455969.55\n3,2001,8746556.50\n4,2001,9545204.00\n5,2001,9609156.18\n6,2001,9469400.93\n7,2001,9282991.33\n8,2001,8701859.98\n9,2001,7980803.85\n10,2001,8151698.45\n11,2001,8776984.92\n12,2001,8853876.28\n1,2002,8724670.35\n2,2002,8556411.71\n3,2002,8871633.48\n4,2002,8339945.57\n5,2002,8278503.58\n6,2002,7524383.07\n7,2002,7089449.21\n8,2002,6839710.88\n9,2002,6360457.85\n10,2002,6920282.74\n11,2002,7313675.58\n12,2002,6897122.37\n1,2003,6716444.07\n2,2003,6615670.45\n3,2003,6679901.53\n4,2003,7230128.68\n5,2003,7638270.88\n6,2003,7708156.70\n7,2003,7844061.91\n8,2003,8108095.69\n9,2003,7912115.69\n10,2003,8359704.35\n11,2003,8528608.32\n12,2003,8875532.74\n1,2004,9071583.83\n2,2004,9252661.35\n3,2004,9025820.90\n4,2004,8884129.69\n5,2004,9010256.68\n6,2004,9181167.70\n7,2004,8916778.44\n8,2004,8913207.32\n9,2004,9009742.62\n10,2004,9149880.68\n11,2004,9517504.52\n12,2004,9841372.46\n1,2005,9601488.91\n2,2005,9803544.76\n3,2005,9629943.09\n4,2005,9490712.85\n5,2005,9747905.16\n6,2005,9761741.23\n7,2005,10134390.90\n8,2005,10032386.79\n9,2005,10113642.26\n10,2005,9945039.08\n11,2005,10321183.31\n12,2005,10494358.41\n1,2006,10598156.28\n2,2006,10626922.18\n3,2006,10759212.51\n4,2006,10858580.65\n5,2006,10589843.70\n6,2006,10604171.96\n7,2006,10669578.84\n8,2006,10923495.34\n9,2006,11167239.86\n10,2006,11570071.85\n11,2006,11790136.46\n12,2006,11943426.99\n1,2007,12136311.65\n2,2007,11898910.94\n3,2007,12063357.83\n4,2007,12564956.38\n5,2007,13003444.96\n6,2007,12924311.39\n7,2007,12390939.09\n8,2007,12576659.62\n9,2007,13220501.73\n10,2007,13254572.37\n11,2007,12700418.62\n12,2007,12612316.21\n1,2008,11855816.77\n2,2008,11470703.71\n3,2008,11421156.36\n4,2008,11977388.25\n5,2008,12005497.90\n6,2008,11109708.06\n7,2008,11016300.91\n8,2008,11130325.44\n9,2008,10179847.58\n10,2008,8470135.88\n11,2008,7160795.21\n12,2008,7946060.55\n1,2009,7272468.15\n2,2009,6198504.73\n3,2009,7071052.16\n4,2009,7747816.46\n5,2009,8392697.64\n6,2009,8197406.70\n7,2009,8817404.84\n8,2009,9135743.82\n9,2009,9476668.97\n10,2009,9360675.67\n11,2009,9858500.75\n12,2009,10048869.77\n1,2010,9825633.25\n2,2010,10089229.53\n3,2010,10590226.52\n4,2010,10757407.81\n5,2010,9728944.82\n6,2010,9380253.98\n7,2010,10258653.03\n8,2010,9584349.69\n9,2010,10439670.39\n10,2010,10847205.54\n11,2010,10838291.40\n12,2010,11562634.28\n1,2011,11836675.42\n2,2011,12242187.67\n3,2011,12247054.35\n4,2011,12587651.91\n5,2011,12467009.59\n6,2011,12259195.09\n7,2011,11960270.90\n8,2011,11357499.50\n9,2011,10559109.03\n10,2011,11713136.27\n11,2011,11687268.83\n12,2011,11989801.89\n1,2012,12335922.39\n2,2012,12869349.93\n3,2012,13393535.19\n4,2012,13209454.20\n5,2012,12415545.97\n6,2012,12959691.81\n7,2012,13106637.98\n8,2012,13401836.83\n9,2012,13785271.52\n10,2012,13494312.64\n11,2012,13572583.23\n12,2012,13696287.54\n1,2013,14405700.59\n2,2013,14601264.97\n3,2013,15082027.39\n4,2013,15440726.14\n5,2013,15801885.85\n6,2013,15675829.96\n7,2013,16383000.80\n8,2013,15908527.50\n9,2013,16407391.66\n10,2013,17161594.20\n11,2013,17684575.77\n12,2013,18132306.63\n1,2014,17505363.12\n2,2014,18306159.86\n3,2014,18459997.27\n4,2014,18596443.89\n5,2014,19033018.39\n6,2014,19426170.59\n7,2014,19158253.96\n8,2014,19924706.62\n9,2014,19645305.51\n10,2014,20125138.23\n11,2014,20666385.61\n12,2014,20614322.61\n1,2015,19995472.93\n2,2015,21144687.07\n3,2015,20810269.80\n4,2015,21009935.77\n5,2015,21280094.61\n6,2015,20868129.73\n7,2015,21305360.48\n8,2015,20019918.47\n9,2015,19524554.35\n10,2015,21171538.89\n11,2015,21234484.80\n12,2015,20899575.34\n1,2016,19862471.65\n2,2016,19835674.52\n3,2016,21181273.35\n4,2016,21263414.77\n5,2016,21645246.55\n6,2016,21701356.47\n7,2016,22501442.26\n8,2016,22533051.94\n9,2016,22537262.92\n10,2016,22126173.04\n11,2016,22945618.39\n12,2016,23399146.18\n1,2017,23842939.49\n2,2017,24789698.57\n3,2017,24818573.85\n4,2017,25073474.73\n5,2017,25426321.86\n6,2017,25585026.51\n7,2017,26111125.30\n8,2017,26191079.19\n9,2017,26731342.18\n10,2017,27355113.79\n11,2017,28194082.77\n12,2017,28507554.52\n1,2018,30139718.61\n2,2018,29028895.46\n3,2018,28291154.01\n4,2018,28399709.74\n5,2018,29083638.17\n6,2018,29262632.07\n7,2018,30351634.70\n8,2018,31340612.93\n9,2018,31519005.26\n10,2018,29364679.93\n11,2018,29963076.29\n12,2018,27257714.42\n1,2019,29442008.79\n2,2019,30387345.98\n3,2019,30977812.58\n4,2019,32232082.41\n5,2019,30183797.15\n6,2019,32311051.92\n7,2019,32775462.62\n8,2019,32256254.52\n9,2019,32859791.55\n10,2019,33571501.50\n11,2019,34790114.75\n12,2019,35840179.50\n1,2020,35826124.68\n2,2020,32876963.59\n3,2020,28816213.73\n4,2020,32510280.39\n5,2020,34058662.42\n6,2020,34736028.29\n7,2020,36694625.19\n8,2020,39332228.60\n9,2020,37837714.27\n10,2020,36831509.31\n11,2020,40863219.84\n12,2020,42434352.09\n1,2021,42005926.10\n2,2021,43164218.46\n3,2021,45054619.39\n4,2021,47459142.44\n5,2021,47790606.56\n6,2021,48906296.94\n7,2021,50068034.64\n8,2021,51590385.17\n9,2021,49190948.10\n10,2021,52637332.70\n11,2021,52272618.27\n12,2021,54615289.16\n1,2022,51789121.45\n2,2022,50238442.52\n3,2022,52103796.34\n4,2022,47560260.60\n5,2022,47647488.00\n6,2022,43714489.36\n7,2022,47745160.81\n8,2022,45798048.39\n9,2022,41580070.46\n10,2022,44946446.48\n11,2022,47458267.43\n12,2022,44723975.60\n1,2023,47534174.41\n2,2023,46374350.79\n3,2023,48076953.05\n4,2023,48827382.12\n5,2023,49039626.34\n6,2023,52279946.46\n7,2023,53959415.69\n8,2023,53100321.52\n9,2023,50568594.12\n10,2023,49505294.87\n11,2023,54026408.52\n12,2023,56480861.73\n1,2024,57429972.40\n2,2024,60496493.98\n3,2024,62442951.63\n4,2024,59892465.60\n5,2024,62862244.29\n6,2024,65117852.91\n7,2024,65910498.15\n8,2024,67509246.99\n9,2024,68951045.48\n10,2024,68325796.87\n11,2024,72336559.96\n12,2024,70612194.22\n1,2025,72578554.47\n2,2025,71631575.79\n3,2025,67595546.19\n4,2025,67137149.46\n5,2025,71363113.13\n6,2025,74992101.47\n7,2025,76675125.41\n8,2025,78229466.94\n9,2025,81084838.71\n10,2025,82983335.60\n11,2025,83186717.38\n12,2025,83237634.92\n`,
        'us_bonds': `1,1871,100.00\n2,1871,102.29\n3,1871,103.44\n4,1871,105.05\n5,1871,106.73\n6,1871,107.95\n7,1871,106.63\n8,1871,107.50\n9,1871,108.91\n10,1871,108.59\n11,1871,109.22\n12,1871,110.10\n1,1872,107.31\n2,1872,107.23\n3,1872,108.12\n4,1872,110.78\n5,1872,113.52\n6,1872,115.28\n7,1872,113.22\n8,1872,113.58\n9,1872,112.56\n10,1872,114.41\n11,1872,115.39\n12,1872,116.75\n1,1873,115.41\n2,1873,116.21\n3,1873,117.77\n4,1873,119.22\n5,1873,121.49\n6,1873,123.46\n7,1873,120.93\n8,1873,121.24\n9,1873,119.01\n10,1873,116.77\n11,1873,117.01\n12,1873,123.28\n1,1874,122.14\n2,1874,125.03\n3,1874,126.34\n4,1874,127.70\n5,1874,128.28\n6,1874,129.20\n7,1874,125.28\n8,1874,125.93\n9,1874,126.04\n10,1874,126.70\n11,1874,128.85\n12,1874,131.36\n1,1875,129.97\n2,1875,131.47\n3,1875,132.13\n4,1875,134.33\n5,1875,136.60\n6,1875,138.61\n7,1875,133.67\n8,1875,134.08\n9,1875,134.33\n10,1875,135.23\n11,1875,136.41\n12,1875,137.81\n1,1876,136.08\n2,1876,137.91\n3,1876,137.97\n4,1876,138.09\n5,1876,138.64\n6,1876,140.44\n7,1876,138.15\n8,1876,135.92\n9,1876,133.98\n10,1876,133.45\n11,1876,134.38\n12,1876,134.65\n1,1877,132.02\n2,1877,131.92\n3,1877,131.44\n4,1877,132.85\n5,1877,135.25\n6,1877,133.93\n7,1877,134.44\n8,1877,133.67\n9,1877,130.83\n10,1877,130.86\n11,1877,132.01\n12,1877,131.95\n1,1878,132.38\n2,1878,132.82\n3,1878,132.36\n4,1878,131.73\n5,1878,134.62\n6,1878,133.58\n7,1878,132.87\n8,1878,133.56\n9,1878,134.08\n10,1878,133.53\n11,1878,134.31\n12,1878,135.09\n1,1879,134.53\n2,1879,135.49\n3,1879,135.35\n4,1879,136.81\n5,1879,140.42\n6,1879,140.10\n7,1879,139.54\n8,1879,139.74\n9,1879,141.23\n10,1879,141.79\n11,1879,143.55\n12,1879,144.97\n1,1880,145.78\n2,1880,149.41\n3,1880,151.03\n4,1880,151.68\n5,1880,153.56\n6,1880,155.81\n7,1880,155.49\n8,1880,157.75\n9,1880,157.52\n10,1880,156.46\n11,1880,160.82\n12,1880,163.02\n1,1881,164.41\n2,1881,165.53\n3,1881,166.66\n4,1881,168.70\n5,1881,172.59\n6,1881,174.28\n7,1881,172.55\n8,1881,171.85\n9,1881,173.83\n10,1881,173.20\n11,1881,174.91\n12,1881,177.48\n1,1882,177.60\n2,1882,178.30\n3,1882,180.02\n4,1882,182.42\n5,1882,184.45\n6,1882,184.00\n7,1882,183.28\n8,1882,184.26\n9,1882,184.67\n10,1882,183.75\n11,1882,184.65\n12,1882,187.19\n1,1883,185.87\n2,1883,186.39\n3,1883,187.59\n4,1883,188.21\n5,1883,188.15\n6,1883,189.07\n7,1883,188.21\n8,1883,189.24\n9,1883,191.85\n10,1883,193.27\n11,1883,195.80\n12,1883,199.24\n1,1884,199.27\n2,1884,199.82\n3,1884,201.26\n4,1884,200.68\n5,1884,196.76\n6,1884,195.27\n7,1884,195.71\n8,1884,196.98\n9,1884,198.45\n10,1884,199.41\n11,1884,202.12\n12,1884,204.12\n1,1885,202.70\n2,1885,203.88\n3,1885,204.86\n4,1885,204.37\n5,1885,205.14\n6,1885,206.96\n7,1885,207.42\n8,1885,208.41\n9,1885,209.50\n10,1885,210.28\n11,1885,210.74\n12,1885,212.59\n1,1886,212.30\n2,1886,216.75\n3,1886,218.83\n4,1886,218.65\n5,1886,218.90\n6,1886,220.68\n7,1886,220.82\n8,1886,221.07\n9,1886,223.74\n10,1886,225.96\n11,1886,226.11\n12,1886,227.92\n1,1887,226.40\n2,1887,228.55\n3,1887,229.70\n4,1887,230.74\n5,1887,231.56\n6,1887,232.26\n7,1887,230.06\n8,1887,229.31\n9,1887,226.53\n10,1887,227.91\n11,1887,230.79\n12,1887,229.35\n1,1888,230.41\n2,1888,233.43\n3,1888,230.83\n4,1888,230.99\n5,1888,234.60\n6,1888,237.07\n7,1888,237.10\n8,1888,238.66\n9,1888,241.13\n10,1888,239.54\n11,1888,239.93\n12,1888,241.39\n1,1889,240.36\n2,1889,243.36\n3,1889,246.36\n4,1889,245.31\n5,1889,246.66\n6,1889,247.67\n7,1889,246.15\n8,1889,246.31\n9,1889,246.95\n10,1889,245.78\n11,1889,246.18\n12,1889,247.08\n1,1890,244.80\n2,1890,241.08\n3,1890,240.14\n4,1890,239.81\n5,1890,240.59\n6,1890,241.74\n7,1890,243.13\n8,1890,246.03\n9,1890,249.41\n10,1890,246.48\n11,1890,247.26\n12,1890,246.05\n1,1891,243.33\n2,1891,244.25\n3,1891,245.93\n4,1891,247.62\n5,1891,248.30\n6,1891,248.98\n7,1891,239.59\n8,1891,239.62\n9,1891,242.36\n10,1891,240.47\n11,1891,241.42\n12,1891,244.05\n1,1892,243.19\n2,1892,244.01\n3,1892,245.75\n4,1892,243.58\n5,1892,246.37\n6,1892,248.66\n7,1892,246.85\n8,1892,246.62\n9,1892,244.81\n10,1892,245.12\n11,1892,245.97\n12,1892,245.61\n1,1893,244.58\n2,1893,243.95\n3,1893,246.02\n4,1893,246.07\n5,1893,245.71\n6,1893,242.48\n7,1893,240.48\n8,1893,242.58\n9,1893,246.61\n10,1893,246.24\n11,1893,251.13\n12,1893,254.93\n1,1894,252.61\n2,1894,255.59\n3,1894,257.17\n4,1894,258.20\n5,1894,257.82\n6,1894,259.71\n7,1894,259.89\n8,1894,260.94\n9,1894,262.83\n10,1894,262.74\n11,1894,265.22\n12,1894,265.98\n1,1895,261.57\n2,1895,275.49\n3,1895,278.44\n4,1895,282.12\n5,1895,285.38\n6,1895,290.11\n7,1895,290.74\n8,1895,287.55\n9,1895,289.22\n10,1895,278.93\n11,1895,287.28\n12,1895,286.74\n1,1896,277.54\n2,1896,276.85\n3,1896,280.80\n4,1896,284.15\n5,1896,283.15\n6,1896,284.41\n7,1896,279.00\n8,1896,274.03\n9,1896,282.47\n10,1896,286.34\n11,1896,293.75\n12,1896,295.19\n1,1897,301.87\n2,1897,304.09\n3,1897,306.77\n4,1897,309.31\n5,1897,307.18\n6,1897,312.23\n7,1897,316.20\n8,1897,315.93\n9,1897,317.08\n10,1897,322.03\n11,1897,325.26\n12,1897,328.65\n1,1898,329.64\n2,1898,323.01\n3,1898,312.98\n4,1898,308.86\n5,1898,313.90\n6,1898,319.59\n7,1898,328.87\n8,1898,331.03\n9,1898,332.07\n10,1898,333.74\n11,1898,333.48\n12,1898,337.46\n1,1899,340.81\n2,1899,339.54\n3,1899,341.58\n4,1899,345.12\n5,1899,345.33\n6,1899,349.04\n7,1899,347.94\n8,1899,349.67\n9,1899,350.39\n10,1899,351.29\n11,1899,354.05\n12,1899,363.22\n1,1900,364.12\n2,1900,366.40\n3,1900,370.88\n4,1900,365.80\n5,1900,369.79\n6,1900,370.55\n7,1900,369.91\n8,1900,367.73\n9,1900,371.59\n10,1900,372.68\n11,1900,380.39\n12,1900,385.50\n1,1901,387.64\n2,1901,388.57\n3,1901,388.10\n4,1901,392.04\n5,1901,391.39\n6,1901,393.58\n7,1901,393.27\n8,1901,390.49\n9,1901,394.11\n10,1901,398.98\n11,1901,399.93\n12,1901,401.25\n1,1902,402.93\n2,1902,403.89\n3,1902,404.85\n4,1902,405.45\n5,1902,405.69\n6,1902,395.40\n7,1902,386.17\n8,1902,387.50\n9,1902,402.40\n10,1902,405.58\n11,1902,402.88\n12,1902,400.92\n1,1903,401.90\n2,1903,404.37\n3,1903,409.08\n4,1903,404.11\n5,1903,407.91\n6,1903,406.10\n7,1903,404.10\n8,1903,405.10\n9,1903,408.57\n10,1903,410.13\n11,1903,408.50\n12,1903,409.13\n1,1904,409.37\n2,1904,406.57\n3,1904,408.37\n4,1904,409.02\n5,1904,408.51\n6,1904,410.67\n7,1904,410.93\n8,1904,408.87\n9,1904,411.06\n10,1904,412.10\n11,1904,410.04\n12,1904,411.28\n1,1905,412.51\n2,1905,413.56\n3,1905,420.93\n4,1905,421.98\n5,1905,420.65\n6,1905,424.10\n7,1905,425.17\n8,1905,427.44\n9,1905,432.10\n10,1905,433.17\n11,1905,429.63\n12,1905,422.42\n1,1906,424.30\n2,1906,422.96\n3,1906,424.86\n4,1906,430.43\n5,1906,427.02\n6,1906,426.08\n7,1906,427.56\n8,1906,430.95\n9,1906,434.11\n10,1906,434.58\n11,1906,435.27\n12,1906,435.97\n1,1907,433.33\n2,1907,434.02\n3,1907,438.92\n4,1907,440.47\n5,1907,438.62\n6,1907,436.81\n7,1907,437.94\n8,1907,432.69\n9,1907,428.71\n10,1907,427.29\n11,1907,417.30\n12,1907,408.15\n1,1908,409.29\n2,1908,412.18\n3,1908,421.55\n4,1908,429.22\n5,1908,430.39\n6,1908,427.63\n7,1908,428.34\n8,1908,427.76\n9,1908,427.17\n10,1908,428.35\n11,1908,428.88\n12,1908,430.71\n1,1909,431.90\n2,1909,433.09\n3,1909,434.28\n4,1909,435.48\n5,1909,436.68\n6,1909,437.88\n7,1909,436.38\n8,1909,431.69\n9,1909,429.27\n10,1909,430.94\n11,1909,427.37\n12,1909,426.97\n1,1910,425.44\n2,1910,426.67\n3,1910,426.05\n4,1910,427.29\n5,1910,427.60\n6,1910,429.78\n7,1910,431.26\n8,1910,433.21\n9,1910,436.35\n10,1910,437.61\n11,1910,438.88\n12,1910,439.19\n1,1911,440.47\n2,1911,446.06\n3,1911,447.34\n4,1911,446.92\n5,1911,441.69\n6,1911,444.45\n7,1911,445.74\n8,1911,444.11\n9,1911,444.91\n10,1911,446.22\n11,1911,446.56\n12,1911,447.38\n1,1912,449.18\n2,1912,451.48\n3,1912,454.30\n4,1912,457.37\n5,1912,458.45\n6,1912,458.78\n7,1912,460.12\n8,1912,459.44\n9,1912,461.80\n10,1912,462.91\n11,1912,464.53\n12,1912,465.37\n1,1913,466.73\n2,1913,468.86\n3,1913,469.46\n4,1913,469.28\n5,1913,473.76\n6,1913,474.10\n7,1913,464.06\n8,1913,463.36\n9,1913,462.66\n10,1913,460.66\n11,1913,467.58\n12,1913,473.21\n1,1914,478.85\n2,1914,481.61\n3,1914,480.62\n4,1914,478.31\n5,1914,479.21\n6,1914,479.01\n7,1914,477.76\n8,1914,479.19\n9,1914,480.65\n10,1914,482.10\n11,1914,483.56\n12,1914,481.74\n1,1915,484.29\n2,1915,485.75\n3,1915,491.09\n4,1915,494.23\n5,1915,494.60\n6,1915,494.71\n7,1915,490.34\n8,1915,496.86\n9,1915,494.99\n10,1915,494.80\n11,1915,498.01\n12,1915,503.50\n1,1916,503.86\n2,1916,510.53\n3,1916,514.34\n4,1916,514.72\n5,1916,517.41\n6,1916,514.62\n7,1916,512.97\n8,1916,515.69\n9,1916,518.40\n10,1916,519.96\n11,1916,518.60\n12,1916,522.52\n1,1917,521.73\n2,1917,525.98\n3,1917,515.98\n4,1917,515.78\n5,1917,507.23\n6,1917,504.63\n7,1917,506.83\n8,1917,507.84\n9,1917,514.60\n10,1917,513.47\n11,1917,515.09\n12,1917,510.63\n1,1918,513.47\n2,1918,517.58\n3,1918,520.51\n4,1918,522.74\n5,1918,524.69\n6,1918,531.62\n7,1918,533.94\n8,1918,536.20\n9,1918,536.62\n10,1918,536.44\n11,1918,540.95\n12,1918,534.08\n1,1919,535.78\n2,1919,534.93\n3,1919,535.78\n4,1919,538.31\n5,1919,542.52\n6,1919,543.79\n7,1919,544.65\n8,1919,544.26\n9,1919,548.55\n10,1919,551.56\n11,1919,549.46\n12,1919,547.83\n1,1920,548.80\n2,1920,545.98\n3,1920,546.59\n4,1920,540.95\n5,1920,530.99\n6,1920,535.09\n7,1920,536.33\n8,1920,534.72\n9,1920,547.19\n10,1920,564.64\n11,1920,561.39\n12,1920,555.67\n1,1921,565.49\n2,1921,565.78\n3,1921,568.71\n4,1921,572.52\n5,1921,574.58\n6,1921,576.21\n7,1921,579.18\n8,1921,583.51\n9,1921,590.58\n10,1921,606.51\n11,1921,617.98\n12,1921,628.62\n1,1922,631.94\n2,1922,631.79\n3,1922,638.68\n4,1922,647.66\n5,1922,651.00\n6,1922,654.35\n7,1922,661.90\n8,1922,665.24\n9,1922,663.82\n10,1922,660.35\n11,1922,661.15\n12,1922,664.06\n1,1923,666.45\n2,1923,668.32\n3,1923,668.08\n4,1923,669.99\n5,1923,673.50\n6,1923,677.56\n7,1923,680.01\n8,1923,681.93\n9,1923,683.86\n10,1923,684.18\n11,1923,688.32\n12,1923,691.92\n1,1924,697.19\n2,1924,700.81\n3,1924,703.31\n4,1924,708.67\n5,1924,715.77\n6,1924,728.19\n7,1924,732.98\n8,1924,737.17\n9,1924,738.97\n10,1924,744.40\n11,1924,744.99\n12,1924,743.78\n1,1925,746.24\n2,1925,749.31\n3,1925,751.16\n4,1925,755.48\n5,1925,761.65\n6,1925,769.08\n7,1925,771.51\n8,1925,770.18\n9,1925,772.66\n10,1925,777.02\n11,1925,781.40\n12,1925,783.23\n1,1926,787.62\n2,1926,793.99\n3,1926,796.45\n4,1926,799.57\n5,1926,804.01\n6,1926,806.46\n7,1926,808.27\n8,1926,809.42\n9,1926,811.91\n10,1926,815.75\n11,1926,822.29\n12,1926,828.85\n1,1927,834.73\n2,1927,839.26\n3,1927,849.41\n4,1927,853.21\n5,1927,858.45\n6,1927,858.67\n7,1927,859.63\n8,1927,864.91\n9,1927,868.74\n10,1927,871.86\n11,1927,878.62\n12,1927,885.40\n1,1928,887.00\n2,1928,888.61\n3,1928,892.46\n4,1928,892.58\n5,1928,891.99\n6,1928,890.68\n7,1928,883.53\n8,1928,881.65\n9,1928,885.67\n10,1928,887.49\n11,1928,896.73\n12,1928,894.04\n1,1929,891.42\n2,1929,886.66\n3,1929,880.55\n4,1929,890.63\n5,1929,893.33\n6,1929,892.34\n7,1929,898.80\n8,1929,896.32\n9,1929,899.83\n10,1929,909.36\n11,1929,931.98\n12,1929,933.80\n1,1930,930.99\n2,1930,935.20\n3,1930,947.26\n4,1930,943.56\n5,1930,950.94\n6,1930,958.34\n7,1930,960.93\n8,1930,962.73\n9,1930,966.96\n10,1930,971.99\n11,1930,976.22\n12,1930,976.37\n1,1931,980.62\n2,1931,975.09\n3,1931,980.21\n4,1931,983.70\n5,1931,994.62\n6,1931,999.74\n7,1931,1000.67\n8,1931,1000.80\n9,1931,997.62\n10,1931,969.26\n11,1931,972.19\n12,1931,951.26\n1,1932,928.82\n2,1932,943.68\n3,1932,961.84\n4,1932,984.30\n5,1932,980.81\n6,1932,983.88\n7,1932,1001.77\n8,1932,1015.65\n9,1932,1021.11\n10,1932,1023.17\n11,1932,1024.39\n12,1932,1035.91\n1,1933,1050.09\n2,1933,1045.05\n3,1933,1038.40\n4,1933,1041.36\n5,1933,1054.80\n6,1933,1065.65\n7,1933,1069.39\n8,1933,1071.35\n9,1933,1076.00\n10,1933,1076.17\n11,1933,1057.75\n12,1933,1054.66\n1,1934,1062.15\n2,1934,1083.08\n3,1934,1097.86\n4,1934,1106.26\n5,1934,1115.61\n6,1934,1123.10\n7,1934,1128.70\n8,1934,1121.12\n9,1934,1107.23\n10,1934,1126.99\n11,1934,1129.86\n12,1934,1138.42\n1,1935,1156.63\n2,1935,1165.30\n3,1935,1167.99\n4,1935,1174.68\n5,1935,1178.36\n6,1935,1182.04\n7,1935,1186.73\n8,1935,1174.28\n9,1935,1174.05\n10,1935,1180.88\n11,1935,1182.65\n12,1935,1187.48\n1,1936,1192.30\n2,1936,1201.21\n3,1936,1209.10\n4,1936,1213.88\n5,1936,1218.66\n6,1936,1219.27\n7,1936,1223.02\n8,1936,1233.08\n9,1936,1232.58\n10,1936,1234.22\n11,1936,1249.68\n12,1936,1251.22\n1,1937,1259.22\n2,1937,1262.92\n3,1937,1237.18\n4,1937,1232.46\n5,1937,1239.63\n6,1937,1240.31\n7,1937,1252.94\n8,1937,1245.95\n9,1937,1251.00\n10,1937,1253.87\n11,1937,1263.31\n12,1937,1267.25\n1,1938,1272.29\n2,1938,1279.55\n3,1938,1280.12\n4,1938,1293.03\n5,1938,1300.30\n6,1938,1300.75\n7,1938,1304.63\n8,1938,1309.65\n9,1938,1303.26\n10,1938,1318.64\n11,1938,1316.76\n12,1938,1322.97\n1,1939,1325.70\n2,1939,1334.25\n3,1939,1347.49\n4,1939,1358.40\n5,1939,1377.74\n6,1939,1376.57\n7,1939,1381.46\n8,1939,1368.28\n9,1939,1315.84\n10,1939,1345.51\n11,1939,1361.33\n12,1939,1376.01\n1,1940,1377.44\n2,1940,1378.89\n3,1940,1393.68\n4,1940,1388.96\n5,1940,1368.71\n6,1940,1389.60\n7,1940,1400.83\n8,1940,1405.91\n9,1940,1418.41\n10,1940,1428.44\n11,1940,1451.14\n12,1940,1459.86\n1,1941,1462.15\n2,1941,1453.06\n3,1941,1474.07\n4,1941,1487.24\n5,1941,1488.42\n6,1941,1504.32\n7,1941,1523.02\n8,1941,1515.78\n9,1941,1516.80\n10,1941,1526.00\n11,1941,1522.88\n12,1941,1499.57\n1,1942,1503.50\n2,1942,1496.70\n3,1942,1510.10\n4,1942,1504.60\n5,1942,1511.29\n6,1942,1512.56\n7,1942,1511.14\n8,1942,1513.81\n9,1942,1515.13\n10,1942,1519.17\n11,1942,1519.14\n12,1942,1525.93\n1,1943,1534.09\n2,1943,1535.36\n3,1943,1535.28\n4,1943,1540.71\n5,1943,1550.29\n6,1943,1554.30\n7,1943,1554.14\n8,1943,1554.00\n9,1943,1556.67\n10,1943,1556.56\n11,1943,1555.09\n12,1943,1556.43\n1,1944,1559.18\n2,1944,1567.52\n3,1944,1570.24\n4,1944,1571.56\n5,1944,1574.29\n6,1944,1575.63\n7,1944,1578.39\n8,1944,1585.39\n9,1944,1586.71\n10,1944,1588.04\n11,1944,1590.80\n12,1944,1592.15\n1,1945,1615.02\n2,1945,1626.36\n3,1945,1636.25\n4,1945,1656.48\n5,1945,1658.87\n6,1945,1668.73\n7,1945,1666.57\n8,1945,1671.94\n9,1945,1678.81\n10,1945,1690.21\n11,1945,1700.08\n12,1945,1684.04\n1,1946,1695.48\n2,1946,1700.81\n3,1946,1706.13\n4,1946,1685.52\n5,1946,1686.42\n6,1946,1693.40\n7,1946,1689.73\n8,1946,1683.11\n9,1946,1678.10\n10,1946,1683.70\n11,1946,1674.23\n12,1946,1690.46\n1,1947,1699.11\n2,1947,1704.68\n3,1947,1707.18\n4,1947,1706.62\n5,1947,1710.68\n6,1947,1707.08\n7,1947,1711.19\n8,1947,1718.37\n9,1947,1713.21\n10,1947,1700.52\n11,1947,1688.07\n12,1947,1666.93\n1,1948,1669.95\n2,1948,1675.98\n3,1948,1680.49\n4,1948,1685.01\n5,1948,1701.63\n6,1948,1689.39\n7,1948,1689.40\n8,1948,1689.43\n9,1948,1697.05\n10,1948,1694.05\n11,1948,1704.75\n12,1948,1712.38\n1,1949,1723.08\n2,1949,1727.60\n3,1949,1736.76\n4,1949,1741.24\n5,1949,1745.71\n6,1949,1761.18\n7,1949,1768.74\n8,1949,1782.66\n9,1949,1780.58\n10,1949,1783.32\n11,1949,1786.07\n12,1949,1796.85\n1,1950,1783.51\n2,1950,1783.14\n3,1950,1782.80\n4,1950,1777.71\n5,1950,1779.07\n6,1950,1772.51\n7,1950,1775.55\n8,1950,1778.60\n9,1950,1775.30\n10,1950,1768.90\n11,1950,1767.35\n12,1950,1772.15\n1,1951,1783.31\n2,1951,1776.94\n3,1951,1756.54\n4,1951,1744.36\n5,1951,1733.97\n6,1951,1736.09\n7,1951,1755.30\n8,1951,1776.18\n9,1951,1757.59\n10,1951,1756.51\n11,1951,1753.93\n12,1951,1762.33\n1,1952,1766.02\n2,1952,1761.92\n3,1952,1765.60\n4,1952,1786.33\n5,1952,1796.15\n6,1952,1793.39\n7,1952,1787.58\n8,1952,1777.24\n9,1952,1764.02\n10,1952,1789.60\n11,1952,1794.91\n12,1952,1795.52\n1,1953,1782.13\n2,1953,1775.19\n3,1953,1769.93\n4,1953,1763.25\n5,1953,1734.01\n6,1953,1729.41\n7,1953,1761.14\n8,1953,1762.39\n9,1953,1779.02\n10,1953,1816.11\n11,1953,1816.98\n12,1953,1835.35\n1,1954,1857.03\n2,1954,1862.49\n3,1954,1882.68\n4,1954,1899.62\n5,1954,1889.99\n6,1954,1892.08\n7,1954,1909.12\n8,1954,1902.78\n9,1954,1903.20\n10,1954,1898.67\n11,1954,1894.24\n12,1954,1893.19\n1,1955,1880.70\n2,1955,1878.24\n3,1955,1879.12\n4,1955,1870.24\n5,1955,1872.90\n6,1955,1873.95\n7,1955,1858.82\n8,1955,1852.04\n9,1955,1856.62\n10,1955,1875.80\n11,1955,1878.67\n12,1955,1871.80\n1,1956,1876.42\n2,1956,1890.59\n3,1956,1875.80\n4,1956,1845.62\n5,1956,1867.87\n6,1956,1883.82\n7,1956,1870.96\n8,1956,1841.15\n9,1956,1838.47\n10,1956,1849.89\n11,1956,1831.66\n12,1956,1821.55\n1,1957,1827.00\n2,1957,1850.62\n3,1957,1845.01\n4,1957,1839.53\n5,1957,1826.61\n6,1957,1802.03\n7,1957,1788.45\n8,1957,1794.31\n9,1957,1801.67\n10,1957,1800.12\n11,1957,1843.73\n12,1957,1929.39\n1,1958,1953.99\n2,1958,1965.57\n3,1958,1982.12\n4,1958,2003.72\n5,1958,2001.82\n6,1958,1998.33\n7,1958,1965.21\n8,1958,1915.56\n9,1958,1886.55\n10,1958,1886.22\n11,1958,1901.60\n12,1958,1888.71\n1,1959,1894.79\n2,1959,1910.39\n3,1959,1912.04\n4,1959,1898.34\n5,1959,1875.89\n6,1959,1878.08\n7,1959,1875.79\n8,1959,1878.13\n9,1959,1847.62\n10,1959,1877.28\n11,1959,1884.36\n12,1959,1867.36\n1,1960,1870.16\n2,1960,1912.47\n3,1960,1957.06\n4,1960,1959.25\n5,1960,1955.19\n6,1960,1994.17\n7,1960,2041.95\n8,1960,2065.27\n9,1960,2071.81\n10,1960,2063.25\n11,1960,2063.24\n12,1960,2085.16\n1,1961,2091.83\n2,1961,2108.77\n3,1961,2122.29\n4,1961,2122.00\n5,1961,2140.83\n6,1961,2118.01\n7,1961,2117.98\n8,1961,2104.36\n9,1961,2121.72\n10,1961,2139.13\n11,1961,2142.64\n12,1961,2128.90\n1,1962,2129.21\n2,1962,2153.83\n3,1962,2185.66\n4,1962,2192.69\n5,1962,2192.62\n6,1962,2182.00\n7,1962,2182.20\n8,1962,2203.77\n9,1962,2214.63\n10,1962,2225.50\n11,1962,2232.77\n12,1962,2252.81\n1,1963,2256.38\n2,1963,2250.85\n3,1963,2256.41\n4,1963,2263.84\n5,1963,2269.45\n6,1963,2269.58\n7,1963,2277.15\n8,1963,2281.04\n9,1963,2279.45\n10,1963,2272.45\n11,1963,2293.24\n12,1963,2289.91\n1,1964,2295.95\n2,1964,2298.32\n3,1964,2297.04\n4,1964,2307.00\n5,1964,2320.72\n6,1964,2336.35\n7,1964,2336.88\n8,1964,2341.25\n9,1964,2355.16\n10,1964,2367.19\n11,1964,2367.74\n12,1964,2374.11\n1,1965,2386.28\n2,1965,2388.83\n3,1965,2401.10\n4,1965,2407.56\n5,1965,2412.11\n6,1965,2426.48\n7,1965,2431.05\n8,1965,2429.78\n9,1965,2422.76\n10,1965,2419.83\n11,1965,2415.10\n12,1965,2391.27\n1,1966,2400.54\n2,1966,2349.22\n3,1966,2416.25\n4,1966,2410.75\n5,1966,2418.50\n6,1966,2396.49\n7,1966,2391.62\n8,1966,2345.14\n9,1966,2418.00\n10,1966,2437.49\n11,1966,2419.46\n12,1966,2521.60\n1,1967,2555.05\n2,1967,2525.17\n3,1967,2578.76\n4,1967,2532.81\n5,1967,2537.01\n6,1967,2467.92\n7,1967,2490.12\n8,1967,2479.77\n9,1967,2483.03\n10,1967,2431.84\n11,1967,2424.72\n12,1967,2443.75\n1,1968,2584.01\n2,1968,2592.04\n3,1968,2565.23\n4,1968,2581.41\n5,1968,2570.54\n6,1968,2626.06\n7,1968,2688.53\n8,1968,2694.50\n9,1968,2692.43\n10,1968,2680.44\n11,1968,2658.83\n12,1968,2596.88\n1,1969,2604.39\n2,1969,2604.43\n3,1969,2610.37\n4,1969,2643.36\n5,1969,2588.05\n6,1969,2570.24\n7,1969,2597.83\n8,1969,2580.23\n9,1969,2470.96\n10,1969,2590.45\n11,1969,2540.55\n12,1969,2450.53\n1,1970,2489.52\n2,1970,2663.21\n3,1970,2643.92\n4,1970,2522.28\n5,1970,2515.39\n6,1970,2581.14\n7,1970,2653.97\n8,1970,2649.34\n9,1970,2704.37\n10,1970,2712.99\n11,1970,2900.55\n12,1970,2914.11\n1,1971,3019.11\n2,1971,3023.32\n3,1971,3178.67\n4,1971,3066.27\n5,1971,3014.82\n6,1971,2961.03\n7,1971,2945.35\n8,1971,3087.66\n9,1971,3168.24\n10,1971,3214.71\n11,1971,3216.19\n12,1971,3241.62\n1,1972,3209.95\n2,1972,3238.11\n3,1972,3235.35\n4,1972,3247.08\n5,1972,3285.33\n6,1972,3277.74\n7,1972,3301.80\n8,1972,3246.56\n9,1972,3235.50\n10,1972,3284.11\n11,1972,3333.18\n12,1972,3318.93\n1,1973,3305.18\n2,1973,3299.44\n3,1973,3296.38\n4,1973,3321.99\n5,1973,3286.10\n6,1973,3302.72\n7,1973,3208.35\n8,1973,3269.58\n9,1973,3372.19\n10,1973,3437.94\n11,1973,3462.11\n12,1973,3429.56\n1,1974,3424.79\n2,1974,3442.35\n3,1974,3366.93\n4,1974,3329.37\n5,1974,3383.35\n6,1974,3376.30\n7,1974,3339.54\n8,1974,3310.96\n9,1974,3372.56\n10,1974,3430.22\n11,1974,3488.53\n12,1974,3569.81\n1,1975,3559.47\n2,1975,3599.06\n3,1975,3487.87\n4,1975,3440.53\n5,1975,3528.27\n6,1975,3571.27\n7,1975,3536.90\n8,1975,3556.25\n9,1975,3518.35\n10,1975,3682.58\n11,1975,3649.40\n12,1975,3770.37\n1,1976,3784.40\n2,1976,3816.81\n3,1976,3870.52\n4,1976,3892.56\n5,1976,3840.70\n6,1976,3892.59\n7,1976,3918.09\n8,1976,3997.99\n9,1976,4053.94\n10,1976,4116.03\n11,1976,4260.40\n12,1976,4345.25\n1,1977,4195.08\n2,1977,4206.46\n3,1977,4241.32\n4,1977,4258.75\n5,1977,4305.87\n6,1977,4386.45\n7,1977,4346.37\n8,1977,4415.61\n9,1977,4402.80\n10,1977,4366.60\n11,1977,4415.46\n12,1977,4373.86\n1,1978,4354.48\n2,1978,4353.96\n3,1978,4350.95\n4,1978,4354.22\n5,1978,4331.83\n6,1978,4304.68\n7,1978,4352.88\n8,1978,4433.75\n9,1978,4414.59\n10,1978,4330.13\n11,1978,4391.29\n12,1978,4340.20\n1,1979,4431.10\n2,1979,4401.61\n3,1979,4452.31\n4,1979,4417.85\n5,1979,4535.58\n6,1979,4643.88\n7,1979,4618.16\n8,1979,4584.81\n9,1979,4561.59\n10,1979,4242.94\n11,1979,4372.10\n12,1979,4423.68\n1,1980,4246.59\n2,1980,3910.58\n3,1980,3969.98\n4,1980,4473.64\n5,1980,4653.09\n6,1980,4738.16\n7,1980,4590.58\n8,1980,4421.82\n9,1980,4384.89\n10,1980,4278.51\n11,1980,4259.64\n12,1980,4376.23\n1,1981,4359.24\n2,1981,4229.83\n3,1981,4346.89\n4,1981,4170.23\n5,1981,4358.42\n6,1981,4323.59\n7,1981,4191.15\n8,1981,4083.55\n9,1981,4046.61\n10,1981,4362.67\n11,1981,4781.94\n12,1981,4619.24\n1,1982,4633.70\n2,1982,4715.62\n3,1982,4733.12\n4,1982,4868.24\n5,1982,4966.61\n6,1982,4833.29\n7,1982,5091.95\n8,1982,5397.44\n9,1982,5790.47\n10,1982,6195.05\n11,1982,6221.75\n12,1982,6435.00\n1,1983,6328.26\n2,1983,6586.42\n3,1983,6507.80\n4,1983,6701.58\n5,1983,6548.65\n6,1983,6550.35\n7,1983,6313.50\n8,1983,6296.33\n9,1983,6557.69\n10,1983,6507.80\n11,1983,6612.77\n12,1983,6605.06\n1,1984,6727.27\n2,1984,6651.61\n3,1984,6536.07\n4,1984,6498.67\n5,1984,6188.12\n6,1984,6283.56\n7,1984,6687.47\n8,1984,6804.48\n9,1984,7000.60\n10,1984,7349.63\n11,1984,7511.14\n12,1984,7596.63\n1,1985,7838.88\n2,1985,7578.46\n3,1985,7769.66\n4,1985,7955.42\n5,1985,8586.12\n6,1985,8675.26\n7,1985,8583.68\n8,1985,8810.57\n9,1985,8870.09\n10,1985,9109.05\n11,1985,9421.79\n12,1985,9846.86\n1,1986,9871.90\n2,1986,10577.82\n3,1986,11182.14\n4,1986,11258.48\n5,1986,10837.60\n6,1986,11426.49\n7,1986,11504.13\n8,1986,11880.08\n9,1986,11556.73\n10,1986,11713.81\n11,1986,11935.71\n12,1986,11942.88\n1,1987,12054.99\n2,1987,12119.03\n3,1987,11934.83\n4,1987,11468.80\n5,1987,11338.60\n6,1987,11500.77\n7,1987,11372.57\n8,1987,11206.37\n9,1987,10845.81\n10,1987,11469.17\n11,1987,11472.60\n12,1987,11678.15\n1,1988,12207.09\n2,1988,12371.66\n3,1988,12127.71\n4,1988,11979.87\n5,1988,11815.57\n6,1988,12200.18\n7,1988,12055.22\n8,1988,12046.27\n9,1988,12438.57\n10,1988,12709.73\n11,1988,12467.68\n12,1988,12497.59\n1,1989,12698.16\n2,1989,12542.26\n3,1989,12655.80\n4,1989,12984.45\n5,1989,13441.17\n6,1989,13985.57\n7,1989,14341.28\n8,1989,14024.29\n9,1989,14074.85\n10,1989,14538.77\n11,1989,14711.95\n12,1989,14720.66\n1,1990,14341.48\n2,1990,14365.64\n3,1990,14333.83\n4,1990,14070.61\n5,1990,14594.17\n6,1990,14865.63\n7,1990,15039.98\n8,1990,14651.17\n9,1990,14798.33\n10,1990,15075.54\n11,1990,15583.08\n12,1990,15880.39\n1,1991,16041.00\n2,1991,16159.18\n3,1991,16234.47\n4,1991,16376.30\n5,1991,16441.58\n6,1991,16353.85\n7,1991,16510.21\n8,1991,17052.40\n9,1991,17574.58\n10,1991,17683.98\n11,1991,17903.18\n12,1991,18858.73\n1,1992,18200.49\n2,1992,18362.58\n3,1992,18129.55\n4,1992,18155.00\n5,1992,18629.59\n6,1992,18994.01\n7,1992,19679.84\n8,1992,19930.43\n9,1992,20398.91\n10,1992,19892.24\n11,1992,19794.80\n12,1992,20263.33\n1,1993,20829.03\n2,1993,21499.67\n3,1993,21607.71\n4,1993,21684.39\n5,1993,21618.42\n6,1993,22312.71\n7,1993,22370.96\n8,1993,23121.11\n9,1993,23312.59\n10,1993,23365.33\n11,1993,22786.00\n12,1993,22896.71\n1,1994,23229.97\n2,1994,22579.34\n3,1994,21691.61\n4,1994,21361.22\n5,1994,21317.27\n6,1994,21184.25\n7,1994,21653.64\n8,1994,21672.61\n9,1994,21140.91\n10,1994,20989.13\n11,1994,20976.19\n12,1994,21219.69\n1,1995,21726.59\n2,1995,22467.68\n3,1995,22635.40\n4,1995,22985.43\n5,1995,24450.82\n6,1995,24741.68\n7,1995,24437.12\n8,1995,24875.55\n9,1995,25208.05\n10,1995,25599.46\n11,1995,26245.18\n12,1995,26724.77\n1,1996,26809.28\n2,1996,25902.05\n3,1996,25637.00\n4,1996,25178.30\n5,1996,24971.49\n6,1996,25333.46\n7,1996,25346.53\n8,1996,25196.70\n9,1996,25787.20\n10,1996,26601.06\n11,1996,27356.63\n12,1996,26759.82\n1,1997,26707.77\n2,1997,26794.50\n3,1997,26246.34\n4,1997,26782.99\n5,1997,27030.95\n6,1997,27499.50\n7,1997,28658.41\n8,1997,28134.31\n9,1997,28742.42\n10,1997,29490.40\n11,1997,29590.24\n12,1997,29977.17\n1,1998,30615.47\n2,1998,30552.04\n3,1998,30581.71\n4,1998,30703.49\n5,1998,31124.23\n6,1998,31548.20\n7,1998,31550.31\n8,1998,32775.92\n9,1998,34459.55\n10,1998,34068.67\n11,1998,33943.82\n12,1998,34309.63\n1,1999,34416.63\n2,1999,32957.25\n3,1999,33201.37\n4,1999,33074.51\n5,1999,32538.88\n6,1999,32283.53\n7,1999,32177.77\n8,1999,32193.98\n9,1999,32545.58\n10,1999,32417.96\n11,1999,32200.08\n12,1999,31733.08\n1,2000,31373.91\n2,2000,32151.55\n3,2000,33260.35\n4,2000,32940.46\n5,2000,32966.35\n6,2000,33777.15\n7,2000,33921.94\n8,2000,34880.69\n9,2000,34866.48\n10,2000,35112.71\n11,2000,36047.50\n12,2000,37196.41\n1,2001,37160.32\n2,2001,38105.53\n3,2001,38232.23\n4,2001,37168.66\n5,2001,37106.24\n6,2001,37302.70\n7,2001,38492.07\n8,2001,39316.54\n9,2001,40247.42\n10,2001,41356.03\n11,2001,39984.68\n12,2001,39255.06\n1,2002,39420.91\n2,2002,40172.01\n3,2002,38694.24\n4,2002,39805.19\n5,2002,40067.14\n6,2002,40925.56\n7,2002,42221.47\n8,2002,43620.75\n9,2002,45560.10\n10,2002,44631.99\n11,2002,43772.85\n12,2002,45289.97\n1,2003,44832.21\n2,2003,46052.13\n3,2003,45746.55\n4,2003,45669.81\n5,2003,47798.14\n6,2003,47272.20\n7,2003,43904.01\n8,2003,44210.16\n9,2003,46163.47\n10,2003,44952.45\n11,2003,45078.34\n12,2003,45497.22\n1,2004,46066.06\n2,2004,46865.39\n3,2004,47519.07\n4,2004,45163.06\n5,2004,44863.33\n6,2004,45182.17\n7,2004,45795.00\n8,2004,47357.26\n9,2004,47481.88\n10,2004,47993.49\n11,2004,46966.01\n12,2004,47594.56\n1,2005,48149.72\n2,2005,47466.40\n3,2005,47105.60\n4,2005,48399.00\n5,2005,49399.94\n6,2005,49805.97\n7,2005,48615.52\n8,2005,49824.01\n9,2005,48716.34\n10,2005,47996.98\n11,2005,48490.21\n12,2005,49064.52\n1,2006,48693.03\n2,2006,48798.44\n3,2006,47782.54\n4,2006,47179.22\n5,2006,47190.37\n6,2006,47278.76\n7,2006,48090.46\n8,2006,49264.46\n9,2006,49856.77\n10,2006,50170.06\n11,2006,50972.93\n12,2006,50146.56\n1,2007,49862.44\n2,2007,51157.43\n3,2007,50982.53\n4,2007,51262.20\n5,2007,50360.38\n6,2007,50044.45\n7,2007,51267.22\n8,2007,52470.84\n9,2007,52458.46\n10,2007,53126.19\n11,2007,55563.71\n12,2007,55432.65\n1,2008,57313.56\n2,2008,58147.79\n3,2008,58700.50\n4,2008,57355.73\n5,2008,56199.68\n6,2008,56710.05\n7,2008,56898.61\n8,2008,57832.80\n9,2008,57923.33\n10,2008,57360.83\n11,2008,62852.10\n12,2008,66646.03\n1,2009,63435.95\n2,2009,62808.57\n3,2009,64593.41\n4,2009,62388.35\n5,2009,60987.37\n6,2009,60865.27\n7,2009,61094.08\n8,2009,61876.04\n9,2009,62509.30\n10,2009,62171.73\n11,2009,63376.22\n12,2009,60316.54\n1,2010,61601.24\n2,2010,61888.23\n3,2010,60925.07\n4,2010,61869.12\n5,2010,64012.06\n6,2010,66002.39\n7,2010,66329.06\n8,2010,69119.47\n9,2010,68918.87\n10,2010,68495.93\n11,2010,67634.75\n12,2010,64697.06\n1,2011,64351.96\n2,2011,64866.69\n3,2011,64831.98\n4,2011,65793.43\n5,2011,68022.06\n6,2011,66700.88\n7,2011,69192.60\n8,2011,73447.74\n9,2011,75050.21\n10,2011,74589.83\n11,2011,74074.75\n12,2011,75623.90\n1,2012,76135.97\n2,2012,75235.40\n3,2012,73695.84\n4,2012,75499.58\n5,2012,78313.42\n6,2012,77856.21\n7,2012,79092.64\n8,2012,78766.42\n9,2012,78305.17\n10,2012,77922.08\n11,2012,78736.90\n12,2012,77720.01\n1,2013,76181.41\n2,2013,77202.08\n3,2013,77462.21\n4,2013,78773.71\n5,2013,75704.86\n6,2013,73447.74\n7,2013,73080.58\n8,2013,72078.34\n9,2013,73289.97\n10,2013,73859.20\n11,2013,72136.89\n12,2013,71309.07\n1,2014,73833.17\n2,2014,74121.04\n3,2014,73857.57\n4,2014,74460.95\n5,2014,75934.42\n6,2014,75757.15\n7,2014,75656.32\n8,2014,77315.20\n9,2014,76380.04\n10,2014,77677.87\n11,2014,78922.03\n12,2014,79221.28\n1,2015,83388.00\n2,2015,81024.91\n3,2015,81644.55\n4,2015,80994.01\n5,2015,80494.72\n6,2015,79000.10\n7,2015,80325.58\n8,2015,80201.97\n9,2015,81496.55\n10,2015,80984.25\n11,2015,80567.90\n12,2015,80120.65\n1,2016,82926.11\n2,2016,84342.67\n3,2016,84141.00\n4,2016,83923.07\n5,2016,83841.75\n6,2016,86731.78\n7,2016,87102.59\n8,2016,86258.51\n9,2016,86064.98\n10,2016,84467.90\n11,2016,80358.10\n12,2016,80071.86\n1,2017,80227.99\n2,2017,80901.30\n3,2017,80816.73\n4,2017,81773.03\n5,2017,82402.43\n6,2017,81886.87\n7,2017,82125.95\n8,2017,83453.05\n9,2017,82059.27\n10,2017,81906.39\n11,2017,81683.58\n12,2017,81882.00\n1,2018,79905.98\n2,2018,78912.27\n3,2018,79883.21\n4,2018,78746.39\n5,2018,79530.29\n6,2018,79691.30\n7,2018,79190.38\n8,2018,79951.51\n9,2018,78866.74\n10,2018,78437.38\n11,2018,79559.56\n12,2018,81945.42\n1,2019,82511.39\n2,2019,82038.13\n3,2019,84508.56\n4,2019,83927.95\n5,2019,86772.44\n6,2019,87919.02\n7,2019,87982.45\n8,2019,92118.26\n9,2019,90787.90\n10,2019,90770.01\n11,2019,90122.73\n12,2019,89086.74\n1,2020,92549.24\n2,2020,95764.54\n3,2020,99945.90\n4,2020,100363.87\n5,2020,100453.32\n6,2020,100472.84\n7,2020,101658.45\n8,2020,100186.60\n9,2020,100505.36\n10,2020,98774.92\n11,2020,99142.48\n12,2020,98613.91\n1,2021,97205.49\n2,2021,94614.71\n3,2021,91752.33\n4,2021,92827.35\n5,2021,93164.01\n6,2021,94535.02\n7,2021,96636.27\n8,2021,96226.43\n9,2021,94497.62\n10,2021,94177.22\n11,2021,95499.45\n12,2021,94922.09\n1,2022,92785.07\n2,2022,92497.20\n3,2022,88616.72\n4,2022,84428.86\n5,2022,84892.37\n6,2022,84020.65\n7,2022,86673.23\n8,2022,83240.00\n9,2022,79097.68\n10,2022,77601.43\n11,2022,80486.58\n12,2022,79286.34\n1,2023,82047.88\n2,2023,79504.27\n3,2023,82584.58\n4,2023,83183.08\n5,2023,81966.57\n6,2023,81020.03\n7,2023,80356.48\n8,2023,79613.23\n9,2023,76872.83\n10,2023,75139.14\n11,2023,78783.79\n12,2023,82090.17\n1,2024,81828.33\n2,2024,80141.80\n3,2024,80675.24\n4,2024,77972.24\n5,2024,79437.59\n6,2024,80458.94\n7,2024,82779.74\n8,2024,83936.08\n9,2024,85082.66\n10,2024,82059.27\n11,2024,82890.33\n12,2024,80719.15\n1,2025,81198.93\n2,2025,83708.39\n3,2025,83914.94\n4,2025,84565.48\n5,2025,83415.65\n6,2025,84762.27\n7,2025,84194.67\n8,2025,85523.40\n9,2025,86330.07\n10,2025,86992.00\n11,2025,87909.26\n12,2025,87193.66\n`,
        'ex_us_stocks': `1,1871,100.00\n2,1871,101.87\n3,1871,104.87\n4,1871,108.45\n5,1871,111.47\n6,1871,111.08\n7,1871,109.55\n8,1871,111.18\n9,1871,112.81\n10,1871,107.49\n11,1871,109.13\n12,1871,112.25\n1,1872,115.42\n2,1872,116.54\n3,1872,120.62\n4,1872,124.73\n5,1872,125.26\n6,1872,124.59\n7,1872,124.23\n8,1872,123.32\n9,1872,122.12\n10,1872,123.07\n11,1872,123.38\n12,1872,126.80\n1,1873,128.35\n2,1873,130.23\n3,1873,129.65\n4,1873,128.47\n5,1873,129.50\n6,1873,128.64\n7,1873,129.07\n8,1873,129.82\n9,1873,120.51\n10,1873,110.84\n11,1873,107.56\n12,1873,118.48\n1,1874,125.34\n2,1874,129.55\n3,1874,128.43\n4,1874,125.28\n5,1874,122.89\n6,1874,122.89\n7,1874,123.57\n8,1874,124.60\n9,1874,127.37\n10,1874,127.72\n11,1874,129.13\n12,1874,129.49\n1,1875,130.26\n2,1875,130.68\n3,1875,132.89\n4,1875,135.42\n5,1875,131.06\n6,1875,128.87\n7,1875,129.91\n8,1875,131.32\n9,1875,130.52\n10,1875,129.34\n11,1875,131.89\n12,1875,132.61\n1,1876,136.42\n2,1876,139.10\n3,1876,139.47\n4,1876,134.79\n5,1876,130.46\n6,1876,130.41\n7,1876,129.53\n8,1876,124.73\n9,1876,117.92\n10,1876,117.79\n11,1876,116.46\n12,1876,116.34\n1,1877,116.13\n2,1877,109.83\n3,1877,104.70\n4,1877,97.90\n5,1877,98.45\n6,1877,91.92\n7,1877,96.19\n8,1877,103.36\n9,1877,110.13\n10,1877,113.10\n11,1877,111.84\n12,1877,111.85\n1,1878,112.31\n2,1878,110.63\n3,1878,112.83\n4,1878,116.78\n5,1878,117.69\n6,1878,120.75\n7,1878,123.38\n8,1878,122.50\n9,1878,125.63\n10,1878,124.78\n11,1878,124.84\n12,1878,124.45\n1,1879,129.93\n2,1879,134.96\n3,1879,133.67\n4,1879,138.28\n5,1879,145.23\n6,1879,147.16\n7,1879,150.02\n8,1879,151.98\n9,1879,158.12\n10,1879,175.92\n11,1879,185.86\n12,1879,186.06\n1,1880,193.78\n2,1880,198.24\n3,1880,202.22\n4,1880,198.64\n5,1880,183.65\n6,1880,184.91\n7,1880,194.36\n8,1880,202.40\n9,1880,202.73\n10,1880,209.39\n11,1880,221.46\n12,1880,231.13\n1,1881,245.74\n2,1881,245.62\n3,1881,249.43\n4,1881,249.78\n5,1881,261.61\n6,1881,265.50\n7,1881,257.38\n8,1881,252.23\n9,1881,255.19\n10,1881,252.06\n11,1881,254.53\n12,1881,248.43\n1,1882,245.32\n2,1882,241.17\n3,1882,241.67\n4,1882,242.64\n5,1882,240.52\n6,1882,240.51\n7,1882,255.28\n8,1882,263.75\n9,1882,267.50\n10,1882,261.69\n11,1882,251.57\n12,1882,253.79\n1,1883,253.86\n2,1883,249.05\n3,1883,253.49\n4,1883,260.14\n5,1883,256.37\n6,1883,260.34\n7,1883,257.13\n8,1883,246.64\n9,1883,250.68\n10,1883,245.18\n11,1883,249.85\n12,1883,245.95\n1,1884,239.73\n2,1884,247.26\n3,1884,247.33\n4,1884,238.70\n5,1884,219.50\n6,1884,211.98\n7,1884,213.20\n8,1884,228.10\n9,1884,221.51\n10,1884,215.42\n11,1884,212.33\n12,1884,212.85\n1,1885,209.04\n2,1885,216.51\n3,1885,218.07\n4,1885,218.57\n5,1885,217.07\n6,1885,217.07\n7,1885,226.13\n8,1885,239.77\n9,1885,237.68\n10,1885,252.45\n11,1885,269.81\n12,1885,268.69\n1,1886,269.64\n2,1886,275.77\n3,1886,270.98\n4,1886,268.25\n5,1886,263.95\n6,1886,276.91\n7,1886,282.01\n8,1886,285.00\n9,1886,293.32\n10,1886,301.67\n11,1886,310.04\n12,1886,302.93\n1,1887,300.65\n2,1887,299.43\n3,1887,307.41\n4,1887,315.40\n5,1887,321.80\n6,1887,313.51\n7,1887,306.91\n8,1887,300.28\n9,1887,297.49\n10,1887,288.65\n11,1887,295.33\n12,1887,294.80\n1,1888,298.17\n2,1888,297.62\n3,1888,287.50\n4,1888,289.79\n5,1888,294.90\n6,1888,286.83\n7,1888,295.34\n8,1888,302.73\n9,1888,311.27\n10,1888,310.55\n11,1888,305.14\n12,1888,300.29\n1,1889,307.10\n2,1889,311.60\n3,1889,306.13\n4,1889,306.54\n5,1889,315.82\n6,1889,322.19\n7,1889,316.71\n8,1889,321.97\n9,1889,330.84\n10,1889,325.90\n11,1889,323.96\n12,1889,323.23\n1,1890,327.86\n2,1890,325.20\n3,1890,323.77\n4,1890,331.54\n5,1890,346.71\n6,1890,345.27\n7,1890,343.89\n8,1890,336.90\n9,1890,332.39\n10,1890,318.41\n11,1890,296.25\n12,1890,290.38\n1,1891,306.60\n2,1891,311.48\n3,1891,306.85\n4,1891,318.15\n5,1891,317.99\n6,1891,312.71\n7,1891,308.72\n8,1891,320.23\n9,1891,347.35\n10,1891,348.49\n11,1891,344.42\n12,1891,356.10\n1,1892,363.87\n2,1892,365.72\n3,1892,370.91\n4,1892,371.47\n5,1892,372.71\n6,1892,371.94\n7,1892,373.17\n8,1892,379.79\n9,1892,371.56\n10,1892,380.27\n11,1892,380.19\n12,1892,377.37\n1,1893,385.55\n2,1893,380.02\n3,1893,367.61\n4,1893,368.98\n5,1893,337.67\n6,1893,322.98\n7,1893,294.21\n8,1893,288.51\n9,1893,310.37\n10,1893,320.88\n11,1893,327.16\n12,1893,316.99\n1,1894,311.78\n2,1894,317.31\n3,1894,327.94\n4,1894,333.51\n5,1894,322.32\n6,1894,319.13\n7,1894,313.72\n8,1894,326.77\n9,1894,333.19\n10,1894,324.01\n11,1894,325.23\n12,1894,323.46\n1,1895,320.92\n2,1895,317.62\n3,1895,318.84\n4,1895,333.71\n5,1895,353.20\n6,1895,361.24\n7,1895,363.91\n8,1895,370.44\n9,1895,373.91\n10,1895,369.63\n11,1895,358.34\n12,1895,338.40\n1,1896,335.56\n2,1896,350.76\n3,1896,346.40\n4,1896,350.73\n5,1896,350.28\n6,1896,345.08\n7,1896,323.88\n8,1896,306.62\n9,1896,323.88\n10,1896,332.29\n11,1896,356.13\n12,1896,344.27\n1,1897,345.42\n2,1897,343.32\n3,1897,345.31\n4,1897,335.75\n5,1897,338.57\n6,1897,355.50\n7,1897,372.50\n8,1897,397.87\n9,1897,418.30\n10,1897,406.02\n11,1897,392.89\n12,1897,402.53\n1,1898,414.73\n2,1898,415.10\n3,1898,397.58\n4,1898,391.98\n5,1898,418.95\n6,1898,436.55\n7,1898,439.58\n8,1898,457.31\n9,1898,457.79\n10,1898,449.57\n11,1898,465.81\n12,1898,496.14\n1,1899,535.31\n2,1899,556.94\n3,1899,566.25\n4,1899,574.70\n5,1899,552.14\n6,1899,541.07\n7,1899,561.27\n8,1899,577.04\n9,1899,572.24\n10,1899,571.07\n11,1899,583.43\n12,1899,545.27\n1,1900,554.22\n2,1900,565.93\n3,1900,572.21\n4,1900,581.30\n5,1900,555.58\n6,1900,540.82\n7,1900,542.59\n8,1900,551.84\n9,1900,551.84\n10,1900,540.73\n11,1900,562.32\n12,1900,608.32\n1,1901,667.84\n2,1901,686.88\n3,1901,713.45\n4,1901,775.22\n5,1901,738.13\n6,1901,813.76\n7,1901,761.35\n8,1901,774.07\n9,1901,772.48\n10,1901,766.08\n11,1901,784.80\n12,1901,774.56\n1,1902,793.52\n2,1902,802.72\n3,1902,806.15\n4,1902,836.14\n5,1902,836.53\n6,1902,834.05\n7,1902,855.40\n8,1902,880.82\n9,1902,885.39\n10,1902,859.95\n11,1902,829.37\n12,1902,812.84\n1,1903,856.87\n2,1903,854.46\n3,1903,823.59\n4,1903,792.61\n5,1903,779.94\n6,1903,739.60\n7,1903,718.73\n8,1903,688.44\n9,1903,674.64\n10,1903,655.56\n11,1903,660.50\n12,1903,693.63\n1,1904,707.79\n2,1904,691.29\n3,1904,691.74\n4,1904,711.41\n5,1904,699.02\n6,1904,702.71\n7,1904,734.49\n8,1904,762.06\n9,1904,798.42\n10,1904,847.98\n11,1904,896.61\n12,1904,908.08\n1,1905,930.64\n2,1905,974.30\n3,1905,1004.79\n4,1905,995.41\n5,1905,949.25\n6,1905,963.22\n7,1905,996.27\n8,1905,1036.22\n9,1905,1042.51\n10,1905,1060.17\n11,1905,1057.48\n12,1905,1086.60\n1,1906,1127.20\n2,1906,1122.29\n3,1906,1098.01\n4,1906,1086.27\n5,1906,1060.68\n6,1906,1077.74\n7,1906,1053.15\n8,1906,1134.20\n9,1906,1172.56\n10,1906,1169.00\n11,1906,1167.83\n12,1906,1160.93\n1,1907,1131.62\n2,1907,1099.90\n3,1907,995.84\n4,1907,1004.67\n5,1907,973.98\n6,1907,946.82\n7,1907,987.21\n8,1907,917.37\n9,1907,911.87\n10,1907,817.01\n11,1907,773.21\n12,1907,816.95\n1,1908,855.94\n2,1908,828.84\n3,1908,866.79\n4,1908,917.54\n5,1908,976.28\n6,1908,976.28\n7,1908,1016.12\n8,1908,1063.82\n9,1908,1056.32\n10,1908,1073.45\n11,1908,1150.36\n12,1908,1180.60\n1,1909,1188.83\n2,1909,1159.05\n3,1909,1179.23\n4,1909,1236.54\n5,1909,1282.12\n6,1909,1309.26\n7,1909,1332.53\n8,1909,1369.28\n9,1909,1375.31\n10,1909,1385.42\n11,1909,1383.37\n12,1909,1404.54\n1,1910,1379.35\n2,1910,1334.94\n3,1910,1372.84\n4,1910,1344.69\n5,1910,1327.52\n6,1910,1268.74\n7,1910,1209.74\n8,1910,1244.32\n9,1910,1258.05\n10,1910,1321.27\n11,1910,1325.21\n12,1910,1293.60\n1,1911,1330.63\n2,1911,1359.21\n3,1911,1348.81\n4,1911,1348.50\n5,1911,1383.08\n6,1911,1416.33\n7,1911,1415.99\n8,1911,1353.91\n9,1911,1285.64\n10,1911,1298.62\n11,1911,1356.32\n12,1911,1367.92\n1,1912,1374.95\n2,1912,1368.47\n3,1912,1413.59\n4,1912,1463.47\n5,1912,1464.71\n6,1912,1473.61\n7,1912,1481.00\n8,1912,1520.82\n9,1912,1534.39\n10,1912,1537.15\n11,1912,1525.86\n12,1912,1476.92\n1,1913,1470.26\n2,1913,1423.93\n3,1913,1402.92\n4,1913,1407.31\n5,1913,1374.92\n6,1913,1311.91\n7,1913,1335.88\n8,1913,1377.79\n9,1913,1397.06\n10,1913,1358.84\n11,1913,1330.58\n12,1913,1334.89\n1,1914,1395.59\n2,1914,1419.93\n3,1914,1399.06\n4,1914,1371.35\n5,1914,1385.73\n6,1914,1384.77\n7,1914,1313.92\n8,1914,1204.61\n9,1914,1209.95\n10,1914,1149.09\n11,1914,1198.59\n12,1914,1285.78\n1,1915,1314.61\n2,1915,1303.17\n3,1915,1342.73\n4,1915,1449.89\n5,1915,1422.13\n6,1915,1444.33\n7,1915,1444.95\n8,1915,1512.36\n9,1915,1574.60\n10,1915,1667.98\n11,1915,1732.48\n12,1915,1742.39\n1,1916,1721.23\n2,1916,1703.66\n3,1916,1705.40\n4,1916,1694.11\n5,1916,1738.82\n6,1916,1763.69\n7,1916,1747.33\n8,1916,1768.83\n9,1916,1849.54\n10,1916,1915.41\n11,1916,1968.14\n12,1916,1898.13\n1,1917,1861.44\n2,1917,1767.93\n3,1917,1832.71\n4,1917,1815.17\n5,1917,1763.91\n6,1917,1810.36\n7,1917,1771.17\n8,1917,1729.56\n9,1917,1657.31\n10,1917,1578.45\n11,1917,1457.85\n12,1917,1419.06\n1,1918,1532.27\n2,1918,1574.49\n3,1918,1524.69\n4,1918,1554.82\n5,1918,1590.12\n6,1918,1635.96\n7,1918,1636.11\n8,1918,1682.61\n9,1918,1664.49\n10,1918,1760.80\n11,1918,1744.79\n12,1918,1781.67\n1,1919,1763.08\n2,1919,1832.45\n3,1919,1852.92\n4,1919,1959.86\n5,1919,2129.58\n6,1919,2078.81\n7,1919,2216.64\n8,1919,2053.06\n9,1919,2103.47\n10,1919,2273.36\n11,1919,2149.02\n12,1919,2150.03\n1,1920,2097.67\n2,1920,1952.27\n3,1920,2154.50\n4,1920,2007.56\n5,1920,1937.22\n6,1920,1929.86\n7,1920,1893.72\n8,1920,1937.92\n9,1920,1937.92\n10,1920,1971.91\n11,1920,1823.00\n12,1920,1726.70\n1,1921,1808.51\n2,1921,1803.68\n3,1921,1771.43\n4,1921,1820.91\n5,1921,1796.62\n6,1921,1673.89\n7,1921,1729.59\n8,1921,1704.88\n9,1921,1761.04\n10,1921,1811.36\n11,1921,1937.66\n12,1921,1978.77\n1,1922,2005.12\n2,1922,2076.45\n3,1922,2154.48\n4,1922,2287.59\n5,1922,2414.93\n6,1922,2324.24\n7,1922,2364.52\n8,1922,2543.48\n9,1922,2518.06\n10,1922,2588.78\n11,1922,2473.41\n12,1922,2528.74\n1,1923,2542.68\n2,1923,2719.12\n3,1923,2692.53\n4,1923,2631.96\n5,1923,2537.09\n6,1923,2352.34\n7,1923,2409.23\n8,1923,2459.61\n9,1923,2395.11\n10,1923,2400.44\n11,1923,2546.96\n12,1923,2634.18\n1,1924,2725.45\n2,1924,2681.16\n3,1924,2622.33\n4,1924,2613.66\n5,1924,2641.36\n6,1924,2749.64\n7,1924,2884.25\n8,1924,2912.39\n9,1924,2929.57\n10,1924,2917.20\n11,1924,3132.47\n12,1924,3311.28\n1,1925,3392.82\n2,1925,3437.13\n3,1925,3223.17\n4,1925,3336.71\n5,1925,3523.78\n6,1925,3554.00\n7,1925,3696.79\n8,1925,3723.81\n9,1925,3837.00\n10,1925,4072.57\n11,1925,4077.08\n12,1925,4289.65\n1,1926,4299.56\n2,1926,4126.53\n3,1926,3898.71\n4,1926,3994.15\n5,1926,4052.64\n6,1926,4245.33\n7,1926,4342.75\n8,1926,4551.62\n9,1926,4675.18\n10,1926,4548.08\n11,1926,4669.49\n12,1926,4767.44\n1,1927,4688.44\n2,1927,4932.67\n3,1927,4985.18\n4,1927,5091.65\n5,1927,5378.71\n6,1927,5349.04\n7,1927,5718.92\n8,1927,5995.87\n9,1927,6211.46\n10,1927,5965.70\n11,1927,6392.59\n12,1927,6537.39\n1,1928,6526.68\n2,1928,6434.39\n3,1928,7156.00\n4,1928,7411.93\n5,1928,7529.21\n6,1928,7248.00\n7,1928,7363.11\n8,1928,7934.44\n9,1928,8149.72\n10,1928,8293.43\n11,1928,9314.66\n12,1928,9368.60\n1,1929,9929.73\n2,1929,9898.52\n3,1929,9901.73\n4,1929,10088.07\n5,1929,9682.55\n6,1929,10799.69\n7,1929,11321.16\n8,1929,12460.78\n9,1929,11880.34\n10,1929,9538.86\n11,1929,8293.22\n12,1929,8534.15\n1,1930,9101.72\n2,1930,9328.95\n3,1930,10102.86\n4,1930,10037.12\n5,1930,9907.09\n6,1930,8306.94\n7,1930,8640.33\n8,1930,8738.66\n9,1930,7627.41\n10,1930,6979.34\n11,1930,6859.77\n12,1930,6378.65\n1,1931,6722.90\n2,1931,7521.95\n3,1931,7026.97\n4,1931,6380.76\n5,1931,5533.66\n6,1931,6334.24\n7,1931,5886.95\n8,1931,5973.94\n9,1931,4204.05\n10,1931,4585.66\n11,1931,4158.98\n12,1931,3581.11\n1,1932,3498.06\n2,1932,3706.39\n3,1932,3286.60\n4,1932,2637.38\n5,1932,2037.58\n6,1932,2036.57\n7,1932,2820.80\n8,1932,3900.05\n9,1932,3775.03\n10,1932,3260.94\n11,1932,3087.27\n12,1932,3263.78\n1,1933,3303.17\n2,1933,2705.45\n3,1933,2809.83\n4,1933,4015.06\n5,1933,4675.87\n6,1933,5306.89\n7,1933,4847.61\n8,1933,5420.38\n9,1933,4817.56\n10,1933,4398.06\n11,1933,4869.51\n12,1933,4990.15\n1,1934,5535.25\n2,1934,5344.20\n3,1934,5359.56\n4,1934,5229.90\n5,1934,4816.96\n6,1934,4933.08\n7,1934,4377.19\n8,1934,4628.09\n9,1934,4625.08\n10,1934,4487.00\n11,1934,4882.45\n12,1934,4873.35\n1,1935,4689.24\n2,1935,4517.25\n3,1935,4390.20\n4,1935,4831.88\n5,1935,5005.59\n6,1935,5359.68\n7,1935,5825.84\n8,1935,5970.92\n9,1935,6129.76\n10,1935,6616.87\n11,1935,6891.64\n12,1935,7173.97\n1,1936,7666.84\n2,1936,7817.30\n3,1936,8035.76\n4,1936,7436.53\n5,1936,7801.51\n6,1936,8065.26\n7,1936,8647.46\n8,1936,8743.85\n9,1936,8785.44\n10,1936,9481.89\n11,1936,9549.66\n12,1936,9527.10\n1,1937,9924.99\n2,1937,10107.03\n3,1937,10043.52\n4,1937,9249.92\n5,1937,9190.07\n6,1937,8745.56\n7,1937,9675.81\n8,1937,9181.22\n9,1937,7913.58\n10,1937,7148.29\n11,1937,6458.85\n12,1937,6168.06\n1,1938,6294.54\n2,1938,6718.36\n3,1938,5071.71\n4,1938,5822.24\n5,1938,5602.17\n6,1938,7024.76\n7,1938,7563.17\n8,1938,7389.21\n9,1938,7538.73\n10,1938,8131.05\n11,1938,7892.79\n12,1938,8215.80\n1,1939,7678.87\n2,1939,7957.39\n3,1939,6904.14\n4,1939,6892.28\n5,1939,7349.44\n6,1939,6906.59\n7,1939,7689.44\n8,1939,7172.33\n9,1939,8381.49\n10,1939,8293.09\n11,1939,7919.57\n12,1939,8141.08\n1,1940,7888.07\n2,1940,7971.88\n3,1940,8089.13\n4,1940,8083.29\n5,1940,6181.88\n6,1940,6696.79\n7,1940,6936.92\n8,1940,7152.82\n9,1940,7267.50\n10,1940,7588.71\n11,1940,7307.86\n12,1940,7320.25\n1,1941,7010.94\n2,1941,6945.15\n3,1941,7011.28\n4,1941,6599.74\n5,1941,6658.29\n6,1941,7058.23\n7,1941,7488.12\n8,1941,7466.70\n9,1941,7435.91\n10,1941,6974.15\n11,1941,6721.98\n12,1941,6458.86\n1,1942,6590.62\n2,1942,6423.86\n3,1942,6075.53\n4,1942,5851.80\n5,1942,6268.15\n6,1942,6425.81\n7,1942,6667.08\n8,1942,6754.04\n9,1942,6974.76\n10,1942,7462.71\n11,1942,7398.67\n12,1942,7820.11\n1,1943,8419.79\n2,1943,8885.52\n3,1943,9393.71\n4,1943,9441.70\n5,1943,9905.35\n6,1943,10141.90\n7,1943,9632.77\n8,1943,9772.94\n9,1943,10046.27\n10,1943,9955.51\n11,1943,9246.32\n12,1943,9834.38\n1,1944,10029.59\n2,1944,10047.97\n3,1944,10261.92\n4,1944,10178.70\n5,1944,10635.32\n6,1944,11223.03\n7,1944,11035.73\n8,1944,11177.53\n9,1944,11189.17\n10,1944,11235.89\n11,1944,11326.75\n12,1944,11771.12\n1,1945,11987.59\n2,1945,12774.50\n3,1945,12233.34\n4,1945,13358.17\n5,1945,13559.95\n6,1945,13563.65\n7,1945,13341.50\n8,1945,14165.16\n9,1945,14808.98\n10,1945,15308.37\n11,1945,15855.43\n12,1945,16062.94\n1,1946,17234.94\n2,1946,16090.34\n3,1946,16888.01\n4,1946,17576.04\n5,1946,18022.69\n6,1946,17371.20\n7,1946,16982.09\n8,1946,15797.90\n9,1946,14251.10\n10,1946,14199.52\n11,1946,14087.43\n12,1946,14748.93\n1,1947,15146.62\n2,1947,14987.12\n3,1947,14799.05\n4,1947,14283.61\n5,1947,14214.01\n6,1947,15027.99\n7,1947,15640.44\n8,1947,15256.03\n9,1947,15108.22\n10,1947,15505.86\n11,1947,15133.13\n12,1947,15521.78\n1,1948,14980.44\n2,1948,14346.62\n3,1948,15515.92\n4,1948,16003.58\n5,1948,17326.87\n6,1948,17465.80\n7,1948,16595.87\n8,1948,16803.82\n9,1948,16376.56\n10,1948,17563.48\n11,1948,15746.38\n12,1948,16313.24\n1,1949,16427.98\n2,1949,15863.87\n3,1949,16430.76\n4,1949,16180.03\n5,1949,15665.33\n6,1949,15717.46\n7,1949,16806.50\n8,1949,17100.15\n9,1949,17593.53\n10,1949,18221.12\n11,1949,18349.38\n12,1949,19260.20\n1,1950,19705.47\n2,1950,20014.56\n3,1950,20209.29\n4,1950,21237.86\n5,1950,22189.86\n6,1950,21020.05\n7,1950,21330.07\n8,1950,22156.04\n9,1950,23527.72\n10,1950,23772.74\n11,1950,23897.41\n12,1950,25149.80\n1,1951,26846.23\n2,1951,27176.69\n3,1951,26835.88\n4,1951,28290.42\n5,1951,27306.64\n6,1951,26760.96\n7,1951,28761.32\n8,1951,30191.47\n9,1951,30191.47\n10,1951,29928.71\n11,1951,30003.67\n12,1951,31324.80\n1,1952,31977.55\n2,1952,30966.15\n3,1952,32598.52\n4,1952,31362.58\n5,1952,32236.28\n6,1952,33889.98\n7,1952,34659.69\n8,1952,34326.57\n9,1952,33819.25\n10,1952,33945.31\n11,1952,35695.51\n12,1952,37120.23\n1,1953,37020.27\n2,1953,36513.08\n3,1953,35809.32\n4,1953,35024.11\n5,1953,35093.04\n6,1953,34686.10\n7,1953,35742.55\n8,1953,33840.81\n9,1953,34048.72\n10,1953,35970.23\n11,1953,36460.96\n12,1953,36712.38\n1,1954,38775.70\n2,1954,39070.80\n3,1954,40420.24\n4,1954,42586.30\n5,1954,44172.67\n6,1954,44393.23\n7,1954,47105.64\n8,1954,45697.31\n9,1954,49684.42\n10,1954,48914.81\n11,1954,53059.63\n12,1954,55951.04\n1,1955,57151.37\n2,1955,57570.95\n3,1955,57498.77\n4,1955,59854.16\n5,1955,59981.54\n6,1955,65125.23\n7,1955,69310.75\n8,1955,68984.32\n9,1955,69984.22\n10,1955,68064.23\n11,1955,73385.17\n12,1955,73535.76\n1,1956,71101.26\n2,1956,73787.11\n3,1956,79146.13\n4,1956,79226.44\n5,1956,74254.75\n6,1956,77418.25\n7,1956,81656.45\n8,1956,78786.66\n9,1956,75469.34\n10,1956,76107.16\n11,1956,75508.44\n12,1956,78408.96\n1,1957,75371.77\n2,1957,73149.36\n3,1957,74830.29\n4,1957,77839.93\n5,1957,80961.47\n6,1957,81105.00\n7,1957,82280.44\n8,1957,77912.39\n9,1957,73340.86\n10,1957,71247.45\n11,1957,72651.49\n12,1957,69898.84\n1,1958,73145.30\n2,1958,71895.28\n3,1958,74372.80\n4,1958,76994.53\n5,1958,78401.89\n6,1958,80702.93\n7,1958,84438.96\n8,1958,85698.74\n9,1958,90103.64\n10,1958,92652.07\n11,1958,94990.72\n12,1958,100196.11\n1,1959,100844.59\n2,1959,101094.42\n3,1959,101418.04\n4,1959,105624.14\n5,1959,107896.82\n6,1959,107784.83\n7,1959,111823.35\n8,1959,110420.68\n9,1959,105660.61\n10,1959,107132.63\n11,1959,108832.18\n12,1959,112123.89\n1,1960,104413.82\n2,1960,105675.22\n3,1960,104511.26\n4,1960,102986.57\n5,1960,106059.64\n6,1960,108439.37\n7,1960,106062.48\n8,1960,109143.16\n9,1960,102862.72\n10,1960,102924.13\n11,1960,107382.03\n12,1960,112665.49\n1,1961,120094.43\n2,1961,123635.78\n3,1961,127107.81\n4,1961,127912.03\n5,1961,130676.33\n6,1961,127243.77\n7,1961,131718.58\n8,1961,134625.56\n9,1961,132298.71\n10,1961,136379.13\n11,1961,142079.54\n12,1961,142872.70\n1,1962,137800.38\n2,1962,140383.11\n3,1962,139901.15\n4,1962,131577.08\n5,1962,120608.50\n6,1962,111085.12\n7,1962,118497.36\n8,1962,120661.40\n9,1962,115198.78\n10,1962,116074.11\n11,1962,128226.66\n12,1962,130322.71\n1,1963,137095.55\n2,1963,133510.65\n3,1963,138617.62\n4,1963,145724.92\n5,1963,148195.75\n6,1963,145586.11\n7,1963,145469.31\n8,1963,152948.52\n9,1963,151649.04\n10,1963,156936.58\n11,1963,155685.05\n12,1963,159894.58\n1,1964,164613.17\n2,1964,166651.28\n3,1964,169594.80\n4,1964,171052.07\n5,1964,173437.77\n6,1964,176713.82\n7,1964,180376.37\n8,1964,177889.55\n9,1964,183440.44\n10,1964,185376.86\n11,1964,184870.57\n12,1964,186049.48\n1,1965,192684.33\n2,1965,192866.42\n3,1965,190533.69\n4,1965,197538.45\n5,1965,196490.72\n6,1965,187417.99\n7,1965,190429.44\n8,1965,195213.20\n9,1965,201958.22\n10,1965,207989.19\n11,1965,206676.57\n12,1965,209037.42\n1,1966,210578.51\n2,1966,207340.60\n3,1966,203344.71\n4,1966,208052.87\n5,1966,197328.39\n6,1966,194684.20\n7,1966,192618.91\n8,1966,178197.70\n9,1966,177505.53\n10,1966,186499.67\n11,1966,187637.59\n12,1966,187915.10\n1,1967,203171.44\n2,1967,204136.83\n3,1967,212751.22\n4,1967,222306.85\n5,1967,211221.07\n6,1967,215493.16\n7,1967,225842.71\n8,1967,231695.47\n9,1967,231695.47\n10,1967,225546.37\n11,1967,226371.73\n12,1967,232906.62\n1,1968,223288.02\n2,1968,216911.19\n3,1968,219546.84\n4,1968,237822.58\n5,1968,241407.66\n6,1968,244218.41\n7,1968,240325.08\n8,1968,253712.98\n9,1968,253712.98\n10,1968,256174.10\n11,1968,269094.46\n12,1968,258531.79\n1,1969,257059.11\n2,1969,245526.04\n3,1969,254628.50\n4,1969,260751.41\n5,1969,260829.96\n6,1969,246990.70\n7,1969,232790.77\n8,1969,242785.47\n9,1969,237376.84\n10,1969,248243.95\n11,1969,240456.81\n12,1969,236645.64\n1,1970,231685.54\n2,1970,228810.30\n3,1970,228786.63\n4,1970,204883.06\n5,1970,189870.26\n6,1970,192023.73\n7,1970,199693.42\n8,1970,203704.56\n9,1970,210089.26\n10,1970,204483.13\n11,1970,197705.60\n12,1970,204909.09\n1,1971,214654.16\n2,1971,217418.18\n3,1971,228710.91\n4,1971,233822.45\n5,1971,235857.61\n6,1971,240129.06\n7,1971,246388.34\n8,1971,242720.33\n9,1971,242232.84\n10,1971,232416.78\n11,1971,236839.68\n12,1971,273141.12\n1,1972,293291.50\n2,1972,311399.62\n3,1972,314807.32\n4,1972,327124.73\n5,1972,349639.19\n6,1972,337948.90\n7,1972,359273.04\n8,1972,363854.50\n9,1972,346546.23\n10,1972,346184.17\n11,1972,375033.64\n12,1972,383391.96\n1,1973,401026.79\n2,1973,442342.75\n3,1973,452378.90\n4,1973,421662.29\n5,1973,429223.12\n6,1973,435420.87\n7,1973,435922.56\n8,1973,412544.34\n9,1973,420363.11\n10,1973,428593.64\n11,1973,358641.19\n12,1973,342473.56\n1,1974,358167.90\n2,1974,372844.66\n3,1974,363258.15\n4,1974,369392.00\n5,1974,350027.29\n6,1974,332259.94\n7,1974,322973.96\n8,1974,289467.31\n9,1974,272866.62\n10,1974,272717.53\n11,1974,281688.77\n12,1974,279019.40\n1,1975,326211.28\n2,1975,366105.00\n3,1975,362145.91\n4,1975,376216.86\n5,1975,375568.46\n6,1975,363925.49\n7,1975,350379.89\n8,1975,348737.57\n9,1975,331587.86\n10,1975,355179.07\n11,1975,364190.53\n12,1975,370433.24\n1,1976,390976.45\n2,1976,390316.21\n3,1976,383174.25\n4,1976,382814.54\n5,1976,373831.48\n6,1976,378576.22\n7,1976,373502.54\n8,1976,372515.73\n9,1976,366796.00\n10,1976,345133.46\n11,1976,344572.61\n12,1976,383588.38\n1,1977,380332.13\n2,1977,388318.92\n3,1977,389419.32\n4,1977,398617.74\n5,1977,396660.68\n6,1977,406299.26\n7,1977,400934.50\n8,1977,415653.86\n9,1977,428023.33\n10,1977,434826.89\n11,1977,433896.87\n12,1977,450781.54\n1,1978,454018.85\n2,1978,458851.15\n3,1978,490982.90\n4,1978,488192.85\n5,1978,500003.83\n6,1978,520483.14\n7,1978,565400.85\n8,1978,577221.30\n9,1978,594541.39\n10,1978,623797.89\n11,1978,572000.90\n12,1978,599984.24\n1,1979,604982.20\n2,1979,604241.50\n3,1979,621545.03\n4,1979,620988.91\n5,1979,612732.34\n6,1979,625896.94\n7,1979,629709.30\n8,1979,650515.19\n9,1979,682258.83\n10,1979,626164.35\n11,1979,640389.12\n12,1979,665627.38\n1,1980,707206.01\n2,1980,716309.77\n3,1980,627685.98\n4,1980,684189.86\n5,1980,720342.21\n6,1980,767131.79\n7,1980,767614.55\n8,1980,793955.57\n9,1980,823297.26\n10,1980,852179.86\n11,1980,840099.10\n12,1980,834963.89\n1,1981,819378.41\n2,1981,808838.22\n3,1981,841419.59\n4,1981,859761.99\n5,1981,830647.48\n6,1981,831414.21\n7,1981,798127.63\n8,1981,817295.93\n9,1981,734041.63\n10,1981,743100.42\n11,1981,825573.79\n12,1981,814472.75\n1,1982,801554.26\n2,1982,746993.25\n3,1982,710209.05\n4,1982,751035.15\n5,1982,740544.65\n6,1982,681918.06\n7,1982,678737.54\n8,1982,689424.46\n9,1982,686525.55\n10,1982,696935.59\n11,1982,749513.52\n12,1982,812364.24\n1,1983,811685.06\n2,1983,829854.71\n3,1983,861037.51\n4,1983,915652.96\n5,1983,915054.24\n6,1983,936193.80\n7,1983,939286.76\n8,1983,927272.26\n9,1983,956417.53\n10,1983,945945.96\n11,1983,977145.32\n12,1983,1013726.01\n1,1984,1047507.17\n2,1984,1062060.88\n3,1984,1146403.75\n4,1984,1126842.62\n5,1984,1020986.29\n6,1984,1016674.61\n7,1984,950624.45\n8,1984,1038453.11\n9,1984,1028260.78\n10,1984,1047403.05\n11,1984,1032998.43\n12,1984,1048886.81\n1,1985,1078791.72\n2,1985,1068862.07\n3,1985,1149170.14\n4,1985,1146344.59\n5,1985,1192478.65\n6,1985,1219212.51\n7,1985,1278319.49\n8,1985,1313740.61\n9,1985,1377736.69\n10,1985,1458250.63\n11,1985,1522454.96\n12,1985,1588017.63\n1,1986,1625372.15\n2,1986,1794225.91\n3,1986,2037424.26\n4,1986,2163501.95\n5,1986,2073048.89\n6,1986,2203625.22\n7,1986,2327615.70\n8,1986,2553837.10\n9,1986,2531843.25\n10,1986,2372289.67\n11,1986,2505379.17\n12,1986,2633572.48\n1,1987,2918534.05\n2,1987,3010253.17\n3,1987,3264815.24\n4,1987,3590366.28\n5,1987,3588314.56\n6,1987,3485676.62\n7,1987,3500303.68\n8,1987,3749848.87\n9,1987,3694106.99\n10,1987,3158296.31\n11,1987,3182793.87\n12,1987,3280381.79\n1,1988,3331946.88\n2,1988,3553281.54\n3,1988,3770834.61\n4,1988,3824917.60\n5,1988,3702784.79\n6,1988,3619757.67\n7,1988,3726366.52\n8,1988,3486668.16\n9,1988,3635246.12\n10,1988,3939716.76\n11,1988,4166241.06\n12,1988,4192402.24\n1,1989,4276626.79\n2,1989,4294252.15\n3,1989,4216426.50\n4,1989,4258362.48\n5,1989,4036431.47\n6,1989,3977180.13\n7,1989,4468250.59\n8,1989,4279452.34\n9,1989,4464809.76\n10,1989,4294647.35\n11,1989,4505858.31\n12,1989,4671370.64\n1,1990,4492085.54\n2,1990,4188611.18\n3,1990,3772633.11\n4,1990,3730971.65\n5,1990,4149678.24\n6,1990,4113864.29\n7,1990,4174599.39\n8,1990,3780369.06\n9,1990,3271031.92\n10,1990,3750731.56\n11,1990,3543543.57\n12,1990,3605670.15\n1,1991,3716945.66\n2,1991,4109287.56\n3,1991,3872869.10\n4,1991,3912436.25\n5,1991,3960543.95\n6,1991,3680613.46\n7,1991,3856171.39\n8,1991,3782532.00\n9,1991,3983077.34\n10,1991,4046309.06\n11,1991,3863576.03\n12,1991,4054106.53\n1,1992,3975450.25\n2,1992,3838361.44\n3,1992,3588413.95\n4,1992,3602707.35\n5,1992,3835202.22\n6,1992,3662597.62\n7,1992,3577608.71\n8,1992,3788017.44\n9,1992,3704836.50\n10,1992,3522680.89\n11,1992,3548255.19\n12,1992,3570322.39\n1,1993,3569027.94\n2,1993,3682248.68\n3,1993,3996154.38\n4,1993,4367820.55\n5,1993,4462942.63\n6,1993,4395851.22\n7,1993,4545288.21\n8,1993,4780587.33\n9,1993,4669600.53\n10,1993,4826328.57\n11,1993,4417447.51\n12,1993,4734708.84\n1,1994,5129116.66\n2,1994,5106890.90\n3,1994,4888192.47\n4,1994,5087057.63\n5,1994,5061440.74\n6,1994,5120874.29\n7,1994,5178272.69\n8,1994,5308628.94\n9,1994,5154844.77\n10,1994,5318317.21\n11,1994,5061040.81\n12,1994,5096532.92\n1,1995,4896605.22\n2,1995,4894480.14\n3,1995,5197687.10\n4,1995,5390801.77\n5,1995,5338138.65\n6,1995,5252877.59\n7,1995,5572394.16\n8,1995,5369134.49\n9,1995,5470539.51\n10,1995,5328687.02\n11,1995,5480284.58\n12,1995,5696131.43\n1,1996,5730927.80\n2,1996,5749071.43\n3,1996,5872302.27\n4,1996,6047233.09\n5,1996,5945430.51\n6,1996,5972715.75\n7,1996,5799377.55\n8,1996,5822919.06\n9,1996,5982146.08\n10,1996,5943733.76\n11,1996,6190313.78\n12,1996,6105978.01\n1,1997,5917144.25\n2,1997,6008288.32\n3,1997,6015868.08\n4,1997,6054299.33\n5,1997,6455042.15\n6,1997,6801257.08\n7,1997,6927663.71\n8,1997,6418901.63\n9,1997,6780690.21\n10,1997,6270697.57\n11,1997,6202030.10\n12,1997,6262528.56\n1,1998,6530955.70\n2,1998,6957802.90\n3,1998,7187924.22\n4,1998,7245412.54\n5,1998,7209404.54\n6,1998,7249329.03\n7,1998,7298359.63\n8,1998,6367928.16\n9,1998,6187755.64\n10,1998,6833774.56\n11,1998,7181733.57\n12,1998,7459063.32\n1,1999,7462227.27\n2,1999,7276254.57\n3,1999,7581614.99\n4,1999,7908510.17\n5,1999,7510786.96\n6,1999,7806189.34\n7,1999,8032727.84\n8,1999,8057398.14\n9,1999,8146230.18\n10,1999,8462791.05\n11,1999,8760519.65\n12,1999,9567803.11\n1,2000,8988179.85\n2,2000,9244717.92\n3,2000,9625958.77\n4,2000,9128423.16\n5,2000,8909050.29\n6,2000,9296190.71\n7,2000,8942658.70\n8,2000,9061284.42\n9,2000,8593641.88\n10,2000,8361156.48\n11,2000,8026070.99\n12,2000,8308957.19\n1,2001,8324672.82\n2,2001,7666045.42\n3,2001,7149708.31\n4,2001,7651574.54\n5,2001,7405635.83\n6,2001,7106444.76\n7,2001,6982246.03\n8,2001,6797361.89\n9,2001,6112942.49\n10,2001,6262504.89\n11,2001,6509141.71\n12,2001,6551162.87\n1,2002,6218498.27\n2,2002,6256799.37\n3,2002,6592530.90\n4,2002,6635363.76\n5,2002,6728102.82\n6,2002,6456980.28\n7,2002,5815639.84\n8,2002,5808024.59\n9,2002,5193552.90\n10,2002,5466838.38\n11,2002,5719291.94\n12,2002,5535008.88\n1,2003,5324611.98\n2,2003,5220253.62\n3,2003,5123512.89\n4,2003,5620804.76\n5,2003,5974490.59\n6,2003,6123120.62\n7,2003,6264535.31\n8,2003,6427274.15\n9,2003,6621453.73\n10,2003,7036615.36\n11,2003,7197224.39\n12,2003,7749635.76\n1,2004,7858215.88\n2,2004,8040357.29\n3,2004,8083781.76\n4,2004,7878749.62\n5,2004,7922992.89\n6,2004,8109216.44\n7,2004,7863114.44\n8,2004,7897700.20\n9,2004,8129198.79\n10,2004,8421953.11\n11,2004,8984478.72\n12,2004,9364822.68\n1,2005,9181214.07\n2,2005,9591827.37\n3,2005,9377850.02\n4,2005,9148786.51\n5,2005,9174696.84\n6,2005,9328450.25\n7,2005,9630367.48\n8,2005,9899123.56\n9,2005,10353024.09\n10,2005,10019266.18\n11,2005,10287456.68\n12,2005,10765421.70\n1,2006,11447155.18\n2,2006,11410702.29\n3,2006,11778149.07\n4,2006,12349598.58\n5,2006,11894588.18\n6,2006,11884544.94\n7,2006,11997427.28\n8,2006,12341907.60\n9,2006,12334618.91\n10,2006,12823320.54\n11,2006,13209034.00\n12,2006,13589049.02\n1,2007,13673226.24\n2,2007,13784795.19\n3,2007,14144605.42\n4,2007,14800793.00\n5,2007,15148006.57\n6,2007,15168346.27\n7,2007,14960453.08\n8,2007,14747751.25\n9,2007,15588863.19\n10,2007,16268540.22\n11,2007,15636717.67\n12,2007,15344346.72\n1,2008,13962719.58\n2,2008,14220199.50\n3,2008,14024204.85\n4,2008,14820770.62\n5,2008,15072109.59\n6,2008,13903695.43\n7,2008,13410466.76\n8,2008,12895603.95\n9,2008,11038321.45\n10,2008,8743145.13\n11,2008,8273216.60\n12,2008,8710774.37\n1,2009,7899704.59\n2,2009,7102719.96\n3,2009,7574581.89\n4,2009,8562847.19\n5,2009,9660520.87\n6,2009,9563600.28\n7,2009,10463220.50\n8,2009,10966591.79\n9,2009,11421571.42\n10,2009,11239212.30\n11,2009,11520389.91\n12,2009,11706137.80\n1,2010,11158606.06\n2,2010,11148747.40\n3,2010,11873559.85\n4,2010,11706028.94\n5,2010,10429415.67\n6,2010,10281474.28\n7,2010,11233293.79\n8,2010,10899370.23\n9,2010,11947833.45\n10,2010,12374675.92\n11,2010,11853982.16\n12,2010,12810338.16\n1,2011,13088408.62\n2,2011,13576826.28\n3,2011,13311212.85\n4,2011,14048624.31\n5,2011,13651338.89\n6,2011,13460957.48\n7,2011,13241634.30\n8,2011,12124035.06\n9,2011,10910859.38\n10,2011,11973109.57\n11,2011,11423173.51\n12,2011,11300839.55\n1,2012,11913543.50\n2,2012,12572248.99\n3,2012,12487115.72\n4,2012,12288768.82\n5,2012,10902527.09\n6,2012,11621705.00\n7,2012,11768368.50\n8,2012,12105955.33\n9,2012,12478345.64\n10,2012,12567404.86\n11,2012,12833510.51\n12,2012,13224134.36\n1,2013,13877477.46\n2,2013,13742923.12\n3,2013,13859648.58\n4,2013,14507068.44\n5,2013,14197263.80\n6,2013,13669598.47\n7,2013,14398575.88\n8,2013,14215199.18\n9,2013,15223766.31\n10,2013,15735635.55\n11,2013,15835185.27\n12,2013,16076942.45\n1,2014,15430201.76\n2,2014,16276529.38\n3,2014,16215207.39\n4,2014,16484318.44\n5,2014,16759478.16\n6,2014,17003724.85\n7,2014,16702340.07\n8,2014,16717589.51\n9,2014,16037036.90\n10,2014,15783565.76\n11,2014,15979931.94\n12,2014,15453506.62\n1,2015,15400926.33\n2,2015,16323113.07\n3,2015,16064916.12\n4,2015,16773260.40\n5,2015,16645751.00\n6,2015,16177810.29\n7,2015,16435936.24\n8,2015,15240828.46\n9,2015,14477307.88\n10,2015,15568319.99\n11,2015,15322854.57\n12,2015,15051542.71\n1,2016,14017538.54\n2,2016,13826693.30\n3,2016,14777407.68\n4,2016,15268404.77\n5,2016,15113771.05\n6,2016,14661243.07\n7,2016,15384337.47\n8,2016,15400900.30\n9,2016,15595820.58\n10,2016,15294447.63\n11,2016,15051635.01\n12,2016,15546811.26\n1,2017,16011095.80\n2,2017,16198590.14\n3,2017,16627948.15\n4,2017,16993423.67\n5,2017,17581918.76\n6,2017,17604229.71\n7,2017,18129893.03\n8,2017,18128847.06\n9,2017,18606672.46\n10,2017,18863295.72\n11,2017,19057267.04\n12,2017,19404359.93\n1,2018,20310331.71\n2,2018,19348982.48\n3,2018,19032632.23\n4,2018,19489628.09\n5,2018,19145012.88\n6,2018,18941556.79\n7,2018,19409014.75\n8,2018,19045169.72\n9,2018,19202709.45\n10,2018,17679109.13\n11,2018,17666429.65\n12,2018,16758086.68\n1,2019,17957226.91\n2,2019,18421388.39\n3,2019,18534978.30\n4,2019,19077646.97\n5,2019,18200967.18\n6,2019,19289567.87\n7,2019,19059763.66\n8,2019,18594579.86\n9,2019,19126301.31\n10,2019,19747515.03\n11,2019,19997706.26\n12,2019,20639889.16\n1,2020,20243420.16\n2,2020,18449733.80\n3,2020,15862479.98\n4,2020,16981818.56\n5,2020,17714703.00\n6,2020,18328580.71\n7,2020,18821506.46\n8,2020,19795838.07\n9,2020,19247719.45\n10,2020,18494194.79\n11,2020,21334820.36\n12,2020,22309795.65\n1,2021,22074924.85\n2,2021,22641208.39\n3,2021,23240025.97\n4,2021,23990008.05\n5,2021,24845434.69\n6,2021,24600608.22\n7,2021,24767594.85\n8,2021,25168292.70\n9,2021,24463464.98\n10,2021,25198301.73\n11,2021,24023500.51\n12,2021,25248028.08\n1,2022,24136787.51\n2,2022,23764347.51\n3,2022,24066610.25\n4,2022,22505707.47\n5,2022,22722399.14\n6,2022,20590633.73\n7,2022,21617881.67\n8,2022,20611915.28\n9,2022,18714149.80\n10,2022,19748702.99\n11,2022,21856384.98\n12,2022,21757843.37\n1,2023,23545303.58\n2,2023,22999302.93\n3,2023,23538885.75\n4,2023,24230731.09\n5,2023,23203549.42\n6,2023,24315052.67\n7,2023,25106182.69\n8,2023,24139298.32\n9,2023,23336851.90\n10,2023,22355354.66\n11,2023,24461193.18\n12,2023,25803906.31\n1,2024,25919039.15\n2,2024,26365920.76\n3,2024,27285220.43\n4,2024,26589510.66\n5,2024,27638470.83\n6,2024,27188084.50\n7,2024,28045645.68\n8,2024,28985741.76\n9,2024,29320053.42\n10,2024,27830238.99\n11,2024,27902463.24\n12,2024,27160830.02\n1,2025,28515728.04\n2,2025,29020758.22\n3,2025,28885370.88\n4,2025,30231108.35\n5,2025,31695263.29\n6,2025,32446979.98\n7,2025,32059617.11\n8,2025,33476142.39\n9,2025,34203082.28\n10,2025,34577578.73\n11,2025,34945998.12\n12,2025,36001572.54\n`,
        'gold': `1,1871,22.59\n2,1871,22.59\n3,1871,22.59\n4,1871,22.59\n5,1871,22.59\n6,1871,22.59\n7,1871,22.59\n8,1871,22.59\n9,1871,22.59\n10,1871,22.59\n11,1871,22.59\n12,1871,22.59\n1,1872,23.19\n2,1872,23.19\n3,1872,23.19\n4,1872,23.19\n5,1872,23.19\n6,1872,23.19\n7,1872,23.19\n8,1872,23.19\n9,1872,23.19\n10,1872,23.19\n11,1872,23.19\n12,1872,23.19\n1,1873,22.74\n2,1873,22.74\n3,1873,22.74\n4,1873,22.74\n5,1873,22.74\n6,1873,22.74\n7,1873,22.74\n8,1873,22.74\n9,1873,22.74\n10,1873,22.74\n11,1873,22.74\n12,1873,22.74\n1,1874,23.09\n2,1874,23.09\n3,1874,23.09\n4,1874,23.09\n5,1874,23.09\n6,1874,23.09\n7,1874,23.09\n8,1874,23.09\n9,1874,23.09\n10,1874,23.09\n11,1874,23.09\n12,1874,23.09\n1,1875,23.54\n2,1875,23.54\n3,1875,23.54\n4,1875,23.54\n5,1875,23.54\n6,1875,23.54\n7,1875,23.54\n8,1875,23.54\n9,1875,23.54\n10,1875,23.54\n11,1875,23.54\n12,1875,23.54\n1,1876,22.30\n2,1876,22.30\n3,1876,22.30\n4,1876,22.30\n5,1876,22.30\n6,1876,22.30\n7,1876,22.30\n8,1876,22.30\n9,1876,22.30\n10,1876,22.30\n11,1876,22.30\n12,1876,22.30\n1,1877,21.25\n2,1877,21.25\n3,1877,21.25\n4,1877,21.25\n5,1877,21.25\n6,1877,21.25\n7,1877,21.25\n8,1877,21.25\n9,1877,21.25\n10,1877,21.25\n11,1877,21.25\n12,1877,21.25\n1,1878,20.69\n2,1878,20.69\n3,1878,20.69\n4,1878,20.69\n5,1878,20.69\n6,1878,20.69\n7,1878,20.69\n8,1878,20.69\n9,1878,20.69\n10,1878,20.69\n11,1878,20.69\n12,1878,20.69\n1,1879,20.67\n2,1879,20.67\n3,1879,20.67\n4,1879,20.67\n5,1879,20.67\n6,1879,20.67\n7,1879,20.67\n8,1879,20.67\n9,1879,20.67\n10,1879,20.67\n11,1879,20.67\n12,1879,20.67\n1,1880,20.67\n2,1880,20.67\n3,1880,20.67\n4,1880,20.67\n5,1880,20.67\n6,1880,20.67\n7,1880,20.67\n8,1880,20.67\n9,1880,20.67\n10,1880,20.67\n11,1880,20.67\n12,1880,20.67\n1,1881,20.67\n2,1881,20.67\n3,1881,20.67\n4,1881,20.67\n5,1881,20.67\n6,1881,20.67\n7,1881,20.67\n8,1881,20.67\n9,1881,20.67\n10,1881,20.67\n11,1881,20.67\n12,1881,20.67\n1,1882,20.67\n2,1882,20.67\n3,1882,20.67\n4,1882,20.67\n5,1882,20.67\n6,1882,20.67\n7,1882,20.67\n8,1882,20.67\n9,1882,20.67\n10,1882,20.67\n11,1882,20.67\n12,1882,20.67\n1,1883,20.67\n2,1883,20.67\n3,1883,20.67\n4,1883,20.67\n5,1883,20.67\n6,1883,20.67\n7,1883,20.67\n8,1883,20.67\n9,1883,20.67\n10,1883,20.67\n11,1883,20.67\n12,1883,20.67\n1,1884,20.67\n2,1884,20.67\n3,1884,20.67\n4,1884,20.67\n5,1884,20.67\n6,1884,20.67\n7,1884,20.67\n8,1884,20.67\n9,1884,20.67\n10,1884,20.67\n11,1884,20.67\n12,1884,20.67\n1,1885,20.67\n2,1885,20.67\n3,1885,20.67\n4,1885,20.67\n5,1885,20.67\n6,1885,20.67\n7,1885,20.67\n8,1885,20.67\n9,1885,20.67\n10,1885,20.67\n11,1885,20.67\n12,1885,20.67\n1,1886,20.67\n2,1886,20.67\n3,1886,20.67\n4,1886,20.67\n5,1886,20.67\n6,1886,20.67\n7,1886,20.67\n8,1886,20.67\n9,1886,20.67\n10,1886,20.67\n11,1886,20.67\n12,1886,20.67\n1,1887,20.67\n2,1887,20.67\n3,1887,20.67\n4,1887,20.67\n5,1887,20.67\n6,1887,20.67\n7,1887,20.67\n8,1887,20.67\n9,1887,20.67\n10,1887,20.67\n11,1887,20.67\n12,1887,20.67\n1,1888,20.67\n2,1888,20.67\n3,1888,20.67\n4,1888,20.67\n5,1888,20.67\n6,1888,20.67\n7,1888,20.67\n8,1888,20.67\n9,1888,20.67\n10,1888,20.67\n11,1888,20.67\n12,1888,20.67\n1,1889,20.67\n2,1889,20.67\n3,1889,20.67\n4,1889,20.67\n5,1889,20.67\n6,1889,20.67\n7,1889,20.67\n8,1889,20.67\n9,1889,20.67\n10,1889,20.67\n11,1889,20.67\n12,1889,20.67\n1,1890,20.67\n2,1890,20.67\n3,1890,20.67\n4,1890,20.67\n5,1890,20.67\n6,1890,20.67\n7,1890,20.67\n8,1890,20.67\n9,1890,20.67\n10,1890,20.67\n11,1890,20.67\n12,1890,20.67\n1,1891,20.67\n2,1891,20.67\n3,1891,20.67\n4,1891,20.67\n5,1891,20.67\n6,1891,20.67\n7,1891,20.67\n8,1891,20.67\n9,1891,20.67\n10,1891,20.67\n11,1891,20.67\n12,1891,20.67\n1,1892,20.67\n2,1892,20.67\n3,1892,20.67\n4,1892,20.67\n5,1892,20.67\n6,1892,20.67\n7,1892,20.67\n8,1892,20.67\n9,1892,20.67\n10,1892,20.67\n11,1892,20.67\n12,1892,20.67\n1,1893,20.67\n2,1893,20.67\n3,1893,20.67\n4,1893,20.67\n5,1893,20.67\n6,1893,20.67\n7,1893,20.67\n8,1893,20.67\n9,1893,20.67\n10,1893,20.67\n11,1893,20.67\n12,1893,20.67\n1,1894,20.67\n2,1894,20.67\n3,1894,20.67\n4,1894,20.67\n5,1894,20.67\n6,1894,20.67\n7,1894,20.67\n8,1894,20.67\n9,1894,20.67\n10,1894,20.67\n11,1894,20.67\n12,1894,20.67\n1,1895,20.67\n2,1895,20.67\n3,1895,20.67\n4,1895,20.67\n5,1895,20.67\n6,1895,20.67\n7,1895,20.67\n8,1895,20.67\n9,1895,20.67\n10,1895,20.67\n11,1895,20.67\n12,1895,20.67\n1,1896,20.67\n2,1896,20.67\n3,1896,20.67\n4,1896,20.67\n5,1896,20.67\n6,1896,20.67\n7,1896,20.67\n8,1896,20.67\n9,1896,20.67\n10,1896,20.67\n11,1896,20.67\n12,1896,20.67\n1,1897,20.67\n2,1897,20.67\n3,1897,20.67\n4,1897,20.67\n5,1897,20.67\n6,1897,20.67\n7,1897,20.67\n8,1897,20.67\n9,1897,20.67\n10,1897,20.67\n11,1897,20.67\n12,1897,20.67\n1,1898,20.67\n2,1898,20.67\n3,1898,20.67\n4,1898,20.67\n5,1898,20.67\n6,1898,20.67\n7,1898,20.67\n8,1898,20.67\n9,1898,20.67\n10,1898,20.67\n11,1898,20.67\n12,1898,20.67\n1,1899,20.67\n2,1899,20.67\n3,1899,20.67\n4,1899,20.67\n5,1899,20.67\n6,1899,20.67\n7,1899,20.67\n8,1899,20.67\n9,1899,20.67\n10,1899,20.67\n11,1899,20.67\n12,1899,20.67\n1,1900,20.67\n2,1900,20.67\n3,1900,20.67\n4,1900,20.67\n5,1900,20.67\n6,1900,20.67\n7,1900,20.67\n8,1900,20.67\n9,1900,20.67\n10,1900,20.67\n11,1900,20.67\n12,1900,20.67\n1,1901,20.67\n2,1901,20.67\n3,1901,20.67\n4,1901,20.67\n5,1901,20.67\n6,1901,20.67\n7,1901,20.67\n8,1901,20.67\n9,1901,20.67\n10,1901,20.67\n11,1901,20.67\n12,1901,20.67\n1,1902,20.67\n2,1902,20.67\n3,1902,20.67\n4,1902,20.67\n5,1902,20.67\n6,1902,20.67\n7,1902,20.67\n8,1902,20.67\n9,1902,20.67\n10,1902,20.67\n11,1902,20.67\n12,1902,20.67\n1,1903,20.67\n2,1903,20.67\n3,1903,20.67\n4,1903,20.67\n5,1903,20.67\n6,1903,20.67\n7,1903,20.67\n8,1903,20.67\n9,1903,20.67\n10,1903,20.67\n11,1903,20.67\n12,1903,20.67\n1,1904,20.67\n2,1904,20.67\n3,1904,20.67\n4,1904,20.67\n5,1904,20.67\n6,1904,20.67\n7,1904,20.67\n8,1904,20.67\n9,1904,20.67\n10,1904,20.67\n11,1904,20.67\n12,1904,20.67\n1,1905,20.67\n2,1905,20.67\n3,1905,20.67\n4,1905,20.67\n5,1905,20.67\n6,1905,20.67\n7,1905,20.67\n8,1905,20.67\n9,1905,20.67\n10,1905,20.67\n11,1905,20.67\n12,1905,20.67\n1,1906,20.67\n2,1906,20.67\n3,1906,20.67\n4,1906,20.67\n5,1906,20.67\n6,1906,20.67\n7,1906,20.67\n8,1906,20.67\n9,1906,20.67\n10,1906,20.67\n11,1906,20.67\n12,1906,20.67\n1,1907,20.67\n2,1907,20.67\n3,1907,20.67\n4,1907,20.67\n5,1907,20.67\n6,1907,20.67\n7,1907,20.67\n8,1907,20.67\n9,1907,20.67\n10,1907,20.67\n11,1907,20.67\n12,1907,20.67\n1,1908,20.67\n2,1908,20.67\n3,1908,20.67\n4,1908,20.67\n5,1908,20.67\n6,1908,20.67\n7,1908,20.67\n8,1908,20.67\n9,1908,20.67\n10,1908,20.67\n11,1908,20.67\n12,1908,20.67\n1,1909,20.67\n2,1909,20.67\n3,1909,20.67\n4,1909,20.67\n5,1909,20.67\n6,1909,20.67\n7,1909,20.67\n8,1909,20.67\n9,1909,20.67\n10,1909,20.67\n11,1909,20.67\n12,1909,20.67\n1,1910,20.67\n2,1910,20.67\n3,1910,20.67\n4,1910,20.67\n5,1910,20.67\n6,1910,20.67\n7,1910,20.67\n8,1910,20.67\n9,1910,20.67\n10,1910,20.67\n11,1910,20.67\n12,1910,20.67\n1,1911,20.67\n2,1911,20.67\n3,1911,20.67\n4,1911,20.67\n5,1911,20.67\n6,1911,20.67\n7,1911,20.67\n8,1911,20.67\n9,1911,20.67\n10,1911,20.67\n11,1911,20.67\n12,1911,20.67\n1,1912,20.67\n2,1912,20.67\n3,1912,20.67\n4,1912,20.67\n5,1912,20.67\n6,1912,20.67\n7,1912,20.67\n8,1912,20.67\n9,1912,20.67\n10,1912,20.67\n11,1912,20.67\n12,1912,20.67\n1,1913,20.67\n2,1913,20.67\n3,1913,20.67\n4,1913,20.67\n5,1913,20.67\n6,1913,20.67\n7,1913,20.67\n8,1913,20.67\n9,1913,20.67\n10,1913,20.67\n11,1913,20.67\n12,1913,20.67\n1,1914,20.67\n2,1914,20.67\n3,1914,20.67\n4,1914,20.67\n5,1914,20.67\n6,1914,20.67\n7,1914,20.67\n8,1914,20.67\n9,1914,20.67\n10,1914,20.67\n11,1914,20.67\n12,1914,20.67\n1,1915,20.67\n2,1915,20.67\n3,1915,20.67\n4,1915,20.67\n5,1915,20.67\n6,1915,20.67\n7,1915,20.67\n8,1915,20.67\n9,1915,20.67\n10,1915,20.67\n11,1915,20.67\n12,1915,20.67\n1,1916,20.67\n2,1916,20.67\n3,1916,20.67\n4,1916,20.67\n5,1916,20.67\n6,1916,20.67\n7,1916,20.67\n8,1916,20.67\n9,1916,20.67\n10,1916,20.67\n11,1916,20.67\n12,1916,20.67\n1,1917,20.67\n2,1917,20.67\n3,1917,20.67\n4,1917,20.67\n5,1917,20.67\n6,1917,20.67\n7,1917,20.67\n8,1917,20.67\n9,1917,20.67\n10,1917,20.67\n11,1917,20.67\n12,1917,20.67\n1,1918,20.67\n2,1918,20.67\n3,1918,20.67\n4,1918,20.67\n5,1918,20.67\n6,1918,20.67\n7,1918,20.67\n8,1918,20.67\n9,1918,20.67\n10,1918,20.67\n11,1918,20.67\n12,1918,20.67\n1,1919,20.67\n2,1919,20.67\n3,1919,20.67\n4,1919,20.67\n5,1919,20.67\n6,1919,20.67\n7,1919,20.67\n8,1919,20.67\n9,1919,20.67\n10,1919,20.67\n11,1919,20.67\n12,1919,20.67\n1,1920,20.67\n2,1920,20.67\n3,1920,20.67\n4,1920,20.67\n5,1920,20.67\n6,1920,20.67\n7,1920,20.67\n8,1920,20.67\n9,1920,20.67\n10,1920,20.67\n11,1920,20.67\n12,1920,20.67\n1,1921,20.67\n2,1921,20.67\n3,1921,20.67\n4,1921,20.67\n5,1921,20.67\n6,1921,20.67\n7,1921,20.67\n8,1921,20.67\n9,1921,20.67\n10,1921,20.67\n11,1921,20.67\n12,1921,20.67\n1,1922,20.67\n2,1922,20.67\n3,1922,20.67\n4,1922,20.67\n5,1922,20.67\n6,1922,20.67\n7,1922,20.67\n8,1922,20.67\n9,1922,20.67\n10,1922,20.67\n11,1922,20.67\n12,1922,20.67\n1,1923,20.67\n2,1923,20.67\n3,1923,20.67\n4,1923,20.67\n5,1923,20.67\n6,1923,20.67\n7,1923,20.67\n8,1923,20.67\n9,1923,20.67\n10,1923,20.67\n11,1923,20.67\n12,1923,20.67\n1,1924,20.67\n2,1924,20.67\n3,1924,20.67\n4,1924,20.67\n5,1924,20.67\n6,1924,20.67\n7,1924,20.67\n8,1924,20.67\n9,1924,20.67\n10,1924,20.67\n11,1924,20.67\n12,1924,20.67\n1,1925,20.67\n2,1925,20.67\n3,1925,20.67\n4,1925,20.67\n5,1925,20.67\n6,1925,20.67\n7,1925,20.67\n8,1925,20.67\n9,1925,20.67\n10,1925,20.67\n11,1925,20.67\n12,1925,20.67\n1,1926,20.67\n2,1926,20.67\n3,1926,20.67\n4,1926,20.67\n5,1926,20.67\n6,1926,20.67\n7,1926,20.67\n8,1926,20.67\n9,1926,20.67\n10,1926,20.67\n11,1926,20.67\n12,1926,20.67\n1,1927,20.67\n2,1927,20.67\n3,1927,20.67\n4,1927,20.67\n5,1927,20.67\n6,1927,20.67\n7,1927,20.67\n8,1927,20.67\n9,1927,20.67\n10,1927,20.67\n11,1927,20.67\n12,1927,20.67\n1,1928,20.67\n2,1928,20.67\n3,1928,20.67\n4,1928,20.67\n5,1928,20.67\n6,1928,20.67\n7,1928,20.67\n8,1928,20.67\n9,1928,20.67\n10,1928,20.67\n11,1928,20.67\n12,1928,20.67\n1,1929,20.67\n2,1929,20.67\n3,1929,20.67\n4,1929,20.67\n5,1929,20.67\n6,1929,20.67\n7,1929,20.67\n8,1929,20.67\n9,1929,20.67\n10,1929,20.67\n11,1929,20.67\n12,1929,20.67\n1,1930,20.67\n2,1930,20.67\n3,1930,20.67\n4,1930,20.67\n5,1930,20.67\n6,1930,20.67\n7,1930,20.67\n8,1930,20.67\n9,1930,20.67\n10,1930,20.67\n11,1930,20.67\n12,1930,20.67\n1,1931,20.67\n2,1931,20.67\n3,1931,20.67\n4,1931,20.67\n5,1931,20.67\n6,1931,20.67\n7,1931,20.67\n8,1931,20.67\n9,1931,20.67\n10,1931,20.67\n11,1931,20.67\n12,1931,20.67\n1,1932,20.67\n2,1932,20.67\n3,1932,20.67\n4,1932,20.67\n5,1932,20.67\n6,1932,20.67\n7,1932,20.67\n8,1932,20.67\n9,1932,20.67\n10,1932,20.67\n11,1932,20.67\n12,1932,20.67\n1,1933,32.32\n2,1933,32.32\n3,1933,32.32\n4,1933,32.32\n5,1933,32.32\n6,1933,32.32\n7,1933,32.32\n8,1933,32.32\n9,1933,32.32\n10,1933,32.32\n11,1933,32.32\n12,1933,32.32\n1,1934,35.00\n2,1934,35.00\n3,1934,35.00\n4,1934,35.00\n5,1934,35.00\n6,1934,35.00\n7,1934,35.00\n8,1934,35.00\n9,1934,35.00\n10,1934,35.00\n11,1934,35.00\n12,1934,35.00\n1,1935,35.00\n2,1935,35.00\n3,1935,35.00\n4,1935,35.00\n5,1935,35.00\n6,1935,35.00\n7,1935,35.00\n8,1935,35.00\n9,1935,35.00\n10,1935,35.00\n11,1935,35.00\n12,1935,35.00\n1,1936,35.00\n2,1936,35.00\n3,1936,35.00\n4,1936,35.00\n5,1936,35.00\n6,1936,35.00\n7,1936,35.00\n8,1936,35.00\n9,1936,35.00\n10,1936,35.00\n11,1936,35.00\n12,1936,35.00\n1,1937,35.00\n2,1937,35.00\n3,1937,35.00\n4,1937,35.00\n5,1937,35.00\n6,1937,35.00\n7,1937,35.00\n8,1937,35.00\n9,1937,35.00\n10,1937,35.00\n11,1937,35.00\n12,1937,35.00\n1,1938,35.00\n2,1938,35.00\n3,1938,35.00\n4,1938,35.00\n5,1938,35.00\n6,1938,35.00\n7,1938,35.00\n8,1938,35.00\n9,1938,35.00\n10,1938,35.00\n11,1938,35.00\n12,1938,35.00\n1,1939,35.00\n2,1939,35.00\n3,1939,35.00\n4,1939,35.00\n5,1939,35.00\n6,1939,35.00\n7,1939,35.00\n8,1939,35.00\n9,1939,35.00\n10,1939,35.00\n11,1939,35.00\n12,1939,35.00\n1,1940,34.50\n2,1940,34.50\n3,1940,34.50\n4,1940,34.50\n5,1940,34.50\n6,1940,34.50\n7,1940,34.50\n8,1940,34.50\n9,1940,34.50\n10,1940,34.50\n11,1940,34.50\n12,1940,34.50\n1,1941,35.50\n2,1941,35.50\n3,1941,35.50\n4,1941,35.50\n5,1941,35.50\n6,1941,35.50\n7,1941,35.50\n8,1941,35.50\n9,1941,35.50\n10,1941,35.50\n11,1941,35.50\n12,1941,35.50\n1,1942,35.50\n2,1942,35.50\n3,1942,35.50\n4,1942,35.50\n5,1942,35.50\n6,1942,35.50\n7,1942,35.50\n8,1942,35.50\n9,1942,35.50\n10,1942,35.50\n11,1942,35.50\n12,1942,35.50\n1,1943,36.50\n2,1943,36.50\n3,1943,36.50\n4,1943,36.50\n5,1943,36.50\n6,1943,36.50\n7,1943,36.50\n8,1943,36.50\n9,1943,36.50\n10,1943,36.50\n11,1943,36.50\n12,1943,36.50\n1,1944,36.25\n2,1944,36.25\n3,1944,36.25\n4,1944,36.25\n5,1944,36.25\n6,1944,36.25\n7,1944,36.25\n8,1944,36.25\n9,1944,36.25\n10,1944,36.25\n11,1944,36.25\n12,1944,36.25\n1,1945,37.25\n2,1945,37.25\n3,1945,37.25\n4,1945,37.25\n5,1945,37.25\n6,1945,37.25\n7,1945,37.25\n8,1945,37.25\n9,1945,37.25\n10,1945,37.25\n11,1945,37.25\n12,1945,37.25\n1,1946,38.25\n2,1946,38.25\n3,1946,38.25\n4,1946,38.25\n5,1946,38.25\n6,1946,38.25\n7,1946,38.25\n8,1946,38.25\n9,1946,38.25\n10,1946,38.25\n11,1946,38.25\n12,1946,38.25\n1,1947,43.00\n2,1947,43.00\n3,1947,43.00\n4,1947,43.00\n5,1947,43.00\n6,1947,43.00\n7,1947,43.00\n8,1947,43.00\n9,1947,43.00\n10,1947,43.00\n11,1947,43.00\n12,1947,43.00\n1,1948,42.00\n2,1948,42.00\n3,1948,42.00\n4,1948,42.00\n5,1948,42.00\n6,1948,42.00\n7,1948,42.00\n8,1948,42.00\n9,1948,42.00\n10,1948,42.00\n11,1948,42.00\n12,1948,42.00\n1,1949,40.50\n2,1949,40.50\n3,1949,40.50\n4,1949,40.50\n5,1949,40.50\n6,1949,40.50\n7,1949,40.50\n8,1949,40.50\n9,1949,40.50\n10,1949,40.50\n11,1949,40.50\n12,1949,40.50\n1,1950,40.25\n2,1950,40.25\n3,1950,40.25\n4,1950,40.25\n5,1950,40.25\n6,1950,40.25\n7,1950,40.25\n8,1950,40.25\n9,1950,40.25\n10,1950,40.25\n11,1950,40.25\n12,1950,40.25\n1,1951,40.00\n2,1951,40.00\n3,1951,40.00\n4,1951,40.00\n5,1951,40.00\n6,1951,40.00\n7,1951,40.00\n8,1951,40.00\n9,1951,40.00\n10,1951,40.00\n11,1951,40.00\n12,1951,40.00\n1,1952,38.70\n2,1952,38.70\n3,1952,38.70\n4,1952,38.70\n5,1952,38.70\n6,1952,38.70\n7,1952,38.70\n8,1952,38.70\n9,1952,38.70\n10,1952,38.70\n11,1952,38.70\n12,1952,38.70\n1,1953,35.50\n2,1953,35.50\n3,1953,35.50\n4,1953,35.50\n5,1953,35.50\n6,1953,35.50\n7,1953,35.50\n8,1953,35.50\n9,1953,35.50\n10,1953,35.50\n11,1953,35.50\n12,1953,35.50\n1,1954,35.25\n2,1954,35.25\n3,1954,35.25\n4,1954,35.25\n5,1954,35.25\n6,1954,35.25\n7,1954,35.25\n8,1954,35.25\n9,1954,35.25\n10,1954,35.25\n11,1954,35.25\n12,1954,35.25\n1,1955,35.15\n2,1955,35.15\n3,1955,35.15\n4,1955,35.15\n5,1955,35.15\n6,1955,35.15\n7,1955,35.15\n8,1955,35.15\n9,1955,35.15\n10,1955,35.15\n11,1955,35.15\n12,1955,35.15\n1,1956,35.20\n2,1956,35.20\n3,1956,35.20\n4,1956,35.20\n5,1956,35.20\n6,1956,35.20\n7,1956,35.20\n8,1956,35.20\n9,1956,35.20\n10,1956,35.20\n11,1956,35.20\n12,1956,35.20\n1,1957,35.25\n2,1957,35.25\n3,1957,35.25\n4,1957,35.25\n5,1957,35.25\n6,1957,35.25\n7,1957,35.25\n8,1957,35.25\n9,1957,35.25\n10,1957,35.25\n11,1957,35.25\n12,1957,35.25\n1,1958,35.25\n2,1958,35.25\n3,1958,35.25\n4,1958,35.25\n5,1958,35.25\n6,1958,35.25\n7,1958,35.25\n8,1958,35.25\n9,1958,35.25\n10,1958,35.25\n11,1958,35.25\n12,1958,35.25\n1,1959,35.25\n2,1959,35.25\n3,1959,35.25\n4,1959,35.25\n5,1959,35.25\n6,1959,35.25\n7,1959,35.25\n8,1959,35.25\n9,1959,35.25\n10,1959,35.25\n11,1959,35.25\n12,1959,35.25\n1,1960,36.50\n2,1960,36.50\n3,1960,36.50\n4,1960,36.50\n5,1960,36.50\n6,1960,36.50\n7,1960,36.50\n8,1960,36.50\n9,1960,36.50\n10,1960,36.50\n11,1960,36.50\n12,1960,36.50\n1,1961,35.50\n2,1961,35.50\n3,1961,35.50\n4,1961,35.50\n5,1961,35.50\n6,1961,35.50\n7,1961,35.50\n8,1961,35.50\n9,1961,35.50\n10,1961,35.50\n11,1961,35.50\n12,1961,35.50\n1,1962,35.35\n2,1962,35.35\n3,1962,35.35\n4,1962,35.35\n5,1962,35.35\n6,1962,35.35\n7,1962,35.35\n8,1962,35.35\n9,1962,35.35\n10,1962,35.35\n11,1962,35.35\n12,1962,35.35\n1,1963,35.25\n2,1963,35.25\n3,1963,35.25\n4,1963,35.25\n5,1963,35.25\n6,1963,35.25\n7,1963,35.25\n8,1963,35.25\n9,1963,35.25\n10,1963,35.25\n11,1963,35.25\n12,1963,35.25\n1,1964,35.35\n2,1964,35.35\n3,1964,35.35\n4,1964,35.35\n5,1964,35.35\n6,1964,35.35\n7,1964,35.35\n8,1964,35.35\n9,1964,35.35\n10,1964,35.35\n11,1964,35.35\n12,1964,35.35\n1,1965,35.50\n2,1965,35.50\n3,1965,35.50\n4,1965,35.50\n5,1965,35.50\n6,1965,35.50\n7,1965,35.50\n8,1965,35.50\n9,1965,35.50\n10,1965,35.50\n11,1965,35.50\n12,1965,35.50\n1,1966,35.40\n2,1966,35.40\n3,1966,35.40\n4,1966,35.40\n5,1966,35.40\n6,1966,35.40\n7,1966,35.40\n8,1966,35.40\n9,1966,35.40\n10,1966,35.40\n11,1966,35.40\n12,1966,35.40\n1,1967,35.50\n2,1967,35.50\n3,1967,35.50\n4,1967,35.50\n5,1967,35.50\n6,1967,35.50\n7,1967,35.50\n8,1967,35.50\n9,1967,35.50\n10,1967,35.50\n11,1967,35.50\n12,1967,35.50\n1,1968,35.20\n2,1968,35.20\n3,1968,35.20\n4,1968,39.10\n5,1968,42.00\n6,1968,40.95\n7,1968,38.90\n8,1968,39.85\n9,1968,39.70\n10,1968,39.20\n11,1968,39.85\n12,1968,41.95\n1,1969,42.55\n2,1969,42.77\n3,1969,43.10\n4,1969,43.60\n5,1969,43.15\n6,1969,41.23\n7,1969,41.45\n8,1969,40.95\n9,1969,40.65\n10,1969,39.85\n11,1969,35.55\n12,1969,35.21\n1,1970,34.98\n2,1970,35.00\n3,1970,35.30\n4,1970,35.85\n5,1970,35.50\n6,1970,35.51\n7,1970,35.29\n8,1970,35.77\n9,1970,36.24\n10,1970,37.40\n11,1970,37.60\n12,1970,37.38\n1,1971,38.00\n2,1971,38.79\n3,1971,38.80\n4,1971,39.60\n5,1971,40.80\n6,1971,40.20\n7,1971,42.48\n8,1971,41.00\n9,1971,42.48\n10,1971,42.40\n11,1971,43.55\n12,1971,43.62\n1,1972,46.95\n2,1972,48.40\n3,1972,48.38\n4,1972,49.50\n5,1972,59.30\n6,1972,64.10\n7,1972,68.90\n8,1972,66.80\n9,1972,64.10\n10,1972,64.42\n11,1972,63.60\n12,1972,64.70\n1,1973,66.00\n2,1973,85.30\n3,1973,90.25\n4,1973,90.70\n5,1973,114.50\n6,1973,123.50\n7,1973,115.20\n8,1973,104.00\n9,1973,100.25\n10,1973,97.25\n11,1973,100.25\n12,1973,112.25\n1,1974,133.25\n2,1974,169.50\n3,1974,173.00\n4,1974,168.50\n5,1974,156.50\n6,1974,146.75\n7,1974,154.00\n8,1974,155.25\n9,1974,147.50\n10,1974,166.40\n11,1974,182.00\n12,1974,187.50\n1,1975,176.25\n2,1975,181.75\n3,1975,177.75\n4,1975,167.40\n5,1975,167.75\n6,1975,166.00\n7,1975,166.40\n8,1975,161.50\n9,1975,138.25\n10,1975,143.40\n11,1975,138.25\n12,1975,140.25\n1,1976,128.00\n2,1976,132.30\n3,1976,129.50\n4,1976,128.15\n5,1976,125.25\n6,1976,123.80\n7,1976,112.40\n8,1976,103.05\n9,1976,116.10\n10,1976,122.30\n11,1976,130.10\n12,1976,134.55\n1,1977,132.10\n2,1977,142.25\n3,1977,149.80\n4,1977,146.50\n5,1977,143.20\n6,1977,142.95\n7,1977,144.50\n8,1977,146.00\n9,1977,153.90\n10,1977,160.80\n11,1977,159.80\n12,1977,165.60\n1,1978,175.20\n2,1978,182.00\n3,1978,180.75\n4,1978,170.00\n5,1978,184.90\n6,1978,183.20\n7,1978,198.90\n8,1978,207.30\n9,1978,217.45\n10,1978,243.65\n11,1978,193.70\n12,1978,224.50\n1,1979,233.05\n2,1979,250.90\n3,1979,239.65\n4,1979,243.45\n5,1979,277.15\n6,1979,276.45\n7,1979,295.35\n8,1979,317.75\n9,1979,397.00\n10,1979,379.75\n11,1979,417.20\n12,1979,524.00\n1,1980,668.00\n2,1980,640.00\n3,1980,503.25\n4,1980,519.25\n5,1980,531.40\n6,1980,662.50\n7,1980,618.00\n8,1980,633.75\n9,1980,670.00\n10,1980,636.00\n11,1980,621.50\n12,1980,589.50\n1,1981,507.50\n2,1981,490.25\n3,1981,514.25\n4,1981,481.00\n5,1981,478.75\n6,1981,421.50\n7,1981,405.25\n8,1981,425.50\n9,1981,426.50\n10,1981,429.00\n11,1981,415.50\n12,1981,400.00\n1,1982,388.25\n2,1982,363.25\n3,1982,320.50\n4,1982,356.75\n5,1982,325.50\n6,1982,314.00\n7,1982,342.50\n8,1982,409.60\n9,1982,394.75\n10,1982,422.00\n11,1982,428.25\n12,1982,448.00\n1,1983,503.00\n2,1983,419.75\n3,1983,414.25\n4,1983,428.50\n5,1983,439.00\n6,1983,416.75\n7,1983,422.25\n8,1983,414.50\n9,1983,404.00\n10,1983,383.50\n11,1983,405.75\n12,1983,381.50\n1,1984,371.90\n2,1984,396.60\n3,1984,388.50\n4,1984,376.20\n5,1984,383.45\n6,1984,375.25\n7,1984,341.60\n8,1984,347.70\n9,1984,344.15\n10,1984,334.50\n11,1984,328.60\n12,1984,309.00\n1,1985,304.90\n2,1985,290.50\n3,1985,329.80\n4,1985,324.65\n5,1985,313.15\n6,1985,316.50\n7,1985,328.10\n8,1985,335.75\n9,1985,326.50\n10,1985,325.75\n11,1985,327.40\n12,1985,327.00\n1,1986,354.00\n2,1986,338.25\n3,1986,345.50\n4,1986,344.75\n5,1986,343.35\n6,1986,345.50\n7,1986,357.75\n8,1986,386.00\n9,1986,421.20\n10,1986,401.50\n11,1986,390.00\n12,1986,390.90\n1,1987,407.30\n2,1987,405.75\n3,1987,419.00\n4,1987,454.50\n5,1987,451.75\n6,1987,447.10\n7,1987,464.25\n8,1987,455.90\n9,1987,459.15\n10,1987,468.00\n11,1987,493.90\n12,1987,486.50\n1,1988,465.25\n2,1988,423.75\n3,1988,458.00\n4,1988,449.75\n5,1988,454.00\n6,1988,436.85\n7,1988,432.70\n8,1988,426.35\n9,1988,396.15\n10,1988,412.30\n11,1988,421.30\n12,1988,410.15\n1,1989,394.85\n2,1989,386.75\n3,1989,382.30\n4,1989,381.30\n5,1989,363.50\n6,1989,371.15\n7,1989,369.10\n8,1989,359.60\n9,1989,369.00\n10,1989,376.05\n11,1989,406.80\n12,1989,401.00\n1,1990,417.55\n2,1990,409.10\n3,1990,372.20\n4,1990,371.55\n5,1990,363.70\n6,1990,352.40\n7,1990,371.10\n8,1990,388.10\n9,1990,406.10\n10,1990,379.25\n11,1990,384.80\n12,1990,391.00\n1,1991,369.60\n2,1991,363.00\n3,1991,354.00\n4,1991,353.45\n5,1991,361.55\n6,1991,366.90\n7,1991,363.60\n8,1991,347.00\n9,1991,350.50\n10,1991,357.40\n11,1991,366.85\n12,1991,353.40\n1,1992,354.15\n2,1992,353.05\n3,1992,341.50\n4,1992,336.25\n5,1992,337.55\n6,1992,343.40\n7,1992,357.95\n8,1992,340.50\n9,1992,349.00\n10,1992,338.80\n11,1992,333.70\n12,1992,332.90\n1,1993,330.75\n2,1993,328.75\n3,1993,336.90\n4,1993,353.45\n5,1993,381.00\n6,1993,379.00\n7,1993,403.70\n8,1993,370.60\n9,1993,352.65\n10,1993,369.10\n11,1993,370.80\n12,1993,390.65\n1,1994,378.20\n2,1994,380.75\n3,1994,389.70\n4,1994,376.45\n5,1994,386.25\n6,1994,385.40\n7,1994,384.05\n8,1994,386.25\n9,1994,395.35\n10,1994,387.40\n11,1994,383.35\n12,1994,382.50\n1,1995,375.85\n2,1995,375.70\n3,1995,386.55\n4,1995,389.50\n5,1995,384.25\n6,1995,387.60\n7,1995,383.35\n8,1995,381.65\n9,1995,383.75\n10,1995,382.40\n11,1995,387.85\n12,1995,386.70\n1,1996,403.20\n2,1996,400.35\n3,1996,396.70\n4,1996,390.15\n5,1996,390.55\n6,1996,381.30\n7,1996,385.50\n8,1996,387.25\n9,1996,379.30\n10,1996,379.30\n11,1996,371.90\n12,1996,369.55\n1,1997,345.00\n2,1997,360.60\n3,1997,349.50\n4,1997,340.45\n5,1997,345.75\n6,1997,334.05\n7,1997,326.00\n8,1997,325.40\n9,1997,328.75\n10,1997,310.40\n11,1997,296.90\n12,1997,289.20\n1,1998,301.80\n2,1998,296.55\n3,1998,299.90\n4,1998,310.70\n5,1998,292.40\n6,1998,295.75\n7,1998,289.40\n8,1998,273.40\n9,1998,294.10\n10,1998,293.10\n11,1998,295.75\n12,1998,287.45\n1,1999,285.65\n2,1999,286.80\n3,1999,279.80\n4,1999,285.85\n5,1999,271.05\n6,1999,261.20\n7,1999,256.75\n8,1999,254.60\n9,1999,303.75\n10,1999,298.85\n11,1999,292.00\n12,1999,290.85\n1,2000,283.05\n2,2000,294.00\n3,2000,275.90\n4,2000,275.85\n5,2000,272.25\n6,2000,289.15\n7,2000,277.40\n8,2000,274.95\n9,2000,274.10\n10,2000,263.80\n11,2000,267.00\n12,2000,272.65\n1,2001,266.20\n2,2001,265.00\n3,2001,259.05\n4,2001,263.45\n5,2001,266.10\n6,2001,269.90\n7,2001,265.55\n8,2001,275.35\n9,2001,290.85\n10,2001,280.95\n11,2001,274.70\n12,2001,276.50\n1,2002,281.50\n2,2002,296.55\n3,2002,303.00\n4,2002,309.35\n5,2002,327.25\n6,2002,319.05\n7,2002,305.50\n8,2002,312.40\n9,2002,322.40\n10,2002,316.35\n11,2002,318.25\n12,2002,342.75\n1,2003,370.35\n2,2003,347.65\n3,2003,335.35\n4,2003,336.00\n5,2003,365.80\n6,2003,345.15\n7,2003,355.75\n8,2003,371.00\n9,2003,384.50\n10,2003,384.60\n11,2003,398.10\n12,2003,417.25\n1,2004,401.30\n2,2004,392.25\n3,2004,423.00\n4,2004,387.30\n5,2004,393.85\n6,2004,393.75\n7,2004,389.60\n8,2004,408.10\n9,2004,412.35\n10,2004,426.20\n11,2004,452.00\n12,2004,438.00\n1,2005,423.80\n2,2005,436.55\n3,2005,427.50\n4,2005,433.20\n5,2005,416.90\n6,2005,436.80\n7,2005,427.15\n8,2005,433.00\n9,2005,473.40\n10,2005,472.65\n11,2005,493.80\n12,2005,513.00\n1,2006,569.80\n2,2006,556.50\n3,2006,584.00\n4,2006,638.25\n5,2006,654.00\n6,2006,600.40\n7,2006,637.00\n8,2006,621.75\n9,2006,601.75\n10,2006,600.90\n11,2006,638.40\n12,2006,635.70\n1,2007,645.75\n2,2007,677.00\n3,2007,663.50\n4,2007,678.00\n5,2007,656.60\n6,2007,648.50\n7,2007,666.75\n8,2007,668.00\n9,2007,737.75\n10,2007,783.00\n11,2007,794.75\n12,2007,836.50\n1,2008,923.75\n2,2008,969.00\n3,2008,937.25\n4,2008,867.75\n5,2008,879.50\n6,2008,932.75\n7,2008,912.00\n8,2008,836.50\n9,2008,897.00\n10,2008,728.50\n11,2008,813.50\n12,2008,865.00\n1,2009,918.50\n2,2009,943.75\n3,2009,918.50\n4,2009,889.00\n5,2009,972.00\n6,2009,941.00\n7,2009,936.50\n8,2009,950.75\n9,2009,1001.25\n10,2009,1044.50\n11,2009,1172.00\n12,2009,1104.00\n1,2010,1082.75\n2,2010,1112.50\n3,2010,1109.50\n4,2010,1175.25\n5,2010,1214.00\n6,2010,1240.50\n7,2010,1168.00\n8,2010,1233.50\n9,2010,1311.00\n10,2010,1336.75\n11,2010,1375.00\n12,2010,1410.25\n1,2011,1333.50\n2,2011,1409.75\n3,2011,1431.00\n4,2011,1531.00\n5,2011,1537.00\n6,2011,1508.00\n7,2011,1613.75\n8,2011,1826.00\n9,2011,1629.00\n10,2011,1718.00\n11,2011,1704.00\n12,2011,1574.50\n1,2012,1738.00\n2,2012,1788.00\n3,2012,1660.75\n4,2012,1662.50\n5,2012,1567.50\n6,2012,1569.50\n7,2012,1622.75\n8,2012,1657.75\n9,2012,1781.00\n10,2012,1718.00\n11,2012,1728.25\n12,2012,1664.00\n1,2013,1674.50\n2,2013,1591.00\n3,2013,1602.50\n4,2013,1472.75\n5,2013,1410.25\n6,2013,1203.25\n7,2013,1331.50\n8,2013,1392.75\n9,2013,1335.75\n10,2013,1333.75\n11,2013,1245.25\n12,2013,1201.50\n1,2014,1246.50\n2,2014,1327.75\n3,2014,1294.00\n4,2014,1292.00\n5,2014,1254.00\n6,2014,1313.00\n7,2014,1295.00\n8,2014,1285.75\n9,2014,1210.00\n10,2014,1173.25\n11,2014,1184.50\n12,2014,1199.25\n1,2015,1263.50\n2,2015,1205.00\n3,2015,1179.25\n4,2015,1204.30\n5,2015,1190.40\n6,2015,1175.00\n7,2015,1080.05\n8,2015,1125.50\n9,2015,1122.50\n10,2015,1147.75\n11,2015,1055.65\n12,2015,1062.25\n1,2016,1112.90\n2,2016,1234.15\n3,2016,1233.60\n4,2016,1274.50\n5,2016,1210.50\n6,2016,1317.00\n7,2016,1332.50\n8,2016,1314.45\n9,2016,1327.90\n10,2016,1274.20\n11,2016,1187.40\n12,2016,1159.10\n1,2017,1198.80\n2,2017,1251.90\n3,2017,1241.70\n4,2017,1265.55\n5,2017,1263.80\n6,2017,1243.25\n7,2017,1266.35\n8,2017,1305.80\n9,2017,1286.95\n10,2017,1274.40\n11,2017,1282.15\n12,2017,1296.50\n1,2018,1343.35\n2,2018,1320.30\n3,2018,1323.90\n4,2018,1316.25\n5,2018,1303.50\n6,2018,1250.55\n7,2018,1219.20\n8,2018,1206.85\n9,2018,1183.50\n10,2018,1217.70\n11,2018,1220.45\n12,2018,1281.65\n1,2019,1322.50\n2,2019,1325.45\n3,2019,1291.15\n4,2019,1285.15\n5,2019,1296.00\n6,2019,1413.20\n7,2019,1430.55\n8,2019,1526.55\n9,2019,1487.60\n10,2019,1506.40\n11,2019,1456.35\n12,2019,1523.00\n1,2020,1580.85\n2,2020,1626.35\n3,2020,1604.65\n4,2020,1716.75\n5,2020,1725.65\n6,2020,1770.70\n7,2020,1974.70\n8,2020,1955.85\n9,2020,1883.40\n10,2020,1875.80\n11,2020,1771.95\n12,2020,1891.10\n1,2021,1852.70\n2,2021,1765.10\n3,2021,1685.35\n4,2021,1768.80\n5,2021,1892.45\n6,2021,1757.80\n7,2021,1828.25\n8,2021,1814.30\n9,2021,1730.95\n10,2021,1796.30\n11,2021,1797.60\n12,2021,1820.10\n1,2022,1790.60\n2,2022,1903.30\n3,2022,1924.10\n4,2022,1915.45\n5,2022,1854.40\n6,2022,1813.60\n7,2022,1758.90\n8,2022,1712.40\n9,2022,1672.75\n10,2022,1638.85\n11,2022,1759.65\n12,2022,1812.35\n1,2023,1905.20\n2,2023,1810.20\n3,2023,1978.80\n4,2023,1982.70\n5,2023,1959.00\n6,2023,1903.55\n7,2023,1955.55\n8,2023,1944.20\n9,2023,1871.60\n10,2023,1997.60\n11,2023,2037.85\n12,2023,2062.40\n1,2024,2037.90\n2,2024,2032.80\n3,2024,2207.00\n4,2024,2314.80\n5,2024,2342.90\n6,2024,2327.60\n7,2024,2426.30\n8,2024,2524.15\n9,2024,2650.15\n10,2024,2779.40\n11,2024,2664.30\n12,2024,2610.85\n1,2025,2791.50\n2,2025,2861.40\n3,2025,3120.20\n4,2025,3284.30\n5,2025,3293.55\n6,2025,3277.25\n7,2025,3306.80\n8,2025,3407.50\n9,2025,3806.55\n10,2025,4013.20\n11,2025,4159.40\n12,2025,4307.95\n`,
        'commodities': `1,1871,22.59\n2,1871,22.59\n3,1871,22.59\n4,1871,22.59\n5,1871,22.59\n6,1871,22.59\n7,1871,22.59\n8,1871,22.59\n9,1871,22.59\n10,1871,22.59\n11,1871,22.59\n12,1871,22.59\n1,1872,23.19\n2,1872,23.19\n3,1872,23.19\n4,1872,23.19\n5,1872,23.19\n6,1872,23.19\n7,1872,23.19\n8,1872,23.19\n9,1872,23.19\n10,1872,23.19\n11,1872,23.19\n12,1872,23.19\n1,1873,22.74\n2,1873,22.74\n3,1873,22.74\n4,1873,22.74\n5,1873,22.74\n6,1873,22.74\n7,1873,22.74\n8,1873,22.74\n9,1873,22.74\n10,1873,22.74\n11,1873,22.74\n12,1873,22.74\n1,1874,23.09\n2,1874,23.09\n3,1874,23.09\n4,1874,23.09\n5,1874,23.09\n6,1874,23.09\n7,1874,23.09\n8,1874,23.09\n9,1874,23.09\n10,1874,23.09\n11,1874,23.09\n12,1874,23.09\n1,1875,23.54\n2,1875,23.54\n3,1875,23.54\n4,1875,23.54\n5,1875,23.54\n6,1875,23.54\n7,1875,23.54\n8,1875,23.54\n9,1875,23.54\n10,1875,23.54\n11,1875,23.54\n12,1875,23.54\n1,1876,22.30\n2,1876,22.30\n3,1876,22.30\n4,1876,22.30\n5,1876,22.30\n6,1876,22.30\n7,1876,22.30\n8,1876,22.30\n9,1876,22.30\n10,1876,22.30\n11,1876,22.30\n12,1876,22.30\n1,1877,21.25\n2,1877,19.58\n3,1877,18.83\n4,1877,22.97\n5,1877,19.61\n6,1877,18.53\n7,1877,17.86\n8,1877,16.31\n9,1877,17.13\n10,1877,17.34\n11,1877,16.96\n12,1877,17.06\n1,1878,16.12\n2,1878,16.29\n3,1878,16.05\n4,1878,15.23\n5,1878,13.67\n6,1878,13.97\n7,1878,14.85\n8,1878,14.42\n9,1878,12.93\n10,1878,12.03\n11,1878,11.89\n12,1878,11.25\n1,1879,12.59\n2,1879,13.56\n3,1879,12.93\n4,1879,12.24\n5,1879,12.98\n6,1879,13.03\n7,1879,11.75\n8,1879,11.19\n9,1879,12.97\n10,1879,14.66\n11,1879,15.54\n12,1879,16.42\n1,1880,15.22\n2,1880,15.00\n3,1880,13.55\n4,1880,13.19\n5,1880,12.79\n6,1880,12.74\n7,1880,14.07\n8,1880,15.28\n9,1880,15.80\n10,1880,15.80\n11,1880,17.10\n12,1880,15.76\n1,1881,16.31\n2,1881,16.48\n3,1881,16.93\n4,1881,17.56\n5,1881,17.47\n6,1881,18.27\n7,1881,19.68\n8,1881,22.09\n9,1881,24.78\n10,1881,22.63\n11,1881,21.89\n12,1881,21.99\n1,1882,22.04\n2,1882,21.05\n3,1882,21.94\n4,1882,22.71\n5,1882,22.73\n6,1882,24.82\n7,1882,23.70\n8,1882,24.51\n9,1882,22.76\n10,1882,23.07\n11,1882,22.12\n12,1882,22.04\n1,1883,23.53\n2,1883,24.80\n3,1883,24.40\n4,1883,24.43\n5,1883,24.08\n6,1883,20.37\n7,1883,19.09\n8,1883,18.38\n9,1883,17.80\n10,1883,17.18\n11,1883,19.78\n12,1883,20.29\n1,1884,20.44\n2,1884,20.78\n3,1884,19.89\n4,1884,19.21\n5,1884,19.69\n6,1884,18.50\n7,1884,18.69\n8,1884,18.13\n9,1884,18.32\n10,1884,17.58\n11,1884,16.90\n12,1884,16.94\n1,1885,17.70\n2,1885,17.67\n3,1885,17.49\n4,1885,18.93\n5,1885,16.97\n6,1885,17.11\n7,1885,16.71\n8,1885,15.70\n9,1885,15.43\n10,1885,15.29\n11,1885,16.31\n12,1885,16.27\n1,1886,16.47\n2,1886,16.38\n3,1886,15.56\n4,1886,15.23\n5,1886,14.46\n6,1886,15.45\n7,1886,16.61\n8,1886,16.30\n9,1886,15.10\n10,1886,14.64\n11,1886,15.18\n12,1886,16.13\n1,1887,15.75\n2,1887,17.37\n3,1887,18.38\n4,1887,18.10\n5,1887,17.17\n6,1887,16.79\n7,1887,16.71\n8,1887,16.77\n9,1887,16.93\n10,1887,16.68\n11,1887,19.00\n12,1887,20.08\n1,1888,19.05\n2,1888,18.69\n3,1888,18.42\n4,1888,19.11\n5,1888,19.73\n6,1888,18.77\n7,1888,19.40\n8,1888,19.76\n9,1888,20.10\n10,1888,21.50\n11,1888,20.91\n12,1888,20.19\n1,1889,18.81\n2,1889,18.57\n3,1889,19.05\n4,1889,17.60\n5,1889,17.32\n6,1889,17.53\n7,1889,16.65\n8,1889,15.81\n9,1889,15.85\n10,1889,15.84\n11,1889,15.95\n12,1889,15.73\n1,1890,15.77\n2,1890,15.56\n3,1890,16.22\n4,1890,17.80\n5,1890,18.36\n6,1890,17.84\n7,1890,20.11\n8,1890,20.67\n9,1890,20.38\n10,1890,21.66\n11,1890,20.83\n12,1890,20.08\n1,1891,19.23\n2,1891,19.32\n3,1891,23.20\n4,1891,22.92\n5,1891,20.64\n6,1891,19.33\n7,1891,20.63\n8,1891,20.97\n9,1891,20.12\n10,1891,18.77\n11,1891,18.81\n12,1891,18.43\n1,1892,18.90\n2,1892,18.63\n3,1892,17.14\n4,1892,17.18\n5,1892,19.06\n6,1892,20.12\n7,1892,20.31\n8,1892,20.36\n9,1892,19.82\n10,1892,19.85\n11,1892,21.91\n12,1892,22.67\n1,1893,25.03\n2,1893,24.41\n3,1893,23.32\n4,1893,24.40\n5,1893,24.07\n6,1893,23.24\n7,1893,20.95\n8,1893,20.52\n9,1893,22.23\n10,1893,22.49\n11,1893,20.98\n12,1893,20.66\n1,1894,20.67\n2,1894,19.80\n3,1894,19.83\n4,1894,20.69\n5,1894,20.24\n6,1894,21.16\n7,1894,21.39\n8,1894,24.49\n9,1894,22.89\n10,1894,21.98\n11,1894,22.22\n12,1894,21.61\n1,1895,19.39\n2,1895,19.75\n3,1895,21.70\n4,1895,21.82\n5,1895,23.45\n6,1895,21.92\n7,1895,19.69\n8,1895,17.88\n9,1895,17.57\n10,1895,16.72\n11,1895,16.26\n12,1895,15.83\n1,1896,17.81\n2,1896,17.27\n3,1896,16.02\n4,1896,15.25\n5,1896,13.91\n6,1896,12.98\n7,1896,12.22\n8,1896,11.61\n9,1896,12.31\n10,1896,13.60\n11,1896,13.85\n12,1896,12.97\n1,1897,12.55\n2,1897,12.65\n3,1897,13.13\n4,1897,13.09\n5,1897,12.21\n6,1897,12.63\n7,1897,13.37\n8,1897,15.28\n9,1897,14.45\n10,1897,13.89\n11,1897,13.52\n12,1897,14.41\n1,1898,14.83\n2,1898,15.79\n3,1898,15.29\n4,1898,17.18\n5,1898,17.72\n6,1898,15.78\n7,1898,15.63\n8,1898,14.87\n9,1898,14.57\n10,1898,15.26\n11,1898,15.53\n12,1898,16.99\n1,1899,17.09\n2,1899,16.26\n3,1899,16.06\n4,1899,15.56\n5,1899,15.00\n6,1899,15.39\n7,1899,14.81\n8,1899,14.86\n9,1899,15.71\n10,1899,15.49\n11,1899,15.19\n12,1899,15.86\n1,1900,15.93\n2,1900,16.07\n3,1900,17.84\n4,1900,18.47\n5,1900,17.37\n6,1900,19.52\n7,1900,18.20\n8,1900,18.03\n9,1900,18.54\n10,1900,17.99\n11,1900,18.32\n12,1900,18.95\n1,1901,19.90\n2,1901,20.27\n3,1901,21.54\n4,1901,21.64\n5,1901,22.19\n6,1901,22.26\n7,1901,24.15\n8,1901,24.74\n9,1901,25.39\n10,1901,24.83\n11,1901,26.86\n12,1901,28.17\n1,1902,26.74\n2,1902,26.49\n3,1902,26.66\n4,1902,27.70\n5,1902,27.72\n6,1902,29.69\n7,1902,28.03\n8,1902,27.07\n9,1902,28.29\n10,1902,30.22\n11,1902,30.80\n12,1902,32.02\n1,1903,33.26\n2,1903,34.43\n3,1903,33.85\n4,1903,34.18\n5,1903,34.53\n6,1903,35.61\n7,1903,34.34\n8,1903,34.29\n9,1903,33.33\n10,1903,32.73\n11,1903,31.57\n12,1903,34.39\n1,1904,36.73\n2,1904,40.86\n3,1904,37.55\n4,1904,35.67\n5,1904,35.29\n6,1904,37.42\n7,1904,38.58\n8,1904,39.67\n9,1904,40.31\n10,1904,38.52\n11,1904,38.99\n12,1904,39.29\n1,1905,39.61\n2,1905,39.78\n3,1905,39.83\n4,1905,38.71\n5,1905,40.21\n6,1905,43.14\n7,1905,41.87\n8,1905,43.39\n9,1905,43.95\n10,1905,45.02\n11,1905,46.60\n12,1905,46.89\n1,1906,47.10\n2,1906,48.35\n3,1906,49.81\n4,1906,51.09\n5,1906,54.01\n6,1906,56.92\n7,1906,53.98\n8,1906,52.64\n9,1906,53.44\n10,1906,54.78\n11,1906,55.73\n12,1906,59.23\n1,1907,63.53\n2,1907,63.46\n3,1907,61.63\n4,1907,63.64\n5,1907,70.74\n6,1907,69.25\n7,1907,69.79\n8,1907,73.34\n9,1907,74.74\n10,1907,72.61\n11,1907,66.79\n12,1907,69.74\n1,1908,67.24\n2,1908,67.47\n3,1908,73.03\n4,1908,71.41\n5,1908,73.20\n6,1908,77.55\n7,1908,83.35\n8,1908,85.17\n9,1908,87.25\n10,1908,85.88\n11,1908,86.55\n12,1908,87.71\n1,1909,89.81\n2,1909,92.92\n3,1909,95.10\n4,1909,98.71\n5,1909,103.65\n6,1909,108.04\n7,1909,104.12\n8,1909,106.34\n9,1909,111.36\n10,1909,117.66\n11,1909,123.88\n12,1909,130.79\n1,1910,131.44\n2,1910,141.51\n3,1910,142.71\n4,1910,130.60\n5,1910,127.83\n6,1910,133.53\n7,1910,131.72\n8,1910,133.45\n9,1910,124.44\n10,1910,119.76\n11,1910,119.06\n12,1910,126.21\n1,1911,125.30\n2,1911,118.38\n3,1911,112.08\n4,1911,113.65\n5,1911,115.35\n6,1911,128.18\n7,1911,131.07\n8,1911,134.45\n9,1911,133.86\n10,1911,135.76\n11,1911,137.23\n12,1911,134.96\n1,1912,141.79\n2,1912,140.30\n3,1912,149.91\n4,1912,163.91\n5,1912,157.89\n6,1912,159.90\n7,1912,147.63\n8,1912,148.02\n9,1912,141.56\n10,1912,143.40\n11,1912,141.04\n12,1912,140.21\n1,1913,147.31\n2,1913,153.37\n3,1913,155.25\n4,1913,157.16\n5,1913,164.42\n6,1913,172.63\n7,1913,172.93\n8,1913,175.81\n9,1913,177.41\n10,1913,174.95\n11,1913,177.90\n12,1913,176.00\n1,1914,179.81\n2,1914,179.66\n3,1914,175.26\n4,1914,168.40\n5,1914,172.38\n6,1914,170.94\n7,1914,179.95\n8,1914,207.15\n9,1914,189.09\n10,1914,190.90\n11,1914,186.57\n12,1914,198.22\n1,1915,213.00\n2,1915,196.61\n3,1915,200.65\n4,1915,209.86\n5,1915,201.74\n6,1915,184.42\n7,1915,172.48\n8,1915,162.40\n9,1915,160.67\n10,1915,169.09\n11,1915,182.13\n12,1915,201.63\n1,1916,212.55\n2,1916,199.38\n3,1916,210.59\n4,1916,218.68\n5,1916,206.00\n6,1916,219.70\n7,1916,227.17\n8,1916,252.00\n9,1916,255.26\n10,1916,295.46\n11,1916,302.43\n12,1916,295.98\n1,1917,317.80\n2,1917,335.21\n3,1917,372.29\n4,1917,439.73\n5,1917,415.20\n6,1917,437.93\n7,1917,473.69\n8,1917,487.41\n9,1917,537.73\n10,1917,507.39\n11,1917,575.20\n12,1917,580.99\n1,1918,600.11\n2,1918,620.75\n3,1918,625.31\n4,1918,595.08\n5,1918,546.49\n6,1918,601.74\n7,1918,629.68\n8,1918,625.92\n9,1918,592.79\n10,1918,546.25\n11,1918,610.31\n12,1918,623.23\n1,1919,551.20\n2,1919,583.85\n3,1919,667.84\n4,1919,742.79\n5,1919,765.02\n6,1919,819.82\n7,1919,873.74\n8,1919,717.79\n9,1919,666.80\n10,1919,696.96\n11,1919,713.78\n12,1919,768.99\n1,1920,784.67\n2,1920,731.22\n3,1920,782.31\n4,1920,803.07\n5,1920,801.58\n6,1920,844.75\n7,1920,698.13\n8,1920,674.65\n9,1920,619.88\n10,1920,577.17\n11,1920,499.51\n12,1920,496.26\n1,1921,471.68\n2,1921,475.65\n3,1921,433.31\n4,1921,389.88\n5,1921,420.36\n6,1921,418.26\n7,1921,434.06\n8,1921,393.34\n9,1921,373.94\n10,1921,353.64\n11,1921,355.00\n12,1921,358.10\n1,1922,388.04\n2,1922,466.65\n3,1922,413.40\n4,1922,433.96\n5,1922,422.01\n6,1922,422.48\n7,1922,390.88\n8,1922,360.07\n9,1922,381.94\n10,1922,418.92\n11,1922,443.27\n12,1922,463.06\n1,1923,467.72\n2,1923,473.90\n3,1923,466.26\n4,1923,476.85\n5,1923,447.75\n6,1923,432.28\n7,1923,409.08\n8,1923,448.03\n9,1923,462.18\n10,1923,466.92\n11,1923,476.01\n12,1923,483.53\n1,1924,494.96\n2,1924,498.62\n3,1924,472.94\n4,1924,478.56\n5,1924,474.25\n6,1924,526.44\n7,1924,608.60\n8,1924,627.61\n9,1924,638.31\n10,1924,625.27\n11,1924,679.36\n12,1924,763.08\n1,1925,787.54\n2,1925,784.48\n3,1925,677.98\n4,1925,666.44\n5,1925,737.01\n6,1925,718.67\n7,1925,719.67\n8,1925,693.72\n9,1925,677.78\n10,1925,646.22\n11,1925,662.94\n12,1925,713.45\n1,1926,725.75\n2,1926,686.31\n3,1926,667.13\n4,1926,680.07\n5,1926,687.13\n6,1926,673.17\n7,1926,734.03\n8,1926,690.15\n9,1926,679.13\n10,1926,644.67\n11,1926,618.15\n12,1926,635.44\n1,1927,651.24\n2,1927,643.18\n3,1927,628.06\n4,1927,641.46\n5,1927,714.99\n6,1927,697.64\n7,1927,689.69\n8,1927,719.35\n9,1927,688.97\n10,1927,653.17\n11,1927,661.18\n12,1927,655.86\n1,1928,644.41\n2,1928,667.10\n3,1928,693.82\n4,1928,773.43\n5,1928,716.91\n6,1928,725.99\n7,1928,664.54\n8,1928,635.09\n9,1928,654.76\n10,1928,653.18\n11,1928,676.22\n12,1928,670.05\n1,1929,713.06\n2,1929,715.21\n3,1929,685.39\n4,1929,658.49\n5,1929,597.43\n6,1929,648.82\n7,1929,723.34\n8,1929,703.03\n9,1929,679.58\n10,1929,651.04\n11,1929,626.27\n12,1929,612.13\n1,1930,570.50\n2,1930,559.49\n3,1930,546.88\n4,1930,536.21\n5,1930,532.90\n6,1930,475.93\n7,1930,485.94\n8,1930,518.97\n9,1930,458.43\n10,1930,454.10\n11,1930,437.75\n12,1930,406.56\n1,1931,401.69\n2,1931,405.59\n3,1931,404.27\n4,1931,375.38\n5,1931,350.77\n6,1931,386.74\n7,1931,324.50\n8,1931,292.15\n9,1931,267.57\n10,1931,300.81\n11,1931,288.63\n12,1931,281.03\n1,1932,275.97\n2,1932,274.34\n3,1932,251.36\n4,1932,228.82\n5,1932,220.08\n6,1932,212.82\n7,1932,217.52\n8,1932,239.39\n9,1932,206.33\n10,1932,179.88\n11,1932,172.71\n12,1932,169.16\n1,1933,170.94\n2,1933,164.06\n3,1933,189.08\n4,1933,225.11\n5,1933,269.82\n6,1933,327.40\n7,1933,310.38\n8,1933,292.65\n9,1933,286.90\n10,1933,260.61\n11,1933,256.59\n12,1933,257.23\n1,1934,271.84\n2,1934,272.72\n3,1934,262.10\n4,1934,241.25\n5,1934,293.00\n6,1934,296.71\n7,1934,321.09\n8,1934,350.17\n9,1934,342.58\n10,1934,332.93\n11,1934,361.10\n12,1934,377.14\n1,1935,362.52\n2,1935,369.17\n3,1935,338.93\n4,1935,363.36\n5,1935,335.96\n6,1935,340.60\n7,1935,357.13\n8,1935,325.23\n9,1935,336.98\n10,1935,332.61\n11,1935,340.77\n12,1935,339.32\n1,1936,335.19\n2,1936,333.31\n3,1936,327.47\n4,1936,326.43\n5,1936,320.29\n6,1936,360.69\n7,1936,449.32\n8,1936,438.54\n9,1936,444.54\n10,1936,436.69\n11,1936,471.16\n12,1936,519.45\n1,1937,500.21\n2,1937,490.55\n3,1937,537.09\n4,1937,515.17\n5,1937,518.04\n6,1937,509.46\n7,1937,455.08\n8,1937,404.42\n9,1937,411.53\n10,1937,385.84\n11,1937,368.64\n12,1937,378.58\n1,1938,386.05\n2,1938,395.05\n3,1938,372.19\n4,1938,365.35\n5,1938,332.31\n6,1938,355.19\n7,1938,341.98\n8,1938,322.02\n9,1938,316.50\n10,1938,307.15\n11,1938,311.56\n12,1938,322.45\n1,1939,313.71\n2,1939,312.43\n3,1939,312.67\n4,1939,321.61\n5,1939,344.67\n6,1939,325.72\n7,1939,294.60\n8,1939,300.01\n9,1939,339.70\n10,1939,358.22\n11,1939,372.43\n12,1939,408.97\n1,1940,382.95\n2,1940,397.70\n3,1940,389.50\n4,1940,413.71\n5,1940,350.82\n6,1940,340.01\n7,1940,344.41\n8,1940,327.41\n9,1940,338.82\n10,1940,354.07\n11,1940,374.46\n12,1940,373.37\n1,1941,372.30\n2,1941,367.28\n3,1941,420.01\n4,1941,433.01\n5,1941,468.05\n6,1941,497.88\n7,1941,510.75\n8,1941,554.55\n9,1941,593.94\n10,1941,541.44\n11,1941,536.86\n12,1941,573.24\n1,1942,612.97\n2,1942,603.77\n3,1942,596.11\n4,1942,568.96\n5,1942,554.22\n6,1942,544.42\n7,1942,546.64\n8,1942,538.66\n9,1942,544.62\n10,1942,512.94\n11,1942,530.58\n12,1942,553.30\n1,1943,578.56\n2,1943,593.22\n3,1943,607.03\n4,1943,601.92\n5,1943,613.93\n6,1943,644.93\n7,1943,656.18\n8,1943,668.75\n9,1943,698.58\n10,1943,709.50\n11,1943,717.16\n12,1943,766.23\n1,1944,781.91\n2,1944,784.91\n3,1944,801.20\n4,1944,798.62\n5,1944,768.11\n6,1944,762.66\n7,1944,753.41\n8,1944,718.14\n9,1944,733.95\n10,1944,741.78\n11,1944,766.88\n12,1944,778.99\n1,1945,770.61\n2,1945,772.24\n3,1945,773.11\n4,1945,815.27\n5,1945,857.15\n6,1945,856.69\n7,1945,867.68\n8,1945,836.42\n9,1945,871.73\n10,1945,891.79\n11,1945,937.85\n12,1945,945.37\n1,1946,967.42\n2,1946,984.64\n3,1946,1007.19\n4,1946,1015.22\n5,1946,1016.50\n6,1946,1070.08\n7,1946,1030.19\n8,1946,1041.38\n9,1946,1081.73\n10,1946,1024.26\n11,1946,1054.68\n12,1946,1051.14\n1,1947,1114.78\n2,1947,1283.29\n3,1947,1389.07\n4,1947,1276.23\n5,1947,1374.05\n6,1947,1393.60\n7,1947,1462.32\n8,1947,1560.87\n9,1947,1776.45\n10,1947,1755.17\n11,1947,1991.17\n12,1947,1968.73\n1,1948,1965.84\n2,1948,1679.60\n3,1948,1752.61\n4,1948,1787.07\n5,1948,1854.83\n6,1948,1845.13\n7,1948,1652.28\n8,1948,1556.38\n9,1948,1553.86\n10,1948,1594.50\n11,1948,1658.84\n12,1948,1615.94\n1,1949,1527.08\n2,1949,1453.22\n3,1949,1421.75\n4,1949,1438.41\n5,1949,1397.77\n6,1949,1426.36\n7,1949,1534.07\n8,1949,1523.34\n9,1949,1535.16\n10,1949,1536.48\n11,1949,1596.04\n12,1949,1606.23\n1,1950,1606.67\n2,1950,1646.69\n3,1950,1731.28\n4,1950,1844.10\n5,1950,1958.35\n6,1950,1945.88\n7,1950,2162.24\n8,1950,2202.52\n9,1950,2107.93\n10,1950,2273.97\n11,1950,2454.00\n12,1950,2662.37\n1,1951,2827.42\n2,1951,2785.96\n3,1951,2747.98\n4,1951,2753.49\n5,1951,2607.26\n6,1951,2380.46\n7,1951,2475.97\n8,1951,2482.86\n9,1951,2630.19\n10,1951,2703.72\n11,1951,2846.14\n12,1951,2724.27\n1,1952,2644.79\n2,1952,2585.73\n3,1952,2589.90\n4,1952,2517.50\n5,1952,2652.79\n6,1952,2680.95\n7,1952,2709.10\n8,1952,2745.31\n9,1952,2702.69\n10,1952,2683.81\n11,1952,2733.57\n12,1952,2630.75\n1,1953,2558.69\n2,1953,2542.26\n3,1953,2526.39\n4,1953,2522.52\n5,1953,2420.49\n6,1953,2364.74\n7,1953,2388.31\n8,1953,2391.52\n9,1953,2438.74\n10,1953,2538.98\n11,1953,2710.93\n12,1953,2712.06\n1,1954,2723.22\n2,1954,2827.17\n3,1954,2917.93\n4,1954,3024.46\n5,1954,2837.65\n6,1954,2913.99\n7,1954,3186.46\n8,1954,3089.12\n9,1954,3064.09\n10,1954,3239.81\n11,1954,3256.03\n12,1954,3206.65\n1,1955,3200.55\n2,1955,3030.99\n3,1955,2950.15\n4,1955,2930.81\n5,1955,2961.03\n6,1955,2944.91\n7,1955,2856.48\n8,1955,2831.80\n9,1955,3015.38\n10,1955,2987.46\n11,1955,2920.97\n12,1955,2985.79\n1,1956,3046.62\n2,1956,3075.52\n3,1956,3226.96\n4,1956,3548.74\n5,1956,3409.64\n6,1956,3350.17\n7,1956,3354.34\n8,1956,3319.83\n9,1956,3342.67\n10,1956,3518.25\n11,1956,3593.56\n12,1956,3437.26\n1,1957,3483.86\n2,1957,3403.61\n3,1957,3369.91\n4,1957,3333.20\n5,1957,3299.37\n6,1957,3358.70\n7,1957,3389.84\n8,1957,3395.32\n9,1957,3264.04\n10,1957,3332.33\n11,1957,3341.93\n12,1957,3229.14\n1,1958,3185.03\n2,1958,3277.89\n3,1958,3371.94\n4,1958,3395.23\n5,1958,3452.46\n6,1958,3446.97\n7,1958,3496.78\n8,1958,3442.34\n9,1958,3372.78\n10,1958,3365.32\n11,1958,3411.18\n12,1958,3380.46\n1,1959,3449.31\n2,1959,3538.48\n3,1959,3615.62\n4,1959,3614.85\n5,1959,3586.22\n6,1959,3632.48\n7,1959,3682.03\n8,1959,3624.73\n9,1959,3653.98\n10,1959,3739.86\n11,1959,3720.52\n12,1959,3730.86\n1,1960,3731.15\n2,1960,3692.88\n3,1960,3796.11\n4,1960,3793.28\n5,1960,3816.34\n6,1960,3792.21\n7,1960,3815.52\n8,1960,3805.37\n9,1960,3796.59\n10,1960,3835.67\n11,1960,3740.33\n12,1960,3890.80\n1,1961,4119.44\n2,1961,4404.16\n3,1961,4212.78\n4,1961,4416.29\n5,1961,4288.85\n6,1961,4216.91\n7,1961,4193.18\n8,1961,4139.98\n9,1961,4037.66\n10,1961,4053.50\n11,1961,4054.61\n12,1961,4058.65\n1,1962,3990.63\n2,1962,3923.71\n3,1962,4021.74\n4,1962,4010.14\n5,1962,3977.15\n6,1962,3939.82\n7,1962,3863.17\n8,1962,3853.64\n9,1962,3832.38\n10,1962,3948.05\n11,1962,4013.60\n12,1962,4085.81\n1,1963,4201.36\n2,1963,4217.60\n3,1963,4161.50\n4,1963,4117.40\n5,1963,4131.18\n6,1963,4198.99\n7,1963,4115.49\n8,1963,4128.92\n9,1963,4379.62\n10,1963,4467.77\n11,1963,4311.89\n12,1963,4368.49\n1,1964,4282.70\n2,1964,4202.42\n3,1964,4126.05\n4,1964,4086.36\n5,1964,4075.31\n6,1964,4087.46\n7,1964,4078.72\n8,1964,4230.75\n9,1964,4345.47\n10,1964,4403.44\n11,1964,4550.53\n12,1964,4480.86\n1,1965,4616.01\n2,1965,4586.00\n3,1965,4618.67\n4,1965,4618.67\n5,1965,4575.16\n6,1965,4638.01\n7,1965,4633.95\n8,1965,4648.27\n9,1965,4663.81\n10,1965,4737.39\n11,1965,4842.04\n12,1965,4933.60\n1,1966,5090.42\n2,1966,5040.40\n3,1966,4942.73\n4,1966,5076.51\n5,1966,5113.88\n6,1966,5378.04\n7,1966,5480.01\n8,1966,5416.81\n9,1966,5260.59\n10,1966,5111.50\n11,1966,5230.70\n12,1966,5153.36\n1,1967,5157.42\n2,1967,5260.86\n3,1967,5330.74\n4,1967,5372.05\n5,1967,5673.88\n6,1967,5382.53\n7,1967,5308.11\n8,1967,5202.05\n9,1967,5286.60\n10,1967,5373.29\n11,1967,5356.22\n12,1967,5437.35\n1,1968,5444.01\n2,1968,5441.24\n3,1968,5418.05\n4,1968,5359.98\n5,1968,5319.69\n6,1968,5216.73\n7,1968,5063.07\n8,1968,5018.95\n9,1968,4989.29\n10,1968,5328.22\n11,1968,5492.53\n12,1968,5539.86\n1,1969,5539.23\n2,1969,5580.44\n3,1969,5550.52\n4,1969,5674.60\n5,1969,5770.02\n6,1969,5696.05\n7,1969,5623.21\n8,1969,5696.27\n9,1969,6000.97\n10,1969,6260.22\n11,1969,6191.07\n12,1969,6150.97\n1,1970,6287.63\n2,1970,6382.59\n3,1970,6393.51\n4,1970,6373.68\n5,1970,6184.36\n6,1970,6623.10\n7,1970,6555.18\n8,1970,6889.34\n9,1970,6975.89\n10,1970,6951.25\n11,1970,6855.69\n12,1970,6917.59\n1,1971,7269.18\n2,1971,7198.86\n3,1971,7273.99\n4,1971,7319.66\n5,1971,7589.51\n6,1971,7512.59\n7,1971,7563.07\n8,1971,7528.81\n9,1971,7528.21\n10,1971,7876.80\n11,1971,8083.54\n12,1971,8375.63\n1,1972,8699.57\n2,1972,8675.53\n3,1972,8790.33\n4,1972,9047.56\n5,1972,9259.11\n6,1972,9504.32\n7,1972,9418.38\n8,1972,9980.92\n9,1972,10736.39\n10,1972,10627.60\n11,1972,11045.91\n12,1972,11929.39\n1,1973,12336.87\n2,1973,12871.76\n3,1973,12565.25\n4,1973,13323.72\n5,1973,15753.59\n6,1973,15486.75\n7,1973,19478.03\n8,1973,19957.03\n9,1973,18954.56\n10,1973,17943.66\n11,1973,18883.04\n12,1973,20871.17\n1,1974,23200.07\n2,1974,23076.86\n3,1974,20421.01\n4,1974,20646.99\n5,1974,19250.25\n6,1974,21640.45\n7,1974,26797.69\n8,1974,25483.29\n9,1974,28566.46\n10,1974,31137.57\n11,1974,31743.38\n12,1974,29118.18\n1,1975,24565.56\n2,1975,22007.67\n3,1975,23867.19\n4,1975,22766.14\n5,1975,22424.17\n6,1975,22793.79\n7,1975,24578.78\n8,1975,26939.53\n9,1975,27246.65\n10,1975,25055.98\n11,1975,24750.67\n12,1975,24103.38\n1,1976,22950.05\n2,1976,24262.65\n3,1976,24312.53\n4,1976,25248.30\n5,1976,25705.06\n6,1976,25275.95\n7,1976,23038.40\n8,1976,22390.51\n9,1976,20177.60\n10,1976,19928.79\n11,1976,20213.06\n12,1976,21229.37\n1,1977,21172.87\n2,1977,21120.58\n3,1977,21889.27\n4,1977,23034.19\n5,1977,22243.26\n6,1977,21704.76\n7,1977,19856.67\n8,1977,20051.39\n9,1977,20782.82\n10,1977,21380.82\n11,1977,22289.54\n12,1977,23430.85\n1,1978,24186.32\n2,1978,24567.36\n3,1978,27103.61\n4,1978,27685.98\n5,1978,29797.32\n6,1978,27014.66\n7,1978,27750.89\n8,1978,28508.16\n9,1978,30111.65\n10,1978,30413.95\n11,1978,31201.27\n12,1978,30836.46\n1,1979,33060.79\n2,1979,34996.03\n3,1979,34374.59\n4,1979,36431.23\n5,1979,34714.76\n6,1979,35179.34\n7,1979,33711.08\n8,1979,37593.58\n9,1979,39209.09\n10,1979,37968.01\n11,1979,40599.82\n12,1979,41262.73\n1,1980,43748.49\n2,1980,43344.02\n3,1980,37285.87\n4,1980,38667.58\n5,1980,41018.72\n6,1980,43327.79\n7,1980,45385.03\n8,1980,46115.26\n9,1980,48692.38\n10,1980,50220.14\n11,1980,49522.97\n12,1980,45836.39\n1,1981,42923.91\n2,1981,41678.02\n3,1981,41607.71\n4,1981,41039.76\n5,1981,41262.13\n6,1981,38640.54\n7,1981,40397.28\n8,1981,39070.86\n9,1981,39020.97\n10,1981,39138.77\n11,1981,37374.82\n12,1981,35289.92\n1,1982,38111.05\n2,1982,37254.61\n3,1982,38644.14\n4,1982,40037.28\n5,1982,40128.03\n6,1982,38920.60\n7,1982,39766.22\n8,1982,39676.67\n9,1982,38516.73\n10,1982,38293.15\n11,1982,39821.51\n12,1982,39368.96\n1,1983,39643.62\n2,1983,39190.46\n3,1983,41831.28\n4,1983,42241.17\n5,1983,42463.54\n6,1983,43007.45\n7,1983,44521.99\n8,1983,45302.70\n9,1983,44071.83\n10,1983,43533.93\n11,1983,43571.80\n12,1983,45768.48\n1,1984,46248.68\n2,1984,46469.85\n3,1984,48751.27\n4,1984,48203.16\n5,1984,49602.90\n6,1984,48482.02\n7,1984,45225.77\n8,1984,47167.02\n9,1984,46796.80\n10,1984,47010.76\n11,1984,47189.26\n12,1984,46249.28\n1,1985,46832.86\n2,1985,46218.03\n3,1985,48215.78\n4,1985,46656.16\n5,1985,46651.36\n6,1985,45291.88\n7,1985,44273.77\n8,1985,44936.68\n9,1985,47492.16\n10,1985,50931.13\n11,1985,51817.61\n12,1985,50880.04\n1,1986,46263.71\n2,1986,44651.81\n3,1986,44552.64\n4,1986,47062.44\n5,1986,45295.48\n6,1986,47008.35\n7,1986,47462.11\n8,1986,51536.94\n9,1986,50234.56\n10,1986,50763.45\n11,1986,52300.22\n12,1986,51920.38\n1,1987,54890.56\n2,1987,51594.64\n3,1987,55762.62\n4,1987,58563.91\n5,1987,61267.84\n6,1987,63457.31\n7,1987,66289.26\n8,1987,64946.61\n9,1987,65425.61\n10,1987,66113.76\n11,1987,66099.93\n12,1987,64263.86\n1,1988,65971.92\n2,1988,65242.91\n3,1988,68532.21\n4,1988,70656.17\n5,1988,73151.55\n6,1988,71108.13\n7,1988,71528.83\n8,1988,71045.62\n9,1988,69105.57\n10,1988,72450.78\n11,1988,76613.95\n12,1988,82215.94\n1,1989,82554.31\n2,1989,86105.06\n3,1989,91914.39\n4,1989,94833.48\n5,1989,93621.25\n6,1989,96894.93\n7,1989,94172.37\n8,1989,97444.25\n9,1989,103248.17\n10,1989,102521.56\n11,1989,104175.53\n12,1989,113688.87\n1,1990,113191.23\n2,1990,112821.61\n3,1990,113647.40\n4,1990,112455.60\n5,1990,111625.01\n6,1990,109897.11\n7,1990,118967.51\n8,1990,138703.38\n9,1990,170521.88\n10,1990,160202.60\n11,1990,149686.78\n12,1990,146746.64\n1,1991,132970.54\n2,1991,134819.49\n3,1991,139894.33\n4,1991,143063.01\n5,1991,142989.75\n6,1991,139603.92\n7,1991,146731.74\n8,1991,148993.93\n9,1991,150169.86\n10,1991,154477.21\n11,1991,148237.92\n12,1991,137744.76\n1,1992,141531.41\n2,1992,139979.43\n3,1992,141543.80\n4,1992,145785.03\n5,1992,149701.93\n6,1992,148876.68\n7,1992,146802.12\n8,1992,146955.56\n9,1992,148640.61\n10,1992,145372.39\n11,1992,143513.47\n12,1992,143836.57\n1,1993,145580.58\n2,1993,147271.92\n3,1993,150341.27\n4,1993,148725.89\n5,1993,144587.35\n6,1993,140062.36\n7,1993,138851.34\n8,1993,139994.40\n9,1993,140350.97\n10,1993,135308.16\n11,1993,128521.83\n12,1993,126104.11\n1,1994,136371.65\n2,1994,133406.58\n3,1994,131818.36\n4,1994,135270.66\n5,1994,137283.31\n6,1994,140660.38\n7,1994,143081.96\n8,1994,133438.38\n9,1994,132182.69\n10,1994,132778.28\n11,1994,128430.49\n12,1994,132778.53\n1,1995,129479.05\n2,1995,130524.87\n3,1995,132302.46\n4,1995,136353.73\n5,1995,135202.38\n6,1995,132790.18\n7,1995,136258.00\n8,1995,139146.43\n9,1995,139734.10\n10,1995,141140.51\n11,1995,144950.79\n12,1995,159775.22\n1,1996,159516.97\n2,1996,165911.44\n3,1996,176696.32\n4,1996,186897.28\n5,1996,185421.44\n6,1996,192615.31\n7,1996,183499.96\n8,1996,189409.36\n9,1996,196126.87\n10,1996,195641.39\n11,1996,211922.25\n12,1996,213966.08\n1,1997,210820.77\n2,1997,196287.22\n3,1997,199598.11\n4,1997,204215.59\n5,1997,205676.22\n6,1997,194548.99\n7,1997,202519.54\n8,1997,207641.39\n9,1997,212893.29\n10,1997,218750.51\n11,1997,197182.85\n12,1997,183858.22\n1,1998,180894.96\n2,1998,168958.72\n3,1998,168081.18\n4,1998,163498.04\n5,1998,155784.54\n6,1998,150261.10\n7,1998,138449.33\n8,1998,130278.45\n9,1998,143593.77\n10,1998,136857.81\n11,1998,120205.70\n12,1998,118136.79\n1,1999,118652.46\n2,1999,113186.84\n3,1999,132307.10\n4,1999,137774.94\n5,1999,130256.71\n6,1999,138634.37\n7,1999,143607.70\n8,1999,153715.02\n9,1999,161868.16\n10,1999,153520.42\n11,1999,159732.48\n12,1999,166479.20\n1,2000,178516.65\n2,2000,189669.54\n3,2000,187468.10\n4,2000,185760.42\n5,2000,206560.84\n6,2000,221281.73\n7,2000,204287.77\n8,2000,235765.86\n9,2000,232538.16\n10,2000,233062.06\n11,2000,254539.59\n12,2000,249291.70\n1,2001,236060.60\n2,2001,232765.52\n3,2001,223642.71\n4,2001,235652.70\n5,2001,228940.24\n6,2001,212378.34\n7,2001,212886.55\n8,2001,214921.92\n9,2001,191374.90\n10,2001,181724.77\n11,2001,171964.65\n12,2001,169685.09\n1,2002,164391.13\n2,2002,171571.66\n3,2002,194702.55\n4,2002,196858.06\n5,2002,188292.39\n6,2002,194727.13\n7,2002,195853.00\n8,2002,207698.06\n9,2002,217182.73\n10,2002,206934.90\n11,2002,206485.72\n12,2002,224100.87\n1,2003,244250.23\n2,2003,273859.79\n3,2003,234393.52\n4,2003,220008.43\n5,2003,241102.14\n6,2003,241631.27\n7,2003,243352.07\n8,2003,253296.47\n9,2003,242951.98\n10,2003,248274.68\n11,2003,254627.98\n12,2003,270529.43\n1,2004,271589.43\n2,2004,291742.44\n3,2004,297605.31\n4,2004,305813.22\n5,2004,319962.83\n6,2004,304924.63\n7,2004,328564.39\n8,2004,315806.22\n9,2004,355641.80\n10,2004,370394.88\n11,2004,352477.63\n12,2004,317270.16\n1,2005,338722.55\n2,2005,359812.11\n3,2005,387011.28\n4,2005,351983.41\n5,2005,349403.95\n6,2005,369652.60\n7,2005,389966.13\n8,2005,449020.55\n9,2005,449101.13\n10,2005,402730.99\n11,2005,387234.75\n12,2005,398342.73\n1,2006,415607.32\n2,2006,373612.73\n3,2006,392780.60\n4,2006,417657.11\n5,2006,414442.70\n6,2006,419260.35\n7,2006,427667.43\n8,2006,396629.50\n9,2006,354164.64\n10,2006,345068.78\n11,2006,364144.49\n12,2006,338225.10\n1,2007,330480.16\n2,2007,344680.94\n3,2007,355828.94\n4,2007,354850.28\n5,2007,349338.07\n6,2007,360591.16\n7,2007,380589.46\n8,2007,364654.79\n9,2007,401943.72\n10,2007,440558.18\n11,2007,424269.57\n12,2007,448729.76\n1,2008,448615.40\n2,2008,499122.66\n3,2008,493262.08\n4,2008,532548.27\n5,2008,581031.21\n6,2008,634582.16\n7,2008,556996.10\n8,2008,517436.88\n9,2008,453057.51\n10,2008,325301.81\n11,2008,277024.44\n12,2008,240125.82\n1,2009,218661.27\n2,2009,205321.98\n3,2009,214572.68\n4,2009,212601.50\n5,2009,254409.94\n6,2009,255862.86\n7,2009,256996.56\n8,2009,250920.43\n9,2009,251353.64\n10,2009,266115.02\n11,2009,270171.52\n12,2009,272506.67\n1,2010,250993.94\n2,2010,264945.23\n3,2010,270072.95\n4,2010,277567.46\n5,2010,240958.51\n6,2010,241963.74\n7,2010,255586.66\n8,2010,241466.05\n9,2010,261962.14\n10,2010,268659.94\n11,2010,271568.07\n12,2010,297102.59\n1,2011,306169.43\n2,2011,317637.13\n3,2011,331458.91\n4,2011,346081.95\n5,2011,322242.34\n6,2011,305146.16\n7,2011,312576.11\n8,2011,306810.29\n9,2011,269475.20\n10,2011,295738.79\n11,2011,299928.09\n12,2011,293607.24\n1,2012,300161.47\n2,2012,318361.76\n3,2012,310879.22\n4,2012,309283.55\n5,2012,269144.71\n6,2012,272378.12\n7,2012,289738.21\n8,2012,308180.70\n9,2012,303797.56\n10,2012,291445.67\n11,2012,295750.68\n12,2012,293832.87\n1,2013,306636.72\n2,2013,293189.79\n3,2013,295446.57\n4,2013,281471.36\n5,2013,277279.93\n6,2013,277929.02\n7,2013,291584.50\n8,2013,301428.39\n9,2013,291204.66\n10,2013,287003.02\n11,2013,284766.08\n12,2013,290254.47\n1,2014,285504.71\n2,2014,298375.88\n3,2014,298792.37\n4,2014,301008.89\n5,2014,300480.60\n6,2014,306841.66\n7,2014,290588.03\n8,2014,285823.25\n9,2014,268606.20\n10,2014,252533.48\n11,2014,224955.67\n12,2014,194293.51\n1,2015,179728.10\n2,2015,191347.97\n3,2015,178325.95\n4,2015,198044.99\n5,2015,194109.60\n6,2015,193892.03\n7,2015,166549.22\n8,2015,167048.06\n9,2015,156479.35\n10,2015,156838.76\n11,2015,142776.40\n12,2015,130455.76\n1,2016,123710.05\n2,2016,121222.49\n3,2016,127199.50\n4,2016,140097.71\n5,2016,143204.92\n6,2016,143319.71\n7,2016,129607.13\n8,2016,131899.98\n9,2016,137366.73\n10,2016,135310.09\n11,2016,138740.03\n12,2016,145281.99\n1,2017,143229.56\n2,2017,143561.91\n3,2017,137942.50\n4,2017,135037.23\n5,2017,132962.56\n6,2017,130407.07\n7,2017,136385.89\n8,2017,135326.92\n9,2017,139821.85\n10,2017,145159.99\n11,2017,147166.15\n12,2017,153660.03\n1,2018,158914.03\n2,2018,153606.54\n3,2018,157019.06\n4,2018,164928.31\n5,2018,167315.51\n6,2018,169583.11\n7,2018,163595.28\n8,2018,165358.03\n9,2018,171854.31\n10,2018,161812.69\n11,2018,143558.31\n12,2018,132430.06\n1,2019,144334.21\n2,2019,149837.63\n3,2019,152248.87\n4,2019,156586.93\n5,2019,143725.39\n6,2019,150093.66\n7,2019,149775.72\n8,2019,141353.81\n9,2019,143826.36\n10,2019,145616.76\n11,2019,145598.12\n12,2019,155772.57\n1,2020,138910.12\n2,2020,127256.60\n3,2020,89810.86\n4,2020,81125.11\n5,2020,94407.36\n6,2020,99213.62\n7,2020,102980.13\n8,2020,107702.24\n9,2020,103782.47\n10,2020,100072.45\n11,2020,112122.04\n12,2020,118816.66\n1,2021,124690.90\n2,2021,137886.00\n3,2021,134915.83\n4,2021,146020.03\n5,2021,149702.40\n6,2021,156128.97\n7,2021,158587.09\n8,2021,154936.57\n9,2021,164284.63\n10,2021,173808.19\n11,2021,154996.07\n12,2021,166763.18\n1,2022,186163.69\n2,2022,202497.25\n3,2022,222004.73\n4,2022,233370.37\n5,2022,245201.79\n6,2022,226460.60\n7,2022,226364.43\n8,2022,220301.48\n9,2022,203115.08\n10,2022,216733.90\n11,2022,213037.71\n12,2022,210097.58\n1,2023,209914.28\n2,2023,201883.02\n3,2023,199715.19\n4,2023,198200.65\n5,2023,186095.77\n6,2023,194266.46\n7,2023,215122.00\n8,2023,216405.75\n9,2023,225312.67\n10,2023,215884.08\n11,2023,208015.09\n12,2023,201131.76\n1,2024,210115.61\n2,2024,211947.48\n3,2024,221971.68\n4,2024,224544.59\n5,2024,220274.43\n6,2024,223417.70\n7,2024,215546.91\n8,2024,211832.69\n9,2024,211660.80\n10,2024,212623.61\n11,2024,212753.43\n12,2024,219727.52\n1,2025,227014.12\n2,2025,223962.81\n3,2025,230466.91\n4,2025,211027.94\n5,2025,214383.96\n6,2025,223986.25\n7,2025,232084.22\n8,2025,231610.62\n9,2025,233111.34\n10,2025,236258.21\n11,2025,236081.51\n12,2025,235367.52\n`,
        'cash': `1,1871,100.00\n2,1871,100.53\n3,1871,101.06\n4,1871,101.60\n5,1871,102.13\n6,1871,102.67\n7,1871,103.22\n8,1871,103.76\n9,1871,104.31\n10,1871,104.86\n11,1871,105.42\n12,1871,105.98\n1,1872,106.67\n2,1872,107.36\n3,1872,108.06\n4,1872,108.76\n5,1872,109.47\n6,1872,110.18\n7,1872,110.90\n8,1872,111.62\n9,1872,112.35\n10,1872,113.08\n11,1872,113.82\n12,1872,114.56\n1,1873,115.35\n2,1873,116.16\n3,1873,116.96\n4,1873,117.78\n5,1873,118.60\n6,1873,119.42\n7,1873,120.25\n8,1873,121.09\n9,1873,121.93\n10,1873,122.78\n11,1873,123.64\n12,1873,124.50\n1,1874,125.21\n2,1874,125.92\n3,1874,126.64\n4,1874,127.37\n5,1874,128.10\n6,1874,128.83\n7,1874,129.57\n8,1874,130.31\n9,1874,131.05\n10,1874,131.80\n11,1874,132.55\n12,1874,133.31\n1,1875,133.86\n2,1875,134.42\n3,1875,134.97\n4,1875,135.53\n5,1875,136.09\n6,1875,136.65\n7,1875,137.22\n8,1875,137.78\n9,1875,138.35\n10,1875,138.93\n11,1875,139.50\n12,1875,140.08\n1,1876,140.70\n2,1876,141.32\n3,1876,141.95\n4,1876,142.58\n5,1876,143.21\n6,1876,143.85\n7,1876,144.49\n8,1876,145.13\n9,1876,145.78\n10,1876,146.42\n11,1876,147.07\n12,1876,147.73\n1,1877,148.35\n2,1877,148.97\n3,1877,149.59\n4,1877,150.22\n5,1877,150.85\n6,1877,151.48\n7,1877,152.12\n8,1877,152.75\n9,1877,153.39\n10,1877,154.04\n11,1877,154.68\n12,1877,155.33\n1,1878,155.97\n2,1878,156.60\n3,1878,157.24\n4,1878,157.88\n5,1878,158.53\n6,1878,159.18\n7,1878,159.83\n8,1878,160.48\n9,1878,161.13\n10,1878,161.79\n11,1878,162.45\n12,1878,163.12\n1,1879,163.69\n2,1879,164.27\n3,1879,164.86\n4,1879,165.44\n5,1879,166.03\n6,1879,166.61\n7,1879,167.20\n8,1879,167.80\n9,1879,168.39\n10,1879,168.99\n11,1879,169.58\n12,1879,170.19\n1,1880,170.91\n2,1880,171.63\n3,1880,172.36\n4,1880,173.10\n5,1880,173.83\n6,1880,174.57\n7,1880,175.31\n8,1880,176.06\n9,1880,176.81\n10,1880,177.56\n11,1880,178.31\n12,1880,179.07\n1,1881,179.79\n2,1881,180.50\n3,1881,181.22\n4,1881,181.95\n5,1881,182.67\n6,1881,183.40\n7,1881,184.13\n8,1881,184.87\n9,1881,185.61\n10,1881,186.35\n11,1881,187.09\n12,1881,187.84\n1,1882,188.66\n2,1882,189.49\n3,1882,190.32\n4,1882,191.15\n5,1882,191.99\n6,1882,192.83\n7,1882,193.68\n8,1882,194.53\n9,1882,195.38\n10,1882,196.24\n11,1882,197.10\n12,1882,197.96\n1,1883,198.84\n2,1883,199.73\n3,1883,200.62\n4,1883,201.51\n5,1883,202.41\n6,1883,203.32\n7,1883,204.22\n8,1883,205.13\n9,1883,206.05\n10,1883,206.97\n11,1883,207.89\n12,1883,208.82\n1,1884,209.80\n2,1884,210.79\n3,1884,211.78\n4,1884,212.78\n5,1884,213.78\n6,1884,214.78\n7,1884,215.80\n8,1884,216.81\n9,1884,217.83\n10,1884,218.86\n11,1884,219.89\n12,1884,220.92\n1,1885,221.70\n2,1885,222.48\n3,1885,223.26\n4,1885,224.05\n5,1885,224.84\n6,1885,225.63\n7,1885,226.42\n8,1885,227.22\n9,1885,228.02\n10,1885,228.82\n11,1885,229.62\n12,1885,230.43\n1,1886,231.25\n2,1886,232.07\n3,1886,232.89\n4,1886,233.72\n5,1886,234.55\n6,1886,235.38\n7,1886,236.22\n8,1886,237.06\n9,1886,237.90\n10,1886,238.74\n11,1886,239.59\n12,1886,240.44\n1,1887,241.66\n2,1887,242.89\n3,1887,244.13\n4,1887,245.37\n5,1887,246.62\n6,1887,247.88\n7,1887,249.14\n8,1887,250.41\n9,1887,251.68\n10,1887,252.97\n11,1887,254.25\n12,1887,255.55\n1,1888,256.62\n2,1888,257.69\n3,1888,258.77\n4,1888,259.85\n5,1888,260.94\n6,1888,262.03\n7,1888,263.13\n8,1888,264.23\n9,1888,265.33\n10,1888,266.44\n11,1888,267.56\n12,1888,268.68\n1,1889,269.72\n2,1889,270.78\n3,1889,271.83\n4,1889,272.89\n5,1889,273.96\n6,1889,275.03\n7,1889,276.10\n8,1889,277.17\n9,1889,278.26\n10,1889,279.34\n11,1889,280.43\n12,1889,281.52\n1,1890,282.79\n2,1890,284.07\n3,1890,285.35\n4,1890,286.64\n5,1890,287.93\n6,1890,289.23\n7,1890,290.53\n8,1890,291.84\n9,1890,293.15\n10,1890,294.48\n11,1890,295.80\n12,1890,297.14\n1,1891,298.62\n2,1891,300.10\n3,1891,301.59\n4,1891,303.09\n5,1891,304.60\n6,1891,306.12\n7,1891,307.64\n8,1891,309.17\n9,1891,310.71\n10,1891,312.26\n11,1891,313.81\n12,1891,315.37\n1,1892,316.40\n2,1892,317.44\n3,1892,318.48\n4,1892,319.52\n5,1892,320.57\n6,1892,321.62\n7,1892,322.67\n8,1892,323.73\n9,1892,324.79\n10,1892,325.85\n11,1892,326.92\n12,1892,327.99\n1,1893,330.32\n2,1893,332.66\n3,1893,335.03\n4,1893,337.40\n5,1893,339.80\n6,1893,342.21\n7,1893,344.64\n8,1893,347.09\n9,1893,349.55\n10,1893,352.04\n11,1893,354.54\n12,1893,357.05\n1,1894,358.04\n2,1894,359.03\n3,1894,360.02\n4,1894,361.02\n5,1894,362.02\n6,1894,363.02\n7,1894,364.02\n8,1894,365.03\n9,1894,366.04\n10,1894,367.05\n11,1894,368.07\n12,1894,369.09\n1,1895,370.04\n2,1895,370.99\n3,1895,371.95\n4,1895,372.90\n5,1895,373.87\n6,1895,374.83\n7,1895,375.79\n8,1895,376.76\n9,1895,377.73\n10,1895,378.70\n11,1895,379.68\n12,1895,380.66\n1,1896,382.48\n2,1896,384.32\n3,1896,386.16\n4,1896,388.02\n5,1896,389.88\n6,1896,391.75\n7,1896,393.63\n8,1896,395.52\n9,1896,397.42\n10,1896,399.33\n11,1896,401.24\n12,1896,403.17\n1,1897,404.33\n2,1897,405.49\n3,1897,406.65\n4,1897,407.81\n5,1897,408.98\n6,1897,410.15\n7,1897,411.33\n8,1897,412.51\n9,1897,413.69\n10,1897,414.88\n11,1897,416.07\n12,1897,417.26\n1,1898,418.49\n2,1898,419.73\n3,1898,420.97\n4,1898,422.22\n5,1898,423.47\n6,1898,424.72\n7,1898,425.98\n8,1898,427.24\n9,1898,428.50\n10,1898,429.77\n11,1898,431.04\n12,1898,432.32\n1,1899,433.53\n2,1899,434.74\n3,1899,435.96\n4,1899,437.18\n5,1899,438.40\n6,1899,439.63\n7,1899,440.86\n8,1899,442.10\n9,1899,443.33\n10,1899,444.57\n11,1899,445.82\n12,1899,447.07\n1,1900,448.80\n2,1900,450.53\n3,1900,452.27\n4,1900,454.02\n5,1900,455.78\n6,1900,457.54\n7,1900,459.31\n8,1900,461.09\n9,1900,462.87\n10,1900,464.66\n11,1900,466.46\n12,1900,468.26\n1,1901,469.94\n2,1901,471.62\n3,1901,473.31\n4,1901,475.01\n5,1901,476.71\n6,1901,478.42\n7,1901,480.13\n8,1901,481.85\n9,1901,483.58\n10,1901,485.31\n11,1901,487.05\n12,1901,488.80\n1,1902,490.72\n2,1902,492.65\n3,1902,494.59\n4,1902,496.53\n5,1902,498.48\n6,1902,500.45\n7,1902,502.41\n8,1902,504.39\n9,1902,506.37\n10,1902,508.37\n11,1902,510.36\n12,1902,512.37\n1,1903,514.72\n2,1903,517.08\n3,1903,519.45\n4,1903,521.83\n5,1903,524.22\n6,1903,526.62\n7,1903,529.04\n8,1903,531.46\n9,1903,533.90\n10,1903,536.35\n11,1903,538.80\n12,1903,541.27\n1,1904,543.23\n2,1904,545.20\n3,1904,547.17\n4,1904,549.15\n5,1904,551.13\n6,1904,553.13\n7,1904,555.13\n8,1904,557.13\n9,1904,559.15\n10,1904,561.17\n11,1904,563.20\n12,1904,565.24\n1,1905,567.20\n2,1905,569.17\n3,1905,571.15\n4,1905,573.14\n5,1905,575.13\n6,1905,577.13\n7,1905,579.13\n8,1905,581.14\n9,1905,583.16\n10,1905,585.19\n11,1905,587.22\n12,1905,589.26\n1,1906,591.95\n2,1906,594.65\n3,1906,597.36\n4,1906,600.08\n5,1906,602.82\n6,1906,605.57\n7,1906,608.33\n8,1906,611.10\n9,1906,613.88\n10,1906,616.68\n11,1906,619.49\n12,1906,622.32\n1,1907,625.55\n2,1907,628.80\n3,1907,632.06\n4,1907,635.34\n5,1907,638.64\n6,1907,641.96\n7,1907,645.29\n8,1907,648.64\n9,1907,652.01\n10,1907,655.39\n11,1907,658.79\n12,1907,662.21\n1,1908,665.15\n2,1908,668.10\n3,1908,671.06\n4,1908,674.04\n5,1908,677.02\n6,1908,680.03\n7,1908,683.04\n8,1908,686.07\n9,1908,689.11\n10,1908,692.17\n11,1908,695.23\n12,1908,698.32\n1,1909,700.44\n2,1909,702.57\n3,1909,704.71\n4,1909,706.85\n5,1909,709.00\n6,1909,711.16\n7,1909,713.32\n8,1909,715.49\n9,1909,717.67\n10,1909,719.85\n11,1909,722.04\n12,1909,724.24\n1,1910,727.41\n2,1910,730.60\n3,1910,733.80\n4,1910,737.02\n5,1910,740.25\n6,1910,743.49\n7,1910,746.75\n8,1910,750.03\n9,1910,753.31\n10,1910,756.61\n11,1910,759.93\n12,1910,763.26\n1,1911,765.81\n2,1911,768.36\n3,1911,770.92\n4,1911,773.49\n5,1911,776.07\n6,1911,778.66\n7,1911,781.25\n8,1911,783.86\n9,1911,786.47\n10,1911,789.09\n11,1911,791.72\n12,1911,794.36\n1,1912,797.24\n2,1912,800.13\n3,1912,803.03\n4,1912,805.94\n5,1912,808.86\n6,1912,811.79\n7,1912,814.74\n8,1912,817.69\n9,1912,820.65\n10,1912,823.63\n11,1912,826.61\n12,1912,829.61\n1,1913,833.52\n2,1913,837.44\n3,1913,841.38\n4,1913,845.35\n5,1913,849.33\n6,1913,853.32\n7,1913,857.34\n8,1913,861.38\n9,1913,865.43\n10,1913,869.51\n11,1913,873.60\n12,1913,877.72\n1,1914,881.11\n2,1914,884.52\n3,1914,887.94\n4,1914,891.37\n5,1914,894.82\n6,1914,898.28\n7,1914,901.75\n8,1914,905.24\n9,1914,908.74\n10,1914,912.25\n11,1914,915.78\n12,1914,919.32\n1,1915,922.12\n2,1915,924.92\n3,1915,927.73\n4,1915,930.56\n5,1915,933.39\n6,1915,936.23\n7,1915,939.07\n8,1915,941.93\n9,1915,944.80\n10,1915,947.67\n11,1915,950.55\n12,1915,953.44\n1,1916,956.33\n2,1916,959.24\n3,1916,962.15\n4,1916,965.06\n5,1916,967.99\n6,1916,970.93\n7,1916,973.87\n8,1916,976.83\n9,1916,979.79\n10,1916,982.76\n11,1916,985.74\n12,1916,988.73\n1,1917,992.23\n2,1917,995.75\n3,1917,999.28\n4,1917,1002.81\n5,1917,1006.37\n6,1917,1009.93\n7,1917,1013.51\n8,1917,1017.10\n9,1917,1020.70\n10,1917,1024.31\n11,1917,1027.94\n12,1917,1031.58\n1,1918,1036.72\n2,1918,1041.89\n3,1918,1047.08\n4,1918,1052.30\n5,1918,1057.54\n6,1918,1062.81\n7,1918,1068.11\n8,1918,1073.43\n9,1918,1078.78\n10,1918,1084.16\n11,1918,1089.56\n12,1918,1094.99\n1,1919,1100.06\n2,1919,1105.16\n3,1919,1110.28\n4,1919,1115.43\n5,1919,1120.59\n6,1919,1125.79\n7,1919,1131.00\n8,1919,1136.24\n9,1919,1141.51\n10,1919,1146.80\n11,1919,1152.11\n12,1919,1157.45\n1,1920,1164.49\n2,1920,1171.57\n3,1920,1178.70\n4,1920,1185.87\n5,1920,1193.08\n6,1920,1200.34\n7,1920,1207.64\n8,1920,1214.99\n9,1920,1222.38\n10,1920,1229.82\n11,1920,1237.30\n12,1920,1244.83\n1,1921,1252.54\n2,1921,1260.31\n3,1921,1268.12\n4,1921,1275.99\n5,1921,1283.90\n6,1921,1291.86\n7,1921,1299.87\n8,1921,1307.93\n9,1921,1316.04\n10,1921,1324.19\n11,1921,1332.40\n12,1921,1340.67\n1,1922,1345.78\n2,1922,1350.92\n3,1922,1356.07\n4,1922,1361.25\n5,1922,1366.45\n6,1922,1371.66\n7,1922,1376.90\n8,1922,1382.15\n9,1922,1387.43\n10,1922,1392.72\n11,1922,1398.04\n12,1922,1403.37\n1,1923,1409.17\n2,1923,1415.00\n3,1923,1420.85\n4,1923,1426.72\n5,1923,1432.62\n6,1923,1438.54\n7,1923,1444.48\n8,1923,1450.46\n9,1923,1456.45\n10,1923,1462.47\n11,1923,1468.52\n12,1923,1474.59\n1,1924,1479.92\n2,1924,1485.27\n3,1924,1490.64\n4,1924,1496.03\n5,1924,1501.44\n6,1924,1506.87\n7,1924,1512.32\n8,1924,1517.79\n9,1924,1523.28\n10,1924,1528.79\n11,1924,1534.32\n12,1924,1539.87\n1,1925,1544.84\n2,1925,1549.82\n3,1925,1554.82\n4,1925,1559.83\n5,1925,1564.86\n6,1925,1569.91\n7,1925,1574.97\n8,1925,1580.05\n9,1925,1585.15\n10,1925,1590.26\n11,1925,1595.39\n12,1925,1600.53\n1,1926,1606.24\n2,1926,1611.97\n3,1926,1617.72\n4,1926,1623.49\n5,1926,1629.28\n6,1926,1635.09\n7,1926,1640.92\n8,1926,1646.77\n9,1926,1652.65\n10,1926,1658.54\n11,1926,1664.46\n12,1926,1670.39\n1,1927,1676.32\n2,1927,1682.28\n3,1927,1688.25\n4,1927,1694.24\n5,1927,1700.26\n6,1927,1706.29\n7,1927,1712.35\n8,1927,1718.43\n9,1927,1724.53\n10,1927,1730.65\n11,1927,1736.79\n12,1927,1742.96\n1,1928,1748.03\n2,1928,1753.11\n3,1928,1758.21\n4,1928,1763.32\n5,1928,1768.45\n6,1928,1773.60\n7,1928,1778.75\n8,1928,1783.93\n9,1928,1789.12\n10,1928,1794.32\n11,1928,1799.54\n12,1928,1804.77\n1,1929,1809.52\n2,1929,1814.29\n3,1929,1819.07\n4,1929,1823.86\n5,1929,1828.66\n6,1929,1833.47\n7,1929,1838.30\n8,1929,1843.14\n9,1929,1848.00\n10,1929,1852.86\n11,1929,1857.74\n12,1929,1862.64\n1,1930,1869.70\n2,1930,1876.79\n3,1930,1883.90\n4,1930,1891.05\n5,1930,1898.22\n6,1930,1905.41\n7,1930,1912.64\n8,1930,1919.89\n9,1930,1927.17\n10,1930,1934.48\n11,1930,1941.81\n12,1930,1949.18\n1,1931,1952.93\n2,1931,1956.69\n3,1931,1960.45\n4,1931,1964.23\n5,1931,1968.01\n6,1931,1971.80\n7,1931,1975.59\n8,1931,1979.40\n9,1931,1983.21\n10,1931,1987.02\n11,1931,1990.85\n12,1931,1994.68\n1,1932,1996.46\n2,1932,1998.24\n3,1932,2000.02\n4,1932,2001.80\n5,1932,2003.59\n6,1932,2005.38\n7,1932,2007.16\n8,1932,2008.95\n9,1932,2010.75\n10,1932,2012.54\n11,1932,2014.33\n12,1932,2016.13\n1,1933,2017.74\n2,1933,2019.36\n3,1933,2020.97\n4,1933,2022.59\n5,1933,2024.21\n6,1933,2025.83\n7,1933,2027.45\n8,1933,2029.07\n9,1933,2030.69\n10,1933,2032.32\n11,1933,2033.94\n12,1933,2035.57\n1,1934,2036.11\n2,1934,2037.33\n3,1934,2038.39\n4,1934,2038.79\n5,1934,2039.05\n6,1934,2039.32\n7,1934,2039.58\n8,1934,2039.83\n9,1934,2040.15\n10,1934,2040.51\n11,1934,2040.97\n12,1934,2041.39\n1,1935,2041.79\n2,1935,2042.13\n3,1935,2042.45\n4,1935,2042.70\n5,1935,2042.96\n6,1935,2043.22\n7,1935,2043.47\n8,1935,2043.73\n9,1935,2044.00\n10,1935,2044.34\n11,1935,2044.68\n12,1935,2044.95\n1,1936,2045.21\n2,1936,2045.55\n3,1936,2045.89\n4,1936,2046.23\n5,1936,2046.57\n6,1936,2046.91\n7,1936,2047.25\n8,1936,2047.51\n9,1936,2047.85\n10,1936,2048.12\n11,1936,2048.35\n12,1936,2048.53\n1,1937,2048.74\n2,1937,2049.03\n3,1937,2049.29\n4,1937,2049.93\n5,1937,2050.89\n6,1937,2051.59\n7,1937,2052.21\n8,1937,2052.69\n9,1937,2053.18\n10,1937,2053.71\n11,1937,2054.06\n12,1937,2054.21\n1,1938,2054.40\n2,1938,2054.57\n3,1938,2054.71\n4,1938,2054.84\n5,1938,2055.00\n6,1938,2055.08\n7,1938,2055.17\n8,1938,2055.29\n9,1938,2055.39\n10,1938,2055.53\n11,1938,2055.61\n12,1938,2055.68\n1,1939,2055.73\n2,1939,2055.78\n3,1939,2055.84\n4,1939,2055.89\n5,1939,2055.94\n6,1939,2055.99\n7,1939,2056.04\n8,1939,2056.11\n9,1939,2056.20\n10,1939,2056.44\n11,1939,2056.52\n12,1939,2056.61\n1,1940,2056.68\n2,1940,2056.69\n3,1940,2056.73\n4,1940,2056.76\n5,1940,2056.80\n6,1940,2056.90\n7,1940,2057.07\n8,1940,2057.16\n9,1940,2057.22\n10,1940,2057.31\n11,1940,2057.34\n12,1940,2057.38\n1,1941,2057.41\n2,1941,2057.45\n3,1941,2057.52\n4,1941,2057.70\n5,1941,2057.88\n6,1941,2058.06\n7,1941,2058.27\n8,1941,2058.48\n9,1941,2058.70\n10,1941,2058.87\n11,1941,2059.02\n12,1941,2059.51\n1,1942,2060.07\n2,1942,2060.54\n3,1942,2060.96\n4,1942,2061.39\n5,1942,2061.94\n6,1942,2062.58\n7,1942,2063.22\n8,1942,2063.87\n9,1942,2064.52\n10,1942,2065.18\n11,1942,2065.83\n12,1942,2066.48\n1,1943,2067.14\n2,1943,2067.79\n3,1943,2068.45\n4,1943,2069.10\n5,1943,2069.76\n6,1943,2070.41\n7,1943,2071.07\n8,1943,2071.73\n9,1943,2072.38\n10,1943,2073.04\n11,1943,2073.69\n12,1943,2074.35\n1,1944,2075.01\n2,1944,2075.66\n3,1944,2076.32\n4,1944,2076.98\n5,1944,2077.64\n6,1944,2078.29\n7,1944,2078.95\n8,1944,2079.61\n9,1944,2080.27\n10,1944,2080.93\n11,1944,2081.59\n12,1944,2082.25\n1,1945,2082.91\n2,1945,2083.57\n3,1945,2084.23\n4,1945,2084.89\n5,1945,2085.55\n6,1945,2086.21\n7,1945,2086.87\n8,1945,2087.53\n9,1945,2088.19\n10,1945,2088.85\n11,1945,2089.51\n12,1945,2090.17\n1,1946,2090.84\n2,1946,2091.50\n3,1946,2092.16\n4,1946,2092.82\n5,1946,2093.48\n6,1946,2094.15\n7,1946,2094.81\n8,1946,2095.47\n9,1946,2096.14\n10,1946,2096.80\n11,1946,2097.47\n12,1946,2098.13\n1,1947,2098.79\n2,1947,2099.46\n3,1947,2100.12\n4,1947,2100.79\n5,1947,2101.45\n6,1947,2102.12\n7,1947,2102.78\n8,1947,2103.94\n9,1947,2105.26\n10,1947,2106.66\n11,1947,2108.15\n12,1947,2109.77\n1,1948,2111.44\n2,1948,2113.15\n3,1948,2114.91\n4,1948,2116.67\n5,1948,2118.43\n6,1948,2120.20\n7,1948,2121.96\n8,1948,2123.73\n9,1948,2125.61\n10,1948,2127.54\n11,1948,2129.53\n12,1948,2131.55\n1,1949,2133.61\n2,1949,2135.69\n3,1949,2137.77\n4,1949,2139.86\n5,1949,2141.94\n6,1949,2144.03\n7,1949,2146.12\n8,1949,2147.95\n9,1949,2149.81\n10,1949,2151.72\n11,1949,2153.61\n12,1949,2155.54\n1,1950,2157.52\n2,1950,2159.44\n3,1950,2161.46\n4,1950,2163.48\n5,1950,2165.55\n6,1950,2167.64\n7,1950,2169.72\n8,1950,2171.82\n9,1950,2173.99\n10,1950,2176.35\n11,1950,2178.72\n12,1950,2181.19\n1,1951,2183.63\n2,1951,2186.06\n3,1951,2188.54\n4,1951,2191.10\n5,1951,2193.78\n6,1951,2196.61\n7,1951,2199.27\n8,1951,2202.13\n9,1951,2205.10\n10,1951,2208.09\n11,1951,2210.93\n12,1951,2213.80\n1,1952,2216.99\n2,1952,2219.89\n3,1952,2222.74\n4,1952,2225.69\n5,1952,2228.60\n6,1952,2231.70\n7,1952,2234.86\n8,1952,2238.23\n9,1952,2241.65\n10,1952,2244.84\n11,1952,2248.10\n12,1952,2251.56\n1,1953,2255.48\n2,1953,2259.17\n3,1953,2262.88\n4,1953,2266.67\n5,1953,2270.80\n6,1953,2274.89\n7,1953,2278.89\n8,1953,2282.77\n9,1953,2286.65\n10,1953,2290.06\n11,1953,2292.69\n12,1953,2295.44\n1,1954,2298.50\n2,1954,2300.76\n3,1954,2302.62\n4,1954,2304.60\n5,1954,2306.46\n6,1954,2307.92\n7,1954,2309.15\n8,1954,2310.54\n9,1954,2312.31\n10,1954,2314.26\n11,1954,2316.15\n12,1954,2317.94\n1,1955,2320.16\n2,1955,2322.52\n3,1955,2324.79\n4,1955,2327.27\n5,1955,2330.35\n6,1955,2333.17\n7,1955,2335.91\n8,1955,2339.02\n9,1955,2342.73\n10,1955,2346.77\n11,1955,2351.13\n12,1955,2355.52\n1,1956,2360.50\n2,1956,2365.24\n3,1956,2369.82\n4,1956,2374.26\n5,1956,2379.40\n6,1956,2384.58\n7,1956,2389.53\n8,1956,2394.13\n9,1956,2399.31\n10,1956,2404.99\n11,1956,2410.80\n12,1956,2416.81\n1,1957,2423.28\n2,1957,2429.56\n3,1957,2435.83\n4,1957,2442.08\n5,1957,2448.33\n6,1957,2454.58\n7,1957,2461.31\n8,1957,2467.79\n9,1957,2474.72\n10,1957,2482.00\n11,1957,2489.40\n12,1957,2496.27\n1,1958,2502.59\n2,1958,2507.68\n3,1958,2510.88\n4,1958,2513.60\n5,1958,2515.97\n6,1958,2517.87\n7,1958,2519.61\n8,1958,2521.53\n9,1958,2525.08\n10,1958,2530.21\n11,1958,2535.76\n12,1958,2541.40\n1,1959,2547.26\n2,1959,2553.25\n3,1959,2559.00\n4,1959,2564.97\n5,1959,2571.27\n6,1959,2577.36\n7,1959,2584.25\n8,1959,2591.14\n9,1959,2598.44\n10,1959,2607.19\n11,1959,2615.99\n12,1959,2625.04\n1,1960,2634.86\n2,1960,2644.41\n3,1960,2653.14\n4,1960,2660.45\n5,1960,2667.61\n6,1960,2674.93\n7,1960,2680.41\n8,1960,2685.55\n9,1960,2690.70\n10,1960,2696.26\n11,1960,2701.43\n12,1960,2706.76\n1,1961,2711.84\n2,1961,2716.90\n3,1961,2722.38\n4,1961,2727.80\n5,1961,2733.00\n6,1961,2738.22\n7,1961,2743.54\n8,1961,2748.66\n9,1961,2754.13\n10,1961,2759.37\n11,1961,2764.65\n12,1961,2770.37\n1,1962,2776.37\n2,1962,2782.66\n3,1962,2788.99\n4,1962,2795.32\n5,1962,2801.68\n6,1962,2807.96\n7,1962,2814.34\n8,1962,2821.19\n9,1962,2827.82\n10,1962,2834.37\n11,1962,2840.84\n12,1962,2847.54\n1,1963,2854.35\n2,1963,2861.28\n3,1963,2868.24\n4,1963,2875.15\n5,1963,2882.10\n6,1963,2889.13\n7,1963,2896.33\n8,1963,2904.01\n9,1963,2912.04\n10,1963,2920.24\n11,1963,2928.64\n12,1963,2937.23\n1,1964,2945.85\n2,1964,2954.49\n3,1964,2963.18\n4,1964,2971.92\n5,1964,2980.51\n6,1964,2989.16\n7,1964,2997.82\n8,1964,3006.47\n9,1964,3015.24\n10,1964,3024.11\n11,1964,3033.10\n12,1964,3042.30\n1,1965,3052.04\n2,1965,3061.73\n3,1965,3071.76\n4,1965,3081.82\n5,1965,3091.91\n6,1965,3101.93\n7,1965,3111.76\n8,1965,3121.71\n9,1965,3131.70\n10,1965,3141.93\n11,1965,3152.48\n12,1965,3163.23\n1,1966,3174.78\n2,1966,3186.92\n3,1966,3199.27\n4,1966,3211.51\n5,1966,3223.87\n6,1966,3236.33\n7,1966,3248.47\n8,1966,3261.47\n9,1966,3274.95\n10,1966,3289.60\n11,1966,3304.27\n12,1966,3318.92\n1,1967,3332.63\n2,1967,3345.74\n3,1967,3358.46\n4,1967,3370.38\n5,1967,3381.16\n6,1967,3391.31\n7,1967,3401.31\n8,1967,3413.25\n9,1967,3425.39\n10,1967,3438.01\n11,1967,3451.07\n12,1967,3464.67\n1,1968,3479.02\n2,1968,3493.52\n3,1968,3508.02\n4,1968,3523.13\n5,1968,3538.93\n6,1968,3555.62\n7,1968,3571.98\n8,1968,3587.78\n9,1968,3603.00\n10,1968,3618.58\n11,1968,3634.72\n12,1968,3651.22\n1,1969,3669.36\n2,1969,3688.13\n3,1969,3706.94\n4,1969,3725.54\n5,1969,3744.51\n6,1969,3763.35\n7,1969,3783.55\n8,1969,3805.62\n9,1969,3827.76\n10,1969,3850.37\n11,1969,3872.83\n12,1969,3896.20\n1,1970,3921.59\n2,1970,3947.31\n3,1970,3970.76\n4,1970,3992.70\n5,1970,4014.36\n6,1970,4037.24\n7,1970,4059.72\n8,1970,4081.54\n9,1970,4103.34\n10,1970,4124.27\n11,1970,4144.58\n12,1970,4162.82\n1,1971,4179.71\n2,1971,4195.18\n3,1971,4208.11\n4,1971,4219.96\n5,1971,4233.54\n6,1971,4248.14\n7,1971,4264.96\n8,1971,4284.15\n9,1971,4301.79\n10,1971,4318.60\n11,1971,4334.65\n12,1971,4349.89\n1,1972,4364.43\n2,1972,4376.72\n3,1972,4388.40\n4,1972,4402.04\n5,1972,4415.65\n6,1972,4429.22\n7,1972,4443.66\n8,1972,4458.39\n9,1972,4473.33\n10,1972,4490.70\n11,1972,4508.44\n12,1972,4526.40\n1,1973,4545.52\n2,1973,4566.01\n3,1973,4587.32\n4,1973,4610.60\n5,1973,4634.66\n6,1973,4659.22\n7,1973,4687.14\n8,1973,4718.42\n9,1973,4752.51\n10,1973,4785.34\n11,1973,4814.14\n12,1973,4845.55\n1,1974,4875.63\n2,1974,4907.20\n3,1974,4936.32\n4,1974,4969.06\n5,1974,5003.55\n6,1974,5037.87\n7,1974,5071.04\n8,1974,5102.94\n9,1974,5141.04\n10,1974,5175.57\n11,1974,5207.75\n12,1974,5240.17\n1,1975,5271.39\n2,1975,5298.89\n3,1975,5323.18\n4,1975,5347.53\n5,1975,5372.53\n6,1975,5395.94\n7,1975,5419.96\n8,1975,5447.64\n9,1975,5476.88\n10,1975,5506.18\n11,1975,5533.53\n12,1975,5558.80\n1,1976,5584.00\n2,1976,5606.66\n3,1976,5629.46\n4,1976,5652.92\n5,1976,5675.81\n6,1976,5700.41\n7,1976,5726.10\n8,1976,5751.06\n9,1976,5775.69\n10,1976,5800.14\n11,1976,5823.93\n12,1976,5846.98\n1,1977,5868.17\n2,1977,5890.77\n3,1977,5913.69\n4,1977,5936.36\n5,1977,5958.82\n6,1977,5983.45\n7,1977,6008.48\n8,1977,6034.47\n9,1977,6062.07\n10,1977,6091.43\n11,1977,6122.69\n12,1977,6153.82\n1,1978,6184.95\n2,1978,6218.14\n3,1978,6251.56\n4,1978,6284.33\n5,1978,6317.27\n6,1978,6351.01\n7,1978,6386.63\n8,1978,6423.94\n9,1978,6461.84\n10,1978,6504.11\n11,1978,6547.42\n12,1978,6594.56\n1,1979,6644.46\n2,1979,6696.23\n3,1979,6748.24\n4,1979,6801.55\n5,1979,6855.17\n6,1979,6910.07\n7,1979,6962.24\n8,1979,7015.85\n9,1979,7071.51\n10,1979,7131.97\n11,1979,7201.51\n12,1979,7272.26\n1,1980,7345.23\n2,1980,7418.68\n3,1980,7498.18\n4,1980,7593.16\n5,1980,7676.68\n6,1980,7731.57\n7,1980,7777.12\n8,1980,7829.36\n9,1980,7888.93\n10,1980,7956.44\n11,1980,8033.49\n12,1980,8125.41\n1,1981,8230.29\n2,1981,8333.31\n3,1981,8436.02\n4,1981,8529.94\n5,1981,8627.25\n6,1981,8744.44\n7,1981,8851.77\n8,1981,8962.05\n9,1981,9077.89\n10,1981,9189.09\n11,1981,9292.77\n12,1981,9376.87\n1,1982,9461.66\n2,1982,9558.48\n3,1982,9665.85\n4,1982,9767.99\n5,1982,9871.37\n6,1982,9970.82\n7,1982,10074.43\n8,1982,10169.72\n9,1982,10243.28\n10,1982,10310.89\n11,1982,10377.14\n12,1982,10446.92\n1,1983,10516.05\n2,1983,10584.93\n3,1983,10656.46\n4,1983,10730.61\n5,1983,10804.03\n6,1983,10877.77\n7,1983,10957.45\n8,1983,11040.36\n9,1983,11126.29\n10,1983,11209.74\n11,1983,11290.45\n12,1983,11372.87\n1,1984,11458.16\n2,1984,11543.14\n3,1984,11630.58\n4,1984,11722.85\n5,1984,11817.51\n6,1984,11914.32\n7,1984,12012.32\n8,1984,12113.62\n9,1984,12219.31\n10,1984,12324.91\n11,1984,12424.94\n12,1984,12514.09\n1,1985,12598.14\n2,1985,12679.61\n3,1985,12767.00\n4,1985,12857.64\n5,1985,12942.82\n6,1985,13023.50\n7,1985,13098.93\n8,1985,13176.21\n9,1985,13254.61\n10,1985,13333.03\n11,1985,13412.59\n12,1985,13493.51\n1,1986,13573.35\n2,1986,13653.32\n3,1986,13733.64\n4,1986,13808.72\n5,1986,13878.45\n6,1986,13949.58\n7,1986,14021.77\n8,1986,14089.89\n9,1986,14154.82\n10,1986,14216.28\n11,1986,14277.65\n12,1986,14341.30\n1,1987,14407.39\n2,1987,14472.58\n3,1987,14540.00\n4,1987,14607.73\n5,1987,14676.39\n6,1987,14745.61\n7,1987,14815.29\n8,1987,14885.54\n9,1987,14960.46\n10,1987,15040.25\n11,1987,15117.08\n12,1987,15188.76\n1,1988,15261.79\n2,1988,15335.69\n3,1988,15408.02\n4,1988,15481.21\n5,1988,15557.45\n6,1988,15638.61\n7,1988,15722.80\n8,1988,15810.98\n9,1988,15904.00\n10,1988,15999.95\n11,1988,16097.95\n12,1988,16202.05\n1,1989,16311.01\n2,1989,16423.42\n3,1989,16540.16\n4,1989,16661.73\n5,1989,16781.84\n6,1989,16899.73\n7,1989,17014.51\n8,1989,17126.24\n9,1989,17238.98\n10,1989,17350.32\n11,1989,17460.78\n12,1989,17572.68\n1,1990,17684.41\n2,1990,17797.00\n3,1990,17911.79\n4,1990,18029.71\n5,1990,18146.45\n6,1990,18263.50\n7,1990,18381.14\n8,1990,18497.86\n9,1990,18612.71\n10,1990,18726.86\n11,1990,18838.76\n12,1990,18949.59\n1,1991,19056.03\n2,1991,19154.80\n3,1991,19249.62\n4,1991,19344.42\n5,1991,19435.50\n6,1991,19523.93\n7,1991,19614.55\n8,1991,19705.76\n9,1991,19793.29\n10,1991,19879.39\n11,1991,19962.05\n12,1991,20037.91\n1,1992,20105.87\n2,1992,20169.54\n3,1992,20234.08\n4,1992,20302.20\n5,1992,20365.65\n6,1992,20427.26\n7,1992,20489.56\n8,1992,20544.37\n9,1992,20597.95\n10,1992,20647.90\n11,1992,20697.12\n12,1992,20751.10\n1,1993,20806.78\n2,1993,20858.80\n3,1993,20909.73\n4,1993,20961.13\n5,1993,21011.26\n6,1993,21063.09\n7,1993,21116.98\n8,1993,21170.48\n9,1993,21223.75\n10,1993,21275.93\n11,1993,21329.47\n12,1993,21384.58\n1,1994,21439.11\n2,1994,21492.35\n3,1994,21550.55\n4,1994,21613.41\n5,1994,21679.69\n6,1994,21754.49\n7,1994,21829.54\n8,1994,21908.31\n9,1994,21990.10\n10,1994,22074.76\n11,1994,22165.82\n12,1994,22263.53\n1,1995,22367.43\n2,1995,22473.86\n3,1995,22581.92\n4,1995,22689.75\n5,1995,22796.58\n6,1995,22904.30\n7,1995,23008.70\n8,1995,23112.62\n9,1995,23216.63\n10,1995,23318.78\n11,1995,23421.39\n12,1995,23526.00\n1,1996,23626.77\n2,1996,23725.22\n3,1996,23820.71\n4,1996,23919.17\n5,1996,24017.84\n6,1996,24118.31\n7,1996,24220.61\n8,1996,24324.56\n9,1996,24426.93\n10,1996,24530.54\n11,1996,24632.54\n12,1996,24735.79\n1,1997,24837.01\n2,1997,24941.11\n3,1997,25045.24\n4,1997,25152.52\n5,1997,25260.68\n6,1997,25366.98\n7,1997,25471.20\n8,1997,25578.39\n9,1997,25687.95\n10,1997,25793.91\n11,1997,25900.74\n12,1997,26011.68\n1,1998,26123.53\n2,1998,26233.25\n3,1998,26344.53\n4,1998,26454.95\n5,1998,26564.08\n6,1998,26674.76\n7,1998,26785.46\n8,1998,26896.18\n9,1998,27006.00\n10,1998,27109.75\n11,1998,27199.21\n12,1998,27299.17\n1,1999,27399.04\n2,1999,27498.13\n3,1999,27599.88\n4,1999,27702.00\n5,1999,27801.03\n6,1999,27905.28\n7,1999,28011.56\n8,1999,28117.77\n9,1999,28228.36\n10,1999,28338.45\n11,1999,28453.22\n12,1999,28573.44\n1,2000,28697.26\n2,2000,28824.48\n3,2000,28957.80\n4,2000,29095.10\n5,2000,29232.34\n6,2000,29373.38\n7,2000,29512.66\n8,2000,29659.24\n9,2000,29809.76\n10,2000,29958.81\n11,2000,30111.35\n12,2000,30266.17\n1,2001,30411.70\n2,2001,30542.22\n3,2001,30666.42\n4,2001,30779.38\n5,2001,30878.64\n6,2001,30971.79\n7,2001,31061.87\n8,2001,31152.72\n9,2001,31239.95\n10,2001,31308.68\n11,2001,31365.04\n12,2001,31413.91\n1,2002,31458.15\n2,2002,31501.41\n3,2002,31546.56\n4,2002,31593.62\n5,2002,31638.64\n6,2002,31684.25\n7,2002,31729.14\n8,2002,31773.56\n9,2002,31816.45\n10,2002,31859.67\n11,2002,31901.62\n12,2002,31934.32\n1,2003,31965.99\n2,2003,31997.15\n3,2003,32028.35\n4,2003,32058.51\n5,2003,32088.70\n6,2003,32117.31\n7,2003,32141.93\n8,2003,32166.04\n9,2003,32191.51\n10,2003,32216.72\n11,2003,32241.42\n12,2003,32266.41\n1,2004,32290.61\n2,2004,32314.29\n3,2004,32339.33\n4,2004,32364.66\n5,2004,32390.02\n6,2004,32417.55\n7,2004,32451.86\n8,2004,32487.82\n9,2004,32527.89\n10,2004,32572.62\n11,2004,32620.39\n12,2004,32676.66\n1,2005,32736.30\n2,2005,32799.86\n3,2005,32869.29\n4,2005,32944.34\n5,2005,33020.66\n6,2005,33098.81\n7,2005,33180.73\n8,2005,33269.76\n9,2005,33365.14\n10,2005,33460.23\n11,2005,33563.67\n12,2005,33672.20\n1,2006,33781.35\n2,2006,33900.71\n3,2006,34025.86\n4,2006,34153.74\n5,2006,34284.66\n6,2006,34419.52\n7,2006,34556.91\n8,2006,34699.46\n9,2006,34842.88\n10,2006,34982.54\n11,2006,35125.97\n12,2006,35270.57\n1,2007,35413.12\n2,2007,35560.09\n3,2007,35709.15\n4,2007,35856.15\n5,2007,36001.66\n6,2007,36143.57\n7,2007,36282.42\n8,2007,36428.16\n9,2007,36555.65\n10,2007,36674.16\n11,2007,36793.35\n12,2007,36893.61\n1,2008,36985.84\n2,2008,37070.60\n3,2008,37136.09\n4,2008,37175.09\n5,2008,37215.05\n6,2008,37268.70\n7,2008,37326.47\n8,2008,37377.17\n9,2008,37430.74\n10,2008,37465.99\n11,2008,37486.91\n12,2008,37492.85\n1,2009,37493.78\n2,2009,37497.84\n3,2009,37507.22\n4,2009,37513.78\n5,2009,37518.78\n6,2009,37524.41\n7,2009,37530.04\n8,2009,37535.67\n9,2009,37540.99\n10,2009,37544.74\n11,2009,37546.93\n12,2009,37548.50\n1,2010,37550.06\n2,2010,37551.94\n3,2010,37555.38\n4,2010,37560.08\n5,2010,37565.08\n6,2010,37570.09\n7,2010,37573.85\n8,2010,37578.86\n9,2010,37583.87\n10,2010,37588.57\n11,2010,37592.64\n12,2010,37597.03\n1,2011,37601.41\n2,2011,37606.11\n3,2011,37610.19\n4,2011,37613.32\n5,2011,37615.20\n6,2011,37616.45\n7,2011,37617.71\n8,2011,37618.96\n9,2011,37619.59\n10,2011,37619.90\n11,2011,37620.53\n12,2011,37620.84\n1,2012,37621.16\n2,2012,37622.10\n3,2012,37624.92\n4,2012,37627.43\n5,2012,37629.94\n6,2012,37632.76\n7,2012,37635.58\n8,2012,37638.72\n9,2012,37641.85\n10,2012,37645.30\n11,2012,37648.44\n12,2012,37651.26\n1,2013,37653.46\n2,2013,37655.66\n3,2013,37658.80\n4,2013,37661.62\n5,2013,37663.50\n6,2013,37664.76\n7,2013,37666.33\n8,2013,37667.58\n9,2013,37668.84\n10,2013,37669.47\n11,2013,37671.04\n12,2013,37673.23\n1,2014,37675.43\n2,2014,37676.69\n3,2014,37678.26\n4,2014,37679.83\n5,2014,37680.77\n6,2014,37681.71\n7,2014,37682.97\n8,2014,37683.91\n9,2014,37684.85\n10,2014,37685.48\n11,2014,37686.11\n12,2014,37686.74\n1,2015,37687.68\n2,2015,37688.62\n3,2015,37689.25\n4,2015,37690.19\n5,2015,37690.82\n6,2015,37691.45\n7,2015,37692.07\n8,2015,37693.02\n9,2015,37695.22\n10,2015,37695.84\n11,2015,37696.47\n12,2015,37700.24\n1,2016,37707.47\n2,2016,37715.64\n3,2016,37725.38\n4,2016,37734.50\n5,2016,37741.73\n6,2016,37750.22\n7,2016,37758.72\n8,2016,37768.16\n9,2016,37777.60\n10,2016,37786.73\n11,2016,37797.12\n12,2016,37811.29\n1,2017,37827.36\n2,2017,37843.44\n3,2017,37859.84\n4,2017,37883.18\n5,2017,37908.44\n6,2017,37936.56\n7,2017,37967.54\n8,2017,38001.39\n9,2017,38033.38\n10,2017,38066.02\n11,2017,38099.96\n12,2017,38139.02\n1,2018,38180.97\n2,2018,38225.83\n3,2018,38275.84\n4,2018,38330.07\n5,2018,38386.29\n6,2018,38445.78\n7,2018,38506.66\n8,2018,38569.55\n9,2018,38634.80\n10,2018,38703.37\n11,2018,38775.94\n12,2018,38851.23\n1,2019,38927.96\n2,2019,39004.85\n3,2019,39082.53\n4,2019,39160.70\n5,2019,39238.37\n6,2019,39315.21\n7,2019,39386.30\n8,2019,39455.23\n9,2019,39519.34\n10,2019,39581.59\n11,2019,39636.01\n12,2019,39686.88\n1,2020,39737.81\n2,2020,39788.14\n3,2020,39838.54\n4,2020,39848.17\n5,2020,39852.82\n6,2020,39857.13\n7,2020,39862.45\n8,2020,39866.77\n9,2020,39870.09\n10,2020,39873.74\n11,2020,39877.07\n12,2020,39880.06\n1,2021,39883.05\n2,2021,39885.71\n3,2021,39887.04\n4,2021,39888.03\n5,2021,39888.70\n6,2021,39889.36\n7,2021,39890.69\n8,2021,39892.36\n9,2021,39894.02\n10,2021,39895.35\n11,2021,39897.01\n12,2021,39898.67\n1,2022,39900.67\n2,2022,39905.66\n3,2022,39916.63\n4,2022,39931.27\n5,2022,39956.56\n6,2022,39989.19\n7,2022,40038.84\n8,2022,40113.25\n9,2022,40201.16\n10,2022,40306.02\n11,2022,40430.97\n12,2022,40570.79\n1,2023,40714.48\n2,2023,40868.52\n3,2023,41026.88\n4,2023,41187.23\n5,2023,41356.10\n6,2023,41533.24\n7,2023,41711.83\n8,2023,41894.32\n9,2023,42079.35\n10,2023,42265.90\n11,2023,42453.99\n12,2023,42640.43\n1,2024,42826.63\n2,2024,43012.92\n3,2024,43200.75\n4,2024,43389.39\n5,2024,43578.86\n6,2024,43769.51\n7,2024,43960.64\n8,2024,44151.14\n9,2024,44336.94\n10,2024,44511.33\n11,2024,44678.62\n12,2024,44843.19\n1,2025,45002.75\n2,2025,45160.64\n3,2025,45319.45\n4,2025,45478.07\n5,2025,45637.62\n6,2025,45799.26\n7,2025,45960.70\n8,2025,46123.48\n9,2025,46281.83\n10,2025,46433.02\n11,2025,46580.83\n12,2025,46727.56\n`,
        'us_inflation': `1,1871,12.464\n2,1871,12.845\n3,1871,13.035\n4,1871,12.559\n5,1871,12.274\n6,1871,12.083\n7,1871,12.083\n8,1871,11.893\n9,1871,12.179\n10,1871,12.369\n11,1871,12.369\n12,1871,12.654\n1,1872,12.654\n2,1872,12.654\n3,1872,12.845\n4,1872,13.130\n5,1872,13.130\n6,1872,13.035\n7,1872,12.845\n8,1872,12.940\n9,1872,13.035\n10,1872,12.749\n11,1872,13.130\n12,1872,12.940\n1,1873,12.940\n2,1873,13.225\n3,1873,13.225\n4,1873,13.225\n5,1873,12.940\n6,1873,12.559\n7,1873,12.559\n8,1873,12.559\n9,1873,12.559\n10,1873,12.274\n11,1873,11.893\n12,1873,12.179\n1,1874,12.369\n2,1874,12.369\n3,1874,12.369\n4,1874,12.179\n5,1874,12.083\n6,1874,11.798\n7,1874,11.893\n8,1874,11.798\n9,1874,11.798\n10,1874,11.608\n11,1874,11.513\n12,1874,11.513\n1,1875,11.513\n2,1875,11.513\n3,1875,11.513\n4,1875,11.608\n5,1875,11.322\n6,1875,11.132\n7,1875,11.132\n8,1875,11.227\n9,1875,11.132\n10,1875,11.132\n11,1875,11.037\n12,1875,10.942\n1,1876,10.847\n2,1876,10.847\n3,1876,10.847\n4,1876,10.751\n5,1876,10.371\n6,1876,10.085\n7,1876,10.085\n8,1876,10.181\n9,1876,10.276\n10,1876,10.466\n11,1876,10.561\n12,1876,10.751\n1,1877,10.942\n2,1877,10.656\n3,1877,10.181\n4,1877,10.466\n5,1877,10.656\n6,1877,10.085\n7,1877,10.181\n8,1877,9.800\n9,1877,9.705\n10,1877,9.705\n11,1877,9.515\n12,1877,9.515\n1,1878,9.229\n2,1878,9.134\n3,1878,8.944\n4,1878,8.849\n5,1878,8.563\n6,1878,8.373\n7,1878,8.468\n8,1878,8.563\n9,1878,8.563\n10,1878,8.468\n11,1878,8.373\n12,1878,8.183\n1,1879,8.278\n2,1879,8.373\n3,1879,8.278\n4,1879,8.183\n5,1879,8.183\n6,1879,8.087\n7,1879,8.183\n8,1879,8.183\n9,1879,8.468\n10,1879,8.944\n11,1879,9.419\n12,1879,9.705\n1,1880,9.990\n2,1880,9.990\n3,1880,10.085\n4,1880,9.705\n5,1880,9.419\n6,1880,9.229\n7,1880,9.229\n8,1880,9.229\n9,1880,9.324\n10,1880,9.324\n11,1880,9.419\n12,1880,9.515\n1,1881,9.419\n2,1881,9.515\n3,1881,9.515\n4,1881,9.610\n5,1881,9.515\n6,1881,9.515\n7,1881,9.610\n8,1881,9.800\n9,1881,10.181\n10,1881,10.276\n11,1881,10.181\n12,1881,10.181\n1,1882,10.181\n2,1882,10.276\n3,1882,10.276\n4,1882,10.371\n5,1882,10.466\n6,1882,10.561\n7,1882,10.466\n8,1882,10.561\n9,1882,10.276\n10,1882,10.181\n11,1882,10.085\n12,1882,9.990\n1,1883,9.990\n2,1883,10.085\n3,1883,9.990\n4,1883,9.895\n5,1883,9.800\n6,1883,9.515\n7,1883,9.324\n8,1883,9.324\n9,1883,9.229\n10,1883,9.229\n11,1883,9.134\n12,1883,9.229\n1,1884,9.229\n2,1884,9.229\n3,1884,9.229\n4,1884,9.039\n5,1884,8.849\n6,1884,8.849\n7,1884,8.753\n8,1884,8.753\n9,1884,8.658\n10,1884,8.563\n11,1884,8.373\n12,1884,8.278\n1,1885,8.278\n2,1885,8.373\n3,1885,8.183\n4,1885,8.278\n5,1885,8.087\n6,1885,7.897\n7,1885,7.992\n8,1885,7.992\n9,1885,7.897\n10,1885,7.897\n11,1885,7.992\n12,1885,8.183\n1,1886,7.992\n2,1886,7.992\n3,1886,7.897\n4,1886,7.802\n5,1886,7.612\n6,1886,7.517\n7,1886,7.612\n8,1886,7.707\n9,1886,7.707\n10,1886,7.707\n11,1886,7.707\n12,1886,7.802\n1,1887,7.992\n2,1887,8.087\n3,1887,8.087\n4,1887,8.087\n5,1887,8.087\n6,1887,7.992\n7,1887,7.897\n8,1887,7.992\n9,1887,7.897\n10,1887,7.992\n11,1887,8.087\n12,1887,8.278\n1,1888,8.373\n2,1888,8.278\n3,1888,8.278\n4,1888,8.183\n5,1888,8.087\n6,1888,7.992\n7,1888,8.087\n8,1888,8.087\n9,1888,8.087\n10,1888,8.183\n11,1888,8.278\n12,1888,8.278\n1,1889,7.992\n2,1889,7.897\n3,1889,7.802\n4,1889,7.802\n5,1889,7.612\n6,1889,7.612\n7,1889,7.612\n8,1889,7.612\n9,1889,7.707\n10,1889,7.707\n11,1889,7.707\n12,1889,7.802\n1,1890,7.612\n2,1890,7.612\n3,1890,7.612\n4,1890,7.612\n5,1890,7.707\n6,1890,7.707\n7,1890,7.707\n8,1890,7.992\n9,1890,8.087\n10,1890,8.087\n11,1890,7.897\n12,1890,7.897\n1,1891,7.802\n2,1891,7.897\n3,1891,7.992\n4,1891,8.087\n5,1891,7.992\n6,1891,7.802\n7,1891,7.707\n8,1891,7.707\n9,1891,7.612\n10,1891,7.612\n11,1891,7.517\n12,1891,7.517\n1,1892,7.326\n2,1892,7.326\n3,1892,7.136\n4,1892,7.041\n5,1892,7.041\n6,1892,7.041\n7,1892,7.231\n8,1892,7.326\n9,1892,7.326\n10,1892,7.326\n11,1892,7.517\n12,1892,7.612\n1,1893,7.897\n2,1893,7.992\n3,1893,7.802\n4,1893,7.707\n5,1893,7.612\n6,1893,7.421\n7,1893,7.231\n8,1893,6.946\n9,1893,7.231\n10,1893,7.326\n11,1893,7.136\n12,1893,7.041\n1,1894,6.850\n2,1894,6.755\n3,1894,6.565\n4,1894,6.565\n5,1894,6.565\n6,1894,6.565\n7,1894,6.565\n8,1894,6.755\n9,1894,6.850\n10,1894,6.660\n11,1894,6.660\n12,1894,6.565\n1,1895,6.565\n2,1895,6.565\n3,1895,6.565\n4,1895,6.850\n5,1895,6.946\n6,1895,7.041\n7,1895,6.946\n8,1895,6.850\n9,1895,6.850\n10,1895,6.850\n11,1895,6.850\n12,1895,6.755\n1,1896,6.660\n2,1896,6.565\n3,1896,6.565\n4,1896,6.470\n5,1896,6.375\n6,1896,6.280\n7,1896,6.280\n8,1896,6.280\n9,1896,6.280\n10,1896,6.470\n11,1896,6.660\n12,1896,6.660\n1,1897,6.470\n2,1897,6.470\n3,1897,6.470\n4,1897,6.375\n5,1897,6.280\n6,1897,6.280\n7,1897,6.280\n8,1897,6.565\n9,1897,6.755\n10,1897,6.660\n11,1897,6.660\n12,1897,6.660\n1,1898,6.660\n2,1898,6.755\n3,1898,6.755\n4,1898,6.755\n5,1898,7.231\n6,1898,6.755\n7,1898,6.660\n8,1898,6.660\n9,1898,6.660\n10,1898,6.660\n11,1898,6.660\n12,1898,6.755\n1,1899,6.755\n2,1899,6.946\n3,1899,6.946\n4,1899,7.041\n5,1899,7.041\n6,1899,7.136\n7,1899,7.231\n8,1899,7.326\n9,1899,7.612\n10,1899,7.707\n11,1899,7.802\n12,1899,7.897\n1,1900,7.897\n2,1900,7.992\n3,1900,7.992\n4,1900,7.992\n5,1900,7.802\n6,1900,7.707\n7,1900,7.802\n8,1900,7.707\n9,1900,7.802\n10,1900,7.707\n11,1900,7.707\n12,1900,7.612\n1,1901,7.707\n2,1901,7.612\n3,1901,7.612\n4,1901,7.517\n5,1901,7.517\n6,1901,7.517\n7,1901,7.612\n8,1901,7.707\n9,1901,7.802\n10,1901,7.802\n11,1901,7.897\n12,1901,7.992\n1,1902,7.897\n2,1902,7.897\n3,1902,7.897\n4,1902,7.992\n5,1902,8.087\n6,1902,8.183\n7,1902,8.183\n8,1902,8.087\n9,1902,8.183\n10,1902,8.753\n11,1902,8.468\n12,1902,8.563\n1,1903,8.658\n2,1903,8.658\n3,1903,8.373\n4,1903,8.373\n5,1903,8.183\n6,1903,8.183\n7,1903,8.183\n8,1903,8.183\n9,1903,8.278\n10,1903,8.183\n11,1903,8.087\n12,1903,8.087\n1,1904,8.278\n2,1904,8.468\n3,1904,8.373\n4,1904,8.278\n5,1904,8.087\n6,1904,8.087\n7,1904,8.087\n8,1904,8.183\n9,1904,8.278\n10,1904,8.278\n11,1904,8.468\n12,1904,8.468\n1,1905,8.468\n2,1905,8.468\n3,1905,8.373\n4,1905,8.373\n5,1905,8.278\n6,1905,8.278\n7,1905,8.278\n8,1905,8.373\n9,1905,8.278\n10,1905,8.278\n11,1905,8.373\n12,1905,8.468\n1,1906,8.468\n2,1906,8.468\n3,1906,8.468\n4,1906,8.468\n5,1906,8.563\n6,1906,8.563\n7,1906,8.278\n8,1906,8.468\n9,1906,8.563\n10,1906,8.753\n11,1906,8.849\n12,1906,8.944\n1,1907,8.849\n2,1907,9.039\n3,1907,8.944\n4,1907,8.944\n5,1907,9.134\n6,1907,9.229\n7,1907,9.229\n8,1907,9.229\n9,1907,9.229\n10,1907,9.324\n11,1907,8.944\n12,1907,8.753\n1,1908,8.658\n2,1908,8.563\n3,1908,8.563\n4,1908,8.658\n5,1908,8.658\n6,1908,8.658\n7,1908,8.753\n8,1908,8.753\n9,1908,8.753\n10,1908,8.849\n11,1908,8.944\n12,1908,9.039\n1,1909,8.944\n2,1909,9.039\n3,1909,9.039\n4,1909,9.229\n5,1909,9.324\n6,1909,9.419\n7,1909,9.419\n8,1909,9.515\n9,1909,9.610\n10,1909,9.800\n11,1909,9.895\n12,1909,9.990\n1,1910,9.895\n2,1910,9.895\n3,1910,10.085\n4,1910,10.181\n5,1910,9.990\n6,1910,9.895\n7,1910,9.895\n8,1910,9.800\n9,1910,9.705\n10,1910,9.419\n11,1910,9.229\n12,1910,9.229\n1,1911,9.229\n2,1911,8.944\n3,1911,9.039\n4,1911,8.753\n5,1911,8.753\n6,1911,8.753\n7,1911,8.849\n8,1911,9.134\n9,1911,9.229\n10,1911,9.229\n11,1911,9.134\n12,1911,9.039\n1,1912,9.134\n2,1912,9.229\n3,1912,9.419\n4,1912,9.705\n5,1912,9.705\n6,1912,9.610\n7,1912,9.610\n8,1912,9.705\n9,1912,9.800\n10,1912,9.800\n11,1912,9.800\n12,1912,9.705\n1,1913,9.800\n2,1913,9.800\n3,1913,9.800\n4,1913,9.800\n5,1913,9.700\n6,1913,9.800\n7,1913,9.900\n8,1913,9.900\n9,1913,10.000\n10,1913,10.000\n11,1913,10.100\n12,1913,10.000\n1,1914,10.000\n2,1914,9.900\n3,1914,9.900\n4,1914,9.800\n5,1914,9.900\n6,1914,9.900\n7,1914,10.000\n8,1914,10.200\n9,1914,10.200\n10,1914,10.100\n11,1914,10.200\n12,1914,10.100\n1,1915,10.100\n2,1915,10.000\n3,1915,9.900\n4,1915,10.000\n5,1915,10.100\n6,1915,10.100\n7,1915,10.100\n8,1915,10.100\n9,1915,10.100\n10,1915,10.200\n11,1915,10.300\n12,1915,10.300\n1,1916,10.400\n2,1916,10.400\n3,1916,10.500\n4,1916,10.600\n5,1916,10.700\n6,1916,10.800\n7,1916,10.800\n8,1916,10.900\n9,1916,11.100\n10,1916,11.300\n11,1916,11.500\n12,1916,11.600\n1,1917,11.700\n2,1917,12.000\n3,1917,12.000\n4,1917,12.600\n5,1917,12.800\n6,1917,13.000\n7,1917,12.800\n8,1917,13.000\n9,1917,13.300\n10,1917,13.500\n11,1917,13.500\n12,1917,13.700\n1,1918,14.000\n2,1918,14.100\n3,1918,14.000\n4,1918,14.200\n5,1918,14.500\n6,1918,14.700\n7,1918,15.100\n8,1918,15.400\n9,1918,15.700\n10,1918,16.000\n11,1918,16.300\n12,1918,16.500\n1,1919,16.500\n2,1919,16.200\n3,1919,16.400\n4,1919,16.700\n5,1919,16.900\n6,1919,16.900\n7,1919,17.400\n8,1919,17.700\n9,1919,17.800\n10,1919,18.100\n11,1919,18.500\n12,1919,18.900\n1,1920,19.300\n2,1920,19.500\n3,1920,19.700\n4,1920,20.300\n5,1920,20.600\n6,1920,20.900\n7,1920,20.800\n8,1920,20.300\n9,1920,20.000\n10,1920,19.900\n11,1920,19.800\n12,1920,19.400\n1,1921,19.000\n2,1921,18.400\n3,1921,18.300\n4,1921,18.100\n5,1921,17.700\n6,1921,17.600\n7,1921,17.700\n8,1921,17.700\n9,1921,17.500\n10,1921,17.500\n11,1921,17.400\n12,1921,17.300\n1,1922,16.900\n2,1922,16.900\n3,1922,16.700\n4,1922,16.700\n5,1922,16.700\n6,1922,16.700\n7,1922,16.800\n8,1922,16.600\n9,1922,16.600\n10,1922,16.700\n11,1922,16.800\n12,1922,16.900\n1,1923,16.800\n2,1923,16.800\n3,1923,16.800\n4,1923,16.900\n5,1923,16.900\n6,1923,17.000\n7,1923,17.200\n8,1923,17.100\n9,1923,17.200\n10,1923,17.300\n11,1923,17.300\n12,1923,17.300\n1,1924,17.300\n2,1924,17.200\n3,1924,17.100\n4,1924,17.000\n5,1924,17.000\n6,1924,17.000\n7,1924,17.100\n8,1924,17.000\n9,1924,17.100\n10,1924,17.200\n11,1924,17.200\n12,1924,17.300\n1,1925,17.300\n2,1925,17.200\n3,1925,17.300\n4,1925,17.200\n5,1925,17.300\n6,1925,17.500\n7,1925,17.700\n8,1925,17.700\n9,1925,17.700\n10,1925,17.700\n11,1925,18.000\n12,1925,17.900\n1,1926,17.900\n2,1926,17.900\n3,1926,17.800\n4,1926,17.900\n5,1926,17.800\n6,1926,17.700\n7,1926,17.500\n8,1926,17.400\n9,1926,17.500\n10,1926,17.600\n11,1926,17.700\n12,1926,17.700\n1,1927,17.500\n2,1927,17.400\n3,1927,17.300\n4,1927,17.300\n5,1927,17.400\n6,1927,17.600\n7,1927,17.300\n8,1927,17.200\n9,1927,17.300\n10,1927,17.400\n11,1927,17.300\n12,1927,17.300\n1,1928,17.300\n2,1928,17.100\n3,1928,17.100\n4,1928,17.100\n5,1928,17.200\n6,1928,17.100\n7,1928,17.100\n8,1928,17.100\n9,1928,17.300\n10,1928,17.200\n11,1928,17.200\n12,1928,17.100\n1,1929,17.100\n2,1929,17.100\n3,1929,17.000\n4,1929,16.900\n5,1929,17.000\n6,1929,17.100\n7,1929,17.300\n8,1929,17.300\n9,1929,17.300\n10,1929,17.300\n11,1929,17.300\n12,1929,17.200\n1,1930,17.100\n2,1930,17.000\n3,1930,16.900\n4,1930,17.000\n5,1930,16.900\n6,1930,16.800\n7,1930,16.600\n8,1930,16.500\n9,1930,16.600\n10,1930,16.500\n11,1930,16.400\n12,1930,16.100\n1,1931,15.900\n2,1931,15.700\n3,1931,15.600\n4,1931,15.500\n5,1931,15.300\n6,1931,15.100\n7,1931,15.100\n8,1931,15.100\n9,1931,15.000\n10,1931,14.900\n11,1931,14.700\n12,1931,14.600\n1,1932,14.300\n2,1932,14.100\n3,1932,14.000\n4,1932,13.900\n5,1932,13.700\n6,1932,13.600\n7,1932,13.600\n8,1932,13.500\n9,1932,13.400\n10,1932,13.300\n11,1932,13.200\n12,1932,13.100\n1,1933,12.900\n2,1933,12.700\n3,1933,12.600\n4,1933,12.600\n5,1933,12.600\n6,1933,12.700\n7,1933,13.100\n8,1933,13.200\n9,1933,13.200\n10,1933,13.200\n11,1933,13.200\n12,1933,13.200\n1,1934,13.200\n2,1934,13.300\n3,1934,13.300\n4,1934,13.300\n5,1934,13.300\n6,1934,13.400\n7,1934,13.400\n8,1934,13.400\n9,1934,13.600\n10,1934,13.500\n11,1934,13.500\n12,1934,13.400\n1,1935,13.600\n2,1935,13.700\n3,1935,13.700\n4,1935,13.800\n5,1935,13.800\n6,1935,13.700\n7,1935,13.700\n8,1935,13.700\n9,1935,13.700\n10,1935,13.700\n11,1935,13.800\n12,1935,13.800\n1,1936,13.800\n2,1936,13.800\n3,1936,13.700\n4,1936,13.700\n5,1936,13.700\n6,1936,13.800\n7,1936,13.900\n8,1936,14.000\n9,1936,14.000\n10,1936,14.000\n11,1936,14.000\n12,1936,14.000\n1,1937,14.100\n2,1937,14.100\n3,1937,14.200\n4,1937,14.300\n5,1937,14.400\n6,1937,14.400\n7,1937,14.500\n8,1937,14.500\n9,1937,14.600\n10,1937,14.600\n11,1937,14.500\n12,1937,14.400\n1,1938,14.200\n2,1938,14.100\n3,1938,14.100\n4,1938,14.200\n5,1938,14.100\n6,1938,14.100\n7,1938,14.100\n8,1938,14.100\n9,1938,14.100\n10,1938,14.000\n11,1938,14.000\n12,1938,14.000\n1,1939,14.000\n2,1939,13.900\n3,1939,13.900\n4,1939,13.800\n5,1939,13.800\n6,1939,13.800\n7,1939,13.800\n8,1939,13.800\n9,1939,14.100\n10,1939,14.000\n11,1939,14.000\n12,1939,14.000\n1,1940,13.900\n2,1940,14.000\n3,1940,14.000\n4,1940,14.000\n5,1940,14.000\n6,1940,14.100\n7,1940,14.000\n8,1940,14.000\n9,1940,14.000\n10,1940,14.000\n11,1940,14.000\n12,1940,14.100\n1,1941,14.100\n2,1941,14.100\n3,1941,14.200\n4,1941,14.300\n5,1941,14.400\n6,1941,14.700\n7,1941,14.700\n8,1941,14.900\n9,1941,15.100\n10,1941,15.300\n11,1941,15.400\n12,1941,15.500\n1,1942,15.700\n2,1942,15.800\n3,1942,16.000\n4,1942,16.100\n5,1942,16.300\n6,1942,16.300\n7,1942,16.400\n8,1942,16.500\n9,1942,16.500\n10,1942,16.700\n11,1942,16.800\n12,1942,16.900\n1,1943,16.900\n2,1943,16.900\n3,1943,17.200\n4,1943,17.400\n5,1943,17.500\n6,1943,17.500\n7,1943,17.400\n8,1943,17.300\n9,1943,17.400\n10,1943,17.400\n11,1943,17.400\n12,1943,17.400\n1,1944,17.400\n2,1944,17.400\n3,1944,17.400\n4,1944,17.500\n5,1944,17.500\n6,1944,17.600\n7,1944,17.700\n8,1944,17.700\n9,1944,17.700\n10,1944,17.700\n11,1944,17.700\n12,1944,17.800\n1,1945,17.800\n2,1945,17.800\n3,1945,17.800\n4,1945,17.800\n5,1945,17.900\n6,1945,18.100\n7,1945,18.100\n8,1945,18.100\n9,1945,18.100\n10,1945,18.100\n11,1945,18.100\n12,1945,18.200\n1,1946,18.200\n2,1946,18.100\n3,1946,18.300\n4,1946,18.400\n5,1946,18.500\n6,1946,18.700\n7,1946,19.800\n8,1946,20.200\n9,1946,20.400\n10,1946,20.800\n11,1946,21.300\n12,1946,21.500\n1,1947,21.480\n2,1947,21.620\n3,1947,22.000\n4,1947,22.000\n5,1947,21.950\n6,1947,22.080\n7,1947,22.230\n8,1947,22.400\n9,1947,22.840\n10,1947,22.910\n11,1947,23.060\n12,1947,23.410\n1,1948,23.680\n2,1948,23.670\n3,1948,23.500\n4,1948,23.820\n5,1948,24.010\n6,1948,24.150\n7,1948,24.400\n8,1948,24.430\n9,1948,24.360\n10,1948,24.310\n11,1948,24.160\n12,1948,24.050\n1,1949,24.010\n2,1949,23.910\n3,1949,23.910\n4,1949,23.920\n5,1949,23.910\n6,1949,23.920\n7,1949,23.700\n8,1949,23.700\n9,1949,23.750\n10,1949,23.670\n11,1949,23.700\n12,1949,23.610\n1,1950,23.510\n2,1950,23.610\n3,1950,23.640\n4,1950,23.650\n5,1950,23.770\n6,1950,23.880\n7,1950,24.070\n8,1950,24.200\n9,1950,24.340\n10,1950,24.500\n11,1950,24.600\n12,1950,24.980\n1,1951,25.380\n2,1951,25.830\n3,1951,25.880\n4,1951,25.920\n5,1951,25.990\n6,1951,25.930\n7,1951,25.910\n8,1951,25.860\n9,1951,26.030\n10,1951,26.160\n11,1951,26.320\n12,1951,26.470\n1,1952,26.450\n2,1952,26.410\n3,1952,26.390\n4,1952,26.460\n5,1952,26.470\n6,1952,26.530\n7,1952,26.680\n8,1952,26.690\n9,1952,26.630\n10,1952,26.690\n11,1952,26.690\n12,1952,26.710\n1,1953,26.640\n2,1953,26.590\n3,1953,26.630\n4,1953,26.690\n5,1953,26.700\n6,1953,26.770\n7,1953,26.790\n8,1953,26.850\n9,1953,26.890\n10,1953,26.950\n11,1953,26.850\n12,1953,26.870\n1,1954,26.940\n2,1954,26.990\n3,1954,26.930\n4,1954,26.860\n5,1954,26.930\n6,1954,26.940\n7,1954,26.860\n8,1954,26.850\n9,1954,26.810\n10,1954,26.720\n11,1954,26.780\n12,1954,26.770\n1,1955,26.770\n2,1955,26.820\n3,1955,26.790\n4,1955,26.790\n5,1955,26.770\n6,1955,26.710\n7,1955,26.760\n8,1955,26.720\n9,1955,26.850\n10,1955,26.820\n11,1955,26.880\n12,1955,26.870\n1,1956,26.830\n2,1956,26.860\n3,1956,26.890\n4,1956,26.930\n5,1956,27.030\n6,1956,27.150\n7,1956,27.290\n8,1956,27.310\n9,1956,27.350\n10,1956,27.510\n11,1956,27.510\n12,1956,27.630\n1,1957,27.670\n2,1957,27.800\n3,1957,27.860\n4,1957,27.930\n5,1957,28.000\n6,1957,28.110\n7,1957,28.190\n8,1957,28.280\n9,1957,28.320\n10,1957,28.320\n11,1957,28.410\n12,1957,28.470\n1,1958,28.640\n2,1958,28.700\n3,1958,28.870\n4,1958,28.940\n5,1958,28.940\n6,1958,28.910\n7,1958,28.890\n8,1958,28.940\n9,1958,28.910\n10,1958,28.910\n11,1958,28.950\n12,1958,28.970\n1,1959,29.010\n2,1959,29.000\n3,1959,28.970\n4,1959,28.980\n5,1959,29.040\n6,1959,29.110\n7,1959,29.150\n8,1959,29.180\n9,1959,29.250\n10,1959,29.350\n11,1959,29.350\n12,1959,29.410\n1,1960,29.370\n2,1960,29.410\n3,1960,29.410\n4,1960,29.540\n5,1960,29.570\n6,1960,29.610\n7,1960,29.550\n8,1960,29.610\n9,1960,29.610\n10,1960,29.750\n11,1960,29.780\n12,1960,29.810\n1,1961,29.840\n2,1961,29.840\n3,1961,29.840\n4,1961,29.810\n5,1961,29.840\n6,1961,29.840\n7,1961,29.920\n8,1961,29.940\n9,1961,29.980\n10,1961,29.980\n11,1961,29.980\n12,1961,30.010\n1,1962,30.040\n2,1962,30.110\n3,1962,30.170\n4,1962,30.210\n5,1962,30.240\n6,1962,30.210\n7,1962,30.220\n8,1962,30.280\n9,1962,30.420\n10,1962,30.380\n11,1962,30.380\n12,1962,30.380\n1,1963,30.440\n2,1963,30.480\n3,1963,30.510\n4,1963,30.480\n5,1963,30.510\n6,1963,30.610\n7,1963,30.690\n8,1963,30.750\n9,1963,30.720\n10,1963,30.750\n11,1963,30.780\n12,1963,30.880\n1,1964,30.940\n2,1964,30.910\n3,1964,30.940\n4,1964,30.950\n5,1964,30.980\n6,1964,31.010\n7,1964,31.020\n8,1964,31.050\n9,1964,31.080\n10,1964,31.120\n11,1964,31.210\n12,1964,31.250\n1,1965,31.280\n2,1965,31.280\n3,1965,31.310\n4,1965,31.380\n5,1965,31.480\n6,1965,31.610\n7,1965,31.580\n8,1965,31.550\n9,1965,31.620\n10,1965,31.650\n11,1965,31.750\n12,1965,31.850\n1,1966,31.880\n2,1966,32.080\n3,1966,32.180\n4,1966,32.280\n5,1966,32.350\n6,1966,32.380\n7,1966,32.450\n8,1966,32.650\n9,1966,32.750\n10,1966,32.850\n11,1966,32.880\n12,1966,32.920\n1,1967,32.900\n2,1967,33.000\n3,1967,33.000\n4,1967,33.100\n5,1967,33.100\n6,1967,33.300\n7,1967,33.400\n8,1967,33.500\n9,1967,33.600\n10,1967,33.700\n11,1967,33.900\n12,1967,34.000\n1,1968,34.100\n2,1968,34.200\n3,1968,34.300\n4,1968,34.400\n5,1968,34.500\n6,1968,34.700\n7,1968,34.900\n8,1968,35.000\n9,1968,35.100\n10,1968,35.300\n11,1968,35.400\n12,1968,35.600\n1,1969,35.700\n2,1969,35.800\n3,1969,36.100\n4,1969,36.300\n5,1969,36.400\n6,1969,36.600\n7,1969,36.800\n8,1969,36.900\n9,1969,37.100\n10,1969,37.300\n11,1969,37.500\n12,1969,37.700\n1,1970,37.900\n2,1970,38.100\n3,1970,38.300\n4,1970,38.500\n5,1970,38.600\n6,1970,38.800\n7,1970,38.900\n8,1970,39.000\n9,1970,39.200\n10,1970,39.400\n11,1970,39.600\n12,1970,39.800\n1,1971,39.900\n2,1971,39.900\n3,1971,40.000\n4,1971,40.100\n5,1971,40.300\n6,1971,40.500\n7,1971,40.600\n8,1971,40.700\n9,1971,40.800\n10,1971,40.900\n11,1971,41.000\n12,1971,41.100\n1,1972,41.200\n2,1972,41.400\n3,1972,41.400\n4,1972,41.500\n5,1972,41.600\n6,1972,41.700\n7,1972,41.800\n8,1972,41.900\n9,1972,42.100\n10,1972,42.200\n11,1972,42.400\n12,1972,42.500\n1,1973,42.700\n2,1973,43.000\n3,1973,43.400\n4,1973,43.700\n5,1973,43.900\n6,1973,44.200\n7,1973,44.200\n8,1973,45.000\n9,1973,45.200\n10,1973,45.600\n11,1973,45.900\n12,1973,46.300\n1,1974,46.800\n2,1974,47.300\n3,1974,47.800\n4,1974,48.100\n5,1974,48.600\n6,1974,49.000\n7,1974,49.300\n8,1974,49.900\n9,1974,50.600\n10,1974,51.000\n11,1974,51.500\n12,1974,51.900\n1,1975,52.300\n2,1975,52.600\n3,1975,52.800\n4,1975,53.000\n5,1975,53.100\n6,1975,53.500\n7,1975,54.000\n8,1975,54.200\n9,1975,54.600\n10,1975,54.900\n11,1975,55.300\n12,1975,55.600\n1,1976,55.800\n2,1976,55.900\n3,1976,56.000\n4,1976,56.100\n5,1976,56.400\n6,1976,56.700\n7,1976,57.000\n8,1976,57.300\n9,1976,57.600\n10,1976,57.900\n11,1976,58.100\n12,1976,58.400\n1,1977,58.700\n2,1977,59.300\n3,1977,59.600\n4,1977,60.000\n5,1977,60.200\n6,1977,60.500\n7,1977,60.800\n8,1977,61.100\n9,1977,61.300\n10,1977,61.600\n11,1977,62.000\n12,1977,62.300\n1,1978,62.700\n2,1978,63.000\n3,1978,63.400\n4,1978,63.900\n5,1978,64.500\n6,1978,65.000\n7,1978,65.500\n8,1978,65.900\n9,1978,66.500\n10,1978,67.100\n11,1978,67.500\n12,1978,67.900\n1,1979,68.500\n2,1979,69.200\n3,1979,69.900\n4,1979,70.600\n5,1979,71.400\n6,1979,72.200\n7,1979,73.000\n8,1979,73.700\n9,1979,74.400\n10,1979,75.200\n11,1979,76.000\n12,1979,76.900\n1,1980,78.000\n2,1980,79.000\n3,1980,80.100\n4,1980,80.900\n5,1980,81.700\n6,1980,82.500\n7,1980,82.600\n8,1980,83.200\n9,1980,83.900\n10,1980,84.700\n11,1980,85.600\n12,1980,86.400\n1,1981,87.200\n2,1981,88.000\n3,1981,88.600\n4,1981,89.100\n5,1981,89.700\n6,1981,90.500\n7,1981,91.500\n8,1981,92.200\n9,1981,93.100\n10,1981,93.400\n11,1981,93.800\n12,1981,94.100\n1,1982,94.400\n2,1982,94.700\n3,1982,94.700\n4,1982,95.000\n5,1982,95.900\n6,1982,97.000\n7,1982,97.500\n8,1982,97.700\n9,1982,97.700\n10,1982,98.100\n11,1982,98.000\n12,1982,97.700\n1,1983,97.900\n2,1983,98.000\n3,1983,98.100\n4,1983,98.800\n5,1983,99.200\n6,1983,99.400\n7,1983,99.800\n8,1983,100.100\n9,1983,100.400\n10,1983,100.800\n11,1983,101.100\n12,1983,101.400\n1,1984,102.100\n2,1984,102.600\n3,1984,102.900\n4,1984,103.300\n5,1984,103.500\n6,1984,103.700\n7,1984,104.100\n8,1984,104.400\n9,1984,104.700\n10,1984,105.100\n11,1984,105.300\n12,1984,105.500\n1,1985,105.700\n2,1985,106.300\n3,1985,106.800\n4,1985,107.000\n5,1985,107.200\n6,1985,107.500\n7,1985,107.700\n8,1985,107.900\n9,1985,108.100\n10,1985,108.500\n11,1985,109.000\n12,1985,109.500\n1,1986,109.900\n2,1986,109.700\n3,1986,109.100\n4,1986,108.700\n5,1986,109.000\n6,1986,109.400\n7,1986,109.500\n8,1986,109.600\n9,1986,110.000\n10,1986,110.200\n11,1986,110.400\n12,1986,110.800\n1,1987,111.400\n2,1987,111.800\n3,1987,112.200\n4,1987,112.700\n5,1987,113.000\n6,1987,113.500\n7,1987,113.800\n8,1987,114.300\n9,1987,114.700\n10,1987,115.000\n11,1987,115.400\n12,1987,115.600\n1,1988,116.000\n2,1988,116.200\n3,1988,116.500\n4,1988,117.200\n5,1988,117.500\n6,1988,118.000\n7,1988,118.500\n8,1988,119.000\n9,1988,119.500\n10,1988,119.900\n11,1988,120.300\n12,1988,120.700\n1,1989,121.200\n2,1989,121.600\n3,1989,122.200\n4,1989,123.100\n5,1989,123.700\n6,1989,124.100\n7,1989,124.500\n8,1989,124.500\n9,1989,124.800\n10,1989,125.400\n11,1989,125.900\n12,1989,126.300\n1,1990,127.500\n2,1990,128.000\n3,1990,128.600\n4,1990,128.900\n5,1990,129.100\n6,1990,129.900\n7,1990,130.500\n8,1990,131.600\n9,1990,132.500\n10,1990,133.400\n11,1990,133.700\n12,1990,134.200\n1,1991,134.700\n2,1991,134.800\n3,1991,134.800\n4,1991,135.100\n5,1991,135.600\n6,1991,136.000\n7,1991,136.200\n8,1991,136.600\n9,1991,137.000\n10,1991,137.200\n11,1991,137.800\n12,1991,138.200\n1,1992,138.300\n2,1992,138.600\n3,1992,139.100\n4,1992,139.400\n5,1992,139.700\n6,1992,140.100\n7,1992,140.500\n8,1992,140.800\n9,1992,141.100\n10,1992,141.700\n11,1992,142.100\n12,1992,142.300\n1,1993,142.800\n2,1993,143.100\n3,1993,143.300\n4,1993,143.800\n5,1993,144.200\n6,1993,144.300\n7,1993,144.500\n8,1993,144.800\n9,1993,145.000\n10,1993,145.600\n11,1993,146.000\n12,1993,146.300\n1,1994,146.300\n2,1994,146.700\n3,1994,147.100\n4,1994,147.200\n5,1994,147.500\n6,1994,147.900\n7,1994,148.400\n8,1994,149.000\n9,1994,149.300\n10,1994,149.400\n11,1994,149.800\n12,1994,150.100\n1,1995,150.500\n2,1995,150.900\n3,1995,151.200\n4,1995,151.800\n5,1995,152.100\n6,1995,152.400\n7,1995,152.600\n8,1995,152.900\n9,1995,153.100\n10,1995,153.500\n11,1995,153.700\n12,1995,153.900\n1,1996,154.700\n2,1996,155.000\n3,1996,155.500\n4,1996,156.100\n5,1996,156.400\n6,1996,156.700\n7,1996,157.000\n8,1996,157.200\n9,1996,157.700\n10,1996,158.200\n11,1996,158.700\n12,1996,159.100\n1,1997,159.400\n2,1997,159.700\n3,1997,159.800\n4,1997,159.900\n5,1997,159.900\n6,1997,160.200\n7,1997,160.400\n8,1997,160.800\n9,1997,161.200\n10,1997,161.500\n11,1997,161.700\n12,1997,161.800\n1,1998,162.000\n2,1998,162.000\n3,1998,162.000\n4,1998,162.200\n5,1998,162.600\n6,1998,162.800\n7,1998,163.200\n8,1998,163.400\n9,1998,163.500\n10,1998,163.900\n11,1998,164.100\n12,1998,164.400\n1,1999,164.700\n2,1999,164.700\n3,1999,164.800\n4,1999,165.900\n5,1999,166.000\n6,1999,166.000\n7,1999,166.700\n8,1999,167.100\n9,1999,167.800\n10,1999,168.100\n11,1999,168.400\n12,1999,168.800\n1,2000,169.300\n2,2000,170.000\n3,2000,171.000\n4,2000,170.900\n5,2000,171.200\n6,2000,172.200\n7,2000,172.700\n8,2000,172.700\n9,2000,173.600\n10,2000,173.900\n11,2000,174.200\n12,2000,174.600\n1,2001,175.600\n2,2001,176.000\n3,2001,176.100\n4,2001,176.400\n5,2001,177.300\n6,2001,177.700\n7,2001,177.400\n8,2001,177.400\n9,2001,178.100\n10,2001,177.600\n11,2001,177.500\n12,2001,177.400\n1,2002,177.700\n2,2002,178.000\n3,2002,178.500\n4,2002,179.300\n5,2002,179.500\n6,2002,179.600\n7,2002,180.000\n8,2002,180.500\n9,2002,180.800\n10,2002,181.200\n11,2002,181.500\n12,2002,181.800\n1,2003,182.600\n2,2003,183.600\n3,2003,183.900\n4,2003,183.200\n5,2003,182.900\n6,2003,183.100\n7,2003,183.700\n8,2003,184.500\n9,2003,185.100\n10,2003,184.900\n11,2003,185.000\n12,2003,185.500\n1,2004,186.300\n2,2004,186.700\n3,2004,187.100\n4,2004,187.400\n5,2004,188.200\n6,2004,188.900\n7,2004,189.100\n8,2004,189.200\n9,2004,189.800\n10,2004,190.800\n11,2004,191.700\n12,2004,191.700\n1,2005,191.600\n2,2005,192.400\n3,2005,193.100\n4,2005,193.700\n5,2005,193.600\n6,2005,193.700\n7,2005,194.900\n8,2005,196.100\n9,2005,198.800\n10,2005,199.100\n11,2005,198.100\n12,2005,198.100\n1,2006,199.300\n2,2006,199.400\n3,2006,199.700\n4,2006,200.700\n5,2006,201.300\n6,2006,201.800\n7,2006,202.900\n8,2006,203.800\n9,2006,202.800\n10,2006,201.900\n11,2006,202.000\n12,2006,203.100\n1,2007,203.437\n2,2007,204.226\n3,2007,205.288\n4,2007,205.904\n5,2007,206.755\n6,2007,207.234\n7,2007,207.603\n8,2007,207.667\n9,2007,208.547\n10,2007,209.190\n11,2007,210.834\n12,2007,211.445\n1,2008,212.174\n2,2008,212.687\n3,2008,213.448\n4,2008,213.942\n5,2008,215.208\n6,2008,217.463\n7,2008,219.016\n8,2008,218.690\n9,2008,218.877\n10,2008,216.995\n11,2008,213.153\n12,2008,211.398\n1,2009,211.933\n2,2009,212.705\n3,2009,212.495\n4,2009,212.709\n5,2009,213.022\n6,2009,214.790\n7,2009,214.726\n8,2009,215.445\n9,2009,215.861\n10,2009,216.509\n11,2009,217.234\n12,2009,217.347\n1,2010,217.488\n2,2010,217.281\n3,2010,217.353\n4,2010,217.403\n5,2010,217.290\n6,2010,217.199\n7,2010,217.605\n8,2010,217.923\n9,2010,218.275\n10,2010,219.035\n11,2010,219.590\n12,2010,220.472\n1,2011,221.187\n2,2011,221.898\n3,2011,223.046\n4,2011,224.093\n5,2011,224.806\n6,2011,224.806\n7,2011,225.395\n8,2011,226.106\n9,2011,226.597\n10,2011,226.750\n11,2011,227.169\n12,2011,227.223\n1,2012,227.842\n2,2012,228.329\n3,2012,228.807\n4,2012,229.187\n5,2012,228.713\n6,2012,228.524\n7,2012,228.590\n8,2012,229.918\n9,2012,231.015\n10,2012,231.638\n11,2012,231.249\n12,2012,231.221\n1,2013,231.679\n2,2013,232.937\n3,2013,232.282\n4,2013,231.797\n5,2013,231.893\n6,2013,232.445\n7,2013,232.900\n8,2013,233.456\n9,2013,233.544\n10,2013,233.669\n11,2013,234.100\n12,2013,234.719\n1,2014,235.288\n2,2014,235.547\n3,2014,236.028\n4,2014,236.468\n5,2014,236.918\n6,2014,237.231\n7,2014,237.498\n8,2014,237.460\n9,2014,237.477\n10,2014,237.430\n11,2014,236.983\n12,2014,236.252\n1,2015,234.718\n2,2015,235.236\n3,2015,236.005\n4,2015,236.156\n5,2015,236.974\n6,2015,237.684\n7,2015,238.053\n8,2015,238.028\n9,2015,237.506\n10,2015,237.781\n11,2015,238.016\n12,2015,237.817\n1,2016,237.833\n2,2016,237.469\n3,2016,238.038\n4,2016,238.827\n5,2016,239.464\n6,2016,240.167\n7,2016,240.150\n8,2016,240.602\n9,2016,241.051\n10,2016,241.691\n11,2016,242.029\n12,2016,242.772\n1,2017,243.780\n2,2017,243.961\n3,2017,243.749\n4,2017,244.051\n5,2017,243.962\n6,2017,244.182\n7,2017,244.390\n8,2017,245.297\n9,2017,246.418\n10,2017,246.587\n11,2017,247.332\n12,2017,247.901\n1,2018,248.884\n2,2018,249.369\n3,2018,249.498\n4,2018,249.956\n5,2018,250.646\n6,2018,251.134\n7,2018,251.597\n8,2018,251.879\n9,2018,252.010\n10,2018,252.794\n11,2018,252.760\n12,2018,252.723\n1,2019,252.673\n2,2019,253.113\n3,2019,254.148\n4,2019,254.958\n5,2019,255.325\n6,2019,255.361\n7,2019,255.900\n8,2019,256.179\n9,2019,256.596\n10,2019,257.305\n11,2019,257.788\n12,2019,258.263\n1,2020,258.682\n2,2020,259.007\n3,2020,258.165\n4,2020,256.094\n5,2020,255.944\n6,2020,257.217\n7,2020,258.543\n8,2020,259.580\n9,2020,260.190\n10,2020,260.352\n11,2020,260.721\n12,2020,261.560\n1,2021,262.518\n2,2021,263.583\n3,2021,264.910\n4,2021,266.752\n5,2021,268.452\n6,2021,270.664\n7,2021,271.994\n8,2021,272.789\n9,2021,273.887\n10,2021,276.434\n11,2021,278.799\n12,2021,280.808\n1,2022,282.390\n2,2022,284.535\n3,2022,287.553\n4,2022,288.764\n5,2022,291.359\n6,2022,294.996\n7,2022,294.977\n8,2022,295.209\n9,2022,296.341\n10,2022,297.863\n11,2022,298.648\n12,2022,298.812\n1,2023,300.356\n2,2023,301.509\n3,2023,301.744\n4,2023,303.032\n5,2023,303.365\n6,2023,304.003\n7,2023,304.628\n8,2023,306.187\n9,2023,307.288\n10,2023,307.531\n11,2023,308.024\n12,2023,308.742\n1,2024,309.685\n2,2024,311.054\n3,2024,312.230\n4,2024,313.207\n5,2024,313.225\n6,2024,313.049\n7,2024,313.534\n8,2024,314.121\n9,2024,314.686\n10,2024,315.454\n11,2024,316.441\n12,2024,317.685\n1,2025,319.086\n2,2025,319.775\n3,2025,319.615\n4,2025,320.321\n5,2025,320.580\n6,2025,321.500\n7,2025,322.132\n8,2025,323.364\n9,2025,324.368\n10,2025,324.699\n11,2025,325.031\n12,2025,326.030\n`,
        'ch_inflation': `1,1921,215.7\n2,1921,213.2\n3,1921,210.3\n4,1921,208.2\n5,1921,203.3\n6,1921,199.5\n7,1921,197.5\n8,1921,196.6\n9,1921,194.3\n10,1921,192.2\n11,1921,188.4\n12,1921,183.8\n1,1922,183.2\n2,1922,175.8\n3,1922,168.7\n4,1922,163.6\n5,1922,159.5\n6,1922,159.2\n7,1922,159.6\n8,1922,158.3\n9,1922,158.4\n10,1922,159.6\n11,1922,160.7\n12,1922,160.6\n1,1923,160.9\n2,1923,159.6\n3,1923,160.4\n4,1923,161.7\n5,1923,163.2\n6,1923,164.7\n7,1923,164.7\n8,1923,164.7\n9,1923,164.8\n10,1923,165.3\n11,1923,167.5\n12,1923,168.3\n1,1924,169\n2,1924,168.2\n3,1924,168.2\n4,1924,167.4\n5,1924,167.1\n6,1924,167.6\n7,1924,168.1\n8,1924,168\n9,1924,168.2\n10,1924,170.8\n11,1924,171.5\n12,1924,171.1\n1,1925,169.7\n2,1925,169.6\n3,1925,169.3\n4,1925,168.3\n5,1925,168\n6,1925,168.1\n7,1925,167.9\n8,1925,168\n9,1925,168.4\n10,1925,167.3\n11,1925,167.2\n12,1925,166.8\n1,1926,165.8\n2,1926,164.3\n3,1926,163.4\n4,1926,162\n5,1926,161.8\n6,1926,161.7\n7,1926,161.6\n8,1926,160.8\n9,1926,161.1\n10,1926,161.4\n11,1926,161\n12,1926,160.9\n1,1927,160.2\n2,1927,159.7\n3,1927,158.8\n4,1927,158\n5,1927,159.6\n6,1927,160.4\n7,1927,160\n8,1927,159.8\n9,1927,161.2\n10,1927,161.5\n11,1927,162.3\n12,1927,162\n1,1928,161.3\n2,1928,160.6\n3,1928,159.8\n4,1928,160.1\n5,1928,160.4\n6,1928,160.8\n7,1928,161.1\n8,1928,160.6\n9,1928,161\n10,1928,162\n11,1928,162.3\n12,1928,162.2\n1,1929,161.3\n2,1929,161.3\n3,1929,160.6\n4,1929,159.3\n5,1929,160\n6,1929,161\n7,1929,160.8\n8,1929,161.6\n9,1929,162.5\n10,1929,162.5\n11,1929,162\n12,1929,161.5\n1,1930,160.6\n2,1930,159.8\n3,1930,159.4\n4,1930,157.9\n5,1930,157.8\n6,1930,158.3\n7,1930,158.6\n8,1930,158.8\n9,1930,158.7\n10,1930,157.7\n11,1930,157.3\n12,1930,156.2\n1,1931,155.6\n2,1931,154.7\n3,1931,153.1\n4,1931,150.6\n5,1931,150.3\n6,1931,150.2\n7,1931,149.9\n8,1931,149.2\n9,1931,149.2\n10,1931,147.6\n11,1931,146.7\n12,1931,144.8\n1,1932,143.7\n2,1932,142.3\n3,1932,141.7\n4,1932,139.7\n5,1932,138.7\n6,1932,138.3\n7,1932,137.6\n8,1932,137\n9,1932,136.4\n10,1932,136.2\n11,1932,135.5\n12,1932,134.4\n1,1933,133.4\n2,1933,132.8\n3,1933,132.1\n4,1933,131.2\n5,1933,130.5\n6,1933,130.8\n7,1933,130.7\n8,1933,130.7\n9,1933,131.2\n10,1933,131.2\n11,1933,131.4\n12,1933,131.3\n1,1934,131.1\n2,1934,130.8\n3,1934,130.1\n4,1934,129.9\n5,1934,129.2\n6,1934,129.5\n7,1934,129\n8,1934,128.7\n9,1934,128.8\n10,1934,128.8\n11,1934,129\n12,1934,128.8\n1,1935,128\n2,1935,127.5\n3,1935,127.2\n4,1935,126.6\n5,1935,126.3\n6,1935,127.3\n7,1935,128.2\n8,1935,128.7\n9,1935,128.8\n10,1935,129.3\n11,1935,129.9\n12,1935,130\n1,1936,129.7\n2,1936,129.5\n3,1936,129.7\n4,1936,129.9\n5,1936,129.5\n6,1936,130.1\n7,1936,130.2\n8,1936,130.2\n9,1936,130.5\n10,1936,131.6\n11,1936,132\n12,1936,132\n1,1937,133.5\n2,1937,136.4\n3,1937,136.3\n4,1937,136.7\n5,1937,136.3\n6,1937,137.2\n7,1937,137.1\n8,1937,137\n9,1937,137\n10,1937,137.6\n11,1937,137.8\n12,1937,137.8\n1,1938,137.8\n2,1938,137.4\n3,1938,137\n4,1938,136.5\n5,1938,136.3\n6,1938,136.9\n7,1938,136.8\n8,1938,136.4\n9,1938,137.3\n10,1938,137.1\n11,1938,137.1\n12,1938,136.9\n1,1939,136.6\n2,1939,136\n3,1939,135.9\n4,1939,136.4\n5,1939,136.7\n6,1939,137.4\n7,1939,137.5\n8,1939,137.2\n9,1939,138.2\n10,1939,140.5\n11,1939,141.7\n12,1939,142\n1,1940,144.2\n2,1940,144.6\n3,1940,144.8\n4,1940,147.3\n5,1940,148.2\n6,1940,149.6\n7,1940,150.6\n8,1940,151\n9,1940,153.2\n10,1940,156.7\n11,1940,159.2\n12,1940,159.9\n1,1941,162.9\n2,1941,162.9\n3,1941,163.7\n4,1941,168.7\n5,1941,171.2\n6,1941,174.8\n7,1941,177.1\n8,1941,177.7\n9,1941,178.2\n10,1941,181.7\n11,1941,183.8\n12,1941,184.3\n1,1942,186.3\n2,1942,187.9\n3,1942,188.7\n4,1942,191.1\n5,1942,192.3\n6,1942,192.7\n7,1942,195.6\n8,1942,195.2\n9,1942,195.4\n10,1942,197.4\n11,1942,198.6\n12,1942,199.6\n1,1943,200.8\n2,1943,201.2\n3,1943,201.4\n4,1943,202.6\n5,1943,202.7\n6,1943,203.3\n7,1943,203.9\n8,1943,203.5\n9,1943,204.2\n10,1943,204.9\n11,1943,205.1\n12,1943,205.3\n1,1944,205.6\n2,1944,205.9\n3,1944,206.4\n4,1944,207.1\n5,1944,207.5\n6,1944,208.2\n7,1944,208.8\n8,1944,208\n9,1944,208\n10,1944,208.2\n11,1944,208.2\n12,1944,208.2\n1,1945,208.5\n2,1945,208.7\n3,1945,208.8\n4,1945,209.3\n5,1945,209.6\n6,1945,210.3\n7,1945,210.5\n8,1945,210\n9,1945,209.7\n10,1945,208.3\n11,1945,206.7\n12,1945,206.7\n1,1946,206.8\n2,1946,205.9\n3,1946,204.9\n4,1946,205.1\n5,1946,206.4\n6,1946,207.3\n7,1946,207.1\n8,1946,207.2\n9,1946,207.3\n10,1946,211.5\n11,1946,211.8\n12,1946,212\n1,1947,212.3\n2,1947,212.2\n3,1947,212.3\n4,1947,213.2\n5,1947,216.2\n6,1947,217.4\n7,1947,217.4\n8,1947,217.5\n9,1947,217.8\n10,1947,222.7\n11,1947,223\n12,1947,223.3\n1,1948,223.6\n2,1948,223.5\n3,1948,222.9\n4,1948,222.9\n5,1948,223.1\n6,1948,223.7\n7,1948,223\n8,1948,222.7\n9,1948,223.1\n10,1948,223.2\n11,1948,226.3\n12,1948,224.6\n1,1949,223.8\n2,1949,223\n3,1949,222\n4,1949,221.2\n5,1949,221.5\n6,1949,222\n7,1949,221.3\n8,1949,221.4\n9,1949,222\n10,1949,221.3\n11,1949,220.9\n12,1949,220.3\n1,1950,218\n2,1950,217.2\n3,1950,216.8\n4,1950,215.9\n5,1950,216.8\n6,1950,217\n7,1950,217\n8,1950,218.3\n9,1950,219.2\n10,1950,220.3\n11,1950,220.5\n12,1950,220.3\n1,1951,222.3\n2,1951,223\n3,1951,222.8\n4,1951,225.3\n5,1951,227.6\n6,1951,228.1\n7,1951,229.2\n8,1951,230.6\n9,1951,231.3\n10,1951,232.9\n11,1951,234.1\n12,1951,234.3\n1,1952,233.6\n2,1952,234.1\n3,1952,234.1\n4,1952,233.2\n5,1952,234.1\n6,1952,234.8\n7,1952,234.3\n8,1952,234.8\n9,1952,235.3\n10,1952,234.6\n11,1952,234.8\n12,1952,234.6\n1,1953,233.2\n2,1953,232.7\n3,1953,232.5\n4,1953,231.8\n5,1953,232.7\n6,1953,232.9\n7,1953,232.7\n8,1953,232.9\n9,1953,233.6\n10,1953,233.8\n11,1953,233.8\n12,1953,233.3\n1,1954,232.8\n2,1954,232.3\n3,1954,232.1\n4,1954,232.3\n5,1954,233\n6,1954,233.5\n7,1954,234.2\n8,1954,235.1\n9,1954,235.6\n10,1954,236.3\n11,1954,237\n12,1954,236.8\n1,1955,236.1\n2,1955,235.4\n3,1955,235.4\n4,1955,235.6\n5,1955,236.4\n6,1955,236.4\n7,1955,236.5\n8,1955,237.1\n9,1955,237.5\n10,1955,237.9\n11,1955,238.2\n12,1955,238.2\n1,1956,236.8\n2,1956,237.4\n3,1956,238\n4,1956,237.6\n5,1956,240.1\n6,1956,240.6\n7,1956,240.9\n8,1956,241.7\n9,1956,242.2\n10,1956,242.4\n11,1956,243.1\n12,1956,243.4\n1,1957,243\n2,1957,242.6\n3,1957,241.9\n4,1957,242.7\n5,1957,244.2\n6,1957,244.4\n7,1957,244.9\n8,1957,246.3\n9,1957,246.8\n10,1957,247.6\n11,1957,248.3\n12,1957,248.3\n1,1958,247.6\n2,1958,247.6\n3,1958,247.6\n4,1958,247.9\n5,1958,250\n6,1958,250.3\n7,1958,250.3\n8,1958,250.5\n9,1958,250.9\n10,1958,250.8\n11,1958,250.9\n12,1958,250.5\n1,1959,249\n2,1959,248.2\n3,1959,247.8\n4,1959,246.8\n5,1959,247.1\n6,1959,246.8\n7,1959,246.8\n8,1959,247.6\n9,1959,248.5\n10,1959,248.9\n11,1959,249.2\n12,1959,249\n1,1960,248.3\n2,1960,249.6\n3,1960,249.6\n4,1960,250\n5,1960,251.1\n6,1960,251.4\n7,1960,252\n8,1960,252.6\n9,1960,253.3\n10,1960,253.7\n11,1960,253.7\n12,1960,253.4\n1,1961,252.7\n2,1961,252.9\n3,1961,252.9\n4,1961,252.9\n5,1961,254.8\n6,1961,255.2\n7,1961,255.7\n8,1961,257\n9,1961,257.4\n10,1961,258.5\n11,1961,262.1\n12,1961,262.3\n1,1962,262.6\n2,1962,263.3\n3,1962,263.7\n4,1962,264.9\n5,1962,267\n6,1962,267.7\n7,1962,268.5\n8,1962,269.6\n9,1962,269.5\n10,1962,269\n11,1962,270.3\n12,1962,270.8\n1,1963,271.7\n2,1963,273.3\n3,1963,273.3\n4,1963,273.7\n5,1963,275.4\n6,1963,276\n7,1963,276.6\n8,1963,277.4\n9,1963,278.2\n10,1963,279.3\n11,1963,281\n12,1963,281.3\n1,1964,281.5\n2,1964,281.9\n3,1964,282.1\n4,1964,283.9\n5,1964,285.4\n6,1964,285\n7,1964,285.1\n8,1964,285.8\n9,1964,286.3\n10,1964,287.2\n11,1964,287.4\n12,1964,287.8\n1,1965,288.1\n2,1965,289.1\n3,1965,289.2\n4,1965,290.2\n5,1965,293.3\n6,1965,294.4\n7,1965,295.3\n8,1965,296.9\n9,1965,297.7\n10,1965,298.7\n11,1965,301.3\n12,1965,302\n1,1966,303.6\n2,1966,304.4\n3,1966,304.9\n4,1966,305.3\n5,1966,309.1\n6,1966,308.7\n7,1966,308.7\n8,1966,309.7\n9,1966,309.9\n10,1966,310.5\n11,1966,314.2\n12,1966,315.8\n1,1967,316.7\n2,1967,316.1\n3,1967,316.1\n4,1967,316.4\n5,1967,319.8\n6,1967,322\n7,1967,323.2\n8,1967,324.5\n9,1967,323.2\n10,1967,322.9\n11,1967,326\n12,1967,326.9\n1,1968,327.6\n2,1968,328.2\n3,1968,326.9\n4,1968,326.6\n5,1968,327.6\n6,1968,327.9\n7,1968,327.6\n8,1968,328.5\n9,1968,328.8\n10,1968,330\n11,1968,333.1\n12,1968,334.1\n1,1969,335\n2,1969,335.6\n3,1969,335\n4,1969,334.4\n5,1969,335.9\n6,1969,337.5\n7,1969,337.5\n8,1969,336.9\n9,1969,337.2\n10,1969,337.8\n11,1969,340.6\n12,1969,341.8\n1,1970,342.7\n2,1970,342.7\n3,1970,343.4\n4,1970,343.1\n5,1970,346.5\n6,1970,348\n7,1970,348.9\n8,1970,350.2\n9,1970,352.4\n10,1970,354.2\n11,1970,358.9\n12,1970,360.4\n1,1971,362.6\n2,1971,364.1\n3,1971,366.3\n4,1971,366.6\n5,1971,370.6\n6,1971,371\n7,1971,372.5\n8,1971,373.1\n9,1971,375.9\n10,1971,377.5\n11,1971,382.4\n12,1971,384.3\n1,1972,386.8\n2,1972,388.6\n3,1972,389.5\n4,1972,389.9\n5,1972,393.9\n6,1972,396.1\n7,1972,396.4\n8,1972,397.9\n9,1972,401.3\n10,1972,405\n11,1972,408.4\n12,1972,410.6\n1,1973,415.3\n2,1973,418.1\n3,1973,421.5\n4,1973,422.4\n5,1973,425.5\n6,1973,428.6\n7,1973,429.2\n8,1973,430.8\n9,1973,434.5\n10,1973,443.5\n11,1973,452.8\n12,1973,459.6\n1,1974,463.3\n2,1974,459.9\n3,1974,462.1\n4,1974,459.3\n5,1974,467.3\n6,1974,469.8\n7,1974,471.4\n8,1974,476\n9,1974,483.8\n10,1974,486.9\n11,1974,493.7\n12,1974,494.3\n1,1975,497.1\n2,1975,498.6\n3,1975,500.5\n4,1975,501.7\n5,1975,505.4\n6,1975,507.3\n7,1975,506.4\n8,1975,507.9\n9,1975,509.8\n10,1975,510.4\n11,1975,512\n12,1975,511.3\n1,1976,514.1\n2,1976,513.8\n3,1976,512.9\n4,1976,512.9\n5,1976,512\n6,1976,512.9\n7,1976,513.8\n8,1976,515.7\n9,1976,514.4\n10,1976,515.7\n11,1976,516.6\n12,1976,517.8\n1,1977,518.8\n2,1977,519.1\n3,1977,518.2\n4,1977,518.8\n5,1977,518.5\n6,1977,521.9\n7,1977,522.2\n8,1977,522.2\n9,1977,522.5\n10,1977,523.6\n11,1977,523.2\n12,1977,523.8\n1,1978,524.1\n2,1978,524.6\n3,1978,525.2\n4,1978,526.2\n5,1978,526.9\n6,1978,527.8\n7,1978,527.9\n8,1978,528.1\n9,1978,526.8\n10,1978,525.8\n11,1978,526.5\n12,1978,527.6\n1,1979,529.6\n2,1979,535.4\n3,1979,538.3\n4,1979,539.7\n5,1979,541.6\n6,1979,549.2\n7,1979,550.5\n8,1979,549.5\n9,1979,552.1\n10,1979,551.9\n11,1979,554\n12,1979,555\n1,1980,556.7\n2,1980,557.5\n3,1980,559.2\n4,1980,561.7\n5,1980,565.1\n6,1980,567.1\n7,1980,568.9\n8,1980,572.7\n9,1980,573\n10,1980,571.9\n11,1980,577.4\n12,1980,579.4\n1,1981,585\n2,1981,590.7\n3,1981,594.7\n4,1981,593.4\n5,1981,598.9\n6,1981,602.7\n7,1981,606.3\n8,1981,615.3\n9,1981,615.8\n10,1981,613.7\n11,1981,617.9\n12,1981,617.8\n1,1982,620.8\n2,1982,621.8\n3,1982,622.9\n4,1982,626.4\n5,1982,634.5\n6,1982,640.1\n7,1982,642.5\n8,1982,647.4\n9,1982,649.9\n10,1982,651.6\n11,1982,653.4\n12,1982,651.5\n1,1983,650.5\n2,1983,651.4\n3,1983,652.7\n4,1983,654.7\n5,1983,655.3\n6,1983,657.9\n7,1983,656.7\n8,1983,658.5\n9,1983,659.3\n10,1983,660.9\n11,1983,665.1\n12,1983,665.4\n1,1984,667.8\n2,1984,670.2\n3,1984,674.6\n4,1984,675.5\n5,1984,674.2\n6,1984,676.3\n7,1984,675.1\n8,1984,677.6\n9,1984,677.1\n10,1984,681.4\n11,1984,685\n12,1984,684.7\n1,1985,691.4\n2,1985,697.1\n3,1985,700.9\n4,1985,700.1\n5,1985,699.6\n6,1985,699.3\n7,1985,697.8\n8,1985,697.6\n9,1985,699.8\n10,1985,701.5\n11,1985,706.5\n12,1985,706.9\n1,1986,706.6\n2,1986,706.4\n3,1986,707.3\n4,1986,706.9\n5,1986,704.8\n6,1986,704.6\n7,1986,701.3\n8,1986,702.6\n9,1986,703.9\n10,1986,704.1\n11,1986,705.8\n12,1986,707.2\n1,1987,711.3\n2,1987,713.4\n3,1987,714.4\n4,1987,715.3\n5,1987,711.3\n6,1987,713.6\n7,1987,713.8\n8,1987,716.5\n9,1987,714.8\n10,1987,718\n11,1987,720.6\n12,1987,720.6\n1,1988,722.4\n2,1988,725.9\n3,1988,727.6\n4,1988,729\n5,1988,727.2\n6,1988,728.3\n7,1988,726.7\n8,1988,729.2\n9,1988,729.4\n10,1988,730.6\n11,1988,733.3\n12,1988,734.6\n1,1989,738.6\n2,1989,742.3\n3,1989,744.3\n4,1989,748.2\n5,1989,748.8\n6,1989,750\n7,1989,748.4\n8,1989,750.9\n9,1989,754.1\n10,1989,757.1\n11,1989,765.8\n12,1989,771.5\n1,1990,776\n2,1990,778.5\n3,1990,781.2\n4,1990,782.8\n5,1990,786.6\n6,1990,787.7\n7,1990,788.1\n8,1990,796.5\n9,1990,800.3\n10,1990,805.2\n11,1990,812.2\n12,1990,812.2\n1,1991,818.8\n2,1991,826.9\n3,1991,827\n4,1991,829\n5,1991,836\n6,1991,839.5\n7,1991,839.7\n8,1991,844.1\n9,1991,845.7\n10,1991,846.5\n11,1991,856.7\n12,1991,854.6\n1,1992,858.6\n2,1992,864.8\n3,1992,867.3\n4,1992,868.7\n5,1992,871\n6,1992,874.4\n7,1992,871.8\n8,1992,874.1\n9,1992,875.1\n10,1992,876.4\n11,1992,884.8\n12,1992,883.9\n1,1993,888.4\n2,1993,894.1\n3,1993,898.9\n4,1993,901.6\n5,1993,902.1\n6,1993,901.9\n7,1993,901.3\n8,1993,905.8\n9,1993,905.2\n10,1993,905.9\n11,1993,904.7\n12,1993,905.8\n1,1994,906.9\n2,1994,910.5\n3,1994,910.6\n4,1994,911\n5,1994,905.4\n6,1994,906.8\n7,1994,906.6\n8,1994,910.2\n9,1994,910.6\n10,1994,909.8\n11,1994,909.8\n12,1994,909.6\n1,1995,916.1\n2,1995,924.2\n3,1995,924.8\n4,1995,925.6\n5,1995,923.8\n6,1995,925.7\n7,1995,925\n8,1995,928\n9,1995,928.8\n10,1995,927.8\n11,1995,927.1\n12,1995,927.3\n1,1996,930\n2,1996,931.5\n3,1996,933.1\n4,1996,934\n5,1996,930.6\n6,1996,932.4\n7,1996,931.1\n8,1996,933.5\n9,1996,934.1\n10,1996,935.6\n11,1996,933.8\n12,1996,934.6\n1,1997,937.7\n2,1997,939.3\n3,1997,938\n4,1997,938.9\n5,1997,936\n6,1997,936.9\n7,1997,935.9\n8,1997,938\n9,1997,937.9\n10,1997,938\n11,1997,937.7\n12,1997,938.2\n1,1998,937.8\n2,1998,939\n3,1998,938.3\n4,1998,938.7\n5,1998,936.7\n6,1998,937.9\n7,1998,936.6\n8,1998,939.3\n9,1998,938.5\n10,1998,938.3\n11,1998,936.8\n12,1998,936.6\n1,1999,938.5\n2,1999,941.7\n3,1999,942.7\n4,1999,944.3\n5,1999,942.1\n6,1999,943.2\n7,1999,943.5\n8,1999,948.1\n9,1999,949.9\n10,1999,949.9\n11,1999,949\n12,1999,952.2\n1,2000,953.4\n2,2000,957\n3,2000,956.7\n4,2000,957.5\n5,2000,957\n6,2000,960.6\n7,2000,961.3\n8,2000,958.8\n9,2000,963.6\n10,2000,962.6\n11,2000,967.2\n12,2000,966.4\n1,2001,965.8\n2,2001,964.4\n3,2001,966\n4,2001,968.7\n5,2001,973.9\n6,2001,975.8\n7,2001,974.3\n8,2001,968.9\n9,2001,970.1\n10,2001,968.7\n11,2001,969.9\n12,2001,969.6\n1,2002,970.8\n2,2002,970.8\n3,2002,970.9\n4,2002,979.3\n5,2002,980.2\n6,2002,978.9\n7,2002,973.8\n8,2002,973.5\n9,2002,974.9\n10,2002,980.6\n11,2002,978.8\n12,2002,978.2\n1,2003,979\n2,2003,980\n3,2003,983.9\n4,2003,985.9\n5,2003,984.3\n6,2003,984.3\n7,2003,976.4\n8,2003,978.7\n9,2003,980.1\n10,2003,985.1\n11,2003,983.8\n12,2003,984\n1,2004,980.7\n2,2004,980.9\n3,2004,983\n4,2004,991.3\n5,2004,993.5\n6,2004,995.3\n7,2004,984.8\n8,2004,988.5\n9,2004,988.5\n10,2004,997.8\n11,2004,998.8\n12,2004,997.1\n1,2005,992.5\n2,2005,994.7\n3,2005,997.1\n4,2005,1005.3\n5,2005,1004.3\n6,2005,1002\n7,2005,996.6\n8,2005,998\n9,2005,1002.4\n10,2005,1011.1\n11,2005,1008.3\n12,2005,1007.2\n1,2006,1005.3\n2,2006,1008.5\n3,2006,1007.4\n4,2006,1015.9\n5,2006,1018\n6,2006,1017.7\n7,2006,1010.8\n8,2006,1012.5\n9,2006,1010.3\n10,2006,1013.7\n11,2006,1013.3\n12,2006,1013.4\n1,2007,1006.4\n2,2007,1008.3\n3,2007,1009.1\n4,2007,1020.6\n5,2007,1022.9\n6,2007,1024.1\n7,2007,1018\n8,2007,1016.9\n9,2007,1017.9\n10,2007,1026.6\n11,2007,1031.2\n12,2007,1033.7\n1,2008,1030.8\n2,2008,1032.2\n3,2008,1035.7\n4,2008,1043.9\n5,2008,1052.1\n6,2008,1053.9\n7,2008,1049.3\n8,2008,1046.6\n9,2008,1047.7\n10,2008,1053.2\n11,2008,1046.2\n12,2008,1041\n1,2009,1032.2\n2,2009,1034.6\n3,2009,1031.3\n4,2009,1040.4\n5,2009,1042\n6,2009,1043.9\n7,2009,1037\n8,2009,1038.1\n9,2009,1038\n10,2009,1044.4\n11,2009,1046.5\n12,2009,1043.9\n1,2010,1042.8\n2,2010,1044.3\n3,2010,1045.7\n4,2010,1054.7\n5,2010,1053.6\n6,2010,1049\n7,2010,1041.3\n8,2010,1041.2\n9,2010,1040.9\n10,2010,1046.5\n11,2010,1049\n12,2010,1049.4\n1,2011,1045.7\n2,2011,1049.6\n3,2011,1056.2\n4,2011,1057.4\n5,2011,1057.5\n6,2011,1054.9\n7,2011,1046.2\n8,2011,1043.2\n9,2011,1046\n10,2011,1045.3\n11,2011,1043.5\n12,2011,1041.9\n1,2012,1037.4\n2,2012,1040.3\n3,2012,1046.1\n4,2012,1046.9\n5,2012,1046.7\n6,2012,1043.8\n7,2012,1038.8\n8,2012,1038.4\n9,2012,1041.7\n10,2012,1043\n11,2012,1039.6\n12,2012,1037.3\n1,2013,1034.6\n2,2013,1037.7\n3,2013,1039.9\n4,2013,1040.3\n5,2013,1041.4\n6,2013,1042.5\n7,2013,1038.7\n8,2013,1038\n9,2013,1041.1\n10,2013,1040.3\n11,2013,1040.4\n12,2013,1038\n1,2014,1035.2\n2,2014,1036.2\n3,2014,1040\n4,2014,1040.7\n5,2014,1043.7\n6,2014,1043\n7,2014,1039.1\n8,2014,1038.7\n9,2014,1040.2\n10,2014,1040.2\n11,2014,1039.8\n12,2014,1034.6\n1,2015,1030.2\n2,2015,1027.5\n3,2015,1030.9\n4,2015,1029\n5,2015,1031.4\n6,2015,1032.1\n7,2015,1025.8\n8,2015,1024.2\n9,2015,1025.2\n10,2015,1026\n11,2015,1025.3\n12,2015,1021.1\n1,2016,1017.1\n2,2016,1019\n3,2016,1022\n4,2016,1025.4\n5,2016,1026.9\n6,2016,1028.3\n7,2016,1023.7\n8,2016,1022.7\n9,2016,1023.3\n10,2016,1023.8\n11,2016,1021.8\n12,2016,1021\n1,2017,1020.7\n2,2017,1025.6\n3,2017,1027.8\n4,2017,1029.9\n5,2017,1031.8\n6,2017,1030.3\n7,2017,1027.1\n8,2017,1027.4\n9,2017,1030\n10,2017,1030.6\n11,2017,1029.9\n12,2017,1029.6\n1,2018,1028.2\n2,2018,1032\n3,2018,1036\n4,2018,1038.1\n5,2018,1042.1\n6,2018,1042.1\n7,2018,1039.7\n8,2018,1039.6\n9,2018,1040.2\n10,2018,1042\n11,2018,1039.4\n12,2018,1036.7\n1,2019,1034\n2,2019,1038\n3,2019,1043.5\n4,2019,1045.5\n5,2019,1048.7\n6,2019,1048.4\n7,2019,1043\n8,2019,1042.9\n9,2019,1041.7\n10,2019,1039.4\n11,2019,1038\n12,2019,1038.3\n1,2020,1036.1\n3,2020,1037.4\n4,2020,1038.1\n5,2020,1034.4\n6,2020,1034.8\n7,2020,1035.0\n8,2020,1033.4\n9,2020,1033.8\n10,2020,1033.4\n11,2020,1033.5\n12,2020,1030.9\n1,2021,1029.9\n2,2021,1030.4\n3,2021,1032.1\n4,2021,1035.6\n5,2021,1037.8\n6,2021,1040.5\n7,2021,1041.3\n8,2021,1040.4\n9,2021,1043.0\n10,2021,1043.1\n11,2021,1046.3\n12,2021,1046.7\n1,2022,1045.6\n2,2022,1047.4\n3,2022,1054.3\n4,2022,1060.3\n5,2022,1064.2\n6,2022,1071.1\n7,2022,1076.5\n8,2022,1076.1\n9,2022,11079.0\n10,2022,11077.1\n11,2022,11077.6\n12,2022,11077.7\n1,2023,1075.3\n2,2023,1081.8\n3,2023,1089.9\n4,2023,1091.5\n5,2023,1091.5\n6,2023,1094.2\n7,2023,1094.9\n8,2023,1093.4\n9,2023,1095.7\n`
    };

    
    let portfolioRows = [];

    function addPortfolioRow(asset = 'us_stocks', allocation = 0) {
        const row = document.createElement('div');
        row.className = 'swr-portfolio-asset-row';
        row.innerHTML = `
            <select class="swr-asset-select">
                ${AVAILABLE_ASSETS.map(a => `<option value="${a.value}" ${a.value === asset ? 'selected' : ''}>${a.label}</option>`).join('')}
            </select>
            <input type="number" class="swr-asset-allocation" min="0" max="100" step="0.1" value="${allocation}" placeholder="%">
            <button type="button" class="swr-remove-asset">×</button>
        `;

        row.querySelector('.swr-remove-asset').addEventListener('click', () => {
            row.remove();
            portfolioRows = portfolioRows.filter(r => r !== row);
            updateAllocationTotal();
            updateAddAssetButtonState();
        });

        row.querySelector('.swr-asset-allocation').addEventListener('input', updateAllocationTotal);
        row.querySelector('.swr-asset-select').addEventListener('change', () => {
            updateDropdownOptions();
            updateAddAssetButtonState();
        });

        portfolioListDiv.appendChild(row);
        portfolioRows.push(row);
        updateAllocationTotal();
        return row;
    }

    function updateAllocationTotal() {
        const total = Array.from(portfolioListDiv.querySelectorAll('.swr-asset-allocation'))
            .reduce((sum, input) => sum + (parseFloat(input.value) || 0), 0);

        allocationTotalSpan.textContent = `Total: ${total.toFixed(1)}%`;
        allocationTotalSpan.className = 'swr-allocation-total ' + (Math.abs(total - 100) < 0.01 ? 'valid' : 'invalid');

        calculateBtn.disabled = Math.abs(total - 100) >= 0.01;
    }

    function updateDropdownOptions() {
        const selectedAssets = new Set(
            Array.from(portfolioListDiv.querySelectorAll('.swr-asset-select'))
                .map(select => select.value)
        );

        portfolioListDiv.querySelectorAll('.swr-asset-select').forEach(select => {
            const currentValue = select.value;
            Array.from(select.options).forEach(option => {
                option.disabled = selectedAssets.has(option.value) && option.value !== currentValue;
            });
        });
    }

    function updateAddAssetButtonState() {
        const selectedAssets = new Set(
            Array.from(portfolioListDiv.querySelectorAll('.swr-asset-select'))
                .map(select => select.value)
        );
        addAssetBtn.disabled = selectedAssets.size >= AVAILABLE_ASSETS.length;
    }

    addAssetBtn.addEventListener('click', () => {
        if (portfolioRows.length < AVAILABLE_ASSETS.length) {
            const selectedAssets = new Set(
                Array.from(portfolioListDiv.querySelectorAll('.swr-asset-select'))
                    .map(select => select.value)
            );
            const firstUnusedAsset = AVAILABLE_ASSETS.find(a => !selectedAssets.has(a.value));
            addPortfolioRow(firstUnusedAsset ? firstUnusedAsset.value : AVAILABLE_ASSETS[0].value, 0);
            updateDropdownOptions();
            updateAddAssetButtonState();
        }
    });

    
    advancedToggleBtn.addEventListener('click', () => {
        advancedOptions.classList.toggle('show');
        advancedToggleBtn.textContent = advancedOptions.classList.contains('show')
            ? 'Hide Advanced Options'
            : 'Show Advanced Options';
    });

    
    addPortfolioRow('us_stocks', 100);
    updateDropdownOptions();
    updateAddAssetButtonState();

    
    const DATA_CACHE = {};

    function parseCsv(csvText) {
        const lines = csvText.split('\n');
        const data = [];
        for (let i = 0; i < lines.length; i++) {
            const line = lines[i].trim();
            if (line) {
                const parts = line.split(',');
                if (parts.length >= 3) {
                    data.push({
                        month: parseInt(parts[0]),
                        year: parseInt(parts[1]),
                        value: parseFloat(parts[2])
                    });
                }
            }
        }
        return data;
    }

    async function loadData(name) {
        if (DATA_CACHE[name]) return DATA_CACHE[name];
        const csvText = embeddedData[name];
        const data = parseCsv(csvText);
        DATA_CACHE[name] = data;
        return data;
    }

    function normalizeData(data) {
        let df = [...data];
        
        while (df.length > 0 && df[df.length - 1].month !== 12) { df.pop(); }
        while (df.length > 0 && df[0].month !== 1) { df.shift(); }
        if (df.length === 0 || df[0].value === 1.0) return df;

        
        const normalized_df = [];
        let previous_value = df[0].value;
        normalized_df.push({ ...df[0], value: 1.0 });

        for (let i = 1; i < df.length; ++i) {
            const value = df[i].value;
            const new_value = normalized_df[i-1].value * (value / previous_value);
            normalized_df.push({ ...df[i], value: new_value });
            previous_value = value;
        }

        return normalized_df;
    }

    function transformToReturns(data) {
        if (data.length === 0) return [];

        const returns_df = [{...data[0], value: 1.0}];
        let previous_value = data[0].value;

        for (let i = 1; i < data.length; i++) {
            const new_value = data[i].value / previous_value;
            returns_df.push({ ...data[i], value: new_value });
            previous_value = data[i].value;
        }

        return returns_df;
    }

    
    async function runSimulation(scenario) {
        
        const assetDataPromises = scenario.portfolio.map(p => loadData(p.asset));
        const inflationDataPromise = scenario.inflationData === 'no_inflation'
            ? Promise.resolve(null)
            : loadData(scenario.inflationData);

        const rawAssetData = await Promise.all(assetDataPromises);
        const rawInflationData = await inflationDataPromise;

        const assetValues = rawAssetData.map(data => transformToReturns(normalizeData(data)));
        let inflationData = rawInflationData
            ? transformToReturns(normalizeData(rawInflationData))
            : assetValues[0].map(d => ({...d, value: 1.0}));

        if (assetValues.some(d => d.length === 0) || (rawInflationData && inflationData.length === 0)) {
            throw new Error("Could not load required financial data.");
        }

        
        const allData = {};
        const all_dfs = [...assetValues, inflationData].filter(Boolean);
        const max_start_year = Math.max(...all_dfs.map(df => df[0].year));
        const min_end_year = Math.min(...all_dfs.map(df => df[df.length - 1].year));

        
        for (let y = max_start_year; y <= min_end_year; ++y) {
            for (let m = 1; m <= 12; ++m) {
                const key = `${y}-${String(m).padStart(2, '0')}`;
                allData[key] = { year: y, month: m };
            }
        }

        
        assetValues.forEach((assetDf, i) => {
            for (const row of assetDf) {
                const key = `${row.year}-${String(row.month).padStart(2, '0')}`;
                if (allData[key]) {
                    allData[key][`asset_${i}`] = row.value;
                }
            }
        });

        
        for (const row of inflationData) {
            const key = `${row.year}-${String(row.month).padStart(2, '0')}`;
            if (allData[key]) {
                allData[key].inflation = row.value;
            }
        }

        
        Object.values(allData).forEach(dp => {
            for(let i = 0; i < assetValues.length; i++) {
                if (dp[`asset_${i}`] === undefined) dp[`asset_${i}`] = 1.0;
            }
            if (dp.inflation === undefined) dp.inflation = 1.0;
        });

        const allDataArray = Object.values(allData).sort((a, b) => a.year - b.year || a.month - b.month);

        
        const totalMonths = scenario.years * 12;
        const terminalValues = [];
        let bestTerminalValue = -Infinity;
        let bestTerminalValueStart = '';
        let worstTerminalValue = Infinity;
        let worstTerminalValueStart = '';
        let worstDurationMonths = totalMonths;
        let worstDurationStart = '';
        let successes = 0, failures = 0;

        const dataLookup = new Map(allDataArray.map(d => [`${d.year}-${d.month}`, d]));
        const allDataKeys = Array.from(dataLookup.keys()).sort();

        
        for (let year = scenario.startYear; year <= scenario.endYear - scenario.years; year++) {
            for (let month = 1; month <= 12; month++) {
                const startKey = `${year}-${month}`;
                const startIndex = allDataKeys.indexOf(startKey);

                if (startIndex === -1 || startIndex + totalMonths > allDataArray.length) {
                    continue;
                }

                const cohortData = allDataArray.slice(startIndex, startIndex + totalMonths);
                if (cohortData.length < totalMonths) continue;

                
                let currentValues = scenario.portfolio.map(p => scenario.initialValue * (p.allocation / 100));
                let portfolioAllocations = scenario.portfolio.map(p => p.allocation);

                let context = {
                    withdrawal: scenario.initialValue * (scenario.wr / 100),
                    minimum: scenario.initialValue * (scenario.minimum / 100),
                    targetValue: scenario.initialValue,
                    months: 1,
                    totalMonths: totalMonths
                };

                let cohortFailed = false;
                let monthsSurvived = 0;
                let monthInYear = 0;

                
                for (let j = 0; j < cohortData.length; j++) {
                    monthsSurvived = j + 1;
                    context.months = j + 1;
                    monthInYear = (j % 12);
                    const monthData = cohortData[j];

                    
                    for(let k = 0; k < scenario.portfolio.length; k++) {
                        currentValues[k] *= monthData[`asset_${k}`] || 1.0;
                    }

                    
                    let totalValue = currentValues.reduce((a, b) => a + b, 0);
                    if (totalValue <= 0) {
                        cohortFailed = true;
                        break;
                    }

                    
                    if (scenario.rebalance === 'monthly' && scenario.portfolio.length > 1) {
                        
                        currentValues = currentValues.map(val => val * (1.0 - MONTHLY_REBALANCING_COST / 100));
                        totalValue = currentValues.reduce((a, b) => a + b, 0);

                        if (totalValue <= 0) {
                            cohortFailed = true;
                            break;
                        }

                        
                        currentValues = portfolioAllocations.map(alloc => totalValue * (alloc / 100));
                    }

                    
                    if (scenario.rebalance === 'threshold' && scenario.portfolio.length > 1) {
                        let needsRebalance = false;
                        for (let k = 0; k < scenario.portfolio.length; k++) {
                            const currentAlloc = currentValues[k] / totalValue;
                            const targetAlloc = portfolioAllocations[k] / 100;
                            if (Math.abs(currentAlloc - targetAlloc) >= scenario.threshold / 100) {
                                needsRebalance = true;
                                break;
                            }
                        }

                        if (needsRebalance) {
                            
                            currentValues = currentValues.map(val => val * (1.0 - THRESHOLD_REBALANCING_COST / 100));
                            totalValue = currentValues.reduce((a, b) => a + b, 0);

                            if (totalValue <= 0) {
                                cohortFailed = true;
                                break;
                            }

                            
                            currentValues = portfolioAllocations.map(alloc => totalValue * (alloc / 100));
                        }
                    }

                    
                    if (scenario.fees > 0) {
                        const monthlyFee = scenario.fees / 12.0;
                        currentValues = currentValues.map(val => val * (1.0 - monthlyFee));
                        totalValue = currentValues.reduce((a, b) => a + b, 0);

                        if (totalValue <= 0) {
                            cohortFailed = true;
                            break;
                        }
                    }

                    
                    context.withdrawal *= monthData.inflation;
                    context.minimum *= monthData.inflation;
                    context.targetValue *= monthData.inflation;

                    
                    
                    
                    if (j % scenario.withdrawFrequency === 0) {
                        const periods = 12 / scenario.withdrawFrequency;
                        let withdrawalAmount;

                        if (scenario.withdrawalMethod === 'standard') {
                            withdrawalAmount = context.withdrawal / periods;
                        } else if (scenario.withdrawalMethod === 'current') {
                            withdrawalAmount = Math.max(
                                (totalValue * scenario.wr / 100) / periods,
                                context.minimum / periods
                            );
                        } else if (scenario.withdrawalMethod === 'vanguard') {
                            
                            withdrawalAmount = context.withdrawal / periods;
                        }

                        if (withdrawalAmount >= totalValue) {
                            cohortFailed = true;
                            break;
                        }

                        
                        const withdrawalPercentages = currentValues.map(val => val / totalValue);
                        currentValues = currentValues.map((val, k) =>
                            Math.max(0, val - (withdrawalAmount * withdrawalPercentages[k]))
                        );

                        totalValue = currentValues.reduce((a, b) => a + b, 0);
                        if (totalValue <= 0) {
                            cohortFailed = true;
                            break;
                        }
                    }

                    
                    if (monthInYear === 11 && scenario.rebalance === 'yearly' && scenario.portfolio.length > 1) {
                        
                        currentValues = currentValues.map(val => val * (1.0 - YEARLY_REBALANCING_COST / 100));
                        totalValue = currentValues.reduce((a, b) => a + b, 0);

                        if (totalValue <= 0) {
                            cohortFailed = true;
                            break;
                        }

                        
                        currentValues = portfolioAllocations.map(alloc => totalValue * (alloc / 100));
                    }
                }

                
                const finalValue = cohortFailed ? 0 : currentValues.reduce((a, b) => a + b, 0);
                const thresholdValue = scenario.finalInflation
                    ? scenario.finalThreshold * context.targetValue / 100
                    : scenario.finalThreshold * scenario.initialValue / 100;

                if (!cohortFailed && finalValue <= thresholdValue) {
                    cohortFailed = true;
                }

                terminalValues.push(finalValue);

                if (cohortFailed) {
                    failures++;
                    if (monthsSurvived < worstDurationMonths) {
                        worstDurationMonths = monthsSurvived;
                        worstDurationStart = `${month}/${year}`;
                    }
                    if (finalValue <= worstTerminalValue) {
                        worstTerminalValue = finalValue;
                        worstTerminalValueStart = `${month}/${year}`;
                    }
                } else {
                    successes++;
                }

                if (finalValue > bestTerminalValue) {
                    bestTerminalValue = finalValue;
                    bestTerminalValueStart = `${month}/${year}`;
                }
                if (finalValue < worstTerminalValue) {
                    worstTerminalValue = finalValue;
                    worstTerminalValueStart = `${month}/${year}`;
                }
            }
        }

        
        if (successes + failures === 0) {
            return {
                successRate: 0, successes: 0, failures: 0, totalScenarios: 0,
                bestTerminalValue: 0, bestTerminalValueStart: '',
                worstTerminalValue: 0, worstTerminalValueStart: '',
                worstDuration: 0, worstDurationStart: '',
                medianTerminalValue: 0, averageTerminalValue: 0,
                minTerminalValue: 0, maxTerminalValue: 0
            };
        }

        const totalScenarios = successes + failures;
        const successRate = 100 * (successes / totalScenarios);

        const averageTerminalValue = terminalValues.reduce((a, b) => a + b, 0) / terminalValues.length;
        terminalValues.sort((a, b) => a - b);
        const mid = Math.floor(terminalValues.length / 2);
        const medianTerminalValue = terminalValues.length % 2 === 0
            ? (terminalValues[mid - 1] + terminalValues[mid]) / 2
            : terminalValues[mid];

        return {
            successRate,
            successes,
            failures,
            totalScenarios,
            bestTerminalValue,
            bestTerminalValueStart,
            worstTerminalValue,
            worstTerminalValueStart,
            worstDuration: worstDurationMonths,
            worstDurationStart,
            medianTerminalValue,
            averageTerminalValue,
            minTerminalValue: terminalValues[0],
            maxTerminalValue: terminalValues[terminalValues.length - 1]
        };
    }

    
    calculateBtn.addEventListener('click', async () => {
        resultsDiv.style.display = 'block';
        resultsDiv.innerHTML = '<div class="swr-spinner"></div>';
        calculateBtn.disabled = true;
        calculateBtn.textContent = 'Calculating...';

        try {
            
            const totalAllocation = Array.from(portfolioListDiv.querySelectorAll('.swr-asset-allocation'))
                .reduce((sum, input) => sum + (parseFloat(input.value) || 0), 0);

            if (Math.abs(totalAllocation - 100) >= 0.01) {
                throw new Error("Total portfolio allocation must be exactly 100%.");
            }

            const initialValue = parseFloat(document.getElementById('swr-initial-value').value);
            if (initialValue <= 0) {
                throw new Error("Initial portfolio value must be greater than 0.");
            }

            
            const portfolioRows = portfolioListDiv.querySelectorAll('.swr-portfolio-asset-row');
            let portfolioAssets = Array.from(portfolioRows).map(row => ({
                asset: row.querySelector('.swr-asset-select').value,
                allocation: parseFloat(row.querySelector('.swr-asset-allocation').value) || 0,
            }));

            const scenario = {
                initialValue: initialValue,
                years: parseInt(document.getElementById('swr-years').value),
                startYear: parseInt(document.getElementById('swr-start-year').value),
                endYear: parseInt(document.getElementById('swr-end-year').value),
                wr: parseFloat(document.getElementById('swr-withdrawal-rate').value),
                fees: parseFloat(document.getElementById('swr-fees').value) / 100.0,
                portfolio: portfolioAssets.filter(p => p.allocation > 0),
                inflationData: document.getElementById('swr-inflation').value,
                withdrawFrequency: parseInt(document.getElementById('swr-withdraw-frequency').value),
                withdrawalMethod: document.getElementById('swr-withdrawal-method').value,
                minimum: parseFloat(document.getElementById('swr-minimum').value),
                rebalance: document.getElementById('swr-rebalance').value,
                threshold: parseFloat(document.getElementById('swr-threshold').value),
                finalThreshold: parseFloat(document.getElementById('swr-final-threshold').value),
                finalInflation: document.getElementById('swr-final-inflation').checked
            };

            if (scenario.portfolio.length === 0) {
                throw new Error("Portfolio must have at least one asset with an allocation greater than 0.");
            }
            if (scenario.years <= 0) {
                throw new Error("Number of years must be positive.");
            }

            
            const results = await runSimulation(scenario);

            
            resultsDiv.innerHTML = `
                <h4>Simulation Results</h4>
                <p><strong>Success Rate:</strong> ${results.successRate.toFixed(2)}%
                   (${results.successes} successes / ${results.totalScenarios} scenarios)</p>
                <p><strong>Failures:</strong> ${results.failures}</p>

                <h5 style="margin-top: 1.5rem; margin-bottom: 0.5rem;">Terminal Values</h5>
                <p><strong>Best:</strong> $${results.bestTerminalValue.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}
                   (starting ${results.bestTerminalValueStart})</p>
                <p><strong>Worst:</strong> $${results.worstTerminalValue.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}
                   (starting ${results.worstTerminalValueStart})</p>
                <p><strong>Median:</strong> $${results.medianTerminalValue.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}</p>
                <p><strong>Average:</strong> $${results.averageTerminalValue.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}</p>

                <h5 style="margin-top: 1.5rem; margin-bottom: 0.5rem;">Worst Case</h5>
                <p><strong>Worst Duration:</strong> ${results.worstDuration} months
                   (starting ${results.worstDurationStart})</p>
            `;
        } catch (error) {
            resultsDiv.innerHTML = `<div style="color: var(--swr-failure-color);"><strong>Error:</strong> ${error.message}</div>`;
            console.error(error);
        } finally {
            calculateBtn.textContent = 'Calculate Success Rate';
            calculateBtn.disabled = false;
        }
    });
})();
</script>

<p><strong>Quick Start — How to use this calculator</strong></p>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow bg-primary-100 dark:bg-primary-900"
  
  >
  <span
    
      class="text-primary-400 pe-3 flex items-center"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span>
  </span>

  <span
    
      class="dark:text-neutral-300"
    
    >For a comprehensive guide, refer to the <a href="/posts/how_to_use_the_swr_calculator_a_practical_guide/" >SWR Calculator Guide</a>.</span>
</div>

<ul>
<li>Enter your <strong>Initial Value</strong>, <strong>Years (horizon)</strong>, and <strong>Withdrawal Rate (%)</strong>.</li>
<li>Set your <strong>Start Year</strong> and <strong>End Year</strong> to define the historical window.</li>
<li>Choose your <strong>Withdrawal Frequency</strong>, <strong>Inflation Adjustment</strong>, and <strong>Rebalancing Strategy</strong>.</li>
<li>Build your <strong>Portfolio allocation</strong>; allocations must sum to <strong>exactly 100%</strong>.</li>
<li>Optionally set <strong>Annual Fees (%)</strong>.</li>
<li>Click <strong>Calculate</strong>. The tool runs monthly rolling simulations and shows success probability plus summary statistics.</li>
</ul>
<p>Notes:</p>
<ul>
<li>This calculator runs historical rolling-window simulations using embedded monthly return series. It does <u>NOT</u> run Monte Carlo simulations. I will have a separate calculator for that. Withdrawals can be inflation-adjusted (or not), and the portfolio can be rebalanced yearly or not at all.</li>
</ul>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow bg-primary-100 dark:bg-primary-900"
  
  >
  <span
    
      class="text-primary-400 pe-3 flex items-center"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span>
  </span>

  <span
    
      class="dark:text-neutral-300"
    
    ><strong>Disclaimer:</strong> This calculator reflects my personal views and is for educational purposes only. It is not financial advice. Every situation is different. Always check your country's specific tax and investment rules before acting. See the full <a href="/disclaimer/" >Disclaimer</a> and <a href="/privacy/" >Privacy Policy</a> for the long version.</span>
</div>

]]></content:encoded><media:content url="https://libreleo.com/img/featured/interactive_safe_withdrawal_rate_calculator.webp" medium="image"/></item><item><title>Emergency Fund: Your Financial Safety Net</title><link>https://libreleo.com/posts/emergency-fund-calculator-guide/</link><pubDate>Fri, 02 Jan 2026 00:00:00 +0000</pubDate><guid>https://libreleo.com/posts/emergency-fund-calculator-guide/</guid><description>Learn why an emergency fund is essential for financial stability, how much you should save, and use our free calculator to determine your ideal emergency fund size.</description><content:encoded><![CDATA[<p>Life is unpredictable. Your car breaks down before payday (Murphy's law) or you get unexpectedly fired among other events. These moments are stressful enough without wondering how you'll pay for all of it.</p>
<p>That's where an emergency fund comes in!</p>
<p><strong>→ Calculate your exact emergency fund target:</strong> <a href="/calculators/emergency-fund-calculator/" >Emergency Fund Calculator</a></p>

<h2 class="relative group">What Is an Emergency Fund?
    <div id="what-is-an-emergency-fund" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-is-an-emergency-fund" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>An emergency fund is money set aside specifically for emergencies. Not vacations. Not a new TV. Just emergencies.</p>

<h3 class="relative group">Why You Need One
    <div id="why-you-need-one" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-you-need-one" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Without an emergency fund, you're one unexpected expense away from:</p>
<ul>
<li>Credit card debt at a ridiculous 20%+ interest</li>
<li>Using your retirement accounts</li>
<li>Borrowing</li>
<li>Selling some of your investments</li>
<li>Desperate financial decisions under pressure</li>
</ul>

<h3 class="relative group">What Counts as an Emergency?
    <div id="what-counts-as-an-emergency" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-counts-as-an-emergency" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Is it urgent, necessary, and unexpected?</p>
<p><strong>True emergencies:</strong></p>
<ul>
<li>Job loss or a salary cut</li>
<li>Medical emergencies not covered by insurance</li>
<li>Urgent home repairs</li>
<li>Unexpected car repairs</li>
<li>Emergency family travel</li>
</ul>
<p><strong>Not emergencies:</strong></p>
<ul>
<li>Holiday shopping</li>
<li>Concert tickets</li>
<li>&quot;Good deals&quot; on things you want</li>
<li>Annual expenses you could have planned for</li>
</ul>

<h2 class="relative group">How Much Should You Save?
    <div id="how-much-should-you-save" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#how-much-should-you-save" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Depends on you. But standard advice is: 3-6 months of essential expenses.</p>

<h3 class="relative group">Save 3 Months If You Have:
    <div id="save-3-months-if-you-have" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#save-3-months-if-you-have" aria-label="Anchor">#</a>
    </span>
    
</h3>
<ul>
<li>Stable employment in secure industry</li>
<li>Dual-income household</li>
<li>Minimal debts</li>
<li>Easy job replacement in your field</li>
</ul>

<h3 class="relative group">Save 6+ Months If You Have:
    <div id="save-6-months-if-you-have" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#save-6-months-if-you-have" aria-label="Anchor">#</a>
    </span>
    
</h3>
<ul>
<li>Self-employed</li>
<li>One income</li>
<li>Significant health concerns</li>
<li>Difficulty replacing income quickly</li>
</ul>
<p><strong>Stop guessing. Calculate your exact number:</strong>
<a href="/calculators/emergency-fund-calculator/" >Emergency Fund Calculator</a></p>
<p>The calculator breaks down your monthly expenses and shows exactly how much you need based on your desired runway.</p>

<h2 class="relative group">Where to Keep It &amp; How to Build It
    <div id="where-to-keep-it--how-to-build-it" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#where-to-keep-it--how-to-build-it" aria-label="Anchor">#</a>
    </span>
    
</h2>

<h3 class="relative group">Best Places for Your Fund
    <div id="best-places-for-your-fund" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#best-places-for-your-fund" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Your emergency fund needs three qualities:</p>
<p><strong>1. Accessible</strong> (within 1-2 days)</p>
<ul>
<li>High-yield savings accounts ✓</li>
<li>Money market accounts ✓</li>
<li>or Treasury Bonds. For example ticker: CLIP ✓</li>
</ul>
<p><strong>Avoid:</strong></p>
<ul>
<li>Stocks or similar</li>
<li>Retirement accounts</li>
</ul>
<p><strong>2. Safe</strong> (Make sure your money is in a safe place)
<strong>3. Separate</strong> (a different account from checking)</p>
<p><strong>Best option:</strong> High-yield savings accounts or Treasury Bonds (they pay monthly dividends)</p>

<h3 class="relative group">Building Your Fund: Start Small
    <div id="building-your-fund-start-small" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#building-your-fund-start-small" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p><strong>Phase 1: The $1,000 Mini-Fund</strong>
Your first goal is not huge, but should cover for most emergencies.  emergencies:</p>
<ul>
<li>Minor car repairs</li>
<li>Urgent dental work</li>
<li>Small home repairs</li>
<li>Replacement appliances</li>
</ul>
<p><strong>Phase 2: Automate Everything</strong></p>
<ol>
<li>Set up automatic transfers when you get your salary</li>
<li>Decide on a recurring amount</li>
<li>It's non-negotiable</li>
<li>Increase when you get raises or a bonus</li>
</ol>
<p><strong>Phase 3: Increase Your Savings</strong>
Any extraordinary income is transferred to the fund:</p>
<ul>
<li>refunds</li>
<li>Work bonuses</li>
<li>Gift money</li>
<li>Side hustle income</li>
<li>Money from selling unused items</li>
</ul>

<h2 class="relative group">Using It Wisely
    <div id="using-it-wisely" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#using-it-wisely" aria-label="Anchor">#</a>
    </span>
    
</h2>

<h3 class="relative group">The Three Questions Test
    <div id="the-three-questions-test" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-three-questions-test" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Before touching your emergency fund, ask:</p>
<ol>
<li>Is this truly unexpected?</li>
<li>Is it necessary for health, safety, or survival?</li>
<li>Do I have no other reasonable way to pay for this?</li>
</ol>
<p>All three &quot;yes&quot;? Use it. That's what it's for.</p>

<h3 class="relative group">Avoid These Mistakes
    <div id="avoid-these-mistakes" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#avoid-these-mistakes" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p><strong>Mistake #1: Too Accessible</strong>
Keep it in a separate account. Not your checking.</p>
<p><strong>Mistake #2: Never Adjusting</strong>
Review annually.</p>
<p><strong>Mistake #3: Chasing Returns</strong>
Accept the yield you get from savings accounts or treasury  bonds. Your emergency fund is NOT an investment. It's insurance.</p>
<p><strong>Mistake #4: Not Replenishing</strong>
Used your fund? Your new #1 priority is rebuilding it immediately.</p>

<h2 class="relative group">Your Action Plan
    <div id="your-action-plan" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#your-action-plan" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p><strong>This Week:</strong></p>
<ol>
<li><strong>Calculate your target:</strong> <a href="/calculators/emergency-fund-calculator/" >Emergency Fund Calculator</a></li>
<li>Open a high-yield account or start putting some money in Treasury Bonds.</li>
<li>Set up automatic transfer</li>
</ol>
<p><strong>This Month:</strong></p>
<ul>
<li>Review budget for temporary cuts</li>
<li>Redirect one income stream to fund</li>
</ul>
<p><strong>This Quarter:</strong></p>
<ul>
<li>Reach $1,000 mini fund goal</li>
<li>Adjust automatic transfers</li>
<li>Keep momentum toward full fund</li>
</ul>
<p><strong>This Year:</strong></p>
<ul>
<li>Hit your 3-6 month target</li>
<li>Review for life changes</li>
<li>Sleep better knowing you're protected. And trust me, you'll be happy to know you've got an emergency fund</li>
</ul>

<h2 class="relative group">The Bottom Line
    <div id="the-bottom-line" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-bottom-line" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>An emergency fund is not sexy. It won't make you rich. But it helps prevent you from becoming poor when life suddenly doesn’t go as planned.</p>
<div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl">
  Peace of mind!
</div>

<p><strong>→ Start now:</strong> <a href="/calculators/emergency-fund-calculator/" >Emergency Fund Calculator</a></p>
<p>Calculate your target, set your goal, and start building your safety net today.</p>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow bg-primary-100 dark:bg-primary-900"
  
  >
  <span
    
      class="text-primary-400 pe-3 flex items-center"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span>
  </span>

  <span
    
      class="dark:text-neutral-300"
    
    ><strong>Disclaimer:</strong> This post reflects my personal views and is for educational purposes only. It is not financial advice. Every situation is different. Always check your country's specific tax and investment rules before acting. See the full <a href="/disclaimer/" >Disclaimer</a> and <a href="/privacy/" >Privacy Policy</a> for the long version.</span>
</div>

]]></content:encoded><media:content url="https://libreleo.com/img/featured/emergency-fund-calculator-guide.webp" medium="image"/></item><item><title>How to Use the Emergency Fund Calculator</title><link>https://libreleo.com/calculators/emergency-fund-calculator/</link><pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate><guid>https://libreleo.com/calculators/emergency-fund-calculator/</guid><description>Step-by-step guide to using my free emergency fund calculator to determine how much cash you should save for emergencies.</description><content:encoded><![CDATA[<span class="flex cursor-pointer">
  
  
  
  
    <span
      class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
  
    
Updated: 19/06/2026

  </span>
</span>


<div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl">
  Use this interactive calculator to determine exactly how much you should save for emergencies based on your actual monthly expenses and desired runway length.
</div>

<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="tip">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span></div>
        <div class="grow">
          Tip
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p><strong>Want to understand emergency funds better?</strong> Read my complete guide: <a href="/posts/emergency-fund-calculator-guide/" >Emergency Fund - Your Financial Safety Net</a></p></div></div><hr>

<h2 class="relative group">Emergency Fund Calculator
    <div id="emergency-fund-calculator" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#emergency-fund-calculator" aria-label="Anchor">#</a>
    </span>
    
</h2>

<style>
    :root {
        --ef-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
        --ef-background-color: #ffffff;
        --ef-card-background-color: #ffffff;
        --ef-border-color: #e2e8f0;
        --ef-text-color: #1a202c;
        --ef-label-color: #4a5568;
        --ef-input-background-color: #ffffff;
        --ef-input-border-color: #cbd5e0;
        --ef-primary-color: #48bb78;  
        --ef-primary-color-light: #9ae6b4;  
        --ef-results-background: #f0fff4;  
        --ef-tooltip-bg: #555;
        --ef-tooltip-text: #fff;
        --ef-slider-bg: #e2e8f0;
        --ef-button-hover-bg: #e2e8f0;
    }

    .dark {
        --ef-background-color: #1a202c;
        --ef-card-background-color: #2d3748;
        --ef-border-color: #4a5568;
        --ef-text-color: #e2e8f0;
        --ef-label-color: #a0aec0;
        --ef-input-background-color: #1a202c;
        --ef-input-border-color: #4a5568;
        --ef-primary-color: #48bb78;  
        --ef-primary-color-light: #68d391;  
        --ef-results-background: #2f4f3f;  
        --ef-tooltip-bg: #4a5568;
        --ef-tooltip-text: #e2e8f0;
        --ef-slider-bg: #4a5568;
        --ef-button-hover-bg: #4a5568;
    }

    .ef-calculator {
        font-family: var(--ef-font-family);
        background-color: var(--ef-card-background-color);
        color: var(--ef-text-color);
        border: 1px solid var(--ef-border-color);
        border-radius: 0.75rem;
        padding: 2rem;
        margin: 2rem auto;
        max-width: 900px;
        box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
    }

    .ef-header {
        text-align: left;
        margin-bottom: 2rem;
    }

    .ef-calculator h2 {
        margin-top: 0;
        margin-bottom: 0.5rem;
        font-size: 2.25rem;
        font-weight: 700;
        color: var(--ef-text-color);
    }

    .ef-calculator .ef-subtitle {
        font-size: 1.125rem;
        color: var(--ef-label-color);
    }

    .ef-main-grid {
        display: flex;
        flex-direction: column;
        gap: 3rem;
    }

    .ef-inputs-column {
        display: flex;
        flex-direction: column;
        gap: 1.5rem;
    }

    .ef-section-title {
        font-weight: 700;
        text-transform: uppercase;
        font-size: 0.875rem;
        color: var(--ef-label-color);
        margin-bottom: 0.75rem;
    }

    .ef-form-group {
        display: flex;
        align-items: center;
        gap: 0.5rem;
        position: relative;
    }

    .ef-form-group label {
        flex: 1;
        color: var(--ef-label-color);
        white-space: nowrap;
    }

    .ef-form-group input[type="text"],
    .ef-form-group input[type="number"] {
        padding: 0.75rem;
        border: 1px solid var(--ef-input-border-color);
        border-radius: 0.375rem;
        background-color: var(--ef-input-background-color);
        color: var(--ef-text-color);
        width: 120px;
        box-sizing: border-box;
        font-size: 1rem;
        text-align: right;
    }

    .ef-form-group input[type="text"]:focus,
    .ef-form-group input[type="number"]:focus {
        outline: none;
        border-color: var(--ef-primary-color);
        box-shadow: 0 0 0 1px var(--ef-primary-color);
    }

    .ef-tooltip {
        position: relative;
        cursor: pointer;
        margin-left: 0.25rem;
    }

    .ef-tooltip .ef-tooltip-text {
        visibility: hidden;
        width: 200px;
        background-color: var(--ef-tooltip-bg);
        color: var(--ef-tooltip-text);
        text-align: center;
        border-radius: 6px;
        padding: 5px;
        position: absolute;
        z-index: 1;
        bottom: 125%;
        left: 50%;
        margin-left: -100px;
        opacity: 0;
        transition: opacity 0.3s;
        font-size: 0.875rem;
        white-space: normal;
    }

    .ef-tooltip:hover .ef-tooltip-text {
        visibility: visible;
        opacity: 1;
    }

     
    .ef-runway-section {
        margin-top: 1.5rem;
    }

    .ef-runway-slider-group {
        display: flex;
        align-items: center;
        gap: 1rem;
        margin-top: 1rem;
    }

    #ef-runway-length-slider {
        -webkit-appearance: none;
        appearance: none;
        width: 100%;
        height: 8px;
        background: var(--ef-slider-bg);
        border-radius: 5px;
        outline: none;
        opacity: 0.7;
        -webkit-transition: .2s;
        transition: opacity .2s;
    }
    #ef-runway-length-slider:hover {
        opacity: 1;
    }
    #ef-runway-length-slider::-webkit-slider-thumb {
        -webkit-appearance: none;
        appearance: none;
        width: 20px;
        height: 20px;
        background: var(--ef-primary-color);
        cursor: pointer;
        border-radius: 50%;
    }
    #ef-runway-length-slider::-moz-range-thumb {
        width: 20px;
        height: 20px;
        background: var(--ef-primary-color);
        cursor: pointer;
        border-radius: 50%;
    }

    .ef-runway-display {
        display: flex;
        align-items: center;
        border: 1px solid var(--ef-input-border-color);
        border-radius: 0.375rem;
        padding: 0.75rem;
        gap: 0.5rem;
    }
    .ef-runway-display span {
        color: var(--ef-label-color);
        font-size: 0.875rem;
    }
    .ef-runway-display input {
        border: none;
        background: none;
        color: var(--ef-text-color);
        font-size: 1rem;
        width: 40px;
        text-align: center;
        padding: 0;
    }
    .ef-runway-display input:focus {
        outline: none;
    }

     
    .ef-results {
        margin-top: 2rem;
        background-color: var(--ef-results-background);
        border: 1px solid var(--ef-primary-color-light);
        border-radius: 0.375rem;
        padding: 1.5rem;
        display: flex;
        flex-direction: column;
        gap: 1rem;
    }

    .ef-result-item {
        display: flex;
        justify-content: space-between;
        font-size: 1.125rem;
        font-weight: 600;
        color: var(--ef-text-color);
    }
    .ef-result-item span:first-child {
        color: var(--ef-label-color);
    }

     
    .ef-reset-button {
        margin-top: 1rem;
        padding: 0.75rem 1.5rem;
        background-color: transparent;
        color: var(--ef-label-color);
        border: 1px solid var(--ef-input-border-color);
        border-radius: 0.375rem;
        font-size: 0.875rem;
        font-weight: 600;
        cursor: pointer;
        width: 100%;
        transition: all 0.2s;
    }

    .ef-reset-button:hover {
        background-color: var(--ef-button-hover-bg);
        border-color: var(--ef-label-color);
    }

    .ef-reset-button:active {
        transform: scale(0.98);
    }

    .ef-chart-container {
        position: relative;
        height: 350px;
        width: 380px;
        padding: 1rem;
        border: 1px solid var(--ef-border-color);
        border-radius: 0.75rem;
    }

</style>

<div class="ef-calculator">

    
<script>
(function () {
  if (window.finfreeCurrency) return;  

  var SYMBOLS = {
    USD: '$',
    EUR: '€',
    GBP: '£',
    CHF: 'CHF ',
    AED: 'AED ',
    SGD: 'S$',
    HKD: 'HK$',
    CNY: 'CN¥',
    PHP: '₱',
    MYR: 'RM ',
    INR: '₹'
  };

  var STORAGE_KEY = 'finfree-currency';
  var EVENT_NAME = 'finfree-currency-change';

  function safeRead() {
    try { return localStorage.getItem(STORAGE_KEY) || 'USD'; } catch (e) { return 'USD'; }
  }
  function safeWrite(code) {
    try { localStorage.setItem(STORAGE_KEY, code); } catch (e) {}
  }

  window.finfreeCurrency = {
    getCode: function () { return safeRead(); },
    getSymbol: function () { return SYMBOLS[safeRead()] || '$'; },
    getSymbolFor: function (code) { return SYMBOLS[code] || '$'; },
    set: function (code) {
      if (!SYMBOLS[code]) return;
      safeWrite(code);
      var detail = { code: code, symbol: SYMBOLS[code] };
      document.dispatchEvent(new CustomEvent(EVENT_NAME, { detail: detail }));
    },
    EVENT_NAME: EVENT_NAME,
    SYMBOLS: SYMBOLS
  };

  
  document.addEventListener(EVENT_NAME, function (e) {
    var selectors = document.querySelectorAll('select[data-finfree-currency]');
    selectors.forEach(function (s) {
      if (s.value !== e.detail.code) s.value = e.detail.code;
    });
  });

  document.addEventListener('DOMContentLoaded', function () {
    var current = safeRead();
    var selectors = document.querySelectorAll('select[data-finfree-currency]');
    selectors.forEach(function (s) {
      s.value = current;
      s.addEventListener('change', function () {
        window.finfreeCurrency.set(s.value);
      });
    });
  });
})();
</script>

<style>
  .finfree-currency-selector {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    margin-bottom: 14px;
    font-size: 0.85em;
    color: var(--muted, #666);
  }
  .finfree-currency-selector select {
    padding: 4px 8px;
    border: 1px solid var(--input-border, #ced4da);
    border-radius: 4px;
    background-color: var(--input-bg, #ffffff);
    color: var(--card-text, #212529);
    font-size: 0.95em;
  }
</style>

<div class="finfree-currency-selector">
  <label for="finfree-currency-select-1782461070869363000">Currency:</label>
  <select id="finfree-currency-select-1782461070869366000" data-finfree-currency>
    <option value="USD">USD ($)</option>
    <option value="EUR">EUR (€)</option>
    <option value="GBP">GBP (£)</option>
    <option value="CHF">CHF (Fr.)</option>
    <option value="AED">AED (د.إ)</option>
    <option value="SGD">SGD (S$)</option>
    <option value="HKD">HKD (HK$)</option>
    <option value="CNY">CNY (¥)</option>
    <option value="PHP">PHP (₱)</option>
    <option value="MYR">MYR (RM)</option>
    <option value="INR">INR (₹)</option>
  </select>
</div>


    <div class="ef-header">
        <h2>Emergency Fund Calculator</h2>
        <p class="ef-subtitle">How much cash should you have saved up in case of an emergency?</p>
    </div>
    <div class="ef-main-grid">
        <div class="ef-inputs-column">
            <div>
                <div class="ef-section-title">YOUR EXPENSES</div>
                <div class="ef-form-group">
                    <label for="ef-housing">Housing</label>
                    <input type="text" id="ef-housing" value="1000">
                    <span class="ef-tooltip">
                        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-help-circle"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                        <span class="ef-tooltip-text">Monthly cost for rent or mortgage.</span>
                    </span>
                </div>
                <div class="ef-form-group">
                    <label for="ef-transportation">Transportation</label>
                    <input type="text" id="ef-transportation" value="300">
                    <span class="ef-tooltip">
                        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-help-circle"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                        <span class="ef-tooltip-text">Monthly cost for car payments, fuel, public transport, etc.</span>
                    </span>
                </div>
                <div class="ef-form-group">
                    <label for="ef-food">Food</label>
                    <input type="text" id="ef-food" value="300">
                    <span class="ef-tooltip">
                        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-help-circle"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                        <span class="ef-tooltip-text">Monthly cost for groceries and dining out.</span>
                    </span>
                </div>
                <div class="ef-form-group">
                    <label for="ef-insurance">Insurance</label>
                    <input type="text" id="ef-insurance" value="400">
                    <span class="ef-tooltip">
                        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-help-circle"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                        <span class="ef-tooltip-text">Monthly cost for health, car, home, or other insurance premiums.</span>
                    </span>
                </div>
                <div class="ef-form-group">
                    <label for="ef-debt-repayment">Debt Repayment</label>
                    <input type="text" id="ef-debt-repayment" value="500">
                    <span class="ef-tooltip">
                        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-help-circle"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                        <span class="ef-tooltip-text">Minimum monthly payments on debts like credit cards, student loans, etc.</span>
                    </span>
                </div>
                <div class="ef-form-group">
                    <label for="ef-other-spending">Other Spending</label>
                    <input type="text" id="ef-other-spending" value="400">
                    <span class="ef-tooltip">
                        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-help-circle"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                        <span class="ef-tooltip-text">Any other recurring monthly expenses not covered above.</span>
                    </span>
                </div>
            </div>

            <div class="ef-runway-section">
                <div class="ef-section-title">
                    RUNWAY LENGTH (IN MONTHS)
                    <span class="ef-tooltip">
                        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-help-circle"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                        <span class="ef-tooltip-text">The number of months you want your emergency fund to cover your expenses.</span>
                    </span>
                </div>
                <div class="ef-runway-slider-group">
                    <input type="range" id="ef-runway-length-slider" min="1" max="24" step="1" value="6">
                    <div class="ef-runway-display">
                        <input type="number" id="ef-runway-length-input" value="6">
                        <span>Months</span>
                    </div>
                </div>
            </div>

            <div class="ef-results">
                <div class="ef-result-item">
                    <span>MONTHLY SPENDING:</span>
                    <span id="ef-monthly-spending-output">$2,900</span>
                </div>
                <div class="ef-result-item">
                    <span>EMERGENCY FUND:</span>
                    <span id="ef-emergency-fund-output">$17,400</span>
                </div>
            </div>

            <button id="ef-reset-button" class="ef-reset-button">Reset to Default Values</button>
        </div>
        <div class="ef-chart-container">
            <canvas id="ef-chart"></canvas>
        </div>
    </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
document.addEventListener('DOMContentLoaded', () => {
    
    const defaultValues = {
        housing: 1000,
        transportation: 300,
        food: 300,
        insurance: 400,
        debtRepayment: 500,
        otherSpending: 400,
        runwayLength: 6
    };

    
    const expenseInputs = [
        document.getElementById('ef-housing'),
        document.getElementById('ef-transportation'),
        document.getElementById('ef-food'),
        document.getElementById('ef-insurance'),
        document.getElementById('ef-debt-repayment'),
        document.getElementById('ef-other-spending')
    ];
    const runwayLengthSlider = document.getElementById('ef-runway-length-slider');
    const runwayLengthInput = document.getElementById('ef-runway-length-input');
    const monthlySpendingOutput = document.getElementById('ef-monthly-spending-output');
    const emergencyFundOutput = document.getElementById('ef-emergency-fund-output');
    const chartCanvas = document.getElementById('ef-chart');
    const resetButton = document.getElementById('ef-reset-button');

    let chart;

    function _efCurrencyCode() {
        return (window.finfreeCurrency && window.finfreeCurrency.getCode()) || 'USD';
    }

    function formatCurrency(value, withDecimals = false) {
        const options = {
            style: 'currency',
            currency: _efCurrencyCode(),
            minimumFractionDigits: withDecimals ? 2 : 0,
            maximumFractionDigits: withDecimals ? 2 : 0,
        };
        try {
            return new Intl.NumberFormat('en-US', options).format(value);
        } catch (e) {
            
            var sym = (window.finfreeCurrency && window.finfreeCurrency.getSymbol()) || '$';
            return sym + value.toLocaleString('en-US', { maximumFractionDigits: withDecimals ? 2 : 0 });
        }
    }

    document.addEventListener('finfree-currency-change', function () {
        try { calculateEmergencyFund(); } catch (e) {}
    });

    function parseCurrency(value) {
        return parseFloat(String(value).replace(/[^0-9.-]+/g,"")) || 0;
    }

    function calculateEmergencyFund() {
        let totalMonthlySpending = 0;
        expenseInputs.forEach(input => {
            totalMonthlySpending += parseCurrency(input.value);
        });

        const runwayMonths = parseInt(runwayLengthInput.value) || 0;
        const emergencyFundNeeded = totalMonthlySpending * runwayMonths;

        monthlySpendingOutput.textContent = formatCurrency(totalMonthlySpending);
        emergencyFundOutput.textContent = formatCurrency(emergencyFundNeeded);

        updateChart(totalMonthlySpending, runwayMonths, emergencyFundNeeded);
    }

    function updateChart(monthlySpending, runwayMonths, emergencyFundNeeded) {
        const ctx = chartCanvas.getContext('2d');
        let labels = [];
        let data = [];

        for (let i = 0; i <= runwayMonths; i++) {
            labels.push(i);
            data.push(emergencyFundNeeded - (monthlySpending * i));
        }

        if (chart) {
            chart.data.labels = labels;
            chart.data.datasets[0].data = data;
            chart.options.scales.y.max = emergencyFundNeeded * 1.1;
            chart.update();
        } else {
            chart = new Chart(ctx, {
                type: 'line',
                data: {
                    labels: labels,
                    datasets: [{
                        label: 'Emergency Fund Remaining',
                        data: data,
                        borderColor: 'var(--ef-primary-color)',
                        backgroundColor: 'rgba(72, 187, 120, 0.2)',
                        fill: true,
                        tension: 0.1,
                        pointRadius: 0,
                    }]
                },
                options: {
                    responsive: true,
                    maintainAspectRatio: false,
                    scales: {
                        y: {
                            beginAtZero: true,
                            max: emergencyFundNeeded * 1.1,
                            ticks: {
                                callback: function(value, index, values) {
                                    return formatCurrency(value);
                                }
                            }
                        },
                        x: {
                           title: {
                                display: true,
                                text: 'Month'
                           },
                           ticks: {
                                precision: 0
                           }
                        }
                    },
                    plugins: {
                        legend: {
                           align: 'end',
                           position: 'top',
                           labels: {
                                usePointStyle: true,
                                boxWidth: 6,
                           }
                        },
                        tooltip: {
                           callbacks: {
                               label: function(context) {
                                   let label = context.dataset.label || '';
                                   if (label) {
                                       label += ': ';
                                   }
                                   if (context.parsed.y !== null) {
                                       label += formatCurrency(context.parsed.y, true);
                                   }
                                   return label;
                               }
                           }
                        }
                    }
                }
            });
        }
    }

    function resetCalculator() {
        
        document.getElementById('ef-housing').value = formatCurrency(defaultValues.housing);
        document.getElementById('ef-transportation').value = formatCurrency(defaultValues.transportation);
        document.getElementById('ef-food').value = formatCurrency(defaultValues.food);
        document.getElementById('ef-insurance').value = formatCurrency(defaultValues.insurance);
        document.getElementById('ef-debt-repayment').value = formatCurrency(defaultValues.debtRepayment);
        document.getElementById('ef-other-spending').value = formatCurrency(defaultValues.otherSpending);

        
        runwayLengthInput.value = defaultValues.runwayLength;
        runwayLengthSlider.value = defaultValues.runwayLength;

        
        calculateEmergencyFund();
    }

    
    expenseInputs.forEach(input => {
        input.addEventListener('input', calculateEmergencyFund);
        input.addEventListener('blur', (e) => {
            e.target.value = formatCurrency(parseCurrency(e.target.value));
        });
    });

    runwayLengthSlider.addEventListener('input', (e) => {
        runwayLengthInput.value = e.target.value;
        calculateEmergencyFund();
    });

    runwayLengthInput.addEventListener('input', () => {
        let value = parseInt(runwayLengthInput.value);
        if (isNaN(value) || value < 1) value = 1;
        if (value > 24) value = 24;
        runwayLengthSlider.value = value;
        calculateEmergencyFund();
    });
    runwayLengthInput.addEventListener('blur', (e) => {
        let value = parseInt(e.target.value);
        if (isNaN(value) || value < 1) value = 1;
        if (value > 24) value = 24;
        e.target.value = value;
        runwayLengthSlider.value = value;
        calculateEmergencyFund();
    });

    resetButton.addEventListener('click', resetCalculator);

    
    expenseInputs.forEach(input => {
        input.value = formatCurrency(parseCurrency(input.value));
    });
    calculateEmergencyFund();
});
</script>

<hr>

<h2 class="relative group">How to Use This Calculator
    <div id="how-to-use-this-calculator" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#how-to-use-this-calculator" aria-label="Anchor">#</a>
    </span>
    
</h2>

<h3 class="relative group">Step 1: Enter your monthly expenses
    <div id="step-1-enter-your-monthly-expenses" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-1-enter-your-monthly-expenses" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Input your estimated monthly costs for each category. Focus on <strong>essential expenses only</strong>—what you'd need to cover if you lost your income.</p>
<table>
	<thead>
			<tr>
					<th>Category</th>
					<th>What to Include</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Housing</strong></td>
					<td>Rent/mortgage, utilities, property taxes</td>
			</tr>
			<tr>
					<td><strong>Transportation</strong></td>
					<td>Car payment, fuel, insurance, public transit</td>
			</tr>
			<tr>
					<td><strong>Food</strong></td>
					<td>Groceries, essential dining</td>
			</tr>
			<tr>
					<td><strong>Insurance</strong></td>
					<td>Health, life, other insurance premiums</td>
			</tr>
			<tr>
					<td><strong>Debt Repayment</strong></td>
					<td>Minimum payments on loans, credit cards</td>
			</tr>
			<tr>
					<td><strong>Other Spending</strong></td>
					<td>Phone, internet, subscriptions, childcare</td>
			</tr>
	</tbody>
</table>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="note">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span></div>
        <div class="grow">
          Note
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Click the question mark icon (?) next to each field for detailed explanations.</p></div></div>
<h3 class="relative group">Step 2: Set your runway length
    <div id="step-2-set-your-runway-length" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-2-set-your-runway-length" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Use the slider to select how many months you want your emergency fund to cover:</p>
<div
  class="tab__container w-full"
  
  >
  <div class="tab__nav" role="tablist">
    <div class="flex flex-wrap gap-1"><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 tab--active"
          role="tab"
          aria-selected="true"
          data-tab-index="0"
          data-tab-label="3 Months">
          <span class="flex items-center gap-1">
            
            3 Months
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="1"
          data-tab-label="6 Months">
          <span class="flex items-center gap-1">
            
            6 Months
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="2"
          data-tab-label="9-12 Months">
          <span class="flex items-center gap-1">
            
            9-12 Months
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="3"
          data-tab-label="12-24 Months">
          <span class="flex items-center gap-1">
            
            12-24 Months
          </span>
        </button></div>
  </div>
  <div class="tab__content mt-4"><div class="tab__panel tab--active" data-tab-index="0">
        <p><strong>Minimum recommended</strong></p>
<p>Good for:</p>
<ul>
<li>Dual-income households</li>
<li>Stable employment with strong job market</li>
<li>Low fixed expenses</li>
</ul>

      </div><div class="tab__panel " data-tab-index="1">
        <p><strong>Standard recommendation</strong></p>
<p>Good for:</p>
<ul>
<li>Single-income households</li>
<li>Moderate job stability</li>
<li>Homeowners with maintenance costs</li>
</ul>

      </div><div class="tab__panel " data-tab-index="2">
        <p><strong>Conservative approach</strong></p>
<p>Good for:</p>
<ul>
<li>Self-employed or freelancers</li>
<li>Volatile industries</li>
<li>Single parents or sole breadwinners</li>
</ul>

      </div><div class="tab__panel " data-tab-index="3">
        <p><strong>Maximum security</strong></p>
<p>Good for:</p>
<ul>
<li>High uncertainty situations</li>
<li>Planning major life transitions</li>
<li>Maximum peace of mind</li>
</ul>

      </div></div>
</div>


<h3 class="relative group">Step 3: Review your results
    <div id="step-3-review-your-results" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-3-review-your-results" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>The calculator instantly displays:</p>
<table>
	<thead>
			<tr>
					<th>Result</th>
					<th>What It Means</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Monthly Spending</strong></td>
					<td>Sum of all your expense categories</td>
			</tr>
			<tr>
					<td><strong>Emergency Fund Target</strong></td>
					<td>Monthly Spending × Runway Length</td>
			</tr>
			<tr>
					<td><strong>Depletion Chart</strong></td>
					<td>Visual showing how your fund would last</td>
			</tr>
	</tbody>
</table>
<hr>

<h2 class="relative group">Example Calculation
    <div id="example-calculation" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#example-calculation" aria-label="Anchor">#</a>
    </span>
    
</h2>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow" style="background-color: #1e3a5f"
  
  >
  <span
    
      class="pe-3 flex items-center" style="color: #60a5fa"
    
    >
    
  </span>

  <span
    
      style="color: #e2e8f0"
    
    ><p><strong>Sample Monthly Expenses:</strong></p>
<table>
	<thead>
			<tr>
					<th>Category</th>
					<th>Amount</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Housing</td>
					<td>$1,500</td>
			</tr>
			<tr>
					<td>Transportation</td>
					<td>$400</td>
			</tr>
			<tr>
					<td>Food</td>
					<td>$500</td>
			</tr>
			<tr>
					<td>Insurance</td>
					<td>$300</td>
			</tr>
			<tr>
					<td>Debt</td>
					<td>$200</td>
			</tr>
			<tr>
					<td>Other</td>
					<td>$200</td>
			</tr>
			<tr>
					<td><strong>Total</strong></td>
					<td><strong>$3,100</strong></td>
			</tr>
	</tbody>
</table>
<p>With a 6-month runway: $3,100 × 6 = <strong>$18,600 target</strong></p>
</span>
</div>

<hr>

<h2 class="relative group">Tips for Accurate Calculations
    <div id="tips-for-accurate-calculations" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#tips-for-accurate-calculations" aria-label="Anchor">#</a>
    </span>
    
</h2>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="important">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M287.9 0C297.1 0 305.5 5.25 309.5 13.52L378.1 154.8L531.4 177.5C540.4 178.8 547.8 185.1 550.7 193.7C553.5 202.4 551.2 211.9 544.8 218.2L433.6 328.4L459.9 483.9C461.4 492.9 457.7 502.1 450.2 507.4C442.8 512.7 432.1 513.4 424.9 509.1L287.9 435.9L150.1 509.1C142.9 513.4 133.1 512.7 125.6 507.4C118.2 502.1 114.5 492.9 115.1 483.9L142.2 328.4L31.11 218.2C24.65 211.9 22.36 202.4 25.2 193.7C28.03 185.1 35.5 178.8 44.49 177.5L197.7 154.8L266.3 13.52C270.4 5.249 278.7 0 287.9 0L287.9 0zM287.9 78.95L235.4 187.2C231.9 194.3 225.1 199.3 217.3 200.5L98.98 217.9L184.9 303C190.4 308.5 192.9 316.4 191.6 324.1L171.4 443.7L276.6 387.5C283.7 383.7 292.2 383.7 299.2 387.5L404.4 443.7L384.2 324.1C382.9 316.4 385.5 308.5 391 303L476.9 217.9L358.6 200.5C350.7 199.3 343.9 194.3 340.5 187.2L287.9 78.95z"/></svg></span></div>
        <div class="grow">
          Important
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p><strong>Be realistic with your numbers</strong></p>
<ul>
<li>Don't underestimate expenses—round up if unsure</li>
<li>Include only essentials, not your full lifestyle budget</li>
<li>Review and update annually as your life changes</li>
<li>Account for dependents (more people = higher expenses)</li>
<li>Consider job security (less stable = longer runway)</li>
</ul></div></div><hr>

<h2 class="relative group">What's Next?
    <div id="whats-next" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#whats-next" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Once you know your target:</p>
<ol>
<li><strong>Set it as a goal</strong> — Write down your target and deadline</li>
<li><strong>Open a high-yield savings account</strong> — Keep it separate from checking</li>
<li><strong>Automate transfers</strong> — Set up automatic savings on payday</li>
<li><strong>Start small</strong> — Even $25/paycheck adds up over time</li>
<li><strong>Track milestones</strong> — Celebrate 1 month, 3 months, full target</li>
</ol>
<hr>

<h2 class="relative group">Related Calculators
    <div id="related-calculators" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#related-calculators" aria-label="Anchor">#</a>
    </span>
    
</h2>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow" style="background-color: #0f5132"
  
  >
  <span
    
      class="pe-3 flex items-center" style="color: #75b798"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M172.5 131.1C228.1 75.51 320.5 75.51 376.1 131.1C426.1 181.1 433.5 260.8 392.4 318.3L391.3 319.9C381 334.2 361 337.6 346.7 327.3C332.3 317 328.9 297 339.2 282.7L340.3 281.1C363.2 249 359.6 205.1 331.7 177.2C300.3 145.8 249.2 145.8 217.7 177.2L105.5 289.5C73.99 320.1 73.99 372 105.5 403.5C133.3 431.4 177.3 435 209.3 412.1L210.9 410.1C225.3 400.7 245.3 404 255.5 418.4C265.8 432.8 262.5 452.8 248.1 463.1L246.5 464.2C188.1 505.3 110.2 498.7 60.21 448.8C3.741 392.3 3.741 300.7 60.21 244.3L172.5 131.1zM467.5 380C411 436.5 319.5 436.5 263 380C213 330 206.5 251.2 247.6 193.7L248.7 192.1C258.1 177.8 278.1 174.4 293.3 184.7C307.7 194.1 311.1 214.1 300.8 229.3L299.7 230.9C276.8 262.1 280.4 306.9 308.3 334.8C339.7 366.2 390.8 366.2 422.3 334.8L534.5 222.5C566 191 566 139.1 534.5 108.5C506.7 80.63 462.7 76.99 430.7 99.9L429.1 101C414.7 111.3 394.7 107.1 384.5 93.58C374.2 79.2 377.5 59.21 391.9 48.94L393.5 47.82C451 6.731 529.8 13.25 579.8 63.24C636.3 119.7 636.3 211.3 579.8 267.7L467.5 380z"/></svg>
</span>
  </span>

  <span
    
      style="color: #d1e7dd"
    
    ><p><strong>More Financial Tools:</strong></p>
<ul>
<li><strong><a href="/calculators/interactive_calculator_to_your_fire_number/" >FIRE Calculator</a></strong> — Calculate your financial independence number</li>
<li><strong><a href="/calculators/interactive_safe_withdrawal_rate_calculator/" >SWR Calculator</a></strong> — Determine your safe withdrawal rate using 150 years of historical data</li>
<li><strong><a href="/posts/emergency-fund-calculator-guide/" >Complete Emergency Fund Guide</a></strong> — Learn everything about building your safety net</li>
</ul></span>
</div>

<hr>
<p><strong>Questions or feedback?</strong> Leave a comment below—I'd love to hear how you're building your emergency fund!</p>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow bg-primary-100 dark:bg-primary-900"
  
  >
  <span
    
      class="text-primary-400 pe-3 flex items-center"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span>
  </span>

  <span
    
      class="dark:text-neutral-300"
    
    ><strong>Disclaimer:</strong> This calculator reflects my personal views and is for educational purposes only. It is not financial advice. Every situation is different. Always check your country's specific tax and investment rules before acting. See the full <a href="/disclaimer/" >Disclaimer</a> and <a href="/privacy/" >Privacy Policy</a> for the long version.</span>
</div>

]]></content:encoded><media:content url="https://libreleo.com/img/featured/emergency-fund-calculator.webp" medium="image"/></item><item><title>Portfolio Rebalancing Calculator</title><link>https://libreleo.com/calculators/portfolio-rebalancer/interactive_portfolio_rebalancing_calculator/</link><pubDate>Wed, 03 Dec 2025 12:00:00 +0800</pubDate><guid>https://libreleo.com/calculators/portfolio-rebalancer/interactive_portfolio_rebalancing_calculator/</guid><description>An interactive tool to help you rebalance your investment portfolio back to its target allocation.</description><content:encoded><![CDATA[<p>Portfolio rebalancing is the process of realigning the weightings of a portfolio of assets to maintain your target allocation. This interactive calculator helps you determine the exact actions needed to bring your portfolio back into balance.</p>
<p><strong>Want to learn more about portfolio rebalancing?</strong> Check out our comprehensive guide: <a href="/posts/portfolio_rebalancing_the_essential_guide_to_maintaining_your_investment/" >Portfolio Rebalancing: The Essential Guide to Maintaining Your Investment Allocation</a></p>

<h3 class="relative group">How to Use the Calculator
    <div id="how-to-use-the-calculator" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#how-to-use-the-calculator" aria-label="Anchor">#</a>
    </span>
    
</h3>
<ol>
<li><strong>List Your Assets</strong>: The calculator starts with a common four-asset portfolio. You can change the names, add new assets with the &quot;Add Asset&quot; button, or remove them with the &quot;✖&quot; button.</li>
<li><strong>Set Target Allocations</strong>: Enter your desired allocation percentage for each asset class. Ensure the total sums to 100%.</li>
<li><strong>Enter Current Values</strong>: Input the current market value of your holdings for each asset.</li>
<li><strong>Review the Actions</strong>: The &quot;Action&quot; column will automatically update, telling you exactly how much you need to buy or sell of each asset to match your target allocation.</li>
</ol>
<div class="rebalancer-container">
    <h2>Portfolio Rebalancer</h2>
    <p class="rebalancer-intro">Enter your assets, target allocations, and current values to calculate the rebalancing actions needed.</p>

    <div class="rebalancer-table-container">
        <table>
            <thead>
                <tr>
                    <th>Asset Class</th>
                    <th>Target Allocation (%)</th>
                    <th>Current Value ($)</th>
                    <th>Action</th>
                    <th></th>
                </tr>
            </thead>
            <tbody id="rebalancer-assets">
                
            </tbody>
            <tfoot>
                <tr>
                    <td><strong>Total</strong></td>
                    <td id="total-target-allocation"><strong>0%</strong></td>
                    <td id="total-current-value"><strong>$0.00</strong></td>
                    <td colspan="2"></td>
                </tr>
            </tfoot>
        </table>
    </div>

    <button id="add-asset-btn" class="rebalancer-btn">Add Asset</button>
    <div id="rebalance-summary" class="rebalancer-summary"></div>
    
    <div class="rebalancer-chart-container">
        <canvas id="rebalance-chart"></canvas>
    </div>

    <p class="rebalancer-disclaimer">
        <strong>Disclaimer:</strong> This calculator is for informational and educational purposes only. It does not constitute financial, investment, or tax advice. Always consult with a qualified professional before making any investment decisions.
    </p>

</div>

<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
    const assetsContainer = document.getElementById('rebalancer-assets');
    const addAssetBtn = document.getElementById('add-asset-btn');
    const totalTargetCell = document.getElementById('total-target-allocation');
    const totalValueCell = document.getElementById('total-current-value');
    const summaryDiv = document.getElementById('rebalance-summary');
    let rebalanceChart = null;

    const initialAssets = [
        { name: 'US Stocks', target: 60, value: 65000 },
        { name: 'International Stocks', target: 20, value: 18000 },
        { name: 'Bonds', target: 15, value: 15000 },
        { name: 'Gold', target: 5, value: 7000 }
    ];

    function createAssetRow(asset = { name: '', target: '', value: '' }) {
        const row = document.createElement('tr');
        row.innerHTML = `
            <td><input type="text" class="asset-name" placeholder="e.g., US Stocks" value="${asset.name}"></td>
            <td><input type="number" class="asset-target" placeholder="%" min="0" max="100" step="0.1" value="${asset.target}"></td>
            <td><input type="number" class="asset-value" placeholder="$" min="0" step="100" value="${asset.value}"></td>
            <td class="asset-action">--</td>
            <td><button class="remove-asset-btn">✖</button></td>
        `;
        assetsContainer.appendChild(row);
        row.querySelector('.remove-asset-btn').addEventListener('click', () => {
            row.remove();
            calculateRebalance();
        });
        row.querySelectorAll('input').forEach(input => input.addEventListener('input', calculateRebalance));
    }

    function calculateRebalance() {
        const assetRows = assetsContainer.querySelectorAll('tr');
        let totalTarget = 0;
        let totalValue = 0;
        const assets = [];

        assetRows.forEach(row => {
            const name = row.querySelector('.asset-name').value || 'Unnamed Asset';
            const target = parseFloat(row.querySelector('.asset-target').value) || 0;
            const value = parseFloat(row.querySelector('.asset-value').value) || 0;
            
            totalTarget += target;
            totalValue += value;
            assets.push({ name, target, value, row });
        });

        totalTargetCell.textContent = `${totalTarget.toFixed(1)}%`;
        totalTargetCell.style.color = Math.abs(totalTarget - 100) < 0.1 ? 'var(--color-primary-500)' : 'var(--color-red)';
        totalValueCell.textContent = `$${totalValue.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
        
        summaryDiv.innerHTML = '';
        if (Math.abs(totalTarget - 100) > 0.1) {
            summaryDiv.innerHTML = '<p class="error">Total target allocation must equal 100% to rebalance.</p>';
            assets.forEach(asset => asset.row.querySelector('.asset-action').textContent = '--');
            updateChart([], [], []);
            return;
        }

        assets.forEach(asset => {
            const targetValue = totalValue * (asset.target / 100);
            const difference = targetValue - asset.value;
            const actionCell = asset.row.querySelector('.asset-action');

            if (Math.abs(difference) < 1) {
                actionCell.textContent = 'Hold';
                actionCell.style.color = 'inherit';
            } else if (difference > 0) {
                actionCell.textContent = `Buy $${difference.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
                actionCell.style.color = 'var(--color-green)';
            } else {
                actionCell.textContent = `Sell $${(-difference).toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
                actionCell.style.color = 'var(--color-red)';
            }
        });

        const labels = assets.map(a => a.name);
        const currentAllocations = assets.map(a => totalValue > 0 ? (a.value / totalValue) * 100 : 0);
        const targetAllocations = assets.map(a => a.target);
        updateChart(labels, currentAllocations, targetAllocations);
    }
    
    function getChartThemeColors() {
        const styles = getComputedStyle(document.documentElement);
        const isDark = document.documentElement.classList.contains('dark');
        const cardText = styles.getPropertyValue('--card-text').trim() || '#212529';
        const fontFamily = styles.getPropertyValue('--font-stack').trim() || '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif';
        const cardBg = styles.getPropertyValue('--card-bg').trim() || (isDark ? '#2d2d2d' : '#ffffff');
        const innerBg = styles.getPropertyValue('--inner-bg').trim() || (isDark ? '#2d2d2d' : '#f8f9fa');
        const inputBorder = styles.getPropertyValue('--input-border').trim() || '#ced4da';
        const tooltipBg = isDark ? innerBg : '#ffffff';
        const tooltipText = cardText;
        const borderColor = isDark ? '#222' : '#ffffff';
        return {
            textColor: cardText,
            legendFont: { family: fontFamily, size: 13 },
            borderColor: borderColor,
            tooltipBg: tooltipBg,
            tooltipText: tooltipText,
            fontFamily: fontFamily,
            gridColor: inputBorder
        };
    }
    
    function updateChart(labels, currentData, targetData) {
            const themeColors = getChartThemeColors();

            function readChartPalette() {
                const styles = getComputedStyle(document.documentElement);
                const palette = [];
                for (let i = 1; i <= 9; i++) {
                    const v = styles.getPropertyValue(`--chart-color-${i}`).trim();
                    if (v) palette.push(v);
                }
                if (palette.length === 0) {
                    return ['#4e73df', '#1cc88a', '#36b9cc', '#f6c23e', '#e74a3b', '#858796', '#5a5c69', '#6f42c1', '#fd7e14'];
                }
                return palette;
            }

            function applyAlphaIfHex(col, alphaHex = 'B3') {
                if (typeof col !== 'string') return col;
                const c = col.trim();
                
                if (/^#[0-9a-fA-F]{6}$/.test(c)) return c + alphaHex;
                
                if (/^#[0-9a-fA-F]{3}$/.test(c)) {
                    const r = c[1]; const g = c[2]; const b = c[3];
                    return `#${r}${r}${g}${g}${b}${b}` + alphaHex;
                }
                
                return c;
            }

            const chartColors = readChartPalette();

        const data = {
            labels: labels,
            datasets: [{
                label: 'Current Allocation',
                data: currentData,
                backgroundColor: chartColors.map(c => applyAlphaIfHex(c)),
                borderColor: themeColors.borderColor,
                borderWidth: 2,
            }, {
                label: 'Target Allocation',
                data: targetData,
                backgroundColor: chartColors.map(c => applyAlphaIfHex(c)),
                borderColor: themeColors.borderColor,
                borderWidth: 2,
            }]
        };

        const chartOptions = {
            responsive: true,
            maintainAspectRatio: false,
            cutout: '50%',
            plugins: {
                legend: {
                    position: 'top',
                    labels: {
                        color: themeColors.textColor,
                        font: themeColors.legendFont
                    }
                },
                tooltip: {
                    backgroundColor: themeColors.tooltipBg,
                    titleColor: themeColors.tooltipText,
                    bodyColor: themeColors.tooltipText,
                    callbacks: {
                        label: function(context) {
                            let label = context.dataset.label || '';
                            if (label) label += ': ';
                            if (context.parsed !== null) label += context.parsed.toFixed(2) + '%';
                            return label;
                        }
                    }
                }
            }
        };

        if (rebalanceChart) {
            rebalanceChart.data = data;
            rebalanceChart.options.plugins.legend.labels.color = themeColors.textColor;
            rebalanceChart.options.plugins.tooltip.backgroundColor = themeColors.tooltipBg;
            rebalanceChart.options.plugins.tooltip.titleColor = themeColors.tooltipText;
            rebalanceChart.options.plugins.tooltip.bodyColor = themeColors.tooltipText;
            rebalanceChart.update();
        } else {
            const ctx = document.getElementById('rebalance-chart').getContext('2d');
            rebalanceChart = new Chart(ctx, {
                type: 'doughnut',
                data: data,
                options: chartOptions
            });
        }
    }

    addAssetBtn.addEventListener('click', () => createAssetRow());

    const themeObserver = new MutationObserver((mutationsList) => {
        for (const mutation of mutationsList) {
            if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
                calculateRebalance();
            }
        }
    });
    themeObserver.observe(document.documentElement, { attributes: true });

    initialAssets.forEach(createAssetRow);
    calculateRebalance();
});
</script>

<style>
   
  :root {
    --card-max-width: 800px;
    --card-padding: 24px;
    --card-bg: #efefef;
    --card-text: #212529;
    --input-bg: #ffffff;
    --input-border: #ced4da;
    --accent: #4CAF50;
    --muted: #666;
    --inner-bg: #f8f9fa;
    --font-stack: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    --color-green: #28a745;
    --color-red: #dc3545;
         
        --chart-color-1: #4e73df;
        --chart-color-2: #1cc88a;
        --chart-color-3: #36b9cc;
        --chart-color-4: #f6c23e;
        --chart-color-5: #e74a3b;
        --chart-color-6: #858796;
        --chart-color-7: #5a5c69;
        --chart-color-8: #6f42c1;
        --chart-color-9: #fd7e14;
  }

  .dark {
    --card-bg: #2d2d2d;
    --card-text: #ccc;
    --input-bg: #404040;
    --input-border: #555;
    --accent: #4CAF50;
    --muted: #999;
    --inner-bg: #404040;
    --color-green: #48bb78;
    --color-red: #f56565;
  }

  .rebalancer-container {
    font-family: var(--font-stack);
    max-width: var(--card-max-width);
    margin: 2rem auto;
    padding: var(--card-padding);
    background-color: var(--card-bg);
    border: 1px solid var(--input-border);
    border-radius: 8px;
    color: var(--card-text);
  }
  .rebalancer-intro { font-size: 1rem; color: var(--muted); margin-bottom: 1.25rem; }
  .rebalancer-table-container { overflow-x: auto; }
  .rebalancer-container table { width: 100%; border-collapse: collapse; margin-bottom: 1rem; }
  .rebalancer-container th, .rebalancer-container td { padding: 0.6rem; text-align: left; border-bottom: 1px solid var(--input-border); vertical-align: middle; }
  .rebalancer-container th { background-color: var(--inner-bg); font-weight: 600; font-size: 0.9rem; }
  .rebalancer-container tfoot td { font-weight: bold; }
  .rebalancer-container input[type="text"], .rebalancer-container input[type="number"] {
    width: 95%; padding: 6px 8px; border: 1px solid var(--input-border); border-radius: 4px; background-color: var(--input-bg); color: var(--card-text); transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; font-family: var(--font-stack);
  }
     
    .rebalancer-container td input.asset-name { width: 100%; font-weight: 600; color: var(--card-text); }
    .rebalancer-container td input.asset-target, .rebalancer-container td input.asset-value { width: 80px; text-align: right; }
    .rebalancer-container td .asset-action { font-weight: 600; color: var(--muted); }
    .rebalancer-container input::placeholder { color: var(--muted); }
  .rebalancer-container input:focus { border-color: var(--accent); outline: 0; box-shadow: 0 0 0 0.12rem rgba(76,175,80,0.12); }
  .rebalancer-btn { background-color: var(--accent); color: #fff; border: none; padding: 0.5rem 0.9rem; border-radius: 5px; cursor: pointer; font-size: 0.9rem; transition: background-color 0.2s; margin-bottom: 1rem; }
  .rebalancer-btn:hover { opacity: 0.95; }
  .remove-asset-btn { background: none; border: none; color: var(--color-red); font-size: 1.1rem; cursor: pointer; padding: 0 0.5rem; }
  .rebalancer-summary { margin-bottom: 1.25rem; font-weight: 500; }
  .rebalancer-summary .error { color: var(--color-red); background-color: rgba(0,0,0,0.03); border: 1px solid rgba(0,0,0,0.05); padding: 0.6rem; border-radius: 5px; }
  .rebalancer-chart-container { position: relative; height: 350px; width: 100%; margin-bottom: 1.5rem; }
  .rebalancer-disclaimer { font-size: 0.8rem; color: var(--muted); border-top: 1px solid var(--input-border); padding-top: 1rem; margin-top: 1.25rem; }
</style>

<hr>

<h2 class="relative group">Learn More
    <div id="learn-more" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#learn-more" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>For a comprehensive guide on portfolio rebalancing, including when and how to rebalance, tax strategies, and real-world examples, visit our full article: <strong><a href="/posts/portfolio_rebalancing_the_essential_guide_to_maintaining_your_investment/" >Portfolio Rebalancing: The Essential Guide</a></strong></p>

  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow bg-primary-100 dark:bg-primary-900"
  
  >
  <span
    
      class="text-primary-400 pe-3 flex items-center"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span>
  </span>

  <span
    
      class="dark:text-neutral-300"
    
    ><strong>Disclaimer:</strong> This calculator reflects my personal views and is for educational purposes only. It is not financial advice. Every situation is different. Always check your country's specific tax and investment rules before acting. See the full <a href="/disclaimer/" >Disclaimer</a> and <a href="/privacy/" >Privacy Policy</a> for the long version.</span>
</div>

]]></content:encoded><media:content url="https://libreleo.com/img/featured/interactive_portfolio_rebalancing_calculator.webp" medium="image"/></item><item><title>Interactive Calculator to Your FI (Financial Independence) Number</title><link>https://libreleo.com/calculators/interactive_calculator_to_your_fire_number/</link><pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate><guid>https://libreleo.com/calculators/interactive_calculator_to_your_fire_number/</guid><description>Use my interactive calculator to discover your Financial Independence, Retire Early (FIRE) number and understand the key factors that influence it.</description><content:encoded><![CDATA[<span class="flex cursor-pointer">
  
  
  
  
    <span
      class="rounded-md border border-primary-400 px-1 py-[1px] text-xs font-normal text-primary-700 dark:border-primary-600 dark:text-primary-400">
  
    
Updated: 19/06/2026

  </span>
</span>


<div class="lead text-neutral-500 dark:text-neutral-400 !mb-9 text-xl">
  Understanding your <strong>Financial Independence, <del>Retire Early</del> (FIRE)</strong> number is the first step toward building a solid financial future. This number represents the amount of investable assets you need—but it's unique to you. It depends on your annual expenses, your expected withdrawal rate, and any other income you might have.
</div>

<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="tip">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span></div>
        <div class="grow">
          My Priority
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>My priority is achieving financial independence rather than retiring early. The pace at which you pursue financial independence is your choice.</p></div></div><p>Use my interactive calculator below to find out your personal FIRE number!</p>

<style>
  :root {
    --card-max-width: 600px;
    --card-padding: 20px;
    --card-bg: #efefef;
    --card-text: #212529;
    --input-bg: #ffffff;
    --input-border: #ced4da;
    --accent: #4CAF50;
    --muted: #666;
    --inner-bg: #f8f9fa;
    --font-stack: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  }

  .dark {
    --card-bg: #2d2d2d;
    --card-text: #ccc;
    --input-bg: #404040;
    --input-border: #555;
    --accent: #4CAF50;
    --muted: #999;
    --inner-bg: #404040;
  }

  .fire-calculator {
    max-width: var(--card-max-width);
    margin: auto;
    padding: var(--card-padding);
    background-color: var(--card-bg);
    color: var(--card-text);
    border-radius: 8px;
    font-family: var(--font-stack);
  }

  .fire-calculator .form-group { margin-bottom: 20px; }
  .fire-calculator label { display:block; margin-bottom:6px; }
  .fire-calculator input[type="number"], .fire-calculator input[type="range"] {
    width:100%;
    background-color: var(--input-bg);
    color: var(--card-text);
    border: 1px solid var(--input-border);
    padding: 10px;
    border-radius: 4px;
    box-sizing: border-box;
  }

  .fire-calculator .section-header {
    font-size:0.85em;
    text-transform:uppercase;
    letter-spacing:0.05em;
    color:var(--muted);
    margin: 24px 0 10px 0;
    padding-bottom: 6px;
    border-bottom: 1px solid var(--input-border);
  }

  .fire-calculator .result-label { display:block; margin-bottom:6px; }
  .fire-calculator .fire-number {
    font-size:1.5em; font-weight:bold; color:var(--accent); padding:10px; background-color:var(--inner-bg); border-radius:4px; text-align:center;
  }
  .fire-calculator .fire-number.secondary {
    font-size:1.2em; opacity:0.9;
  }

  .fire-calculator .muted { font-size:0.85em; text-align:center; margin-top:6px; color:var(--muted); }
</style>

<div class="fire-calculator">

  
<script>
(function () {
  if (window.finfreeCurrency) return;  

  var SYMBOLS = {
    USD: '$',
    EUR: '€',
    GBP: '£',
    CHF: 'CHF ',
    AED: 'AED ',
    SGD: 'S$',
    HKD: 'HK$',
    CNY: 'CN¥',
    PHP: '₱',
    MYR: 'RM ',
    INR: '₹'
  };

  var STORAGE_KEY = 'finfree-currency';
  var EVENT_NAME = 'finfree-currency-change';

  function safeRead() {
    try { return localStorage.getItem(STORAGE_KEY) || 'USD'; } catch (e) { return 'USD'; }
  }
  function safeWrite(code) {
    try { localStorage.setItem(STORAGE_KEY, code); } catch (e) {}
  }

  window.finfreeCurrency = {
    getCode: function () { return safeRead(); },
    getSymbol: function () { return SYMBOLS[safeRead()] || '$'; },
    getSymbolFor: function (code) { return SYMBOLS[code] || '$'; },
    set: function (code) {
      if (!SYMBOLS[code]) return;
      safeWrite(code);
      var detail = { code: code, symbol: SYMBOLS[code] };
      document.dispatchEvent(new CustomEvent(EVENT_NAME, { detail: detail }));
    },
    EVENT_NAME: EVENT_NAME,
    SYMBOLS: SYMBOLS
  };

  
  document.addEventListener(EVENT_NAME, function (e) {
    var selectors = document.querySelectorAll('select[data-finfree-currency]');
    selectors.forEach(function (s) {
      if (s.value !== e.detail.code) s.value = e.detail.code;
    });
  });

  document.addEventListener('DOMContentLoaded', function () {
    var current = safeRead();
    var selectors = document.querySelectorAll('select[data-finfree-currency]');
    selectors.forEach(function (s) {
      s.value = current;
      s.addEventListener('change', function () {
        window.finfreeCurrency.set(s.value);
      });
    });
  });
})();
</script>

<style>
  .finfree-currency-selector {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    margin-bottom: 14px;
    font-size: 0.85em;
    color: var(--muted, #666);
  }
  .finfree-currency-selector select {
    padding: 4px 8px;
    border: 1px solid var(--input-border, #ced4da);
    border-radius: 4px;
    background-color: var(--input-bg, #ffffff);
    color: var(--card-text, #212529);
    font-size: 0.95em;
  }
</style>

<div class="finfree-currency-selector">
  <label for="finfree-currency-select-1782461070874397000">Currency:</label>
  <select id="finfree-currency-select-1782461070874402000" data-finfree-currency>
    <option value="USD">USD ($)</option>
    <option value="EUR">EUR (€)</option>
    <option value="GBP">GBP (£)</option>
    <option value="CHF">CHF (Fr.)</option>
    <option value="AED">AED (د.إ)</option>
    <option value="SGD">SGD (S$)</option>
    <option value="HKD">HKD (HK$)</option>
    <option value="CNY">CNY (¥)</option>
    <option value="PHP">PHP (₱)</option>
    <option value="MYR">MYR (RM)</option>
    <option value="INR">INR (₹)</option>
  </select>
</div>


  <div class="section-header">Your situation</div>

  <div class="form-group">
    <label for="annualExpenses">Current Annual Expenses (after tax)</label>
    <input type="number" id="annualExpenses" value="50000">
  </div>

  <div class="form-group">
    <label for="withdrawalRate">Target Withdrawal Rate: <span id="rateValue" style="font-weight: bold;">4.0%</span></label>
    <input type="range" id="withdrawalRate" min="0.1" max="10" step="0.1" value="4.0">
  </div>

  <div class="form-group">
    <label for="monthlyIncome">Monthly Recurring Income (rentals, side hustles)</label>
    <input type="number" id="monthlyIncome" value="0">
  </div>

  <div class="section-header">Tax &amp; Inflation</div>

  <div class="form-group">
    <label for="taxRate">Marginal Tax Rate on Withdrawals: <span id="taxRateValue" style="font-weight: bold;">0.0%</span></label>
    <input type="range" id="taxRate" min="0" max="60" step="0.5" value="0">
    <p class="muted" style="text-align:left">0% for UAE/GCC residents. 15-30% for most other jurisdictions.</p>
  </div>

  <div class="form-group">
    <label for="yearsToFIRE">Years Until You FIRE</label>
    <input type="number" id="yearsToFIRE" value="10" min="0" max="60" step="1">
  </div>

  <div class="form-group">
    <label for="inflationRate">Expected Annual Inflation Rate: <span id="inflationRateValue" style="font-weight: bold;">2.5%</span></label>
    <input type="range" id="inflationRate" min="0" max="10" step="0.1" value="2.5">
  </div>

  <div class="section-header">Your FIRE numbers</div>

  <div class="form-group">
    <label class="result-label">FIRE Number in today's money</label>
    <div id="fireNumberToday" class="fire-number">$1,250,000</div>
    <p class="muted">Investable assets needed if you stopped working today.</p>
  </div>

  <div class="form-group">
    <label class="result-label">FIRE Number at retirement (inflation-adjusted)</label>
    <div id="fireNumberFuture" class="fire-number secondary">$1,600,295</div>
    <p class="muted">What you actually need to save by your FIRE date.</p>
  </div>

</div>

<script>
function fireCurrencySymbol() {
  return (window.finfreeCurrency && window.finfreeCurrency.getSymbol()) || '$';
}

function calculateFIRE() {
  const expenses = parseFloat(document.getElementById('annualExpenses').value) || 0;
  const rate = parseFloat(document.getElementById('withdrawalRate').value) / 100;
  const income = (parseFloat(document.getElementById('monthlyIncome').value) || 0) * 12;
  const taxRate = Math.min(parseFloat(document.getElementById('taxRate').value) || 0, 99) / 100;
  const years = Math.max(parseFloat(document.getElementById('yearsToFIRE').value) || 0, 0);
  const inflation = Math.max(parseFloat(document.getElementById('inflationRate').value) || 0, 0) / 100;

  const fireTodayEl = document.getElementById('fireNumberToday');
  const fireFutureEl = document.getElementById('fireNumberFuture');
  const sym = fireCurrencySymbol();

  
  if (income >= expenses) {
    fireTodayEl.textContent = sym + "0 (You've FIRE'd!)";
    fireFutureEl.textContent = sym + "0";
    return;
  }

  if (rate === 0) {
    fireTodayEl.textContent = sym + '0';
    fireFutureEl.textContent = sym + '0';
    return;
  }

  
  const netExpensesPostTax = expenses - income;

  
  const grossExpensesPreTax = netExpensesPostTax / (1 - taxRate);

  
  const fireToday = grossExpensesPreTax / rate;

  
  const inflationMultiplier = Math.pow(1 + inflation, years);
  const fireFuture = fireToday * inflationMultiplier;

  fireTodayEl.textContent = sym + Math.round(fireToday).toLocaleString();
  fireFutureEl.textContent = sym + Math.round(fireFuture).toLocaleString();
}

document.addEventListener('finfree-currency-change', calculateFIRE);

document.getElementById('withdrawalRate').addEventListener('input', function() {
  document.getElementById('rateValue').textContent = parseFloat(this.value).toFixed(1) + '%';
  calculateFIRE();
});

document.getElementById('taxRate').addEventListener('input', function() {
  document.getElementById('taxRateValue').textContent = parseFloat(this.value).toFixed(1) + '%';
  calculateFIRE();
});

document.getElementById('inflationRate').addEventListener('input', function() {
  document.getElementById('inflationRateValue').textContent = parseFloat(this.value).toFixed(1) + '%';
  calculateFIRE();
});

document.getElementById('annualExpenses').addEventListener('input', calculateFIRE);
document.getElementById('monthlyIncome').addEventListener('input', calculateFIRE);
document.getElementById('yearsToFIRE').addEventListener('input', calculateFIRE);

document.addEventListener('DOMContentLoaded', function() {
    document.getElementById('rateValue').textContent = parseFloat(document.getElementById('withdrawalRate').value).toFixed(1) + '%';
    document.getElementById('taxRateValue').textContent = parseFloat(document.getElementById('taxRate').value).toFixed(1) + '%';
    document.getElementById('inflationRateValue').textContent = parseFloat(document.getElementById('inflationRate').value).toFixed(1) + '%';
    calculateFIRE();
});
</script>


<h2 class="relative group">Breaking Down the Numbers
    <div id="breaking-down-the-numbers" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#breaking-down-the-numbers" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Now that you have your FIRE number, let's talk about what it means. The formula is based on the 4% rule, but we've made it flexible...</p>

<h3 class="relative group">Understanding the 4% Rule (Might NOT be appropriate anymore)
    <div id="understanding-the-4-rule-might-not-be-appropriate-anymore" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#understanding-the-4-rule-might-not-be-appropriate-anymore" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>The <strong>4% rule</strong> is a tried-and-tested withdrawal strategy developed by financial advisors William Bengen and later popularized by the Trinity Study. Here's how it works:</p>
<ul>
<li><strong>Starting withdrawal:</strong> You withdraw 4% of your invested portfolio in your first year of retirement.</li>
<li><strong>Adjustments:</strong> Each subsequent year, you adjust your withdrawal amount for inflation (typically 2-3% annually).</li>
<li><strong>Success rate:</strong> Historical data (1926-1995) showed this strategy had a 95% success rate of lasting 30+ years without depleting capital.</li>
</ul>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="info">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span></div>
        <div class="grow">
          Example Calculation
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>If your annual expenses are $60,000 and you withdraw 4% from your portfolio:</p>
<ul>
<li>Required portfolio = $60,000 ÷ 0.04 = <strong>$1,500,000</strong></li>
</ul>
<p>This is your FIRE number using the standard 4% rule.</p></div></div>
<h3 class="relative group">The Math Behind Your FIRE Number
    <div id="the-math-behind-your-fire-number" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-math-behind-your-fire-number" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>The calculator uses this simple formula:</p>
<p><strong>FIRE Number = Annual Expenses ÷ Withdrawal Rate</strong></p>
<div
  class="tab__container w-full"
  
  >
  <div class="tab__nav" role="tablist">
    <div class="flex flex-wrap gap-1"><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 tab--active"
          role="tab"
          aria-selected="true"
          data-tab-index="0"
          data-tab-label="Annual Expenses">
          <span class="flex items-center gap-1">
            
            Annual Expenses
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="1"
          data-tab-label="Withdrawal Rate">
          <span class="flex items-center gap-1">
            
            Withdrawal Rate
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="2"
          data-tab-label="Additional Income">
          <span class="flex items-center gap-1">
            
            Additional Income
          </span>
        </button></div>
  </div>
  <div class="tab__content mt-4"><div class="tab__panel tab--active" data-tab-index="0">
        
<h3 class="relative group">Annual Expenses
    <div id="annual-expenses" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#annual-expenses" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Your total yearly spending. This should be realistic and based on:</p>
<table>
	<thead>
			<tr>
					<th>Category</th>
					<th>Examples</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Housing</strong></td>
					<td>Mortgage, rent, property tax, insurance, maintenance</td>
			</tr>
			<tr>
					<td><strong>Essentials</strong></td>
					<td>Utilities, food, transportation</td>
			</tr>
			<tr>
					<td><strong>Healthcare</strong></td>
					<td>Insurance, out-of-pocket costs</td>
			</tr>
			<tr>
					<td><strong>Lifestyle</strong></td>
					<td>Entertainment, travel, hobbies</td>
			</tr>
			<tr>
					<td><strong>Other</strong></td>
					<td>Miscellaneous and discretionary spending</td>
			</tr>
	</tbody>
</table>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="tip">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span></div>
        <div class="grow">
          Pro Tip
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Many people overestimate their expenses in retirement. Consider tracking your current spending for 6-12 months to get an accurate baseline.</p></div></div>
      </div><div class="tab__panel " data-tab-index="1">
        
<h3 class="relative group">Withdrawal Rate
    <div id="withdrawal-rate" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#withdrawal-rate" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>The percentage of your portfolio you withdraw annually:</p>
<table>
	<thead>
			<tr>
					<th>Rate</th>
					<th>Risk Level</th>
					<th>Best For</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>3% rule</strong></td>
					<td>Conservative</td>
					<td>Early retirees (age 30-40); 96%+ historical success rate</td>
			</tr>
			<tr>
					<td><strong>4% rule</strong></td>
					<td>Balanced</td>
					<td>Standard retirement; 90-95% historical success rate</td>
			</tr>
			<tr>
					<td><strong>5% rule</strong></td>
					<td>Aggressive</td>
					<td>Those with other income sources or flexibility</td>
			</tr>
	</tbody>
</table>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="warning">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M506.3 417l-213.3-364c-16.33-28-57.54-28-73.98 0l-213.2 364C-10.59 444.9 9.849 480 42.74 480h426.6C502.1 480 522.6 445 506.3 417zM232 168c0-13.25 10.75-24 24-24S280 154.8 280 168v128c0 13.25-10.75 24-23.1 24S232 309.3 232 296V168zM256 416c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 401.9 273.4 416 256 416z"/></svg>
</span></div>
        <div class="grow">
          My Preference
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Personally I go for a rate around 3.5%. Check my SWR Calculator for more on this.</p></div></div>
      </div><div class="tab__panel " data-tab-index="2">
        
<h3 class="relative group">Additional Income
    <div id="additional-income" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#additional-income" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>If you have rental income, side business revenue, or pensions, you can reduce the portfolio withdrawal requirement accordingly.</p>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="success">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"/></svg>
</span></div>
        <div class="grow">
          The Multiplier Effect
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Each $1 of additional annual income reduces your required FIRE number by $25 (using 4% rule).</p>
<p><strong>Example:</strong> $30,000 rental income = $750,000 less needed in your portfolio!</p></div></div>
      </div></div>
</div>


<h3 class="relative group">Adjusting for Life Changes
    <div id="adjusting-for-life-changes" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#adjusting-for-life-changes" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Your FIRE number isn't static. Reassess it when:</p>
<table>
	<thead>
			<tr>
					<th>Life Event</th>
					<th>Why Reassess</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Major life events</strong></td>
					<td>Marriage, children, empty nest, health changes</td>
			</tr>
			<tr>
					<td><strong>Career changes</strong></td>
					<td>Significant income increase or decrease</td>
			</tr>
			<tr>
					<td><strong>Market conditions</strong></td>
					<td>Large market moves can affect your withdrawal rate sustainability</td>
			</tr>
			<tr>
					<td><strong>Expense changes</strong></td>
					<td>Relocating to a lower cost-of-living area, downsizing, or lifestyle shifts</td>
			</tr>
	</tbody>
</table>
<hr>

<h2 class="relative group">Beyond the 4% Rule: Advanced Considerations
    <div id="beyond-the-4-rule-advanced-considerations" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#beyond-the-4-rule-advanced-considerations" aria-label="Anchor">#</a>
    </span>
    
</h2>
<div
  class="tab__container w-full"
  
  >
  <div class="tab__nav" role="tablist">
    <div class="flex flex-wrap gap-1"><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 tab--active"
          role="tab"
          aria-selected="true"
          data-tab-index="0"
          data-tab-label="Sequence of Returns">
          <span class="flex items-center gap-1">
            
            Sequence of Returns
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="1"
          data-tab-label="Healthcare Costs">
          <span class="flex items-center gap-1">
            
            Healthcare Costs
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="2"
          data-tab-label="Inflation">
          <span class="flex items-center gap-1">
            
            Inflation
          </span>
        </button></div>
  </div>
  <div class="tab__content mt-4"><div class="tab__panel tab--active" data-tab-index="0">
        
<h3 class="relative group">Sequence of Returns Risk
    <div id="sequence-of-returns-risk" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#sequence-of-returns-risk" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>One critical factor many investors overlook: <strong>the order of returns matters</strong>. You could have identical average returns but very different outcomes depending on <em>when</em> those returns occur.</p>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="danger">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
<path fill="currentColor"  d="M159.3 5.4c7.8-7.3 19.9-7.2 27.7 .1c27.6 25.9 53.5 53.8 77.7 84c11-14.4 23.5-30.1 37-42.9c7.9-7.4 20.1-7.4 28 .1c34.6 33 63.9 76.6 84.5 118c20.3 40.8 33.8 82.5 33.8 111.9C448 404.2 348.2 512 224 512C98.4 512 0 404.1 0 276.5c0-38.4 17.8-85.3 45.4-131.7C73.3 97.7 112.7 48.6 159.3 5.4zM225.7 416c25.3 0 47.7-7 68.8-21c42.1-29.4 53.4-88.2 28.1-134.4c-2.8-5.6-5.6-11.2-9.8-16.8l-50.6 58.8s-81.4-103.6-87.1-110.6C133.1 243.8 112 273.2 112 306.8C112 375.4 162.6 416 225.7 416z"/></svg></span></div>
        <div class="grow">
          Critical Warning
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Retiring right before a market crash is far riskier than retiring during a bull market, even if average returns are identical over 30 years.</p></div></div><p><strong>Mitigation strategies:</strong></p>
<ul>
<li>Build a <strong>2-3 year cash buffer</strong> before retiring (especially critical for early retirees)</li>
<li>Use a <strong>bond tent:</strong> Keep bonds/stable assets higher in early retirement years, gradually shifting to stocks</li>
<li>Practice <strong>dynamic withdrawal rates:</strong> Reduce withdrawals in down market years, increase in strong years</li>
</ul>

      </div><div class="tab__panel " data-tab-index="1">
        
<h3 class="relative group">Healthcare Costs in Early Retirement
    <div id="healthcare-costs-in-early-retirement" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#healthcare-costs-in-early-retirement" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>If you're retiring before age 65, healthcare is a major expense often underestimated:</p>
<table>
	<thead>
			<tr>
					<th>Cost Type</th>
					<th>Estimated Range</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Individual/family health insurance</strong></td>
					<td>$400-$1,500+/month depending on age and coverage</td>
			</tr>
			<tr>
					<td><strong>Dental, vision, hearing aids</strong></td>
					<td>$2,000-$5,000 annually in later years (rarely covered)</td>
			</tr>
	</tbody>
</table>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="warning">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M506.3 417l-213.3-364c-16.33-28-57.54-28-73.98 0l-213.2 364C-10.59 444.9 9.849 480 42.74 480h426.6C502.1 480 522.6 445 506.3 417zM232 168c0-13.25 10.75-24 24-24S280 154.8 280 168v128c0 13.25-10.75 24-23.1 24S232 309.3 232 296V168zM256 416c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 401.9 273.4 416 256 416z"/></svg>
</span></div>
        <div class="grow">
          Action Item
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Get specific quotes from healthcare providers or brokers before locking in your FIRE number.</p></div></div>
      </div><div class="tab__panel " data-tab-index="2">
        
<h3 class="relative group">Inflation Adjustment
    <div id="inflation-adjustment" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#inflation-adjustment" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>The calculator shows nominal values, but inflation erodes purchasing power:</p>
<table>
	<thead>
			<tr>
					<th>Factor</th>
					<th>Impact</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Historical inflation</strong></td>
					<td>~2-3% annually (recent years saw higher rates). Check for your country</td>
			</tr>
			<tr>
					<td><strong>Portfolio growth requirement</strong></td>
					<td>Over 30 years, 2.5% inflation means $60,000 → ~$125,000 needed</td>
			</tr>
			<tr>
					<td><strong>Real returns matter</strong></td>
					<td>7% nominal return with 2.5% inflation = <strong>4.5% real return</strong></td>
			</tr>
	</tbody>
</table>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="tip">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span></div>
        <div class="grow">
          Focus on Real Returns
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>When investing, focus on <strong>real returns (after inflation)</strong>, not nominal returns.</p></div></div>
      </div></div>
</div>

<hr>

<h2 class="relative group">Real-World FIRE Examples
    <div id="real-world-fire-examples" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#real-world-fire-examples" aria-label="Anchor">#</a>
    </span>
    
</h2>
<div
  class="tab__container w-full"
  
  >
  <div class="tab__nav" role="tablist">
    <div class="flex flex-wrap gap-1"><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 tab--active"
          role="tab"
          aria-selected="true"
          data-tab-index="0"
          data-tab-label="Coast FIRE">
          <span class="flex items-center gap-1">
            
            Coast FIRE
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="1"
          data-tab-label="Traditional FIRE">
          <span class="flex items-center gap-1">
            
            Traditional FIRE
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="2"
          data-tab-label="Phased Retirement">
          <span class="flex items-center gap-1">
            
            Phased Retirement
          </span>
        </button></div>
  </div>
  <div class="tab__content mt-4"><div class="tab__panel tab--active" data-tab-index="0">
        
<h3 class="relative group">Example 1: Tech Professional, Age 35, Coast FIRE
    <div id="example-1-tech-professional-age-35-coast-fire" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#example-1-tech-professional-age-35-coast-fire" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p><strong>Profile:</strong></p>
<ul>
<li>Current annual expenses: $80,000</li>
<li>Current portfolio: $1,200,000</li>
<li>Desired withdrawal rate: 3% (early retirement, conservative)</li>
</ul>
<p><strong>FIRE Number:</strong> $80,000 ÷ 0.03 = <strong>$2,666,667</strong></p>
<p><strong>Path to FIRE:</strong></p>
<ul>
<li>Current portfolio can grow: $1.2M at 7% annual return = $2.4M in ~12 years (age 47)</li>
<li>OR: stop working now, live on $36,000/year (3% of $1.2M), and work part-time/consulting to cover the gap</li>
<li>OR: &quot;coast&quot; approach: invest for 10 more years without additional contributions; reassess at 45</li>
</ul>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="success">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"/></svg>
</span></div>
        <div class="grow">
          Verdict
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Close to FI; coast FIRE or lean FIRE are realistic near-term options.</p></div></div>
      </div><div class="tab__panel " data-tab-index="1">
        
<h3 class="relative group">Example 2: Dual Income Couple, Age 40, Traditional FIRE
    <div id="example-2-dual-income-couple-age-40-traditional-fire" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#example-2-dual-income-couple-age-40-traditional-fire" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p><strong>Profile:</strong></p>
<ul>
<li>Combined annual expenses: $120,000</li>
<li>Combined portfolio: $2,500,000</li>
<li>Secondary income (rental properties): $30,000/year</li>
<li>Desired withdrawal rate: 4%</li>
</ul>
<p><strong>FIRE Number:</strong> ($120,000 - $30,000) ÷ 0.04 = <strong>$2,250,000</strong></p>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="success">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"/></svg>
</span></div>
        <div class="grow">
          Status: Already Achieved!
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>$2.5M &gt; $2.25M required</p></div></div><p><strong>Next steps:</strong></p>
<ul>
<li>Verify tax implications of rental income and capital gains</li>
<li>Plan healthcare</li>
<li>Consider one spouse continuing work part-time for benefits/social security boost</li>
</ul>

      </div><div class="tab__panel " data-tab-index="2">
        
<h3 class="relative group">Example 3: High-Expense Household, Age 50, Phased Retirement
    <div id="example-3-high-expense-household-age-50-phased-retirement" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#example-3-high-expense-household-age-50-phased-retirement" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p><strong>Profile:</strong></p>
<ul>
<li>Annual expenses: $250,000</li>
<li>Portfolio: $5,000,000</li>
<li>Desired withdrawal rate: 4%</li>
</ul>
<p><strong>FIRE Number:</strong> $250,000 ÷ 0.04 = <strong>$6,250,000</strong></p>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="warning">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M506.3 417l-213.3-364c-16.33-28-57.54-28-73.98 0l-213.2 364C-10.59 444.9 9.849 480 42.74 480h426.6C502.1 480 522.6 445 506.3 417zM232 168c0-13.25 10.75-24 24-24S280 154.8 280 168v128c0 13.25-10.75 24-23.1 24S232 309.3 232 296V168zM256 416c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 401.9 273.4 416 256 416z"/></svg>
</span></div>
        <div class="grow">
          Gap: $1.25M Shortfall
        </div>
      </div></div><p><strong>Options:</strong></p>
<ul>
<li><strong>Extend work 3-5 years:</strong> Let portfolio grow; $5M at 6% = $6.7M in 5 years</li>
<li><strong>Reduce expenses:</strong> Lower to $200,000/year → FIRE number drops to $5M (achievable now)</li>
<li><strong>Phased retirement:</strong> One spouse retires at 50; other works until 55; combined income bridges gap</li>
<li><strong>Rental/alternative income:</strong> Develop passive income streams to reduce portfolio withdrawal</li>
</ul>

      </div></div>
</div>

<hr>

<h2 class="relative group">Action Plan: From Calculator to Reality
    <div id="action-plan-from-calculator-to-reality" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#action-plan-from-calculator-to-reality" aria-label="Anchor">#</a>
    </span>
    
</h2>
<div
  class="tab__container w-full"
  
  >
  <div class="tab__nav" role="tablist">
    <div class="flex flex-wrap gap-1"><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 tab--active"
          role="tab"
          aria-selected="true"
          data-tab-index="0"
          data-tab-label="Steps 1-2">
          <span class="flex items-center gap-1">
            
            Steps 1-2
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="1"
          data-tab-label="Steps 3-4">
          <span class="flex items-center gap-1">
            
            Steps 3-4
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="2"
          data-tab-label="Step 5">
          <span class="flex items-center gap-1">
            
            Step 5
          </span>
        </button></div>
  </div>
  <div class="tab__content mt-4"><div class="tab__panel tab--active" data-tab-index="0">
        <h3 class="relative group">Step 1: Calculate Your FIRE Number (Done!)
    <div id="step-1-calculate-your-fire-number-done" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-1-calculate-your-fire-number-done" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Use the interactive calculator above with realistic assumptions.</p>

<h3 class="relative group">Step 2: Audit Your Current Position
    <div id="step-2-audit-your-current-position" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-2-audit-your-current-position" aria-label="Anchor">#</a>
    </span>
    
</h3>
<table>
	<thead>
			<tr>
					<th>Audit Item</th>
					<th>Questions to Answer</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Net worth snapshot</strong></td>
					<td>Assets minus debts</td>
			</tr>
			<tr>
					<td><strong>Portfolio allocation</strong></td>
					<td>What % stocks/bonds/real estate?</td>
			</tr>
			<tr>
					<td><strong>Annual savings rate</strong></td>
					<td>Can you increase it by 10-20%?</td>
			</tr>
	</tbody>
</table>
      </div><div class="tab__panel " data-tab-index="1">
        
<h3 class="relative group">Step 3: Stress-Test Your Plan and Verify Your SWR
    <div id="step-3-stress-test-your-plan-and-verify-your-swr" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-3-stress-test-your-plan-and-verify-your-swr" aria-label="Anchor">#</a>
    </span>
    
</h3>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="tip">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span></div>
        <div class="grow">
          Use the SWR Calculator
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Based on historical figures (last 150 years), make sure you've got a Safe Withdrawal Rate you feel comfortable with.</p></div></div><p><strong>Stress-test scenarios:</strong></p>
<ul>
<li><strong>Market downturns:</strong> How would a 30% stock market crash affect your 10-year timeline?</li>
<li><strong>Longevity:</strong> Plan for living to 95 or 100, not just 85</li>
<li><strong>Healthcare scenarios:</strong> What if you need $10k/year in out-of-pocket medical costs?</li>
</ul>

<h3 class="relative group">Step 4: Optimize Tax and Investment Strategy
    <div id="step-4-optimize-tax-and-investment-strategy" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-4-optimize-tax-and-investment-strategy" aria-label="Anchor">#</a>
    </span>
    
</h3>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="warning">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M506.3 417l-213.3-364c-16.33-28-57.54-28-73.98 0l-213.2 364C-10.59 444.9 9.849 480 42.74 480h426.6C502.1 480 522.6 445 506.3 417zM232 168c0-13.25 10.75-24 24-24S280 154.8 280 168v128c0 13.25-10.75 24-23.1 24S232 309.3 232 296V168zM256 416c-17.36 0-31.44-14.08-31.44-31.44c0-17.36 14.07-31.44 31.44-31.44s31.44 14.08 31.44 31.44C287.4 401.9 273.4 416 256 416z"/></svg>
</span></div>
        <div class="grow">
          Check Your Own Situation
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Check the tax situation in your own country.</p></div></div>
      </div><div class="tab__panel " data-tab-index="2">
        
<h3 class="relative group">Step 5: Build Your Transition Plan
    <div id="step-5-build-your-transition-plan" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#step-5-build-your-transition-plan" aria-label="Anchor">#</a>
    </span>
    
</h3>
<table>
	<thead>
			<tr>
					<th>Retirement Timing</th>
					<th>Key Considerations</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Early (before 55)</strong></td>
					<td>Understand your healthcare situation, plan for longer retirement (40+ years)</td>
			</tr>
			<tr>
					<td><strong>Traditional (60+)</strong></td>
					<td>Check your Social Security situation</td>
			</tr>
			<tr>
					<td><strong>Phased</strong></td>
					<td>Define your &quot;work vs. coast&quot; timeline and income bridge</td>
			</tr>
	</tbody>
</table>

      </div></div>
</div>

<hr>

<h2 class="relative group">Common Pitfalls to Avoid
    <div id="common-pitfalls-to-avoid" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#common-pitfalls-to-avoid" aria-label="Anchor">#</a>
    </span>
    
</h2>
<div
  class="tab__container w-full"
  
  >
  <div class="tab__nav" role="tablist">
    <div class="flex flex-wrap gap-1"><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 tab--active"
          role="tab"
          aria-selected="true"
          data-tab-index="0"
          data-tab-label="Expenses &amp; Returns">
          <span class="flex items-center gap-1">
            
            Expenses &amp; Returns
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="1"
          data-tab-label="Healthcare &amp; Withdrawals">
          <span class="flex items-center gap-1">
            
            Healthcare &amp; Withdrawals
          </span>
        </button><button
          class="tab__button px-3 py-2 text-sm font-semibold border-b-2 border-transparent rounded-t-md hover:bg-neutral-200 dark:hover:bg-neutral-700 "
          role="tab"
          aria-selected="false"
          data-tab-index="2"
          data-tab-label="Lifestyle">
          <span class="flex items-center gap-1">
            
            Lifestyle
          </span>
        </button></div>
  </div>
  <div class="tab__content mt-4"><div class="tab__panel tab--active" data-tab-index="0">
        
<h3 class="relative group">1. Underestimating Expenses
    <div id="1-underestimating-expenses" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-underestimating-expenses" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Many retirees discover they spend 10-20% more than planned. Travel, gifts to family, and home repairs often exceed expectations.</p>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="tip">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span></div>
        <div class="grow">
          Solution
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Track current spending for a full year; add a 15% buffer.</p></div></div>
<h3 class="relative group">2. Ignoring Sequence of Returns Risk
    <div id="2-ignoring-sequence-of-returns-risk" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2-ignoring-sequence-of-returns-risk" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>A market crash in years 1-5 of retirement can permanently reduce your portfolio.</p>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="tip">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span></div>
        <div class="grow">
          Solution
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Keep 2-3 years of expenses in cash/treasury bonds before retiring.</p></div></div>
      </div><div class="tab__panel " data-tab-index="1">
        
<h3 class="relative group">3. Neglecting Healthcare Costs
    <div id="3-neglecting-healthcare-costs" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#3-neglecting-healthcare-costs" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Healthcare inflation is high. Make sure you cater for this.</p>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="tip">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span></div>
        <div class="grow">
          Solution
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Budget $300-$500k for healthcare costs in retirement.</p></div></div>
<h3 class="relative group">4. Over-Withdrawing in Early Years
    <div id="4-over-withdrawing-in-early-years" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#4-over-withdrawing-in-early-years" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Inflation means you must withdraw more each year; starting too high leaves nothing for later.</p>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="tip">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span></div>
        <div class="grow">
          Solution
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Use a constant withdrawal with inflation adjustment (from your initial portfolio), not a fixed percentage that resets.</p></div></div>
      </div><div class="tab__panel " data-tab-index="2">
        
<h3 class="relative group">5. Failing to Adjust for Lifestyle Changes
    <div id="5-failing-to-adjust-for-lifestyle-changes" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#5-failing-to-adjust-for-lifestyle-changes" aria-label="Anchor">#</a>
    </span>
    
</h3>
<p>Retiring at 50 with an expensive hobby (travel, golf, boating) is very different from retiring at 65.</p>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="tip">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z"/></svg>
</span></div>
        <div class="grow">
          Solution
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><p>Test your lifestyle assumptions; take a trial retirement month.</p></div></div>
      </div></div>
</div>

<hr>

<h2 class="relative group">When to Revisit Your FIRE Number
    <div id="when-to-revisit-your-fire-number" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#when-to-revisit-your-fire-number" aria-label="Anchor">#</a>
    </span>
    
</h2>
<table>
	<thead>
			<tr>
					<th>Life Event</th>
					<th>Action</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Major market downturn (&gt;20%)</td>
					<td>Review in 6-12 months; don't panic-sell</td>
			</tr>
			<tr>
					<td>Significant expense change</td>
					<td>Recalculate immediately</td>
			</tr>
			<tr>
					<td>Major life event (marriage, kids, inheritance)</td>
					<td>Adjust plan within 30 days</td>
			</tr>
			<tr>
					<td>Job loss or career change</td>
					<td>Reassess income and timeline</td>
			</tr>
			<tr>
					<td>Health diagnosis</td>
					<td>Update healthcare cost estimates and longevity assumptions</td>
			</tr>
			<tr>
					<td>Significant portfolio growth (&gt;25%)</td>
					<td>Celebrate, but don't inflate lifestyle (&quot;lifestyle creep&quot;)</td>
			</tr>
	</tbody>
</table>
<hr>

<h2 class="relative group">Conclusion: Your FIRE Number Is Just the Starting Point
    <div id="conclusion-your-fire-number-is-just-the-starting-point" class="anchor"></div>
    
    <span
        class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none">
        <a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#conclusion-your-fire-number-is-just-the-starting-point" aria-label="Anchor">#</a>
    </span>
    
</h2>
<p>Calculating your FIRE number is empowering—it gives you a concrete target. But FIRE is about more than math; it's about intentional living, spending aligned with your values, and building the freedom to choose your time.</p>
<div class="admonition relative overflow-hidden rounded-lg border-l-4 my-3 px-4 py-3 shadow-sm" data-type="success">
      <div class="flex items-center gap-2 font-semibold text-inherit">
        <div class="flex shrink-0 h-5 w-5 items-center justify-center text-lg"><span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M438.6 105.4C451.1 117.9 451.1 138.1 438.6 150.6L182.6 406.6C170.1 419.1 149.9 419.1 137.4 406.6L9.372 278.6C-3.124 266.1-3.124 245.9 9.372 233.4C21.87 220.9 42.13 220.9 54.63 233.4L159.1 338.7L393.4 105.4C405.9 92.88 426.1 92.88 438.6 105.4H438.6z"/></svg>
</span></div>
        <div class="grow">
          Key Takeaways
        </div>
      </div><div class="admonition-content mt-3 text-base leading-relaxed text-inherit"><ul>
<li>Your FIRE number = Annual Expenses ÷ Withdrawal Rate</li>
<li>The 4% rule is a solid starting point; adjust for your risk tolerance and timeline</li>
<li>Check my SWR-Safe Withdrawal Rate Calculator for your number</li>
<li>Plan for healthcare, taxes, and sequence-of-returns risk</li>
<li>Revisit your plan annually or after major life changes</li>
<li><strong>Start now:</strong> every year you delay costs you 7-10 years of compounding</li>
</ul></div></div>
  
  
  
  



<div
  
    class="flex px-4 py-3 rounded-md shadow bg-primary-100 dark:bg-primary-900"
  
  >
  <span
    
      class="text-primary-400 pe-3 flex items-center"
    
    >
    <span class="relative block icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 128c17.67 0 32 14.33 32 32c0 17.67-14.33 32-32 32S224 177.7 224 160C224 142.3 238.3 128 256 128zM296 384h-80C202.8 384 192 373.3 192 360s10.75-24 24-24h16v-64H224c-13.25 0-24-10.75-24-24S210.8 224 224 224h32c13.25 0 24 10.75 24 24v88h16c13.25 0 24 10.75 24 24S309.3 384 296 384z"/></svg>
</span>
  </span>

  <span
    
      class="dark:text-neutral-300"
    
    ><strong>Disclaimer:</strong> This calculator reflects my personal views and is for educational purposes only. It is not financial advice. Every situation is different. Always check your country's specific tax and investment rules before acting. See the full <a href="/disclaimer/" >Disclaimer</a> and <a href="/privacy/" >Privacy Policy</a> for the long version.</span>
</div>

]]></content:encoded><media:content url="https://libreleo.com/img/featured/interactive_calculator_to_your_fire_number.webp" medium="image"/></item></channel></rss>