9.2 Simple Interest
Discussing interest starts with the principal, or amount your account starts with. This could be a starting investment, or the starting amount of a loan. Interest, in its most simple form, is calculated as a percent of the principal. For example, if you borrowed $100 from a friend and agree to repay it with 5% interest, then the amount of interest you would pay would just be 5% of 100: . The total amount you would repay would be $105, the original principal plus the interest.
One-time simple interest is only common for extremely short-term loans. For longer term loans, it is common for interest to be paid on a daily, monthly, quarterly, or annual basis. In that case, interest would be earned regularly. For example, bonds are essentially a loan made to the bond issuer (a company or government) by you, the bond holder. In return for the loan, the issuer agrees to pay interest, often annually. Bonds have a maturity date, at which time the issuer pays back the original bond value.
# Ch 9.2 - simple interest. The interest is always a percent of the ORIGINAL
# principal, so it never earns interest of its own.
def simple(P0, r, t):
"""r is the rate PER PERIOD, t is the number of periods."""
interest = P0 * r * t
return interest, P0 + interest
P0, APR, YEARS, PER_YEAR = 1000, 0.04, 4, 2 # the book's $1000 T-note
# TRY IT: PER_YEAR = 12 (monthly). Does more frequent payment earn more?
# TRY IT: APR = 0.72 - the 72% rate the payday lender in Try it Now 1 charges.
rate = APR / PER_YEAR
periods = YEARS * PER_YEAR
interest, total = simple(P0, rate, periods)
print(f"${P0:,} at {100 * APR:g}% APR paid {PER_YEAR}x a year for {YEARS} years")
print(f" rate per period = {100 * APR:g}% / {PER_YEAR} = {100 * rate:g}%")
print(f" periods = {YEARS} x {PER_YEAR} = {periods}")
print(f" I = P0 * r * t = {P0} x {rate} x {periods} = ${interest:,.2f}")
print(f" you end with A = ${total:,.2f}\n")
print("period interest that period total interest balance")
for n in range(1, periods + 1):
print(f"{n:>6} {P0 * rate:>19,.2f} {P0 * rate * n:>14,.2f} {P0 + P0 * rate * n:>10,.2f}")
print("Every row of the interest column is IDENTICAL. That is what makes it")
print("'simple' - and it is exactly the linear growth of chapter 8.\n")
# Turning a fee back into a rate: $30 of interest on a $500 one month loan.
FEE, LOAN, MONTHS = 30, 500, 1 # TRY IT: FEE = 75 on a two week loan
monthly = FEE / LOAN / MONTHS
print(f"a ${FEE} charge on a ${LOAN} loan for {MONTHS} month(s)")
print(f" rate per month = {FEE}/{LOAN}/{MONTHS} = {monthly:.4f} = {100 * monthly:.2f}%")
print(f" annual rate = {100 * monthly:.2f}% x 12 = {100 * monthly * 12:.1f}% APR")
We can generalize this idea of simple interest over time.
Adapted from Math in Society by David Lippman, hosted on LibreTexts (math.libretexts.org) and licensed under CC BY-SA 3.0. Changes were made. License: CC-BY-SA-3.0.