# Pricing a bond contract from the yield curve

When giving a particular class in financial mathematics for a student I saw a problem in a list of exercises that says:

How to calculate the price at 15 December 2010 of a bond paying a coupon of 11.04 % 2 times a year knowing that the coupon payment days are

Coupon date
1   15 March 2011
2   15 September 2011
3   15 March 2012
4   15 September 2012
5   15 March 2013
6   15 September 2013
7   15 March 2014
8   15 September 2014
9   15 March 2015
10  15 September 2015
11  15 March 2016
12  15 September 2016
13  15 March 2017
14  15 September 2017
15  15 March 2018
16  15 September 2018
17  15 March 2019
18  15 September 2019
19  15 March 2020


and having the following Yield curve:

Yield curve
Term (D)    Rate
1       0.0051505
9       0.0051179
16      0.005344728
23      0.005602964
33      0.00560621
64      0.006237435
92      0.006553657
124     0.006818637
153     0.00702155
184     0.00721352
215     0.007444632
245     0.007695142
278     0.007965138
306     0.0082047
337     0.008453748
369     0.008692272
460     0.009484277
551     0.010313827
642     0.011160763
733     0.01202446
1098    0.015414247
1463    0.018648449
1828    0.02158657
2196    0.02408674
2560    0.026161802
2924    0.027907447
3289    0.029391256
3655    0.030649823


My background is more theoretical (probability and etc) and don't have to much knowledge of financial products as you can see by my question. Could you help me to understand how to compute it in a practical way simple to explain for a student. But first for me, because I lack of practical knowledge.

I know that if we have a interest rate process $(r_t)_{t\geq 0}$ then the Zero-Coupon bond price at date $t$ of maturity $T$ is given by $P_t = \mathbb E_t^{\mathbb Q}\left [exp(-\int^T_t r_s ds ) \right ]$ where $\mathbb Q$ is risk neutral measure. Then the Coupon-bearing bond price is given by $$P_0 = \sum_{i=1} ^n cP_0(T_i) + F P_0(T) =\sum_{i=1} ^n \rho F P_0(T_i) + F P_0(T)$$

where $F$ is the face value, $\rho$ is the pre-assigned interest and $T_1\leq \cdots \leq T_n \leq T$ are the dates where coupon are paied.

Also I know that the Yelds is given by

$$R_t(T) = \frac{-ln P_t(T)} {T-t}$$

since $P_t(T) = \exp(-(T-t) R_t(T))$.

So should I just comput $P_o$ by this relations or Am I mistaken about the Yield curve definition? (I think there are other kinds of Yields right ?

Another question comes out. While searching for an answer to this question I reviewed some theoretical material about the models but also some piratical ones. In one of the practical materials I've seen a path simulation for a stock spot price using the forward rate instead of the short rate. In the context they had the same initial date them I have in my problem: an yield curve. Why should be the forward rate a better approximation for the short rate than the yield curve (supposing that you interpolate it if necessary in order to have a more refined and smooth approximation) ?

I know that the short rate $r_t$ is given by $r_t =\lim_{\tau \to t} f_t(\tau) =\lim_{\tau \to t} \nabla_\tau [R_t(\tau)(\tau-t)]$ (supposing that those limits exist!)

I think what you wrote is correct. I'll rephrase everything according to my way to give you another point of view.

The price of a coupon bond at time $t = 0$ is the sum of the discounted cashflows given by the coupons and the face value:

$$P_0 = F \cdot D(0, T_n) + \sum_{i=1}^{n} 11.04\% \cdot 0.5 \cdot F \cdot D(0, T_i)$$

where $F$ is the face value, $T_n = T$ is the maturity of the bond, $D$ is the discount rate. I think this is the simplest definition. Some notes about the formula:

• coupons are paid also at the maturity date, therefore you can assume that March, 15th 2020 is the maturity of the bond;
• usually, the coupon rate of a bond is expressed as annual rate, so the rate paid every 6 months is half of $11.04\%$ and the $0.5$ factor is there because of this.

Using the term structure of interest rates, discount factors becomes easy to express: $$P(0, T_n) = F \cdot \exp\left(- R_0(T_n) \cdot T_n\right) + \sum_{i=1}^{n} 11.04\% \cdot 0.5 \cdot F \cdot \exp\left(- R_0(T_i) \cdot T_i\right)$$

The term structure of interest rates assigns a rate $R_0(T_i) = r_i$ to each maturity $T_i$; these rates are computed from the prices of zero-coupon bonds on a given day using the formula you already now (rate is -logarithm of price divided by the time period). Therefore discount factors and zero-coupon bond prices are the same in this case: $D(0, T_i) = P(0, T_i) = P_0(T_i)$ (the last one is your notation). Rates $r_i$'s are usually called zero rates or spot rates.

The yield curve is something different: it is built from the YTM, yield to maturity. The YTM is the rate such that $r_1 = r_2 = \dots = r_n = YTM$ and $P(0, T)$ is equal to the market price today. This means that all cashflows are discounted with the same rate (this is also unnatural in reality: different rates are applied for different maturities). Each bond has its own YTM and it is usually expressed as an annual rate.

Yield curve and term structure give the same values only for zero-coupon bonds since there are no coupons to discount. For coupon bonds the meaning is quite different as you can see.

What you call "yields" are in fact the spot rates of a term structure. Your problem is computing the bond price given the term structure on Dec, 15th 2010 (time $t=0$). Therefore, you just need to count the number of days between Dec, 15th 2010 and each payment date, put that number with the correct rate in the formula to get the discount factors and sum everything up to get the coupon bond price.

The 0.5 factor is there for the following reason (see also second bullet point above). Usually, the coupon rate is expressed as an annual rate; therefore, if 11.04% is the coupon annual rate and the coupon is paid twice a year, the standard practice is paying $11.04\% / 2 = 5.52\%$ of the face value every six months. So you get $F \cdot 5.52\%$ money each time. If your coupon is already expressed as a 6 months rate, then you don't need to put the 0.5 factor.

Market prices for bonds are usually expressed using face value of 100. I would opt for that to be coherent with the standard practice.

Finally, let's tackle rates and maturities. If you don't have a rate for your exact maturity, then you can only approximate it: * you can take the rate of the nearest maturity in the term structure (if the difference is < 7 days, I don't think you will notice big differences); * you can approximate with linear interpolation or spline or any other technique; * advanced mode: if you have the dynamics of the instantaneous spot rate (the interest rate process you nominated), you can compute the rate for any maturity; it's still an approximation, since it's not present in the market.

Usually, in exercises the number of days coincide with the term structure, since the crucial part of bond pricing is not this approximation process but using the right formula with the right numbers.

• Thank you very much for your answer. I sill have a question. As you can see I don't have all necessary spot rates of the term structure. Check it for example for the 15 March 2017. We could approximate it very roughly for the closest rate available. Although as I said it sounds too rough. There is another way to do it or am I misunderstanding something maybe ? – Paul Sep 15 '14 at 10:40
• Also why the 0.5 in the formula? – Paul Sep 15 '14 at 10:52
• I don't have any information about the face value so I supposed that by default if nothing is mentioned about the face value we should consider it 1 and calculate the rate to multiply to the face value. Am I right? For the moment I am getting 0.19 which is not a coherent price at all.It should be at least higher than 1 obviously. Any guesses about a possible mistake I am doing? Maybe the spot rate are in % and should be divided by 100 what do you think ? That should make it bigger. – Paul Sep 15 '14 at 11:04
• I edited my answer accordingly. Please let me know if you have other doubts. – Arrigo Sep 15 '14 at 14:13
• Thanks! I just realize that alone today then I came back to check your answer. – Paul Sep 17 '14 at 10:04