# How to calculate time value of money with Python for Business and Finance analysis.

The basic idea behind Time Value of Money (TVM) is One Dollar today will worth more than one dollar tomorrow because you can invest or save your money today and earn interest tomorrow. All required TVM calculations can be easily realised with Python.

#### Future Value (FV) - Compounding formula:

**𝐹𝑉 = 𝑃𝑉(1 + 𝑟)^n**

Where:

FV: Future Value

PV: Present Value (today)

r: Interest Rate (per period)

n: number of periods

```
PV = 100
r = 0.05
n = 3
FV = PV * (1 + r)**n
```

You can also calculate FV using NUMPY library which is much more simple way to do it.

```
import numpy as np
import numpy_financial as npf
PV = 0
cf = -2000
r = 0.03
n = 25
FV = npf.fv(rate = r, nper = n, pmt = cf, pv = PV)
FV
```

#### Present Value (PV) - Discounting formula:

**𝑃𝑉 = 𝐹𝑉 / (1 + 𝑟)^𝑛**

Where:

FV: Future Value

PV: Present Value (today)

r: Interest Rate (per period)

n: number of periods

```
FV = 20000
n = 4
r = 0.045
PV = FV / (1 + r)**n
```

You can also calculate PV using NUMPY library which is much more simple way to do it.

```
import numpy as np
import numpy_financial as npf
FV = 20000
r = 0.03
n = 25
cf = 5000
PV = npf.pv(rate = r, nper = n, pmt = cf, fv = FV)
PV
```

#### Interest Rates formula:

**𝑟 = ( 𝐹𝑉/𝑃𝑉) ^ 1/𝑛 − 1**

Where:

FV: Future Value

PV: Present Value (today)

r: Interest Rate (per period)

n: number of periods

```
pv = 10000
fv = 15000
n = 10
r = (fv / pv)**(1/n) - 1
```

#### Stock Returns (Price Return) formula:

**𝑟 = 𝑃𝑡+1/𝑃𝑡 − 1**

Where:

Pt: Price @ timestamp t

Pt+1: Price @ t+1

r: Period Return (Price Return)

```
p0 = 976
p1 = 1053
p_ret = p1 / p0 - 1
```

#### Stock Returns (Total Return = Price Return + Dividend Yield) formula:

**𝑟 = (𝑃𝑡+1 + 𝐷𝑡+1) / 𝑃𝑡 − 1 = 𝑃𝑡+1 / 𝑃𝑡 − 1 + 𝐷𝑡+1 / 𝑃𝑡**

Where:

Pt: Price @ timestamp t

Pt+1: Price @ t+1

Dt+1: Dividend payment @ t+1

r: Period Return (Total Return)

```
div = 40
div_y = div / p0
total_ret = p_ret + div_y
```