Explore the inverse relationship between bond prices and yields, learn key bond pricing formulas, and understand how coupon frequency and market yields affect valuation. This comprehensive guide covers discount/premium bonds, duration insights, and practical examples for the CFA® Level II exam.
Enhance Your Learning:
So let’s start with what might seem like a simple concept, but it can feel a bit surprising when you first see it. You know that seesaw you played on as a kid, right? One side goes up, the other side goes down. Well, bonds have a similar seesaw dynamic with yields. When market yields go up, bond prices go down. When market yields go down, bond prices go up. That’s basically the foundational rule of bond math, and it’s something the CFA® Program loves to test.
Why does this happen? Imagine you hold a bond that pays a fixed coupon of 5% annually. If market interest rates suddenly rise to 6%, new bonds come out offering a 6% coupon. Yours is only paying 5%, so nobody wants it at the old price—at least not unless the price is cheaper, so it can effectively generate a yield (for the new buyer) that’s closer to 6%. Hence, your bond’s price must drop. The reverse happens if rates fall below 5%: your 5% coupon looks awesome, so more people want your bond, driving its price above par.
Just remember that it’s an inverse relationship. And yes, it truly is one of the cornerstones of fixed income theory.
flowchart LR A["Yield increases"] --> B["Bond price decreases <br/>to match higher market yield"] A2["Yield decreases"] --> B2["Bond price increases <br/>to reflect more valuable coupon"]
Beneath that inverse relationship lies the key formula that the CFA® Exam expects you to master. Let’s break it down step by step.
A bond’s price is essentially the sum of the present values of all future cash flows. These cash flows include:
• The coupon payments you’ll receive periodically.
• The principal (or face value) that you get back at maturity.
Mathematically, if you assume an annual coupon for simplicity, it looks like this:
Where:
• \( C \) is the annual coupon payment.
• \( y \) is the bond’s yield (per year, in decimal form).
• \( T \) is the total number of years to maturity.
But bonds can pay coupons more often than annually—which is where things get interesting.
Many U.S. corporate and Treasury bonds pay coupons every six months (semiannually). If that’s the case, you need to adjust both your coupon payment and your yield to a per-period (semiannual) basis. Here’s how that typically looks:
• Semiannual coupon = (Annual coupon rate × Par Value) / 2.
• Semiannual yield = Annual yield / 2.
• Number of total coupon periods = Years to maturity × 2 (for semiannual).
So if you have a 9% annual coupon bond with semiannual payments, each payment is 4.5% of par value twice a year. If the yield is quoted at 10% (annual), for bond pricing under semiannual compounding, you treat it as 5% per half-year.
Let’s do a super brief numeric example. Suppose you have:
• A 5-year bond
• Annual coupon rate: 5%
• Yield to maturity (effective annual): 6%
• Coupons paid semiannually
Step 1: Convert everything to semiannual terms.
• Semiannual coupon rate = 5% / 2 = 2.5%.
• Semiannual coupon payment = 2.5% × par value (if par = 1,000, that means 25 per half-year).
• Semiannual yield = 6% / 2 = 3%.
Step 2: Discount each coupon and the final principal by 3% every six months, for 10 periods (5 years × 2 periods/year = 10).
The bond price is:
This approach ensures you’re capturing the same idea in the standard bond pricing formula, just with semiannual compounding.
Anyway, if you’re a coding person like me, you can whip up a quick Python snippet to compute a bond’s price for a given face value, coupon rate, yield, etc. It’s purely optional, but it helps clarify how the math works.
1def bond_price(face_value, annual_coupon_rate, years_to_maturity, annual_yield, coupon_frequency=2):
2 """
3 Calculate bond price based on standard discounting of future cash flows.
4 face_value: e.g. 1000
5 annual_coupon_rate: e.g. 0.05 for 5%
6 years_to_maturity: e.g. 5
7 annual_yield: e.g. 0.06 for 6%
8 coupon_frequency: e.g. 2 for semiannual
9 """
10 coupon_payment = face_value * annual_coupon_rate / coupon_frequency
11 periodic_yield = annual_yield / coupon_frequency
12 periods = int(years_to_maturity * coupon_frequency)
13
14 price = 0
15 for t in range(1, periods + 1):
16 price += coupon_payment / ((1 + periodic_yield) ** t)
17 price += face_value / ((1 + periodic_yield) ** periods)
18 return price
19
20p = bond_price(1000, 0.05, 5, 0.06, 2)
21print("Bond Price:", round(p, 2))
Once you run through a few examples, you’ll notice some interesting patterns. For instance, if your bond’s coupon rate is below the yield that the market wants, the bond’s price will be below par (trading at a discount). That’s because no one’s too excited about a coupon rate that’s subpar unless they can buy the bond for cheaper.
On the flip side, if the coupon rate is higher than the market yield, the bond ends up priced above par—people are actually willing to pay a premium because the bond offers above-market coupon payments.
Here’s a quick table to lock that in:
Relationship | Coupon Rate vs. Market Yield | Bond Price |
---|---|---|
Discount Bond | Coupon Rate < Yield | < 100 (par) |
Par Bond | Coupon Rate = Yield | = 100 (par) |
Premium Bond | Coupon Rate > Yield | > 100 (par) |
Most folks in the market talk about par value as 100 (or 1000, or some other standard). The big idea is that discount vs. premium reveals right away how the bond’s coupon stands relative to the market yield.
The bond price doesn’t move with yield in a perfectly linear way—there’s a curvature to that relationship, often referred to as convexity. But, focusing on the first “slope” measure, we have duration. Duration (which we’ll explore deeply in later chapters) captures the approximate percentage change in a bond’s price if yields change by 1%. It’s basically telling you, “Hey, if yields go up by a little bit, your bond price might drop by X%.”
• Higher duration = more sensitivity to interest rate movements.
• Lower duration = less sensitivity.
In practice, you’ll see all kinds of durations: Macaulay Duration, Modified Duration, Effective Duration, and so forth. The main takeaway is that different bonds have different sensitivities. It depends on factors like time to maturity, coupon size, and yield levels. So if you suspect yields will move a lot, bonding (pun intended) with the concept of duration is crucial.
On the Level II exam, it’s common to get a vignette describing multiple bonds with different coupons, maturities, and yields. You might be asked to:
• Identify which bond is trading at a discount or a premium.
• Calculate its price given a particular yield.
• Compare the price changes if yields move up or down by a certain basis point measure.
One little pitfall: watch for day count conventions and the exact timing of coupon payments. Some vignettes specify odd periods or irregular coupon schedules. Make sure to carefully parse the dates. Also, remember that in real life, you might pay accrued interest if you buy a bond between coupon payments—but that’s in Section 3.3 on accrued interest. For now, focus on discounting the bond’s future cash flows precisely.
I still remember the first time I tried to price an old Treasury bond in a real portfolio. It was paying a coupon that was way below current market rates, so when I plugged in the yield, the price ended up around 95 cents on the dollar. Yet ironically, that discount bond was perfect for a strategy we wanted—ensuring minimal reinvestment risk. The moral? The bond’s price alone might not tell the whole story about its risk-return profile, but it’s always the starting point to figuring out its yield.
And if you’re curious about how bond yields and prices look in the real world, check out yield curve data published by major central banks like the Federal Reserve in the U.S. They often post daily yield curve estimates, which can serve as an awesome cross-reference. You can see exactly how a 2-year note or a 10-year note trades, and watch how price-yield relationships shift around with market news.
Price-yield relationships in bonds encapsulate the essential give-and-take of interest rates. Bond math—whether annual or semiannual discounting—boils down to the present value of future cash flows. The difference between discount, par, and premium bonds stems directly from comparing the coupon rate to the market yield.
On the Level II exam, expect to handle multiple scenarios involving compounding frequencies, partial periods, or changes in yields. Keep your calculations precise, but don’t lose sight of the big picture: as yields fluctuate, the bond’s price adjusts.
So if you remember that bond seesaw from your childhood, you’re halfway there. Don’t forget to practice a bunch, and double-check your conversions between annual and periodic rates. That’s a huge source of silly mistakes, but with a bit of caution, you’ll handle it like a pro.
Important Notice: FinancialAnalystGuide.com provides supplemental CFA study materials, including mock exams, sample exam questions, and other practice resources to aid your exam preparation. These resources are not affiliated with or endorsed by the CFA Institute. CFA® and Chartered Financial Analyst® are registered trademarks owned exclusively by CFA Institute. Our content is independent, and we do not guarantee exam success. CFA Institute does not endorse, promote, or warrant the accuracy or quality of our products.