Saving for Retirement
Table of Contents
1 Annuity Retirement Model
Say as your retirement plan you intend to put $5000 per year, for the next 20 years, into a retirement account. Further, you expect this account to earn 8% per year. In this case your savings plan is in the form of an annuity.
Annuity: a security with a fixed cash flow every period for a fixed number of periods.
In your retirement plan $5000 is the fixed cash flow, the period is yearly, and the number of periods is 20.
1.1 Future Value
To calculate how much we'll have in our retirement account we can (1) use a convenient annuity formula, or (2) find the future value of each individual cash flow and sum these future values.
1.1.1 Using an Annuity Formula
We can calculate how much money you will have in your account at the end of year 20 with the following future value of an annuity formula:
\(FVA = C\left(\frac{(1 + r)^n - 1}{r}\right)\)
where FVA denotes the future value of the annuity, C is the cash flow per period, r is the interest rate per period, and n is the number of periods.
Using this formula you can calculate how much money you will have in 20 years:
\(FVA = 5000\left(\frac{(1 + 0.08)^20 - 1}{0.08}\right) = 228809.8\)
So you will have $228,809.90 in your retirement account in 20 years.
1.1.2 Future Value of Each Cash Flow
Annuity formulas were much more useful prior to widespread use of spreadsheets and programming languages.
- Spreadsheet
The following table shows how you can organize a spreadsheet to find the future value of the annuity. The formula in the future value column is:
\(FV = C(1 + r)^{(20 - t)}\)
Time (t) Cash Flow (cf) Interest Rate (r) FV @ year 20 1 5000 0.08 21578.505 2 5000 0.08 19980.097 3 5000 0.08 18500.090 4 5000 0.08 17129.713 5 5000 0.08 15860.846 6 5000 0.08 14685.968 7 5000 0.08 13598.119 8 5000 0.08 12590.851 9 5000 0.08 11658.195 10 5000 0.08 10794.625 11 5000 0.08 9995.0231 12 5000 0.08 9254.6511 13 5000 0.08 8569.1213 14 5000 0.08 7934.3716 15 5000 0.08 7346.6404 16 5000 0.08 6802.4448 17 5000 0.08 6298.56 18 5000 0.08 5832. 19 5000 0.08 5400. 20 5000 0.08 5000. FVA = 228809.82 - Loop
cf = 5000 r = 0.08 n = 20 fva = 0 for n in range(n): fva += cf * (1 + r)**(n) return fva
228809.82149058158
Note range(n) gives you 0, 1, … , n-1 which is happily what we want.
- Recursive
Here is a functional programming approach implemented in python—it uses recursion instead of the imperative style loop. It is nice because it doesn't rely on changing variables' state, which can lead to errors. Don't worry if it doesn't make sense at this point.
def fva(cf, r, n): if n - 1 == 0: return cf else: return cf * (1 + r)**(n - 1) + fva(cf, r, n - 1) return fva(5000, 0.08, 20)
228809.82149058158
Same approach in R.
fva <- function(cf, r, n){ if(n - 1 == 0){ cf } else { cf * (1 + r)^(n - 1) + fva(cf, r, n - 1) } } fva(5000, 0.08, 20)
228809.821490582
1.2 Interactive App
The following app will calculate OCF for any company you choose.
- Note how different OCF can be from Net Income.
Future Value of an Annuity Calculator:
1.3 Solving for the Number of Periods
You may also want to know how long you have to save for retirement until you hit a particular goal amount.
1.3.1 Using the FV Annuity Formula
We can rearrange our future value of an annuity formula for n:
\(FVA = C\left(\frac{(1 + r)^n - 1}{r}\right)\)
becomes:
\((1 + r)^n = \frac{FVA(r)}{C} + 1 = \frac{FVA(r) + C}{C}\)
and taking logs:
\(n = \frac{ln\left(\frac{FVA(r) + C}{C}\right)}{ln(1 + r)}\)
So, say we wanted to have $400,000 in our account at retirement. Then we have to save for:
\(n = \frac{ln\left(\frac{400,000(0.08) + 5000}{5000}\right)}{ln(1 + 0.08)} = 26\ years\)
1.4 Solving for r
2 Growing Annuity Retirement Model
A possibly unrealistic feature of using an annuity to model your retirement savings is its assumption that you make constant retirement payments. It is more likely that you will increase your payments over time as your salary increases. In this case we can calculate your retirement savings using the future value of a Growing Annuity. The formula is: