Calculating potential returns in Python
Investment opportunity in advertising billboard.
You are a rich investor, and somebody comes to you with an investment opportunity to invest in an advertising billboard at a busy junction. The offer is as follows :
- You are required to pay $70000 today
- The investment is for 5 years
- The billboard pays an annual rent of $10000
- Current interest rates are 5%
- After five years the billboard needs upgrades, but you don’t want to bother with that.
- You are fairly confident that you could sell this investment to someone at $45000, after 5 years and let them do the upgrades.
Is this a good deal?
Here is what we know.
- Future value (FV) - $45000
- Yearly Payment (PMT) - $10000
- Period (N) - 5 years
- Interest rates (IR) - 5%
- Present value (PV) - ? We need to solve this.
First we load our modules/libraries
import pandas as pd
import numpy as np
# First we build our cash flow table
billboard_cashflow = pd.DataFrame({"Year":np.arange(1,6),
"cf":[10000,10000,10000,10000,55000]}) # The last payment includes the $45000 sale price
# interest rates
ir = 0.05
billboard_cashflow["pv"] = billboard_cashflow["cf"] / (1 + ir) ** billboard_cashflow["Year"]
print(billboard_cashflow)
## Year cf pv
## 0 1 10000 9523.809524
## 1 2 10000 9070.294785
## 2 3 10000 8638.375985
## 3 4 10000 8227.024748
## 4 5 55000 43093.939156
pv = billboard_cashflow["pv"].sum()
print(pv)
## 78553.44419738883
Based on our calculations the present value of the billboard is about 78553.44. Offer to buy this investment opportunity is $70000, so our net present value (NPV) is 8553.44. Since we have a positive NPV, we can conclude that this is a good deal if interest rate is 5%.
You are pleased with your calculations and are about to finalize the terms, but you receive a call from your brother in law Jim, who wants to start a laundromat business. The cost of laundromat is $200000, but is short exactly $70000. He is willing to pay you 7.5% for the the loan. You reason that Jim is fairly good with money and he maybe able to pay the money back. So you rerun you billboard calculation with the new interest rate of 7.5%.
billboard_cashflow = pd.DataFrame({"Year":np.arange(1,6),
"cf":[10000,10000,10000,10000,55000]}) # The last payment includes the $45000 sale price
# interest rates
ir = 0.075 # new Interest rate
billboard_cashflow["pv"] = billboard_cashflow["cf"] / (1 + ir) ** billboard_cashflow["Year"]
print(billboard_cashflow)
## Year cf pv
## 0 1 10000 9302.325581
## 1 2 10000 8653.326122
## 2 3 10000 8049.605695
## 3 4 10000 7488.005298
## 4 5 55000 38310.724779
pv = billboard_cashflow["pv"].sum()
print(pv)
## 71803.98747573976
At 7.5% return, the value of the billboard drops about 10% from $78500 to $71800. This is an important principle in Finance, as interest rates rise, value of risky assets drop. We will cover this topic in more details in the chapter on Fixed Income.