# How to calculate Internal Rate of Return (IRR) and Payback Period with Python for Business and Finance analysis.

The IRR is a useful metric in financial analysis to evaluate the profitability of potential investments. It is actuallt a discount rate that makes the net present value (NPV) of all cash flows equal to zero.

Simple Decision Rule:

• Accept the Project if IRR > Required Rate of Return

• Reject the Project if IRR < Required Rate of Return

Interpretation of IRR:

• (Hypothetical) Rate of Return where NPV = 0

• Leads to exactly the same decisions as NPV Decision Rule

#### Internal Rate of Return (IRR):

**$$NPV = 𝐼𝑜 + \sum_{t = 1}^n \frac { CFt }{ (1 + IRR)^t } = 0$$**

Where:

NPV: Net Present Value

Io: Initial Investment (negative)

CFt: cashflow @ timestamp t

N: Total number of periods

IRR: Internal Rate of Return (NPV = 0)

t = timestamp (0, 1, …, N)

```
cf = [-200, 20, 50, 70, 100, 50]
guess = 0.06
step = 0.0000001
target_npv = 0
tolerance = 0.001
while True:
f = 1 + guess
NPV = 0
for i in range(len(cf)):
NPV += cf[i] / f**(i)
#print(NPV, guess)
diff = NPV - target_npv
if abs(diff) > tolerance:
if diff < 0:
guess -= step
elif diff > 0:
guess += step
else:
break
print(NPV, guess)
```

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

```
import numpy as np
import numpy_financial as npf
cf = [-200, 20, 50, 70, 100, 50]
npf.irr(cf)
```

Below is an example of calculating projects Payback Period - Time until initial Investment is recovered.

```
cf = [-200, -150, 50, 70, 100, 50]
cum_cf = 0
for i in range(len(cf)):
cum_cf += cf[i]
#print(cum_cf)
if cum_cf > 0:
print("The Project´s Payback Period is {} Years!".format(i) )
break
elif cum_cf <= 0 and i == len(cf)-1:
print("The Project does not break even!")
```