You can use Excel or financial calculators (TI BAII Plus, HP 12C, etc.) to calculate PV, FV, discount rates, etc., or you can use a package in R called FinCal. Here are some examples:

Single Cash Flow


\[FV = PV(1+r)^n\] The Future Value of $300 invested over 10 years at 8%:

> library(FinCal)
> fv(r=.08,n=10,pv=-300)
[1] 647.6775

\[PV = \frac{FV}{(1+r)^n}\]

Present Value of $1,000 to be received in 5 years with a discount rate of 9%:

> pv(r=.09,n=5,fv=-1000)
[1] 649.9314

Rate of Return that you’ll have to earn on a $5,000 investment in order for it to grow to $2,000 in 15 years:

> discount.rate(n=15,pv=-500,fv=2000, pmt=0)
[1] 0.09682581

How many years will it take for a $500 investment to grow to $1,000 at 7%:

> n.period(r = .07, pv=-500,fv=1000,pmt=0)
[1] 10.24477

The Rule of 72: If you divide 72 by the interest rate you get the approximate number of years to double your money. \(\frac{72}{7}=10.29\)

Annuity


An annuity is a stream of equal cash flows that occur over equal intervals. In an ordinary annuity the cash flows occur at the end of the year. In an annuity due they occur at the beginning.

\[FVOA = PMT\left[\frac{(1+r)^n-1}{r}\right]\]

FV of an ordinary annuity that will pay $150 per year for 15 years and earn 7%:

> fv.annuity(r = .07, n = 15, pmt=-150)
[1] 3769.353

The FV of an annuity is $3,000 and it ears 7% over 15 years. The PMT is:

> pmt(r=.07,n=15,pv=0, fv=-3000)
[1] 119.3839

The FV is $920, the discount rate is 9%, and the payment is $100. The number of years is:

> n.period(r= .09, pv=0, fv=920, pmt=-100)
[1] 6.999752

You deposit $100 at the end of each year for 5 years. The interest rate needed to have a balance of $600 is:

> discount.rate(n = 5, pv=0,fv=600, pmt=-100)
[1] 0.09130091

To solve for an annuity due, just change the default type=0 to type=1:

> fv.annuity(r= .10, n=3, pmt=-100, type=1)
[1] 364.1

You deposit $1,000 today and the beginning of the next 3 years. How much will you have in 6 years at 6%?

First, the FV of the annuity due will give you the value at the beginning of year 4. You can use this value as the PV of an annuity due for 2 more years.

> fv(pv=-fv.annuity(r = .06, n=4, pmt=-1000, type=1), 
+    r=.06, n=2, pmt=0, type=1)
[1] 5210.238

The PV of an annuity that will pay $200 per year at the end of the next 13 years with an interest rate of 6%:

> pv.annuity(r = .06, n=13, pmt=-200)
[1] 1770.537

An annuity with a PV of $2,000 with a 6% interest rate for 13 years is:

> pmt(r=.06, n=13, pv=-2000,fv=0)
[1] 225.9202

If you have $1,000 in the bank, with 8% interest, how many end of year payments of $150 could you withdraw?

> n.period(r=.08, pmt=150, pv=-1000, fv=0)
[1] 9.902933

What rate of return will you earn on an ordinary annuity that costs $700 today and promises to pay you $100 per year for 10 years:

> discount.rate(n=10, pv=-700, fv=0, pmt=100)
[1] 0.07072501

The PV of 4 end of year payments of $100, with the first payment to be received 3 years from today, at 9%:

First, find the PV of the annuity, and discount it back 2 years.

> pv(fv = -pv.annuity(r=0.09, n=4, pmt=-100), r=.09,n=2)
[1] 272.6807

For the PV of an annuity due, just change it to type=1:

> pv.annuity(n=3, r=.10, pmt=-100, type=1)
[1] 273.5537

You must make 5 annual $1,000 payments, the first one starting 3 years from today. You want to make 3 equal investments, starting one year from today, that will equal the PV of the annuity. The interest rate is 10%:

The PV of an annuity due will give you the value at the start of year 3. That will be the FV of a 3 year annuity.

> pmt(fv = -pv.annuity(n=5, r=0.1, pmt=-1000, type=1),
+     pv=0,r=0.1,n=3)
[1] 1259.778

Perpetuity


\[PVPER = \frac{PMT}{r}\]

\[PVPER \space \text{with} \space \text{growth} = \frac{PMT}{r-g}\]

A stock pays a $4.50 dividend with a 8% discount rate:

> pv.perpetuity(r=.08, pmt=-4.5)
[1] 56.25

With the dividend growing at 3%:

> pv.perpetuity(r=.08, pmt=-4.5, g=.03)
[1] 90

Uneven Cash Flow


End of year cash flows $-1,000, -$500, $0, $4,000, $3,500, $2,000. 10% discount rate.

> -fv.uneven(r=0.1, cf=c(-1000,-500,0,4000,3500,2000))
[1] 8347.44
> -pv.uneven(r=0.1, cf=c(-1000,-500,0,4000,3500,2000))
[1] 4711.912

Continuous Compounding


\[FV = PVe^{rt}\] \[PV = FVe^{-rt}\] FV of $12,500 at 10% compounded continuously over 5 years:

> fv.continuous <- function(r,t,pv){
+   
+   pv*exp(r*t)
+ }
> 
> fv.continuous(r=0.1,t=5,pv=12500)
[1] 20609.02

PV of $2,500 at 10% compounded continuously over 5 years:

> pv.continuous <- function(r,t,fv){
+   
+   fv*exp(-r*t)
+ }
> 
> pv.continuous(r=0.1,t=5,fv=2500)
[1] 1516.327

Effective rates


I created formulas for the last examples, but you could solve them continuous effective annual rates.

> -pv(r=ear.continuous(.1),fv=2500,n=5)
[1] 1516.327

The effective rate of 12%, compounded quarterly:

> ear(r=0.12,m=4)
[1] 0.1255088