Examples

This section contains practical examples demonstrating how to use qfinbox for various Time Value of Money calculations and financial analysis tasks.

Basic TVM Examples

Present and Future Value Calculations

from qfinbox.tvm import basic

# Calculate present value of $10,000 received in 5 years at 6% annual rate
pv = basic.present_value(fv=10000, rate=0.06, periods=5)
print(f"Present Value: ${pv:.2f}")  # $7,472.58

# Calculate future value of $5,000 invested for 10 years at 8% annual rate
fv = basic.future_value(pv=5000, rate=0.08, periods=10)
print(f"Future Value: ${fv:.2f}")   # $10,794.62

# Find the interest rate for doubling money in 10 years
rate = basic.interest_rate(pv=1000, fv=2000, periods=10)
print(f"Required Rate: {rate:.2%}")  # 7.18%

Annuity Examples

Retirement Planning

from qfinbox.tvm import annuities

# Calculate present value of $2,000 monthly payments for 25 years at 7% annual rate
monthly_rate = 0.07 / 12
periods = 25 * 12
pv = annuities.pv_ordinary_annuity(pmt=2000, rate=monthly_rate, periods=periods)
print(f"Present Value of Retirement Income: ${pv:,.2f}")  # $312,816.55

# Calculate future value of $500 monthly savings for 30 years at 6% annual rate
monthly_rate = 0.06 / 12
periods = 30 * 12
fv = annuities.fv_ordinary_annuity(pmt=500, rate=monthly_rate, periods=periods)
print(f"Future Value of Savings: ${fv:,.2f}")  # $502,258.15

# Calculate perpetuity value for $10,000 annual payments at 5% rate
perpetuity = annuities.perpetuity_value(pmt=10000, rate=0.05)
print(f"Perpetuity Value: ${perpetuity:,.2f}")  # $200,000.00

Bond Valuation Examples

Corporate Bond Analysis

from qfinbox.tvm import bonds

# Price a 10-year corporate bond with 6% coupon, $1000 face value, 5% market rate
price = bonds.bond_price(face_value=1000, coupon_rate=0.06,
                       market_rate=0.05, periods=10)
print(f"Bond Price: ${price:.2f}")  # $1,077.22

# Calculate yield for bond trading at $950 with 5% coupon
bond_yield = bonds.bond_yield(price=950, face_value=1000,
                            coupon_rate=0.05, periods=8)
print(f"Bond Yield: {bond_yield:.2%}")  # 5.74%

# Calculate duration for interest rate risk assessment
duration = bonds.bond_duration(face_value=1000, coupon_rate=0.04,
                             market_rate=0.05, periods=15)
print(f"Modified Duration: {duration:.2f} years")  # 10.38 years

Loan Analysis Examples

Mortgage Calculations

from qfinbox.tvm import loans
import pandas as pd

# Calculate monthly payment for $300,000 mortgage at 4.5% for 30 years
principal = 300000
annual_rate = 0.045
years = 30
monthly_rate = annual_rate / 12
periods = years * 12

payment = loans.loan_payment(principal=principal, rate=monthly_rate, periods=periods)
print(f"Monthly Payment: ${payment:.2f}")  # $1,520.06

# Calculate remaining balance after 10 years
payments_made = 10 * 12
balance = loans.loan_balance(principal=principal, rate=monthly_rate,
                           periods=periods, payments_made=payments_made)
print(f"Remaining Balance: ${balance:,.2f}")  # $234,896.47

# Generate amortization schedule (first 12 months)
schedule = loans.amortization_schedule(principal=principal, rate=monthly_rate,
                                     periods=periods, num_payments=12)
df = pd.DataFrame(schedule)
print(df.head())

Cash Flow Analysis Examples

Investment Project Evaluation

from qfinbox.tvm import cashflow

# Evaluate investment project with initial cost and 5-year cash flows
cash_flows = [-100000, 25000, 30000, 35000, 40000, 45000]
discount_rate = 0.12

# Calculate Net Present Value
project_npv = cashflow.npv(rate=discount_rate, cash_flows=cash_flows)
print(f"Project NPV: ${project_npv:,.2f}")  # $16,747.82

# Calculate Internal Rate of Return
project_irr = cashflow.irr(cash_flows=cash_flows)
print(f"Project IRR: {project_irr:.2%}")  # 19.54%

# Calculate Payback Period
payback = cashflow.payback_period(cash_flows=cash_flows)
print(f"Payback Period: {payback:.2f} years")  # 3.44 years

# Calculate Profitability Index
pi = cashflow.profitability_index(rate=discount_rate, cash_flows=cash_flows)
print(f"Profitability Index: {pi:.3f}")  # 1.167

Advanced Examples

Complex Financial Scenarios

from qfinbox.tvm import basic, annuities, cashflow
import numpy as np

# Education funding calculation
# Child is 5 years old, college starts at 18 (13 years from now)
# College costs $50,000/year for 4 years, inflation 3% annually

# Calculate future cost of college
years_to_college = 13
annual_cost_today = 50000
inflation_rate = 0.03

future_costs = []
for year in range(4):  # 4 years of college
    periods = years_to_college + year
    future_cost = basic.future_value(pv=annual_cost_today,
                                   rate=inflation_rate, periods=periods)
    future_costs.append(future_cost)

print("Future College Costs:")
for i, cost in enumerate(future_costs, 1):
    print(f"Year {i}: ${cost:,.2f}")

# Calculate present value of total college costs
investment_rate = 0.07
total_pv = sum(basic.present_value(fv=cost, rate=investment_rate,
                                 periods=years_to_college + i)
              for i, cost in enumerate(future_costs))
print(f"\nPresent Value of College Costs: ${total_pv:,.2f}")

# Calculate required monthly savings
monthly_rate = investment_rate / 12
months = years_to_college * 12
required_savings = total_pv / annuities.fv_ordinary_annuity(pmt=1,
                                                          rate=monthly_rate,
                                                          periods=months)
print(f"Required Monthly Savings: ${required_savings:,.2f}")

Note

All examples use realistic financial scenarios and demonstrate practical applications of the qfinbox TVM functions. The calculations assume standard financial conventions and can be adapted for specific use cases.