Using Nelson–Siegel Zero Rates to Price a Coupon Bond
Summary
The document explains how to move from a Nelson–Siegel yield curve to the present value of a bond’s cash flows. In this setting, the curve supplies zero-coupon rates by maturity. Convert each rate into a discount factor for the matching cash-flow date, then multiply each bond cash flow by its discount factor and sum the results. For a coupon bond, this means discounting each coupon and the final principal payment at the rate for its own tenor.
The discussion distinguishes zero rates from a conventional yield to maturity and notes that the latter can be calculated from the resulting price using the bond’s coupon, payment frequency, and settlement timing. If settlement falls between coupon dates, the calculated present value is a dirty price; accrued interest is subtracted to obtain the clean price. The answers also mention interpolation and extrapolation, but they do not compare curve-fitting methods or provide market data to assess pricing accuracy. Bond conventions and the chosen day-count basis must be handled consistently.
Key ideas
- Nelson–Siegel can provide estimated zero rates at cash-flow maturities between observed tenors.
- Convert each zero rate into a discount factor for its corresponding cash-flow date.
- Price a coupon bond by discounting each coupon and principal payment separately, then summing them.
- A zero rate is not the same as a coupon rate or the bond’s conventional yield to maturity.
- Settlement between coupon dates can make the calculated value a dirty price, from which accrued interest is deducted to get the clean price.
Tags
Full text
# Nelson Siegel Model calculation of the zero bound price at time zero that expires in 2 years
# Nelson Siegel Model calculation of the zero bound price at time zero that expires in 2 years
I am somewhat stuck and not sure how to proceed, so any help would be appreciated. I got the Nelson Siegel model with all parameters for the real data. The curve that is produced is yield vs maturity. The maturities from the given data only provide the yield for 0.25 years, 1 year, 3 years, 5 years. The question is to find the bond price at 0 years that expires in 2 years. Obviously, the curve fitting allows calculating any maturity. However, but how to find the actual price of the bond at time 0? Yes, we have all parameters from Nelson model, but how to relate yield and bond price?
## Answer by Dhruv Mahajan (score 1)
https://quant.stackexchange.com/a/60308
Let’s say you have 4 cash flows with semi annual frequency for a bond of 2 years. Then you look at the nelson seigel curve for the spot rates corresponding to maturity of 0.5,1,1.5 and 2 year on the curve and discount all these cash flows to the present by these spot rates.
## Answer by Helin (score 1)
https://quant.stackexchange.com/a/60314
Nelson-Siegel gives you zero rates for any tenor: $$ r(t) = b_0 + (b_1 + b_2) * \frac{(1 - e^{-t / \tau})}{t/\tau} - b_2 e^{-t / \tau}, $$ where $t$ is the year fraction (the exact convention depends on the modeler, typically something simple such as Actual/365 is chosen to ensure one-to-one mapping between date and year fraction), and $b_0$, $b_1$, and $\tau$ are the three model parameters.
Equivalently, you can compute the discount factor for any tenor: $$ d(t) = e^{-r(t)\cdot t}. $$
You're correct to say that the model gives you a "yield" curve, but it's important to know that the "yield" in this context ($r(t)$) refers to the zero coupon rate; these are yields to maturities for pure discount bonds with no interim coupon payments and only final principal payments. Accordingly, they should be used to discount a single cash flow matching the rates' tenors. (Of course you can always convert the zero coupon curve into par coupon curve with some algebra.)
Now that you have a full curve, given any bond and its cashflows, it's trivial to compute its price as of today: $$ P = \sum_{i=1}^n c_i d(t_i), $$ where $n$ is the number of cash flows, $c_i$ is the cash flow at time $t_i$ (${}=c/f$ or coupon rate divided by coupon frequency for most periods, and $100 + c/f$ in the last period), and $d(t_i)$ is the discount factor for $t_i$ as defined above. Note that if the settlement date ($t = 0$) is not a coupon date, then $P$ is the dirty price. From this price, you can then compute a conventional quoted yield to maturity using the standard price-yield formula: $$ P = \frac{c/f}{(1 + y/f)^\omega} + \frac{c/f}{(1 + y/f)^{\omega+1}} + \cdots + \frac{100 + c/f}{(1 + y/f)^{\omega+N}} $$ where $c$ is the coupon rate, $f$ is the coupon frequency, and $\omega$ is the discount fraction for the first period (only used if the settlement date is not a coupon date).
## Answer by Dimitri Vulis (score 0)
https://quant.stackexchange.com/a/60312
Given the yields at some tenors, Nelson-Siegel lets you to interpolate the yield between tenors (or even to extrapolate a little beyond the last tenor).
Here are some U.S. treasury yield curves from different dates: https://www.treasury.gov/resource-center/data-chart-center/interest-rates/Pages/TextView.aspx?data=yield
It would be a good exercise to plug into NS the 4 tenors that you listed (4m, 1y, 3y, 5y) and interpolate and extrapolate the other tenors (not just 2y, but 7y, 10y, and 30y) and see how well NS matches the obsrved yields; and then to compare NS's performance to other interpolations, such as a cubic spline, or plain old linear; and then repeat this exercice giving NS more and more tenors.
People sometimes mean different things by "yield". For example, "coupon yield" is static indicative data - how much coupon the bond pays every year, irrespective of the price. It does not change until maturity, except for some unusual bonds. Most likely you mean yield to maturity.
Given the 2Y yield to maturity from NS - one intuitive way to think about this figure is that if the issuer were to sell a new bond priced at par with 2Y maturity, then this new bond's coupon yield would be this much. (Maybe a little off due to some quoting conventions.) If the new bond were sold at above / below par, then the coupon is correspondingly more / less than the yield (you can calculate by how much).
If you're trying to price a bond that may have some accrued interest, then your procedure is:
- get the yield at bond's maturity from NS. Note that the yields at other maturity play no further role except to affect your bond's yield;
- project the bond's future cash flows (coupons and principal);
- use this yield to discount the cash flows of the bond. For most bonds the formula for going from yield $y$ to price is something along the lines of
$$\mathrm{dirty\ price}=\sum_{i=1}^n\frac{\mathrm{cash\ flow}_i}{(1+\frac{y}{f})^{\mathrm{time}_i}}$$
where $f$ is the frequency, $\mathrm{cash\ flow}_i$ of a vanilla bullet bond is
$$\mathrm{cash\ flow}_i=\left\{ \begin{array}{@{}ll@{}} \mathrm{coupon\ yield} /f, & \mathrm{if}\ i<n \\ \mathrm{coupon\ yield} /f + \mathrm{par}, & \mathrm{if}\ i=n \end{array}\right.$$
and $\mathrm{time}_i$ the time to $i$th cash flow is likely to be $fi-a$, all suitably tweaked for your bond's quoting convention (observe that yield to price is closed-form, while its inverse price to yield is likely to require iterative numerical solver);
- $$\mathrm{clean\ price} = \mathrm{dirty\ price} - \mathrm{accrued}.$$
If you like, you can further calculate
$$\mathrm{current\ yield} = \frac{\mathrm{coupon\ yield}}{\mathrm{clean\ price\%}}.$$
I doubt that you mean to interpret the yield from NS as the current yield, and to divide the bond's given coupon yield by the current yield to immediately arrive at the clean price.Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.