Bond Fundamentals and Pricing › Cash Flow Patterns
Quantitative FinanceAll chapters Bond Fundamentals and Pricing › Cash Flow PatternsOne section · Sections in this chapter3 / 14 ↓
Reading tools Definitions & inline links
Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.
Article links
Make inline references clickable
Start by identifying the amount and date of each promised payment. For the plain fixed-rate, noncallable bond used below, the contractual schedule is known at issuance. Actual receipt still depends on payment in full; floating coupons, embedded options, or default can change the amounts or timing. Equity dividends are different because they are not a fixed contractual coupon schedule.
Coupon Bonds
A standard coupon bond generates two types of cash flows: periodic coupon payments during its life and a final principal repayment at maturity. For a bond with face value , annual coupon rate , and semiannual payments, each coupon payment equals .
The logic behind this calculation is straightforward. If a bond promises 6% annual interest on a $1,000 face value, the total annual interest obligation is $60. When this interest is distributed across two semiannual payments, each payment becomes $30. This division of the annual coupon into smaller periodic payments has practical implications for how we measure yield and compare bonds, as we will see when discussing compounding conventions.
Consider a 10-year bond with a $1,000 face value and 6% annual coupon paid semiannually. The bondholder receives:
- 20 coupon payments of $30 each (every 6 months for 10 years)
- One principal payment of $1,000 at maturity
The final payment at maturity includes both the last coupon and the face value, totaling $1,030.
import numpy as np
# Bond parameters
face_value = 1000
coupon_rate = 0.06
years_to_maturity = 10
payments_per_year = 2
# Generate cash flows
coupon_payment = face_value * coupon_rate / payments_per_year
num_payments = years_to_maturity * payments_per_year
cash_flows = np.full(num_payments, coupon_payment)
cash_flows[-1] += face_value # Add principal to final payment
# Create time points (in years)
times = np.arange(1, num_payments + 1) / payments_per_yearBond Cash Flow Schedule (selected payments) --------------------------------------------- Period Time (yrs) Cash Flow ($) --------------------------------------------- 1 0.50 30.00 2 1.00 30.00 3 1.50 30.00 19 9.50 30.00 20 10.00 1030.00 --------------------------------------------- Total cash flows: $1,600.00

The total undiscounted cash flows exceed face value by the cumulative coupon payments. At a positive discount rate, each future payment has a smaller present value than its future dollar amount. Zero or negative rates require different comparisons, as the discounting formula makes explicit.
Zero-Coupon Bonds
Zero-coupon bonds pay no periodic coupons and promise a single payment at maturity. With a positive yield and positive time to maturity, price is below face value; at zero yield it is at par, and a negative yield can put it above par. An investor who holds to maturity and is paid in full earns the difference between the redemption amount and purchase price before costs and taxes.
US Treasury bills (T-bills) with maturities up to one year are zero-coupon instruments. A T-bill with a face value of $10,000 might sell for $9,800, with the $200 difference representing the investor's interest income.
A deterministic coupon schedule can be valued as a collection of individual dated payments. This valuation decomposition is not a claim that every bond can be legally or economically stripped into separately tradeable instruments. The Treasury STRIPS program, Separate Trading of Registered Interest and Principal of Securities, does permit eligible Treasury principal and coupon components to be held and traded separately.