Initialization

> |
with(FixIncFun): |

> |

**The Term Structure, its Estimation, and Smoothing**

In the last Chapter we investigated the meaning of the discount factors and their relation to the NA condition, and valuing future cash flows utilizing the present value concept. Some financial instruments, that also fall into the class of derivative securities, are valued based on risk-free discount factors. The valuation concept of these instruments is induced by the no-arbitrage condition. These securities are valued either by replication or by applying to their cash flow the discount factors.

The risk-free discount factors are implicit in bond prices, as we saw in Chapter 2. They are consequences of the no-arbitrage condition. However before we dwell on the valuation issue, we introduce the reader to some estimation matters, terminology such as yield, yield curve, spot curve, and zero-coupon curve, and their interrelation

**3.1 The Term Structure of Interest Rates**

The discount factors 's reflect the discounting due to the time value of money. Thus, they have implicit in them the interest rate that prevails in the market. For example, if it means that in this market a dollar at time one is worth 0.9 of a dollar today. The difference in value between a dollar today and a dollar received in the future results from the opportunity cost of investing that dollar at the risk-free rate of interest. A dollar today can be invested in a risk-free asset from time zero to time one and will earn a rate of interest which we denote by . Hence a dollar today will be equal to dollars at time one. Consequently, , if invested at the risk-free rate from time zero to time one, will grow to be one dollar. It thus follows that

(3.1)

and we can solve for in terms of .

> |
solve(d1=1/(1+r1),r1); |

> |

The rate is called the *spot rate* spanning the time interval zero to one. It is the rate applied to loans which commence now (at time zero) and which mature at some time in the future -- time one in this example. In the same manner we can calculate the rate , spanning the time interval zero to two, i.e.,

> |
solve(d2=1/(1+r2),r2); |

> |

With complete precision of notation, the rates and should have a second index. After all, these rates are payable from time zero to times one and two, respectively. For simplicity, however, we omit the index reference to time zero, and thus instead of using , we use , with the understanding that if only one index is mentioned, it is the second one, and the first is (implicitly) zero. These rates, as mentioned, are applicable to a loan which commences now (on the spot) and lasts until some future time. Hence they are termed *spot rates*.

Equivalently, we can solve for by utilizing the function **Vdis** defined by **NarbitB**. Consider, for simplicity, a bond market with three bonds in which coupons are paid annually, the payment dates of the bonds coincide, and the longest maturity is three years. The structure of the market is described in **NarbitB** below, where time is measured in years, and the current time is a year before the first coupon payment:

> |
NarbitB([[105,0,0],[8,108,0],[3,3,103]],[96,97,89]); |

> |

The rate , for example, applicable to money invested for one year, can be found by solving . The reader may wish to try and solve for some of the 's and compare them to the values reported by **NarbitB**.

> |
solve(Vdis([1+r1, 0, 0]) = 1.0); |

> |

It is customary to report interest rates for different terms in such a way that they can be compared. Obviously, is a larger number than since the former represents the rate earned over the longer period of time for which the first period is a subperiod. If this were not the case, arbitrage opportunities would exist as stipulated in the former chapter.

In order to report the rates in a comparable manner, the rates are reported (usually) on a per annum basis. It is therefore natural to measure the time in units of a year. The spot rate for time (*n* years from now) is reported as the annual rate which, if compounded semiannually, will produce the rate applicable to the period . Hence, the spot rate applicable to time *n* is the solution to equation (3.2),

(3.2)

The use of the annual rate (and semiannual compounding) gives rise to the term , and since time is measured in units of a year, the relevant exponent is . This is where special care should be given to the assumption regarding the length of the time intervals , , and that are used in the input to **NarbitB. **__Footnote 1__ Thus, for example, the spot rate for time one (a year in our example), , is given by the solution to

> |
solve({d1=1/(1+r1/2)^2},{r1}); |

> |

As we see, there are two solutions to this equation and we choose the positive one, . In our example the value of the spot rate is obtained by substituting in the chosen solution.

> |
subs(d1=0.9,-2+2/sqrt(d1)); |

> |

In the same manner will be given by

> |
solve(d2=1/(1+r2/2)^4,r2); |

> |

We choose again the positive real solution and substitute in it to get the value of in our example.

> |
subs(d2=0.8,-2+2*d2^(-1/4)); |

> |

The discount factor for time is the present value (price) of one dollar obtainable at time . Hence, the discount factor for time three, for example, will be given by

> |
evalf(Vdis([0,0,1])); |

> |

We can therefore solve numerically for by combining the **solve** (or **fsolve** command with the feasible range for r3) with the value of given in terms of **Vdis** as below.

> |
fsolve((Vdis([0,0,1]))=1/(1+r3/2)^(6),r3=0..1); |

> |
solve({evalf(Vdis([0,0,1]))=1/(1+r3/2)^(6),r3>=0,r3<=1}); |

> |

Continuing in this manner, we obtain a schedule, a structure of spot rates for each payment date in the future. This structure is referred to as the *term structure of interest rates *or, in short, the* term structure*. In general, the spot rate spanning the time interval based on compounding times per unit of time, will be the solution to

.

Thus, if the unit of time is half a year and the rates are reported per annum based on semiannual compounding, a dollar invested from time zero to time three is invested for 1.5 years and will grow to **.**

**3.1.1 Zero-Coupon, Spot, and Yield Curves**

**The Term Structure, Zero-Coupon, and Spot Curves**

The term structure is actually a function, which we will denote by , that relates time to the interest rate prevailing in the market. For each , is the interest rate per period (a year) paid for a dollar invested for years, from time zero to time . **We keep our units of time measured in years and report the interest rate based on semiannual compounding**.* * Hence, is the rate such that a dollar invested from time zero to time will grow to be

** **

at time . This function is referred to as the *term structure of interest rates*, and for each the rate is called a *spot rate*.

These are the rates paid on an investment over a period that starts now (on the spot) and ends at some future time . The graph of this function is sometimes referred to as the *spot curve* or the *zero-coupon curve*. In what follows, we justify this name followed by a graphical representation of the term structure which will be explored shortly afterward.

Certain bonds pay only one payment at the maturity time of the bond. These bonds are referred to as zero-coupon bonds, since they make no coupon payments. Furthermore, zero-coupon bonds are sold at a discount. The interest rate offered by such bonds is implicit in the difference between the face value of the bond and its market price. Namely, if the price of a zero-coupon bond maturing at time , years from now, is and its face value is $100, the interest it pays is the solution to the equation

.

(3.3)

Hence will be given by

> |
solve({P=100*(1+r/2)^(-2*t)},{r}); |

> |

where we assume again that is measured in years and compounding is done semiannually.

The zero-coupon bonds are bonds which repay the principal at some time and pay nothing at any other time. The zero-coupon bonds, therefore, are the elementary building blocks of coupon bonds as the latter can be interpreted as a portfolio of zero-coupon bonds.

Consider a bond that pays a coupon of at times ,..., and matures at time where it pays . This bond may be replicated by a portfolio of zero-coupon bonds, each with a face value of $1. A portfolio composed of units of zero-coupon bonds maturing at times ,...,, and of a zero-coupon bond which matures at time , has the same cash flow as the coupon-paying bond. Zero-coupon bonds each with a face value of $1 is equivalent to of a zero coupon bond with a face value of $100. Hence, the above argument can be done utilizing zero coupon bonds with $100 of face value.

If the principal (face value) of a zero-coupon bond maturing at time is $1, the price of the bond is the discount factor for time . Hence, the spot rates extracted from coupon-paying bonds or those extracted from zero-coupon bonds which are the building blocks of the coupon bonds, will be the same. Thus, the term structure of interest rates is sometimes referred to as the *zero-coupon curve*.

Let us consider an example in order to demonstrate this idea. We will start with a market of coupon bonds and estimate the discount factors. Then we will replace the bonds in this market by zero-coupon bonds with face values of $1. The prices we will assign to these zero-coupon bonds will be the discount factors obtained in the first market. We then re-estimate the discount factors. Of course, the discount factors in these two markets should be the same.

Consider the market specified in **NarbitB** below, where executing **NarbitB** confirms that the no-arbitrage condition is satisfied, and the discount factors and the function **Vdis** are solved for.

> |
NarbitB([[105,0,0],[5,105,0],[4,4,104]],[94,97,89]); |

> |

The discount factors are specified above, but of course, the discount factor for time one will be the value of a zero-coupon bond maturing at time one and paying $1. Hence the discount factors for times one, two, and three are given by, respectively.

> |
Vdis([1,0,0]),Vdis([0,1,0]),Vdis([0,0,1]); |

> |

Let us now re-run **NarbitB** on a market composed of only these three zero-coupon bonds. The prices are specified above and applied to the corresponding zero-coupon bond.

> |
NarbitB([[1,0,0],[0,1,0],[0,0,1]],[94/105, 1943/2205, 180577/229320]); |

> |

We indeed confirm that the resultant market and discount factors are the same as those in the first market. This should come as no surprise to the reader. The bond market specified by the coupon bonds and the one specified by the zero coupon bonds are in fact the same markets. Two markets are the same if every (risk free) cash flow in these two markets has exactly the same price. That this is the case in our two markets, is evidenced from the fact that the discount factors in these two markets are the same. The price of every (risk free) cash flow in each of these markets, , and is the value of the linear function

.

Consequently these two markets are equivalent. Hence, the zero-coupon curve, or the discount factor function, is like the DNA of the market.

There is another way of viewing equivalent markets. The initial securities defining a market are called primary securities. Consider the market where the primary securities were the coupon bonds. If a primary security is removed from the market (the market is assumed to be complete and not including redundant bonds) and another security (replicated by the primary securities) is added in its place, an equivalent market is obtained. Let us demonstrate this below.

The following structure calculates a portfolio of the three primary bonds that replicate the cash flow 0,1,0 . It also calculates the price of this portfolio.

> |
solve({105*B1+5*B2+4*B3=0,0*B1+105*B2+4*B3=1,0*B1+0*B2+104*B3=0,Price=B1*94+B2*97+B3*89}); |

> |

Notice that the cash flow 0,1,0 can be generated by a combination of bond 1 and bond 2, specifically a short position in bond 1 and a long position in bond 2. Not surprisingly the price of this portfolio is exactly the value of the second discount factor. If we now replace one of the primary bonds, bond 1 or bond 2, with this new portfolio we will again obtain an equivalent market to our original market. This is demonstrated below by solving, utilizing **NarbitB**, for the discount factors in this market and noticing that they are the same as the original discount factors.

> |
NarbitB([[0,1,0],[5,105,0],[4,4,104]],[1943/2205,97,89]); |

> |

**Yield and Spot Curves**

The financial press reports a measure of a bond's return, which is called a* *yield**. **The yield of a bond maturing in years, is defined as the rate * *that solves the equation

,

(3.4)

where is the coupon of the bond, is its face value, and is its price. Therefore the yield of a bond is a rate such that if payments from the bond obtained in years are discounted to its present value by , the price of the bond equals its present value. Readers who are already familiar with the concept of * internal rate of return* will immediately recognize that the yield is the same. From equation (3.3) it follows that the yield of a zero-coupon bond, maturing at time and having a face value of $1, is the spot rate for time . Hence, if the market is populated only with such zero-coupon bonds, the concept of a yield would be equivalent to that of a spot rate. Let us calculate the yield for some zero-coupon bonds using the examples above.

Consider the bond with the semiannual cash flow of (). Since, for this bond, and , equation (3.4) reduces to equation (3.3). Hence we can solve for the yield of this bond by solving the equation:

There might be multiple solutions to this equation, and not all solutions must be positive numbers or even real numbers. Let us solve for y numerically (note we use 'fsolve' instead of 'solve')

> |
fsolve(Vdis([0,0,1])=(1+y/2)^(-3)); |

> |

Our structure below can solve the equation symbiotically and chooses those solutions which are both real and positive.

> |
#evalf(map(proc (x) if type(x,'realcons') and evalf(0 <= x) then x else NULL fi end,\ |

> |
[solve(Vdis([0,0,1])=(1+y/2)^(-3))])); |

If no positive solution exists, a NULL will be returned.

To compare and to confirm that this is the same result as that obtained from **NarbitB**, we can calculate the interest rate which spans the time interval . This is done below.

> |
(1+%/2)^3-1;(1/Vdis([0,0,1.0]))-1; |

We confirm that the results are those reported by **NarbitB**, albeit 1.5 years is three units of half a year and thus reported as time three in **NarbitB**. The yield of a zero-coupon bond coincides with the spot rate for the length of time corresponding to the maturity of the bond.

A different result is obtained for the case of yields of coupon-paying bonds. We examine now the yield of the bond maturing in a year with a cash flow of () and a current price of $97. To solve for the yield of this bond, equation (3.4) is solved, using values of and , i.e

> |
fsolve(5/(1+y/2)+105/(1+y/2)^2=97); |

> |

> |
#evalf(map(proc (x) if type(x,'realcons') and evalf(0 <= x) then x else NULL fi end,\ |

> |
[solve(5/(1+y/2)+105/(1+y/2)^2=97)])); |

> |

This time if we solve for the one year spot interest rate, based on this yield, we obtain

> |
(1+%/2)^2-1;(1/Vdis([0,1.0,0]))-1; |

while, on the other hand, the result from **NarbitB** is 0.1348. This is not due to a roundoff error.

This example serves to demonstrate a few key points. The yields of two bonds which mature at the same time may be different even though their maturity dates coincide. It also highlights that the yield measure suffers from some deficiencies. The price of a bond is the discounted value of its future cash flow. This is a consequence of the no-arbitrage condition. Hence, the contribution of each future payment to the price of the bond is the present value of that payment.

The price of a sure dollar to be obtained in a future time period is independent of the bond from which it is to be obtained. The bonds, as explained above, can all be constructed from the same basic building blocks: one dollar obtained at time . These building blocks must therefore also have the same value in the current time period, regardless of the bonds they are used in. The yield concept, however, is a result of using different discount factors for payments obtained from different bonds at the same time.

As was demonstrated by the example, a dollar obtained from the coupon bond with a maturity of one-year ( obtaining in one year) was discounted using the yield of the bond, which was different from the one year spot rate. There is no economic rationale for using different discount factors for a dollar which has the same risk characteristics just because it is obtained from a different financial instrument, i.e., a zero-coupon versus a coupon-paying bond. Hence, the calculation of present values using yields (unless it is a zero-coupon bond) is an incorrect procedure.

One should think about the yield to maturity of a bond as some sort of "average" or mixture of returns on the bond. We know that instead of in equation (3.4) we should have used , where is the spot rate for years. Solving for the yield as is done in equation (3.4), we are actually constraining the spot rate to be the same for all time periods (referred to as a *flat term structure* of interest rates). The is really some sort of a "mixture" of the different spot rates .

We demonstrate this below by solving for , in terms of and . Given a bond which matures in one year, pays a coupon of , and has a face value of , we display the first of the solutions produced (this is the meaning of the "[1]" below) .

> |
assume (r0.5>0,r1>0,c>0,FC>0); |

> |

> |
simplify(solve((c/2)/(1+r0.5/2)+(FC+(c/2))/(1+r1/2)^2=(c/2)/(1+y/2) +(FC+(c/2))/(1+y/2)^2,y)[1]); |

> |

The next section elaborates on the term structure of interest rates and on its estimation.

**Footnotes**

The procedure **NarbitB** assumes that time 1 is the time of the first payment and that the payments are equally spaced between time 0 and the largest maturity. Thus time 2 is the time of the second payment, and time *k* is the time of the payment. Consequently, the output of **NarbitB,** when reporting a rate spanning the time interval [], pertains to the time interval from the current time to that time of the payment, and the reported rate is the simple rate spanning the time interval. It is therefore important to notice the time period entered into **NarbitB** and the way in which the spot rates are reported. Similarly, when **NarbitB** defines a discount factor function for time *t,* it uses the same units as entered by the user.

If the length of the time intervals , , etc., used in **NarbitB** is half a year, the spot rate, , applicable to the time interval , i.e., half years, will be reported by **NarbitB** as a simple rate. Thus, when the rate is reported as an annul rate semiannually compounded, the spot rate for half years, will be the solution ( i.e., to the equation or .