Withdrawal Strategies¶
Choosing the right withdrawal strategy affects both your spending and portfolio longevity. This guide compares the main approaches.
Strategy Overview¶
| Strategy | Description | Pros | Cons |
|---|---|---|---|
| Fixed SWR | 4% of initial portfolio, inflation-adjusted | Predictable income | Ignores market conditions |
| % of Portfolio | Fixed % of current value | Adapts to market | Volatile income |
| Guardrails | Adjustable with floor/ceiling | Balance of both | More complex |
| VPW | Age-based variable percentage | Maximizes spending | Requires discipline |
| RMD-Style | IRS distribution table | Tax-efficient | Conservative early |
Fixed Safe Withdrawal Rate (SWR)¶
The classic "4% rule" from the Trinity Study.
from fundedness.withdrawals import FixedSWRPolicy
policy = FixedSWRPolicy(
initial_portfolio=1_000_000,
withdrawal_rate=0.04,
inflation_rate=0.025,
)
# Year 1: $40,000
# Year 2: $41,000 (inflation adjusted)
# Year 3: $42,025
Best for: Those who prioritize predictable income.
Percentage of Portfolio¶
Withdraw a fixed percentage of current portfolio value each year.
from fundedness.withdrawals import PercentOfPortfolioPolicy
policy = PercentOfPortfolioPolicy(
withdrawal_rate=0.04,
)
# If portfolio = $1M: withdraw $40,000
# If portfolio = $800k: withdraw $32,000
# If portfolio = $1.2M: withdraw $48,000
Best for: Those comfortable with variable income who want market adaptation.
Guardrails Strategy¶
Combines fixed spending with guardrails that trigger adjustments.
from fundedness.withdrawals import GuardrailsPolicy
policy = GuardrailsPolicy(
initial_spending=40_000,
ceiling_rate=0.05, # Increase if rate drops below this
floor_rate=0.03, # Decrease if rate rises above this
adjustment=0.10, # Adjust by 10%
)
How it works:
- Start with base spending
- If current rate < ceiling: increase spending by 10%
- If current rate > floor: decrease spending by 10%
Best for: Balance between stability and market responsiveness.
Variable Percentage Withdrawal (VPW)¶
Age-based withdrawal rates that increase over time.
from fundedness.withdrawals import VPWPolicy
policy = VPWPolicy(
current_age=65,
)
# Age 65: ~4.0%
# Age 75: ~5.5%
# Age 85: ~8.0%
Rationale: As you age, your remaining time horizon shrinks, so you can safely withdraw more.
Best for: Maximizing lifetime spending, those with flexibility.
RMD-Style¶
Based on IRS Required Minimum Distribution tables.
from fundedness.withdrawals import RMDPolicy
policy = RMDPolicy(
current_age=72,
)
# Uses IRS Uniform Lifetime Table
# Age 72: 1/27.4 = 3.65%
# Age 80: 1/20.2 = 4.95%
Best for: Tax-deferred accounts, conservative early retirement.
Comparing Strategies¶
Run a comparison across strategies:
from fundedness import compare_strategies
results = compare_strategies(
initial_portfolio=1_000_000,
years=30,
strategies=["fixed_swr", "guardrails", "vpw"],
n_simulations=10_000,
)
for strategy, metrics in results.items():
print(f"{strategy}:")
print(f" Success Rate: {metrics.success_rate:.1%}")
print(f" Avg Spending: ${metrics.avg_annual_spending:,.0f}")
Choosing a Strategy¶
Consider these factors:
- Income stability needs: Fixed SWR > Guardrails > VPW
- Spending flexibility: VPW > Guardrails > Fixed SWR
- Risk tolerance: Conservative → RMD, Aggressive → VPW
- Other income sources: Social Security, pension reduce need for stability
Hybrid Approaches¶
Many retirees use combinations:
- Fixed SWR for essential expenses
- % of Portfolio for discretionary
- Guardrails as overall framework