Time Value of Money: Present Value, Future Value, and Discounting
A dollar today is worth more than a dollar tomorrow. Understanding why, and how to calculate present and future values, is the foundation of all financial mathematics.
A dollar today is worth more than a dollar in the future. This is called the time value of money: and it’s the foundation of all financial mathematics.
Why Does Money Have Time Value?
Three reasons:
1. Inflation: Prices tend to rise over time. A dollar today buys more than a dollar next year.
2. Opportunity cost: Money today can be invested to earn returns. $1 today → $1 × (1+r) next year.
3. Risk: Getting money today is certain. Getting it in the future is uncertain, you might never receive it.
These three factors combine to make present value calculations essential in finance.
Future Value
If you invest $100 today at 5% annual return, how much will you have in 1 year?
In 3 years?
This is compounding: you earn returns on your returns. Compare this to simple interest, where you only earn returns on the original principal.
Present Value
Working backward is called discounting. If you need $115.76 in 3 years and the rate is 5%, how much do you need to invest today?
The process is the same formula, just reversed:
The rate is often called the discount rate. It reflects the opportunity cost and risk.
The Discount Rate
The discount rate is the most important input in any present value calculation. It should reflect:
- The risk-free rate (opportunity cost of a riskless investment)
- A risk premium for the specific risk of the cash flows
For a government bond: discount rate ≈ Treasury yield. For a corporate stock: discount rate = risk-free rate + equity risk premium.
A higher discount rate means a lower present value. This is why rising interest rates hurt stock prices, the higher discount rate reduces the present value of future earnings.
Annuities
An annuity is a series of equal payments at regular intervals.
Future value of an annuity (if you invest $100 every year for 5 years at 5%):
Present value of an annuity (if you will receive $100 every year for 5 years, discounted at 5%):
This is how bonds are priced: the coupon payments are an annuity, and the face value is a single future payment.
Python Implementation
import numpy as np
def future_value(PV, r, t):
"""
Calculate future value given present value, rate, and time.
FV = PV * (1 + r)^t
"""
return PV * (1 + r) ** t
def present_value(FV, r, t):
"""
Calculate present value given future value, rate, and time.
PV = FV / (1 + r)^t
"""
return FV / (1 + r) ** t
def pv_annuity(P, r, n):
"""
Calculate present value of an annuity.
P = periodic payment
r = discount rate per period
n = number of periods
"""
return P * (1 - (1 + r) ** (-n)) / r
def fv_annuity(P, r, n):
"""
Calculate future value of an annuity.
"""
return P * ((1 + r) ** n - 1) / r
def pv_perpetuity(P, r):
"""
Present value of a perpetuity (infinite annuity).
PV = P / r
"""
return P / r
def npv(cash_flows, r):
"""
Calculate net present value of a series of cash flows.
cash_flows: list of cash flows starting from period 0
r: discount rate
"""
return sum(cf / (1 + r) ** t for t, cf in enumerate(cash_flows))
def irr(cash_flows):
"""
Calculate internal rate of return, the discount rate
that makes NPV = 0.
"""
from scipy.optimize import brentq
def npv_func(r):
return sum(cf / (1 + r) ** t for t, cf in enumerate(cash_flows))
try:
return brentq(npv_func, -0.99, 10.0)
except:
return np.nan
PROMPT
Use numpy and scipy.optimize to implement time-value-of-money functions: future value, present value, annuities, perpetuity, NPV, and IRR.
Real vs. Nominal Rates
Nominal rate: The stated rate, not adjusted for inflation. What you see on a bond or loan.
Real rate: The nominal rate minus expected inflation. What you actually earn in purchasing power.
Fisher equation:
So if a bond yields 5% nominal and expected inflation is 3%, the real return is approximately 2%.
Applications
Bond pricing: Bond price = PV of coupon payments + PV of face value. The discount rate is the bond’s yield to maturity.
Stock valuation: Stock price = PV of all future dividends. Requires forecasting dividends forever and discounting at the appropriate rate.
Capital budgeting: NPV of a project = PV of future cash flows minus initial investment. Accept projects with positive NPV.
Loan amortization: Calculate monthly payments on a mortgage using the annuity formula.
Key Takeaways
- Money now is worth more than money later because of inflation, opportunity cost, and risk
- Present value = future value discounted by the appropriate rate
- Higher discount rate → lower present value
- Annuities and perpetuities are building blocks for bond and stock valuation
- Real returns account for inflation; nominal returns do not
References
- Brealey, Myers, Allen, Principles of Corporate Finance, Ch. 2-3. McGraw-Hill, 2020. ISBN: 978-1-26-014414-8.
- Luenberger, Investment Science, Ch. 5-6. Oxford University Press, 2013.