retirement-portfolio-calculator
Problem Statement
Question: How much money do you need at the start of retirement to:
- Withdraw a specific amount annually
- Have your money last a certain number of years
- Leave a legacy/inheritance at the end
Your Example Calculation
| Parameter | Value |
|---|---|
| Required Portfolio Income (Annual) | $55,453 |
| Length of Retirement | 35 years |
| Estimated Rate of Return | 6% |
| Legacy Goal (Amount Remaining) | $500,000 |
| Starting Pool of Retirement Assets | $869,026 |
The Formula
The calculation requires finding the present value of two components:
Component 1: Present Value of Annuity (Annual Withdrawals)
PV_annuity = PMT × [(1 - (1 + r)^-n) / r]Where:
- PMT = Annual payment/withdrawal amount
- r = Annual rate of return (as decimal)
- n = Number of years
Component 2: Present Value of Legacy Goal
PV_legacy = FV / (1 + r)^nWhere:
- FV = Future value (legacy goal)
- r = Annual rate of return (as decimal)
- n = Number of years
Total Starting Pool
Starting Pool = PV_annuity + PV_legacyStep-by-Step Calculation for Your Example
Given:
- Annual withdrawal (PMT): $55,453
- Years in retirement (n): 35
- Rate of return (r): 6% = 0.06
- Legacy goal (FV): $500,000
Step 1: Calculate Present Value of Annuity
PV_annuity = $55,453 × [(1 - (1.06)^-35) / 0.06]Calculate (1.06)^-35:
(1.06)^-35 = 0.130105Calculate the bracket:
(1 - 0.130105) / 0.06 = 0.869895 / 0.06 = 14.4982Final annuity PV:
PV_annuity = $55,453 × 14.4982 = $803,974Step 2: Calculate Present Value of Legacy Goal
PV_legacy = $500,000 / (1.06)^35Calculate (1.06)^35:
(1.06)^35 = 7.6861Final legacy PV:
PV_legacy = $500,000 / 7.6861 = $65,052Step 3: Add Them Together
Starting Pool = $803,974 + $65,052 = $869,026Verification: Does This Work?
Let’s verify with a year-by-year breakdown (first 5 years and last 5 years):
| Year | Beginning Balance | Withdrawal | Growth (6%) | Ending Balance |
|---|---|---|---|---|
| 1 | $869,026 | -$55,453 | +$48,814 | $862,387 |
| 2 | $862,387 | -$55,453 | +$48,416 | $855,350 |
| 3 | $855,350 | -$55,453 | +$47,994 | $847,891 |
| 4 | $847,891 | -$55,453 | +$47,546 | $839,984 |
| 5 | $839,984 | -$55,453 | +$47,072 | $831,603 |
| … | … | … | … | … |
| 31 | $660,247 | -$55,453 | +$36,288 | $641,082 |
| 32 | $641,082 | -$55,453 | +$35,138 | $620,767 |
| 33 | $620,767 | -$55,453 | +$33,919 | $599,233 |
| 34 | $599,233 | -$55,453 | +$32,607 | $576,387 |
| 35 | $576,387 | -$55,453 | +$31,252 | $552,186 |
Note: Due to rounding, the final amount is approximately
Quick Reference: Annuity Factor Table
For 6% return rate, here are the annuity factors for different time periods:
| Years | Annuity Factor |
|---|---|
| 10 | 7.3601 |
| 15 | 9.7122 |
| 20 | 11.4699 |
| 25 | 12.7834 |
| 30 | 13.7648 |
| 35 | 14.4982 |
| 40 | 15.0463 |
To use: PV of annuity = Annual withdrawal × Annuity Factor
Common Retirement Scenarios
Scenario 1: No Legacy Goal
If you don’t need to leave money behind:
Starting Pool = PMT × [(1 - (1 + r)^-n) / r]Example: $55,453 annual, 35 years, 6% return
Starting Pool = $55,453 × 14.4982 = $803,974You need $134,052 less if you don’t need a legacy.
Scenario 2: Different Rates of Return
| Rate | Annuity Factor (35 yrs) | Starting Pool (no legacy) |
|---|---|---|
| 4% | 16.3742 | $908,061 |
| 5% | 15.3685 | $852,308 |
| 6% | 14.4982 | $803,974 |
| 7% | 13.7170 | $760,693 |
| 8% | 13.0352 | $722,981 |
Key Insight: Higher returns = Less money needed at start
Scenario 3: Different Retirement Lengths
At 6% return, $55,453 annual withdrawal:
| Years | Starting Pool Needed (no legacy) |
|---|---|
| 20 | $636,178 |
| 25 | $709,079 |
| 30 | $763,241 |
| 35 | $803,974 |
| 40 | $834,522 |
Important Considerations
1. Rate of Return Assumptions
6% is a common assumption, but actual returns vary:
- Conservative: 4-5% (heavy bonds)
- Moderate: 6-7% (balanced portfolio)
- Aggressive: 8-9% (heavy stocks)
Historical context:
- S&P 500 average (1926-2023): ~10% nominal, ~7% real (after inflation)
- 60/40 portfolio average: ~8% nominal, ~5% real
2. Inflation
The calculation above uses nominal dollars. To account for inflation:
Option A: Use real rate of return
Real return ≈ Nominal return - InflationExample: 6% nominal - 3% inflation = 3% realOption B: Inflate withdrawal amounts annually
Year 1: $55,453Year 2: $55,453 × 1.03 = $57,117Year 3: $57,117 × 1.03 = $58,830...3. Sequence of Returns Risk
Average 6% doesn’t mean 6% every year:
- Bad scenario: Market crashes early in retirement (forced to sell low)
- Good scenario: Strong returns early (portfolio grows before heavy withdrawals)
Mitigation strategies:
- Maintain 2-3 years of withdrawals in cash
- Use “bucket strategy” (cash/bonds/stocks in different buckets)
- Consider dynamic withdrawal strategies
4. Taxes
The $55,453 withdrawal is likely pre-tax:
- Traditional 401(k)/IRA: Fully taxable
- Roth accounts: Tax-free
- Taxable accounts: Only gains taxed
Example tax impact:
Need: $55,453 after-taxTax rate: 20%Required withdrawal: $55,453 / 0.80 = $69,316This changes the calculation significantly!
5. Social Security
If you’ll receive Social Security, you need less from your portfolio:
Example:
Total income needed: $70,000/yearSocial Security: $30,000/yearPortfolio must provide: $40,000/yearExcel/Spreadsheet Formulas
Present Value of Annuity
=PV(rate, nper, pmt, [fv], [type])
For your example:=PV(0.06, 35, -55453, 0, 0) = $803,973.58Present Value of Lump Sum
=PV(rate, nper, pmt, fv, [type])
For your example:=PV(0.06, 35, 0, -500000, 0) = $65,052.38Combined
=PV(0.06, 35, -55453, -500000, 0) = $869,025.96Note:
- Negative values in Excel represent cash outflows
- Type = 0 means withdrawals at end of period (most common)
- Type = 1 means withdrawals at beginning of period
Python Calculator
def calculate_retirement_pool(annual_withdrawal, years, rate_of_return, legacy_goal=0): """ Calculate starting retirement assets needed.
Args: annual_withdrawal: Amount to withdraw each year years: Number of years in retirement rate_of_return: Expected annual return (as decimal, e.g., 0.06 for 6%) legacy_goal: Amount to leave behind (default 0)
Returns: Starting pool amount needed """ # Present value of annuity (withdrawals) pv_annuity = annual_withdrawal * ((1 - (1 + rate_of_return)**-years) / rate_of_return)
# Present value of legacy goal pv_legacy = legacy_goal / (1 + rate_of_return)**years
# Total starting pool starting_pool = pv_annuity + pv_legacy
return { 'starting_pool': starting_pool, 'pv_annuity': pv_annuity, 'pv_legacy': pv_legacy }
# Your exampleresult = calculate_retirement_pool( annual_withdrawal=55453, years=35, rate_of_return=0.06, legacy_goal=500000)
print(f"Starting Pool Needed: ${result['starting_pool']:,.2f}")print(f" - For Withdrawals: ${result['pv_annuity']:,.2f}")print(f" - For Legacy: ${result['pv_legacy']:,.2f}")
# Output:# Starting Pool Needed: $869,025.96# - For Withdrawals: $803,973.58# - For Legacy: $65,052.38Sensitivity Analysis
How much does the starting pool change with different assumptions?
Impact of Return Rate
Holding everything else constant (
| Return Rate | Starting Pool | Difference from 6% |
|---|---|---|
| 4% | $1,026,113 | +$157,087 (+18%) |
| 5% | $936,361 | +$67,335 (+8%) |
| 6% | $869,026 | Baseline |
| 7% | $813,746 | -$55,280 (-6%) |
| 8% | $767,033 | -$101,993 (-12%) |
Key insight: Each 1% change in returns = ~$55-80k difference
Impact of Retirement Length
Holding everything else constant (
| Years | Starting Pool | Annual Cost |
|---|---|---|
| 20 | $703,106 | $35,155/year |
| 25 | $774,031 | $30,961/year |
| 30 | $828,193 | $27,607/year |
| 35 | $869,026 | $24,829/year |
| 40 | $899,474 | $22,487/year |
Key insight: Longer retirement = Higher total cost, but lower annual cost (due to compounding)
Impact of Legacy Goal
Holding everything else constant ($55,453/year, 35 years, 6% return):
| Legacy Goal | PV of Legacy | Starting Pool |
|---|---|---|
| $0 | $0 | $803,974 |
| $250,000 | $32,526 | $836,500 |
| $500,000 | $65,052 | $869,026 |
| $750,000 | $97,578 | $901,552 |
| $1,000,000 | $130,104 | $934,078 |
Key insight: Each
Practical Application: Your Retirement Planning
Step 1: Determine Your Annual Income Need
Total annual expenses in retirement: $_______- Social Security benefits: -$_______- Pension income: -$_______- Other guaranteed income: -$_______ ────────= Required portfolio income: $_______Step 2: Choose Your Parameters
- Years in retirement: Life expectancy - Retirement age
- Life expectancy at 65: Males ~84, Females ~86
- Add buffer: Use 90-95 to be safe
- Rate of return: Based on asset allocation
- Conservative (bonds heavy): 4-5%
- Moderate (balanced): 6-7%
- Aggressive (stocks heavy): 7-8%
- Legacy goal: What do you want to leave behind?
- $0 (spend it all)
- Specific amount for heirs
- Percentage of starting pool
Step 3: Calculate Starting Pool Needed
Use the formula or calculator above.
Step 4: Compare to Your Current Assets
Starting pool needed: $_______Current retirement savings: $_______ ────────Gap (+ surplus / - shortfall): $_______Step 5: Adjust as Needed
If you have a shortfall:
- Work longer (reduce years needed)
- Save more now
- Reduce annual withdrawal amount
- Increase risk/return (carefully!)
- Reduce legacy goal
If you have a surplus:
- Retire earlier
- Increase annual spending
- Reduce investment risk
- Increase legacy goal
- Add buffer for emergencies
The 4% Rule Connection
The famous “4% rule” states you can withdraw 4% of your starting portfolio annually (adjusted for inflation) for 30 years with high success rate.
How does this relate to our calculation?
Using 4% rule for $55,453 annual withdrawal:
Starting Pool = Annual Withdrawal / 0.04Starting Pool = $55,453 / 0.04 = $1,386,325Why the difference from our $869,026?
-
The 4% rule assumes:
- 30 years (we used 35)
- ~7% returns - 3% inflation = 4% real return
- No legacy goal (spend to zero)
- Inflation-adjusted withdrawals
-
Our calculation assumes:
- 35 years
- 6% nominal returns
- $500k legacy goal
- Fixed dollar withdrawals
The 4% rule is more conservative, which is why it needs more starting capital.
Summary
Your Answer: You need $869,026 in retirement assets to:
- Withdraw $55,453 per year
- Last 35 years
- Earn 6% annually
- Leave $500,000 legacy
Key Formulas:
Starting Pool = PV of Annuity + PV of Legacy
PV of Annuity = PMT × [(1 - (1 + r)^-n) / r]PV of Legacy = FV / (1 + r)^nImportant Reminders:
- This assumes constant returns (reality varies)
- Consider inflation in your planning
- Account for taxes on withdrawals
- Include Social Security in total income picture
- Build in safety margin for sequence risk
Additional Resources
- Excel Function:
=PV(rate, nper, pmt, fv, type) - Online Calculators:
- Vanguard Retirement Income Calculator
- Fidelity Retirement Score
- Personal Capital Retirement Planner
- Further Reading:
- “Retirement Calculator: How Much Do I Need?” (NerdWallet)
- “The 4 Percent Rule” (William Bengen)
- “The Simple Path to Wealth” (JL Collins)
Last Updated: November 2025