📚 Math in Society
⇩ Download ▾

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: $100(0.05)=$5. 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.

These eBooks are a prerelease and are not yet certified conformant with WCAG 2.1 AA or ADA Title II. Every page is built against an automated accessibility gate, and the published editions will meet ADA Title II requirements when they release in late September 2026. If something is unusable, please tell us.