Time Value Module¶
??? example "present_value"
from startup_valuation.tv import present_value
result = present_value(future_value=1_000_000, rate=0.10, periods=5)
print(f"Present value: ${result.value:,.0f}") # $620,921
??? example "net_present_value"
from startup_valuation.tv import net_present_value
result = net_present_value(
cash_flows=[-1_000_000, 300_000, 400_000, 500_000, 600_000],
rate=0.10,
)
print(f"NPV: ${result.value:,.0f}") # $348,941
??? example "annuity_present_value"
from startup_valuation.tv import annuity_present_value
result = annuity_present_value(payment=100_000, rate=0.08, periods=10)
print(f"Annuity PV: ${result.value:,.0f}") # $671,008
startup_valuation.tv
¶
Time value of money calculations.
Chapter 2: Mathematical Foundations — Time Value of Money
Classes¶
Functions¶
present_value(future_value, rate, periods)
¶
Calculate present value of a single future cash flow.
Formula: PV = C / (1 + r)^t
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
future_value
|
float
|
Future cash flow (C). |
required |
rate
|
float
|
Discount rate (r). |
required |
periods
|
float
|
Number of periods (t). |
required |
Returns:
| Type | Description |
|---|---|
ValuationResult
|
ValuationResult with present value. |
Example
result = present_value(11000, 0.08, 1) round(result.value, 2) 10185.19
Source code in src/startup_valuation/tv.py
net_present_value(cash_flows, rate)
¶
Calculate net present value of a series of cash flows.
Formula: NPV = Σ Cₜ / (1 + r)^t
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
cash_flows
|
list[float]
|
Cash flows at each period (C₀, C₁, ..., Cₜ). |
required |
rate
|
float
|
Discount rate (r). |
required |
Returns:
| Type | Description |
|---|---|
ValuationResult
|
ValuationResult with NPV. |
Example
result = net_present_value([-100000, 30000, 40000, 50000], 0.10) round(result.value, 0) -2103.0
Source code in src/startup_valuation/tv.py
annuity_present_value(payment, rate, periods)
¶
Calculate present value of an annuity.
Formula: PV = C × [(1 - (1 + r)^(-n)) / r]
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
payment
|
float
|
Periodic payment (C). |
required |
rate
|
float
|
Discount rate per period (r). |
required |
periods
|
int
|
Number of periods (n). |
required |
Returns:
| Type | Description |
|---|---|
ValuationResult
|
ValuationResult with present value. |
Example
result = annuity_present_value(50000, 0.10, 4) round(result.value, 0) 158495.0