Explore how accrued interest, full price, and clean price interact in bond valuation. Understand day-count conventions, calculate settlement amounts, and recognize real-world implications.
Let’s be honest: bond quotes can be a bit tricky. The first time I tried to figure out why the price I saw on my trade ticket didn’t match the price I saw online, I got really confused. You know, that “am I missing something here?” kind of moment. The short answer is that it often comes down to accrued interest and the difference between the full (or dirty) price and the clean price. That’s what we’ll focus on in this section.
Accrued interest is basically the interest you’ve earned (but haven’t yet received) if you hold a bond over a partial coupon period. If you sell the bond before a coupon payment date, you’ve accrued some interest that a future buyer will eventually enjoy. The buyer compensates you for that portion by paying the bond’s clean price plus accrued interest. Altogether, that sum is known as the dirty (or full) price.
Below, we’ll walk through the logic, show you how to calculate accrued interest, and highlight how different day-count conventions can affect your numbers. Let’s jump right in and explore these crucial concepts.
In the bond market, the price we typically see quoted is the “clean price.” This is the bond’s value ignoring any accrued interest. However, in practice, the actual amount you pay or receive at settlement (i.e., the exchange of cash for the bond) includes both the clean price and accrued interest.
• Clean Price:
– Excludes accrued interest.
– Often reported in financial media or displayed on dealer screens.
• Full (Dirty) Price:
– Equals the clean price + accrued interest.
– The actual cash amount exchanged at bond settlement.
Why do we use two different prices? Historically, quoting the value of a bond “clean” (i.e., ignoring interim interest earned) makes it easier to compare multiple bonds. Accrued interest depends on the timing of the transaction, so ignoring it for quoted prices simplifies day-to-day comparisons. But from a practical standpoint, you typically care about the full price you end up paying.
Accrued interest is the additional payment to the seller for the interest that has built up since the last coupon payment date. Calculating it is straightforward in concept but can be tricky in practice because bonds use different day-count conventions. Let’s try to break it down step by step.
If you’re looking for a neat formula, one approach is:
The fraction accounts for “how far” we are into the coupon period. However, “Days Since Last Coupon” and “Days in the Coupon Period” might be calculated differently depending on the bond’s day-count convention.
A “day-count convention” tells us how to count days and how to define what a “year” is. Below are some common ones:
• 30/360 (Bond Basis):
– Assumes each month has 30 days.
– Assumes a 360-day year.
– Commonly used in the U.S. corporate bond market.
• Actual/Actual (ICMA or ISDA):
– Uses the actual number of days elapsed.
– Uses the actual number of days in the year (365 or 366 if leap year; sometimes 360 for certain calculations).
– Often used for government bonds and treasury-type securities.
• Actual/360:
– Uses actual days elapsed.
– Defines a year as 360 days.
– Often used for money market instruments.
• Actual/365 (Fixed):
– Uses actual days elapsed and a 365-day year.
– Frequently used for certain sterling-denominated bonds.
If we want to be consistent, we match the day-count convention used by the bond’s indenture (or local market convention). Getting the day-count right is critical because it affects the fraction of the coupon the seller is owed.
Let’s step through what you might see when buying a bond between coupon dates.
Then you pay the full (dirty) price at settlement. Let’s illustrate with a short example.
Suppose we have a semiannual bond with an annual coupon rate of 6% on a face value of $1,000. That means each coupon is $30 every six months. Let’s assume:
• Last coupon date was 50 days ago.
• We’re dealing with a 180-day coupon period.
• Day-count convention is Actual/Actual, and it perfectly aligns with 180 days for the coupon period.
So that fraction is:
Days Elapsed / Days in Period = 50 / 180 = 0.2777 (approximately).
Annual coupon = 6% of $1,000 = $60
Semiannual coupon = $60 / 2 = $30
Accrued Interest = $30 × (50 / 180) = $8.33
If the bond’s clean price is quoted at $980, then:
Full (Dirty) Price = Clean Price + Accrued Interest
= 980 + 8.33
= $988.33
So, if you’re the buyer, you actually pay $988.33 at settlement, even though the “quoted” or screen price is just $980. Meanwhile, the seller is effectively compensated for the fact that they held the bond for 50 days and “earned” that fraction of the coupon.
Sometimes it helps to see it visually. Here’s a little Mermaid diagram illustrating how accrued interest builds up from one coupon date to the next and how it resets upon payment.
flowchart LR A["Last Coupon Date"] --> B["Accrual Builds <br/> Over Time"] B --> C["Settlement <br/> (Buyer Pays Accrued)"] C --> D["Next Coupon <br/> Payment"] D --> E["Accrual Resets <br/> to Zero"]
Between the last coupon date (A) and the settlement date (C), the seller accrues interest. By the next coupon date (D), the new holder will collect interest since settlement, effectively picking up from zero again.
• Ex-Dividend Period: Bonds also have an ex-dividend period, typically a few days before the coupon payment date. If you sell your bond during this ex-dividend period, the buyer won’t be entitled to the upcoming coupon. Market quotes and accrued interest calculations can shift accordingly.
• Payment Frequency Variations: Not all bonds pay semiannually; some pay annual coupons, quarterly, or monthly. The same accrued interest principles apply; just adjust the fraction of the elapsed coupon period.
• Global Market Differences: In some markets, day-count conventions differ for government bonds versus corporate bonds. Always confirm the local standard.
• Quoting Discrepancies: News outlets, online portals, or data providers might show a “dirty” price instead of a clean price. Make sure to check or recalculate if there’s any doubt.
• Forgetting the Day Count: It can be easy to simply divide the number of days by the total length in calendar days. That might not always align with the bond’s official convention. Double-check the bond prospectus!
• Confusing Quoted vs. Settlement Price: If you’re trying to reproduce the exact cash settlement in an example and you only use the quoted price from a news source, you might be missing a chunk of the story (i.e., accrued interest).
• Overlooking Leap Years: An Actual/Actual method that includes a leap year can slightly shift the fraction used for accrued interest. This might not break a trade but can alter the final calculation.
• Negotiating Price Instead of Yield: In some advanced discussions, trades are negotiated based on yield rather than price. Always keep in mind how yield translates into a clean price, and then don’t forget to add accrued interest.
On the CFA exam or in real-world contexts, be prepared to:
• Perform quick time-based calculations of accrued interest.
• Convert between clean and dirty prices.
• Correctly apply the day-count convention.
• Address differences in coupon payment frequency.
An effective approach is to try out example calculations with different day-count conventions. Doing these repeatedly can help you avoid silly mistakes. Also, watch for those scenario-based problems that might shift details like “what if the bond is annual” or “what if the next coupon is in 45 days instead of 60 days.”
Just to highlight how you might automate a quick check of accrued interest, here’s a short Python snippet using a simplistic approach (assuming Actual/Actual for demonstration).
1
2def accrued_interest(face_value, annual_coupon_rate, days_elapsed, total_days_period):
3 coupon_per_period = (face_value * annual_coupon_rate) / 2 # semiannual
4 fraction_elapsed = days_elapsed / total_days_period
5 return coupon_per_period * fraction_elapsed
6
7face_value = 1000
8annual_rate = 0.06
9days_elapsed = 50
10days_in_period = 180
11
12AI = accrued_interest(face_value, annual_rate, days_elapsed, days_in_period)
13print(f"Accrued Interest: ${AI:.2f}")
That code, if run, would spit out $8.33, matching the earlier example. This can be handy if you’re analyzing a bunch of bonds and want to avoid manual calculations.
• Make sure you know how to handle different coupon frequencies (annual, semiannual, quarterly).
• Practice with various day-count conventions to avoid mechanical errors.
• Carefully interpret “quoted price” in any question: if you see “clean,” you still need to add accrued interest for the “full” price.
• Keep track of settlement dates; sometimes the exam question can mention T+2 or T+3, and that might shift your day count.
• Look out for leaps in logic or leaps in years (pun intended).
When studying for the exam, don’t skip practicing accrued interest. It might feel easy in isolation, but it’s a detail that can slip you up when combined with yield calculations, yield-to-call, or embedded options. In a stressful exam setting, that small detail might snag you if you’re not careful.
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.