Bond Pricing
Clean vs dirty prices, accrued interest, pull to par
1 Introduction
Understanding how bonds are priced is fundamental to fixed-income investing and corporate finance. Unlike stocks, whose values depend on uncertain future earnings and dividends, bonds promise a specific stream of cash flows—periodic coupon payments and a final principal repayment at maturity. This predictability makes bond pricing seem straightforward at first glance, but the details matter enormously in practice.
In this lecture, we will build up the bond pricing framework piece by piece. We start with the core principle that any financial asset’s price equals the present value of its future cash flows. From there, we examine how to handle bonds that pay coupons more than once per year, how to price bonds between coupon payment dates, and how bond prices evolve over time as they approach maturity. Along the way, you will learn practical skills for pricing bonds using Excel functions and develop intuition for why bonds trade at premiums, discounts, or par value.
These concepts connect directly to everything else in fixed-income analysis. The yield to maturity we use in pricing is the internal rate of return investors earn if they hold the bond to maturity. The relationship between coupon rates and yields determines whether investors gain or lose value as time passes. Understanding accrued interest explains why bond transactions involve two different prices. Mastering these fundamentals will prepare you for more advanced topics like duration, convexity, and interest rate risk management.
2 Bond Pricing Fundamentals
The price of a bond equals the present value of all future cash flows the bond will generate. This is the same principle that applies to any financial asset—stocks, real estate, or any investment that produces future payments. What makes bonds particularly amenable to valuation is that their cash flows are contractually specified rather than uncertain.
A typical coupon bond makes two types of payments: periodic coupon payments (usually semiannual) and a final principal payment at maturity. If we denote the annual coupon payment as \(C\), the face (or par) value as \(Par\), the time to maturity in years as \(T\), and the yield to maturity as \(YTM\), then the bond’s price on a coupon payment date is given by:
\[P = \frac{C}{1+YTM} + \frac{C}{(1+YTM)^2} + \cdots + \frac{C + Par}{(1+YTM)^T}\]
Each term in this sum represents one future cash flow discounted back to today. The numerators are the payments themselves—coupon payments \(C\) for the first \(T-1\) periods, then the final coupon plus the face value in year \(T\). The denominators reflect the time value of money: a dollar received further in the future is worth less today, so we discount by larger powers of \((1+YTM)\).
The yield to maturity (\(YTM\)) serves as the discount rate and represents the single interest rate that, when applied to all future cash flows, produces the observed market price. It is essentially the internal rate of return an investor would earn by purchasing the bond at the current price and holding it until maturity, assuming all coupon payments are reinvested at this same rate.
For bonds that do not pay coupons—called zero-coupon bonds or simply “zeros”—the pricing formula simplifies dramatically. Since there are no intermediate payments, only the final principal repayment matters:
\[P = \frac{Par}{(1+YTM)^T}\]
Zero-coupon bonds are particularly useful for understanding the relationship between price and yield because there is no ambiguity about reinvestment. The return you earn is entirely determined by the difference between the purchase price and the face value received at maturity.
2.1 Bonds with Multiple Coupon Payments per Year
The formulas above assume the bond makes one coupon payment per year. In practice, most bonds—especially corporate and Treasury bonds in the United States—pay coupons semiannually (twice per year). Some bonds pay quarterly or even monthly. When a bond pays \(F\) coupons per year, we must adjust both the coupon amount and the discounting:
\[P = \frac{C/F}{1+YTM/F} + \frac{C/F}{(1+YTM/F)^2} + \cdots + \frac{C/F + Par}{(1+YTM/F)^{T \cdot F}}\]
In this formula, \(C/F\) is the coupon payment per period, \(YTM/F\) is the periodic yield, and \(T \cdot F\) is the total number of coupon periods remaining. For a bond with a 6% annual coupon rate paying semiannually, each coupon payment is 3% of the face value, and we discount using half the annual yield.
This adjustment matters more than it might first appear. A 6% yield compounded semiannually produces a different effective annual return than a 6% yield compounded annually. The distinction becomes critical when comparing bonds with different coupon frequencies or when translating between quoted yields and actual returns.
2.2 Pricing Bonds on Coupon-Paying Days
Excel’s PRICE function provides a convenient way to calculate bond prices. The function takes the following inputs:
| Parameter | Description |
|---|---|
| Settlement | Date on which you are pricing (or purchasing) the bond |
| Maturity | Date on which the bond matures and pays its final principal |
| Rate | Annual coupon rate expressed as a decimal (e.g., 0.06 for 6%) |
| Yld | Yield to maturity expressed as a decimal |
| Redemption | Redemption value as a percentage of face value (typically 100) |
| Frequency | Number of coupon payments per year (1, 2, or 4) |
When pricing a bond on a coupon-paying day and no specific dates are given, you can use arbitrary dates as long as they are consistent. A common approach is to set the settlement date to January 1, 2000 and calculate the maturity date by adding the appropriate number of years.
Example 1: Pricing a Bond on a Coupon Date (Given Dates)
Assume today is July 31, 2012. Bond A matures on July 31, 2018, has a par value of $1,000, pays coupons semiannually, and has a coupon rate of 6%. The yield to maturity is 2%. What is the price of Bond A today?
We can solve this using either the present value formula or Excel’s PRICE function.
Using the formula: The bond has 6 years to maturity with semiannual coupons, meaning 12 coupon payments remain. Each coupon payment is $1,000 × 6% / 2 = $30. The semiannual yield is 2% / 2 = 1%.
\[P = \sum_{t=1}^{12} \frac{30}{(1.01)^t} + \frac{1000}{(1.01)^{12}}\]
\[P = 30 \times \frac{1 - (1.01)^{-12}}{0.01} + \frac{1000}{(1.01)^{12}}\]
\[P = 30 \times 11.2551 + 887.45 = 337.65 + 887.45 = \$1,225.10\]
Using Excel’s PRICE function:
=PRICE("7/31/2012", "7/31/2018", 0.06, 0.02, 100, 2)
This returns 122.51, which is the price per $100 of face value. For a $1,000 par bond, the price is $1,225.10.
The bond trades at a premium because its 6% coupon rate exceeds the 2% yield investors require.
Example 2: Pricing a Bond on a Coupon Date (No Specific Dates)
Bond A matures in 30 years and pays coupons annually. It has a coupon rate of 8%, a yield of 10%, and a par value of $100. What is the price of the bond today?
Using the formula: With annual coupons, 30 years to maturity, an 8% coupon on $100 par value gives $8 annual payments. The yield is 10%.
\[P = \sum_{t=1}^{30} \frac{8}{(1.10)^t} + \frac{100}{(1.10)^{30}}\]
Using the annuity formula for the coupon stream:
\[P = 8 \times \frac{1 - (1.10)^{-30}}{0.10} + \frac{100}{(1.10)^{30}}\]
\[P = 8 \times 9.4269 + 5.7309 = 75.42 + 5.73 = \$81.15\]
Using Excel’s PRICE function:
=PRICE("1/1/2000", "1/1/2030", 0.08, 0.10, 100, 1)
This returns 81.15, confirming our calculation. The price is $81.15.
The bond trades at a discount because its 8% coupon rate is below the 10% yield required by investors.
3 Pricing Bonds on Non-Coupon Days
The formulas presented so far work cleanly only on coupon payment dates or when the bond is first issued. On any other day, the time to each future payment is no longer a whole number of periods, which complicates the discounting calculation. The fundamental principle remains the same—the price still equals the present value of future cash flows—but we must carefully account for the fractional time periods.
For a bond priced at time \(t_0\), which falls between coupon dates, the general pricing formula becomes:
\[P_{t_0} = \frac{C}{(1+YTM)^{t_1}} + \frac{C}{(1+YTM)^{t_2}} + \cdots + \frac{C + Par}{(1+YTM)^{t_N}}\]
Here, \(t_1\) represents the time (in years) from the pricing date to the first coupon payment, \(t_2\) the time to the second coupon, and so on through \(t_N\), the time to the final payment at maturity. These time intervals are typically expressed as fractions of a year.
3.1 Day-Counting Conventions
A crucial practical question arises: how exactly should we calculate these fractional time periods? The answer varies depending on the day-counting convention specified for the bond. Different conventions exist because they balance accuracy against computational simplicity, and different markets have adopted different standards.
| Convention | Description | Common Uses |
|---|---|---|
| 30/360 | Assumes all months have 30 days and all years have 360 days | Corporate bonds, municipal bonds, mortgage-backed securities |
| Actual/Actual | Uses the actual number of days between dates and actual days in the year | U.S. Treasury bonds and notes |
| Actual/360 | Uses actual days between dates but assumes 360-day years | Commercial paper, Treasury bills, money market instruments |
The 30/360 convention simplifies calculations by standardizing month lengths, making it easier to compute interest in an era before electronic calculators. Actual/Actual is more precise and tends to be used for government securities where exactness matters. Actual/360 is common for short-term instruments and has the effect of slightly overstating yields on an annual basis.
3.2 Clean Prices versus Dirty Prices
When you actually purchase a bond between coupon dates, you pay the dirty price (also called the invoice price)—this is the full amount that changes hands. However, the price you see quoted in the market is the clean price (also called the flat price), which excludes accrued interest.
The relationship between these prices is:
\[\text{Dirty Price} = \text{Clean Price} + \text{Accrued Interest}\]
where accrued interest is calculated as:
\[\text{Accrued Interest} = \frac{\text{Days since last coupon}}{\text{Total days in coupon period}} \times \text{Coupon Payment}\]
This convention exists because bond prices fluctuate with interest rates, but accrued interest accumulates steadily between coupon dates regardless of market conditions. Separating the two makes it easier to see genuine price movements rather than the sawtooth pattern that would appear if we only tracked dirty prices.
It is also important to note that bond prices are typically quoted as a percentage of par value. A bond quoted at 103 with a $1,000 par value has a clean price of $1,030. Unless otherwise specified, assume a par value of $1,000 in problems and examples.
Example 3: Dirty Price with Actual/Actual Convention
Bond A was issued on May 15, 2000 and matures on May 15, 2030. Coupons are paid semiannually with a 6% coupon rate and a 2% yield to maturity. What was the invoice (dirty) price on July 31, 2012? Use the Actual/Actual day-counting convention and assume a par value of $1,000.
Step 1: Identify coupon dates surrounding the pricing date.
Coupons are paid on May 15 and November 15 each year. On July 31, 2012, the previous coupon was May 15, 2012 and the next coupon is November 15, 2012.
Step 2: Calculate days for accrued interest.
Days from May 15, 2012 to July 31, 2012 = 77 days (16 in May + 30 in June + 31 in July)
Days in the coupon period (May 15, 2012 to November 15, 2012) = 184 days
Step 3: Calculate accrued interest.
Semiannual coupon = $1,000 × 6% / 2 = $30
\[\text{Accrued Interest} = \frac{77}{184} \times \$30 = \$12.55\]
Step 4: Calculate the clean price.
Using Excel’s PRICE function:
=PRICE("7/31/2012", "5/15/2030", 0.06, 0.02, 100, 2)
This returns approximately 159.62 per $100 of face value, or $1,596.2 for the $1,000 bond.
Step 5: Calculate the dirty price.
\[\text{Dirty Price} = \$1,596.2 + \$12.55 = \$1,608.8\]
The invoice price is $1,608.8.
Example 4: Dirty Price with 30/360 Convention
It is January 1, 2000. Bond A matures on March 1, 2000 and pays coupons quarterly with a 4% coupon rate and 4% yield to maturity. What is the invoice (dirty) price today in dollars? Use the 30/360 day-counting convention and assume a par value of $1,000.
Step 1: Identify the cash flows.
The bond matures on March 1, 2000, paying quarterly coupons. The quarterly coupon is $1,000 × 4% / 4 = $10. At maturity, the bondholder receives the final coupon plus principal: $10 + $1,000 = $1,010.
Step 2: Calculate days under 30/360 convention.
Under 30/360, each month has 30 days. From January 1 to March 1 = 2 months = 60 days.
The quarterly coupon period = 3 months = 90 days.
Step 3: Determine the last coupon date and accrued interest.
The previous coupon was December 1, 1999. Days from December 1 to January 1 = 30 days (under 30/360).
\[\text{Accrued Interest} = \frac{30}{90} \times \$10 = \$3.33\]
Step 4: Calculate the clean price.
Using Excel’s PRICE function:
=PRICE("1/1/2000", "3/1/2000", 0.04, 0.04, 100, 4)
This gives us a clean price of $999.97
Step 5: Calculate the dirty price.
\[\text{Dirty Price} = \\]999.97 + $3.33 = $1,003.31$$
The invoice price is approximately $1,003.31.
4 Evolution of Bond Prices Over Time
As bonds approach maturity, their prices converge toward par value through a process called pull to par. This phenomenon occurs regardless of whether the bond initially trades at a premium or discount, and understanding it is essential for grasping how bond returns work.
The key insight is that the price deviation from par reflects the difference between the coupon rate and the prevailing yield. As time passes and the bond approaches maturity, there is less time for this difference to accumulate, so the price must move toward par.
Discount bonds trade at prices below their par value. This occurs when the bond’s yield to maturity exceeds its coupon rate—investors require a higher return than what the coupons alone provide, so they pay less than par value. The difference between the purchase price and par value represents additional return that compensates for the below-market coupon. As the bond ages, its price rises gradually toward par, and this price appreciation is part of the investor’s total return.
Premium bonds trade at prices above their par value. This happens when the coupon rate exceeds the yield to maturity—the bond pays more generous coupons than the market requires, so investors pay extra for that privilege. Over time, the price declines toward par, effectively reducing the total return below what the coupons alone would suggest.
Par bonds trade exactly at their face value because their coupon rates equal the yield to maturity. These bonds neither appreciate nor depreciate toward maturity (assuming yields remain constant).
It is crucial to understand that the price movements caused by pull to par do not represent changes in the bond’s attractiveness or riskiness. The bond’s yield remains constant throughout this process. What changes is simply the time remaining until maturity, which mechanically affects the present value calculation.
Excel’s PV function provides another way to price bonds on coupon-paying days. Its parameters are:
| Parameter | Description |
|---|---|
| rate | Interest rate per compounding period (YTM ÷ coupons per year) |
| nper | Total number of compounding periods (years × coupons per year) |
| pmt | Payment per period, entered as a negative value |
| fv | Future value (par value), entered as a negative value |
Example 5: Discount Bond Price Evolution
Bond A matures in 10 years, pays coupons semiannually, has a coupon rate of 8%, a yield of 10%, and a face value of $100. Calculate the bond’s price today and on each subsequent coupon-paying day until maturity. Plot these prices over time.
Initial pricing:
The semiannual coupon = $100 × 8% / 2 = $4. The semiannual yield = 10% / 2 = 5%. There are 20 semiannual periods.
Using Excel’s PV function:
=PV(0.05, 20, -4, -100)
This returns $87.54.
Price evolution:
Calculating the price at each remaining maturity using the same approach:
| Years to Maturity | Periods Left | Price ($) |
|---|---|---|
| 10.0 | 20 | 87.54 |
| 9.5 | 19 | 87.91 |
| 9.0 | 18 | 88.31 |
| 8.5 | 17 | 88.73 |
| 8.0 | 16 | 89.16 |
| 7.5 | 15 | 89.62 |
| 7.0 | 14 | 90.10 |
| 6.5 | 13 | 90.61 |
| 6.0 | 12 | 91.14 |
| 5.5 | 11 | 91.69 |
| 5.0 | 10 | 92.28 |
| 4.5 | 9 | 92.89 |
| 4.0 | 8 | 93.54 |
| 3.5 | 7 | 94.21 |
| 3.0 | 6 | 94.92 |
| 2.5 | 5 | 95.67 |
| 2.0 | 4 | 96.45 |
| 1.5 | 3 | 97.28 |
| 1.0 | 2 | 98.14 |
| 0.5 | 1 | 99.05 |
| 0.0 | 0 | 100.00 |
The bond starts at $87.54 (a discount) and steadily increases to $100 at maturity. This upward price path is characteristic of discount bonds and represents the pull to par effect.
Example 6: Premium Bond Price Evolution
Same data as Example 5, but assume YTM is 6%.
Initial pricing:
With a 6% yield, the semiannual yield = 3%. The coupon remains $4 semiannually.
=PV(0.03, 20, -4, -100)
This returns $114.88.
Price evolution:
| Years to Maturity | Periods Left | Price ($) |
|---|---|---|
| 10.0 | 20 | 114.88 |
| 9.5 | 19 | 114.33 |
| 9.0 | 18 | 113.75 |
| 8.5 | 17 | 113.17 |
| 8.0 | 16 | 112.56 |
| 7.5 | 15 | 111.94 |
| 7.0 | 14 | 111.30 |
| 6.5 | 13 | 110.63 |
| 6.0 | 12 | 109.95 |
| 5.5 | 11 | 109.25 |
| 5.0 | 10 | 108.53 |
| 4.5 | 9 | 107.79 |
| 4.0 | 8 | 107.02 |
| 3.5 | 7 | 106.23 |
| 3.0 | 6 | 105.42 |
| 2.5 | 5 | 104.58 |
| 2.0 | 4 | 103.72 |
| 1.5 | 3 | 102.83 |
| 1.0 | 2 | 101.91 |
| 0.5 | 1 | 100.97 |
| 0.0 | 0 | 100.00 |
The bond starts at $114.88 (a premium) and steadily decreases to $100 at maturity. This downward price path is the pull to par effect for premium bonds.
Example 7: Par Bond Price Evolution
Same data as Example 5, but assume YTM is 8%.
Initial pricing:
When the coupon rate equals the yield (both 8%), the semiannual yield = 4% and the semiannual coupon = $4.
=PV(0.04, 20, -4, -100)
This returns exactly $100.00.
Price evolution:
Because the coupon rate equals the yield, the bond trades at par on every coupon-paying day:
| Years to Maturity | Price ($) |
|---|---|
| Any | 100.00 |
This is the defining characteristic of par bonds—they maintain their face value throughout their life (assuming yields remain constant). There is no pull to par because the bond is already at par.
5 Key Takeaways
Bond pricing rests on the fundamental principle that price equals the present value of future cash flows. For coupon bonds, this means discounting all future coupon payments and the final principal repayment using the yield to maturity as the discount rate. Zero-coupon bonds simplify this to a single discounted payment. When bonds pay coupons more frequently than annually, we must adjust both the periodic payment and the discount rate accordingly—dividing the annual coupon rate and yield by the payment frequency while multiplying the number of periods.
Pricing bonds between coupon dates introduces complexity through fractional time periods and the distinction between clean and dirty prices. The dirty price is what you actually pay, but markets quote the clean price to separate genuine price movements from the mechanical accumulation of accrued interest. Day-counting conventions vary across bond types, with 30/360 common for corporate and municipal bonds while Actual/Actual applies to Treasury securities.
The relationship between coupon rates and yields determines whether bonds trade at a premium, discount, or par. Premium bonds have coupon rates exceeding the market yield, so investors pay more than face value; discount bonds have the opposite relationship. The pull to par phenomenon ensures that all bonds converge to face value as maturity approaches, regardless of where they started. This price movement is not a gain or loss in any economic sense—it is simply the mechanical effect of shorter discounting periods—but it does affect the composition of total return between price appreciation and coupon income.
These concepts form the foundation for understanding bond returns, duration, convexity, and interest rate risk. A solid grasp of basic pricing mechanics will serve you well as we advance to these more sophisticated topics.
6 Key Formulas Summary
| Concept | Formula | When to Use |
|---|---|---|
| Bond price (annual coupons) | \(P = \sum_{t=1}^{T}\frac{C}{(1+YTM)^t} + \frac{Par}{(1+YTM)^T}\) | Pricing a bond on a coupon-paying day with one coupon per year |
| Zero-coupon bond price | \(P = \frac{Par}{(1+YTM)^T}\) | Pricing bonds with no coupon payments |
| Bond price (F coupons/year) | \(P = \sum_{t=1}^{T \cdot F}\frac{C/F}{(1+YTM/F)^t} + \frac{Par}{(1+YTM/F)^{T \cdot F}}\) | Pricing bonds that pay coupons semiannually, quarterly, etc. |
| Dirty price | \(\text{Dirty Price} = \text{Clean Price} + \text{Accrued Interest}\) | Converting between quoted price and settlement amount |
| Accrued interest | \(AI = \frac{\text{Days since last coupon}}{\text{Days in coupon period}} \times \text{Coupon Payment}\) | Calculating the interest portion of a between-date transaction |
7 Practice Problems
Practice Problem 1: Pricing a Bond on a Coupon Date
Bond B matures on December 15, 2028. Today is December 15, 2023. The bond has a par value of $1,000, pays coupons semiannually, has a coupon rate of 5%, and a yield to maturity of 3%. What is the price of Bond B today?
Given information:
- Time to maturity: 5 years
- Par value: $1,000
- Coupon rate: 5% (semiannual payments)
- YTM: 3%
Calculation:
Semiannual coupon = $1,000 × 5% / 2 = $25
Semiannual yield = 3% / 2 = 1.5%
Number of periods = 5 × 2 = 10
Using the present value formula:
\[P = 25 \times \frac{1-(1.015)^{-10}}{0.015} + \frac{1000}{(1.015)^{10}}\]
\[P = 25 \times 9.2222 + 861.67 = 230.56 + 861.67 = \$1,092.23\]
Or using Excel: =PV(0.015, 10, -25, -1000) returns $1,092.23.
The bond trades at a premium because its 5% coupon rate exceeds the 3% market yield. The price is $1,092.23.
Practice Problem 2: Pricing a Bond Without Specific Dates
Bond C matures in 15 years and pays coupons annually. It has a coupon rate of 4%, a yield of 6%, and a par value of $100. What is the price of the bond today?
Given information:
- Time to maturity: 15 years
- Par value: $100
- Coupon rate: 4% (annual payments)
- YTM: 6%
Calculation:
Annual coupon = $100 × 4% = $4
Using the present value formula:
\[P = 4 \times \frac{1-(1.06)^{-15}}{0.06} + \frac{100}{(1.06)^{15}}\]
\[P = 4 \times 9.7122 + 41.73 = 38.85 + 41.73 = \$80.58\]
Or using Excel: =PV(0.06, 15, -4, -100) returns $80.58.
The bond trades at a discount because its 4% coupon rate is below the 6% market yield. The price is $80.58.
Practice Problem 3: Dirty Price Calculation
Bond D was issued on March 1, 2010 and matures on March 1, 2025. Coupons are paid semiannually with a 5% coupon rate and a 4% yield to maturity. What is the invoice (dirty) price on August 15, 2020? Use the Actual/Actual day-counting convention and assume a par value of $1,000.
Step 1: Identify coupon dates.
Coupons are paid on March 1 and September 1. On August 15, 2020, the previous coupon was March 1, 2020 and the next coupon is September 1, 2020.
Step 2: Calculate days for accrued interest (Actual/Actual).
Days from March 1, 2020 to August 15, 2020: - March: 30 days (March 2-31) - April: 30 days - May: 31 days - June: 30 days - July: 31 days - August: 15 days - Total: 167 days
Days in the coupon period (March 1 to September 1, 2020) = 184 days
Step 3: Calculate accrued interest.
Semiannual coupon = $1,000 × 5% / 2 = $25
\[\text{Accrued Interest} = \frac{167}{184} \times \$25 = \$22.69\]
Step 4: Calculate clean price.
Using Excel: =PRICE("8/15/2020", "3/1/2025", 0.05, 0.04, 100, 1) returns approximately 104.12 per $100 face value, or $1,041.2 for a $1,000 bond.
Step 5: Calculate dirty price.
\[\text{Dirty Price} = \$1,041.2 + \$22.69 = \$1,063.9\]
The invoice price is $1,063.9.
Practice Problem 4: Discount Bond Pull to Par
Bond F matures in 5 years, pays coupons semiannually, has a coupon rate of 4%, a yield of 7%, and a face value of $100. Calculate the bond’s price today and after 2.5 years (assuming the yield remains constant).
Today (5 years to maturity):
Semiannual coupon = $100 × 4% / 2 = $2
Semiannual yield = 7% / 2 = 3.5%
Periods = 5 × 2 = 10
=PV(0.035, 10, -2, -100) returns $87.53
After 2.5 years (2.5 years to maturity):
Periods = 2.5 × 2 = 5
=PV(0.035, 5, -2, -100) returns $93.23
The price increases from $87.53 to $93.23 as the bond ages, demonstrating pull to par for a discount bond.
8 Ask an LLM
Here are three questions you might ask an AI assistant to deepen your understanding of these concepts:
- How would a sudden increase in market interest rates affect the prices of premium, discount, and par bonds differently, and why?
- Can you walk me through an example of how reinvestment risk affects an investor’s actual return on a coupon bond, and how does this relate to the assumptions behind yield to maturity?
- What is the intuition behind why longer-maturity bonds are more sensitive to interest rate changes than shorter-maturity bonds, and how does this connect to the discounting in the bond pricing formula?
- How do real-world bond traders account for the differences between day-counting conventions when comparing yields on corporate bonds versus Treasury bonds?
- If I wanted to create a bond portfolio that is immune to interest rate changes, what concepts from this lecture would I need to extend, and what additional tools would I need?