Are you a student? Did you know that Amazon is offering 6 months of Amazon Prime - free two-day shipping, free movies, and other benefits - to students?
Click here to learn more

A bond is a debt instrument, usually tradeable, that represents a debt owed by the issuer to the owner of the bond. Most commonly, bonds are promises to pay a fixed rate of interest for a number of years, and then to repay the principal on the maturity date. In the U.S. bonds typically pay interest every six months (semi-annually), though other payment frequencies are possible.

The purpose of this section is to show how to calculate the value of a bond, both on a coupon payment date and between payment dates. If you aren't familiar with the terminology of bonds, please check the Bond Terminology page. If you aren't comfortable doing time value of money problems on the HP 12C, you should work through that tutorial first.

You may also be interested in my tutorial on calculating bond yields using the HP 12C.

Bond Cash Flows

As noted above, a bond typically makes a series of semiannual interest payments and then, at maturity, pays back the face value. Let's look at an example:

Draw a time line for a 3-year bond with a coupon rate of 8% per year paid semiannually. The bond has a face value of $1,000.

The bond has three years until maturity and it pays interest semiannually, so the time line needs to show six periods. The bond will pay 8% of the $1,000 face value in interest every year. However, the annual interest is paid in two equal payments each year, so there will be six coupon payments of $40 each. Finally, the $1,000 will be returned at maturity (i.e., the end of period 6). Therefore, the time line looks like the one below:

Time line for the example bond cash flows

We will use this bond throughout the tutorial.

Bond Valuation on a Coupon Date

We will begin our example by assuming that today is either the issue date or a coupon payment date. In either case, the next payment will occur in exactly six months. This will be important because we are going to use the time value of money keys to find the present value of the cash flows.

The value of any asset is the present value of its cash flows. Therefore, we need to know two things:

  1. The size and timing of the cash flows.
  2. The required rate of return (discount rate) that is appropriate given the riskiness of the cash flows.

We have already identified the cash flows above. Take a look at the time line and see if you can identify the two types of cash flows. Notice that the interest payments are a $40, six-period regular annuity. The face value is a $1,000 lump sum cash flow. Using the principle of value additivity, we know that we can find the total present value by first calculating the present value of the interest payments and then the present value of the face value. Adding those together gives us the total present value of the bond.

We don't have to value the bond in two steps, however. The TVM keys on the 12C can handle this calculation as we will see in the next example:

Assuming that your required return for the bond is 9.5% per year, what is the most that you would be willing to pay for this bond?

We can calculate the present value of the cash flows using the TVM keys. Enter the data: 6 into N, 4.75 into i (9.5/2 = 4.75), 40 into PMT, and 1,000 into FV. Now, press PV and you will find that the value of the bond is $961.63.

Notice that the bond is currently selling at a discount (i.e., less than its face value). This discount must eventually disappear as the bond approaches its maturity date. A bond selling at a premium to its face value will slowly decline as maturity approaches. In the chart below, the blue line shows the price of our example bond as time passes.

bond price as maturity approaches

The red line shows how a bond that is trading at a premium will change in price over time. Both lines assume that market interest rates stay constant. In either case, at maturity a bond will be worth exactly its face value. Keep this in mind as it will be a key fact in the next section.

Bond Valuation In-between Coupon Dates, Part 1

In the previous section we saw that it is very easy to find the value of a bond on a coupon payment date. However, calculating the value of a bond in-between coupon payment dates is more complex. As we'll see, the reason is that interest does not compound between payment dates. That means that you cannot get the correct answer by entering fractional periods (e.g., 5.5) into N.

Note that in this section we will deal with the generic idea of periods, and use the TVM keys. This section is important so that you understand the process of valuing bonds between coupon payment dates. In the next section, we will use the PRICE key and deal with exact dates.

Let's start by using the same bond, but we will now assume that 6 months have passed. That is, today is now the end of period 1. What is the value of the bond at this point?

To figure this out, note that there are now 5 periods remaining until maturity, but nothing else has changed. Therefore, simply change the value in N to 5. Now calculate the PV, and you will find that the value of the bond at the end of period 1 will be $967.30. Notice that the value of the bond has increased a little bit since period 0. As noted previously, this is because the discount must eventually vanish as the maturity date approaches. The bond must be worth exactly $1,000 at maturity because that is how much it will pay at that time.

Now, is there another way that we might arrive at that period 1 value? Of course. Remember that your required return is 4.75% per period. Therefore, the value of the bond must increase by that amount each period. If we calculate the future value of $961.63 (the value at period 0) for 1 period at 4.75% we should get the same answer:

961.63(1.0475) = 1,007.30

Wait a minute! That's not the same answer. However, remember that this is the total value of your holdings at the end of period 1. The value that we calculated previously ($967.30) did not include the $40 coupon payment that you received. If we subtract that, you can see that we do get the same result:

1,007.30 - 40 = 967.30

This is one of the key points that you must understand to value a bond between coupon payment dates.

Let me recap what we just did: We wanted to know the value of the bond at the end of period 1. So, we calculated the value as of the previous coupon payment date, and then calculated the future value of that price. Then, we subtracted the amount of accrued interest to get to the quoted price of the bond.

We can use exactly this same procedure to find the value of the bond in-between payment dates.

Using the same bond as above, what will the value be after 3 months have passed in the current period? Assume that interest rates have not changed.

So, we are now looking for the value of the bond as of period 0.5 (i.e., exactly halfway through the first payment period). Unfortunately, the TVM keys can only help us with this for the first step. Recall that we first need to calculate the PV of the cash flows as of the previous payment date (period 0). Re-enter the data: 6 into N, 4.75 into i, 40 into PMT, and 1,000 into FV. Now, press PV. As before, we find that the value of the bond at time period 0 was $961.63.

Now we need to find the future value of $961.63 one-half of a period in the future:

961.63(1.0475)0.5 = 984.20

Remember that this gives us the "dirty" price of the bond (it includes the accrued interest).

To do the above calculation in the calculator, we are going to grab the PV that we calculated (the 961.63) by pressing RCL PV. Now, you will need to change the sign of the PV, so press CHS. Now, multiply that by 1.0475^0.5. You will find that this answer is $984.20 as we found above.

The process so far is shown in the graphic below:

bond valuationbetween payment dates

Now, to get the clean price (doesn't include accrued interest, this is the price that would be quoted by a dealer) at period 0.5 we need to subtract the accrued interest.

Because interest accrues equally on each day of the payment period, we can calculate the accrued interest by multiplying the total interest for the period by the fraction of the period that has elapsed:

Accrued Interest = Total Interest x Fraction of Period Elapsed

In this example, that works out to $20:

Accrued Interest = 40 x 0.5 = 20

Finally, to find the clean (quoted) price, we subtract the accrued interest from the dirty price:

Clean Price = Dirty Price - Accrued Interest

In this example, we get $964.20:

Clean Price = 984.20 - 20 = 964.20

The same procedure could be done for any fractional period. For example, if 2 months (out of 6) have elapsed, then the fraction is 1/3. So, the clean price of the bond would be $963.28. Prove that for yourself to make sure that you understand the process.

Please note that you cannot get the correct answer by entering a fractional number into N. In this case, if you simply entered 5.5 into N (because there are 5.5 periods remaining until maturity) you would get an answer of $944.86. That is totally wrong. The reason that it won't work is because the formula used by the calculator assumes that the interest payments are an annuity. That is, the time between the cash flows must be exactly the same in every case. Clearly, that isn't true when valuing a bond between coupon payment dates.

Bond Valuation In-between Coupon Dates, Part 2

Unlike most financial calculators, the 12C can truly handle real world bond valuation problems. That is because it has the PRICE key, which allows you to enter exact dates and to use the actual/actual day-count basis (but not 30/360).

The calculator, by default, assumes an actual/actual day-count basis with semiannual interest payments. That is not quite what we want for this example. Instead, we want to use 30/360 (which is used for most bonds, except for US Treasury bonds and notes). Unfortunately, the 12C can only be made to use a 30/360 basis by programming it to do so. There is such a program given in the manual but, frankly, in this day and age you are better off using Microsoft Excel's Price function than programming the 12C. So, we will stick with the annual/annual basis. The difference is only a few cents per bond.

Let me recast our bond valuation problem slightly, so that it includes exact dates and other information that we will need:

What is the value of a bond with an 8% coupon rate that last paid interest on 6/15/2007? Assume that the settlement date for a trade made today is 9/15/2007, and that the bond will mature on 6/15/2010. The bond pays interest semiannually, and your required return is 9.5% per year. The day-count basis is annual/annual.

First, be sure to clear the TVM keys by pressing f X<>Y. Now, all we need to enter is the required return (yield), coupon rate, and the dates. Enter the annual required return (9.5%) into i, and the coupon rate (8%) into PMT.

Next we want to enter the settlement date. In the HP 12C, we can enter dates in either the mm.ddyyyy or dd.mmyyyy format. (mm.ddyyyy is the default, if you prefer to use dd.mmyyyy then press g 4 to put the calculator in that mode. You will see D.MY on the screen to remind you of that date format.) In this case, type 9.152007 ENTER. (Yes, I know that the trade can't settle on a Saturday, but play along anyway.) Now, enter the maturity date in exactly the same way. Type 6.152010 (don't press any other keys yet).

Now, to calculate the value of the bond, simply press f PRICE and you will see that the price is 96.4215.

Note that, as is the convention in the bond market, the price is given as a percentage of the face value. In this case, the price is 96.4215% of the $1,000 face value, or $964.215. This is almost the same price that we found in the previous section, but is slightly different because we are using the actual/actual day-count basis as explained above. It is only different by $0.015.

One more thing: You can calculate the accrued interest using the HP 12C. After calculating the price, press the X<>Y button. It will show that the accrued interest is 2.01% of the face value, or $20.11. Again, this is almost the same amount that we found in Part 1.

Please remember that the 12C has two significant faults when it comes to bond valuation using the PRICE key: 1) It can only use the actual/actual day-count basis; and 2) It assumes semiannual payments. Neither of these can be fixed without writing programs. Fortunately, the procedure that I outlined in Part 1 will work fine in those situations where the Price key doesn't work.

Bond Price Quotes and Accrued Interest

It is important to understand that bond prices are quoted by dealers without the accrued interest. So, if you get a quote of $950 to purchase a bond, then you will pay $950 plus however much interest has accrued to the seller of the bond since the last coupon payment. That is, the invoiced price is the quoted price plus accrued interest. There are three terms that you should understand:

Accrued Interest
Accrued interest is the interest that has been earned, but not yet been paid by the bond issuer, since the last coupon payment. Note that interest accrues equally on every day during the period. That is, it does not compound. So, halfway through the period, you will have accrued exactly one-half of the period's interest payment. It works the same way for any other fraction of a payment period.
Clean Price
The "clean price" is the price of the bond excluding the accrued interest. This is also known as the quoted price.
Dirty Price
The "dirty price" is the total price of the bond, including accrued interest. This is the amount that you would actually pay (or receive) if you purchase (or sell) the bond.

The dirty price is simply the clean price plus the accrued interest.

One final point: In the "real world" bond prices are quoted as a percentage of their face value, not in dollars. So, if a bond dealer quoted the price of our example bond, they would say 96.42, not 964.20. This practice allows a bond price to be quoted without also having to state its face value, and it makes price quotes comparable across different bonds regardless of their face value.

I hope that you have found this tutorial to be useful. Please continue on to the next page to learn about calculating the various bond return measures (current yield, yield to maturity, and yield to call).