Chapter 7 Curve Construction and Linear Products
In these notes we build the interest rate curve out of the instruments quoted in the market, and price the products whose value depends on the curve alone and not on its volatility. This is the layer underneath every model in the chapters that follow: a term structure model is calibrated to a curve, and a curve is not handed down, it is constructed.
7.1 Discount Factors, Zero Rates and Forward Rates
The single object underneath all of fixed income is the discount factor.
Definition 7.1 (Discount factor).
is the value at time of a contract paying with certainty at time . It is the price at of a zero coupon bond maturing at , and .
Everything else in this chapter is a re-expression of the function . The reason interest rates are usually harder to model than equities is because the price of a stock today is a number, whereas the price of borrowing today is a whole curve, one number for every maturity. A model of interest rates has to move a curve, and the constraints linking the points of that curve to each other are what make the subject what it is.
The first such constraint is the one that lets us talk about rates at all.
Definition 7.2 (Simply compounded forward rate).
For with year fraction , the forward rate is the interest rate, agreed at , at which one may borrow over the future period .
The forward rate is not free to be anything. It is pinned by today’s discount factors, and it should be derived rather than quoted, because the derivation is the pattern every no-arbitrage statement in this chapter follows.
Calculation 7.3 (The forward rate from the curve).
Consider the following portfolio, set up at time at no cost. Buy one zero coupon bond maturing at , and sell zero coupon bonds maturing at . The proceeds of the sale exactly fund the purchase, so
At the long bond pays . At the short position costs . So the portfolio is exactly a contract to receive at and repay at : it is a loan over , entered into today at no cost. Its simple interest rate satisfies , giving
| (7.1) |
Any other rate for the same period admits an arbitrage: if the market quoted , lend at and fund it with this portfolio, and the difference is locked in at with no position of any kind held in between.
Note what the argument used and what it did not. It used only that the two bonds trade, and it produced a rate for a period entirely in the future without any model of how rates move. This is the sense in which linear products are “just discounting”: their prices are consequences of today’s curve, not of any assumption about its dynamics.
The same quantity gets quoted in several conventions, and the conversions between them account for a surprising share of the discrepancies between two people who think they are pricing the same trade.
Definition 7.4 (Zero rate).
The continuously compounded zero rate, or spot rate, for maturity is the single rate that reproduces the discount factor:
Definition 7.5 (Instantaneous forward rate).
The instantaneous forward rate is the rate for borrowing over , quoted at : entering at into a contract to borrow from to charges interest .
Remark.
Taking , in (7.1) and letting ,
and integrating from to using ,
| (7.2) |
So the discount curve, the zero curve and the instantaneous forward curve carry exactly the same information. Which of them one works in is a matter of what one wants to be smooth — a point we return to when we interpolate.
Definition 7.6 (Short rate).
The short rate is the instantaneous forward rate for immediate borrowing, .
7.2 The Year Fraction Is Not a Length of Time
Everything above was written with a year fraction in it, and the natural reading of that symbol — elapsed time — is wrong. It is whatever the contract says it is. This section is about the arithmetic that follows from that.
Definition 7.7 (Day count convention).
A day count convention is a rule assigning a year fraction to a pair of dates. The three in common use are
-
-
Act/360: actual days elapsed, divided by 360. The money market convention, used for USD and EUR floating legs.
-
-
Act/365: actual days over 365, used in sterling and several Asian markets.
-
-
30/360: every month is treated as thirty days and every year as 360, so a semiannual period is exactly one half. Used for US corporate and agency bonds and for USD swap fixed legs.
A single swap routinely uses two of them, one per leg.
Calculation 7.8 (What the conventions are worth).
Take the semiannual period from 15 January to 15 July 2026, which is 181 actual days.111curve::DayCount, with the year fractions and both gaps below pinned.
| Convention | Year fraction | Interest at |
|---|---|---|
| Act/360 | ||
| Act/365 | ||
| 30/360 |
Act/360 against 30/360 is a gap of basis points on one period. A swap’s fixed leg quoted on the wrong basis is wrong by that on every payment, compounding to something no bid-offer spread absorbs. Act/360 is systematically the largest.
The same arithmetic makes a leap day worth basis points on an annual Act/360 period, for the identical reason — both numbers are one day out of 360. Which is the useful way to remember the size of all of this: a day is roughly a basis point and a half at these levels, and every convention question is a question about how many days.
Two further conventions are needed before an actual cashflow can be computed, and both are about dates rather than fractions.
Definition 7.9 (Settlement lag).
A trade agreed today does not settle today. A spot-starting swap typically begins two business days forward, a bond purchase settles one or two business days after the trade, and a deposit rate quoted today applies from spot. So the curve built from today’s quotes has its origin at spot rather than at today, and a discount factor to a date is a discount factor from settlement.
The lag is small and it does not cancel. A two day gap at is a basis point and a half of value on the whole notional, so a curve whose origin is misplaced by two days misprices every instrument on it by about that, in the same direction, in a way that no repricing check will reveal because the same error is in both the build and the valuation.
Definition 7.10 (Accrued interest, clean and dirty price).
A bond that has run part way through a coupon period has earned interest that has not yet been paid. With coupon rate and the year fraction since the last payment, on the bond’s own convention,
and the two prices are
The dirty price is what changes hands. The clean price is what is quoted.
Remark (Why the quote is the one that is not paid).
The dirty price of a bond sawtooths: it climbs by the accrual through each period and drops by the coupon on payment day, so a chart of it looks like the bond is repeatedly falling for reasons unconnected to rates. Removing the accrual removes the sawtooth, and what is left moves only when the market moves. The convention exists to make the quoted series interpretable.
It also produces a specific, common error. A position marked at the clean price is undervalued by up to a full coupon, and a hedge ratio computed from clean prices on both legs is right, while one computed from a clean price on one leg and a dirty on the other is wrong by the accrual — which is a number that grows steadily and then jumps, so the error looks like a slow drift in the P&L punctuated by a step. Chapter 24’s explain report is where that pattern shows up, and recognising it as an accrual convention rather than a model failure saves a great deal of time.
7.3 The Instruments
The curve is built from the instruments the market quotes, so we need those first. All of them are linear in the sense that matters here: their payoffs are fixed multiples of rates or of , with no optionality, so their prices are determined by today’s curve.
Definition 7.11 (Deposit).
A deposit lends from to at a simply compounded rate , returning at . Its value today is , and it is at par when .
Definition 7.12 (Reference rate).
A reference rate is the market’s published rate for borrowing over , as observed at . Historically these were IBOR rates — panel estimates of unsecured interbank borrowing costs, of which LIBOR was the largest — and they are now overnight risk free rates such as SOFR, compounded over the period.
In a single curve world the reference rate is the curve’s own forward rate,
which is the assumption we make until the last section of this chapter, where we take it apart.
Definition 7.13 (Forward rate agreement).
A FRA maturing at pays at
where is the rate agreed in the contract. The forward rate is the making this contract worth zero.
The peculiar looking discounting inside the payoff is the market convention of settling at the start of the period rather than the end: the natural payment would fall at , and dividing by moves it back to at the rate that has just fixed. Chapter 8 shows that the fair is the forward rate under the appropriate measure, and that the corresponding futures contract is not, which is the first place a model becomes necessary.
Interest rate swaps
Definition 7.14 (Swap).
A fixed-for-floating interest rate swap exchanges a stream of fixed coupons for a stream of floating coupons on the same notional. The payer of the swap pays fixed and receives floating; the receiver does the opposite. The two legs need not share a payment frequency.
Take the notional to be throughout; prices scale with it. Let the fixed leg pay at dates with accruals , and the floating leg at with accruals , both legs starting at . The fixed rate is .
The fixed leg is a known set of cashflows, so it prices by discounting:
where we have named the sum.
Definition 7.15 (Annuity).
The annuity, or level, or PV01, is the value of paid on each fixed leg date, weighted by the accruals:
The annuity will do a great deal of work later. It is a price — it is the price of a portfolio of zero coupon bonds — and it is strictly positive, so by chapter 6 it is a numeraire, and it is the numeraire in which swap rates are martingales.
The floating leg takes one more step. Each coupon pays the reference rate fixed at the start of its period, so
Calculation 7.16 (The floating leg telescopes).
Every intermediate term cancels, and a floating leg is worth notional in at the start minus notional out at the end. There is a reason beyond the algebra: a floating rate note that pays the market rate on its own notional is worth par at each reset, because at the reset date the coupon is exactly the rate the market would charge for the next period. Note carefully that the cancellation used being the curve’s forward rate — the same curve that produced the discount factors. In the multi-curve world it is false.
Definition 7.17 (Par swap rate).
The par swap rate is the fixed rate making the swap worth zero.
Setting ,
| (7.3) |
The numerator is a floating leg of many payments collapsed to a difference of two discount factors, and the collapse is exact rather than approximate: each payment’s forward is computed from the same curve that discounts it, so every term’s numerator cancels the next term’s denominator. It also does not require the two legs to share a frequency, which is why one formula covers a swap paying quarterly floating against annual fixed. and the value of a receiver swap struck at is , of a payer swap . Two facts fall straight out of this and both matter later. First, the swap rate is a ratio of a price to the annuity, so it is a martingale in the annuity measure — this is the observation that makes swaptions tractable in chapter 8. Second, the sensitivity of a swap to a parallel shift in the fixed rate is the annuity, so the annuity is the swap’s risk as well as its numeraire.
Bonds
Definition 7.18 (Bond).
A bond pays a specified notional at maturity and periodic coupons until then. A zero coupon bond pays only the notional.
A bond is a set of known cashflows at dates , so its value from the curve is . This is the dirty or invoice price, and is what changes hands. What is quoted is the clean price, the dirty price less the accrued interest earned since the last coupon.
The market also quotes a bond by its yield.
Definition 7.19 (Yield to maturity).
The yield of a bond is the single rate that reprices it:
| (7.4) |
with the coupon frequency. Note which price appears: the yield is defined against the dirty price, since it is the amount actually paid that the discounted cashflows have to reproduce.
The yield is a summary statistic and not a valuation model. It collapses the entire curve onto one number, so two bonds of different maturities have yields that are not comparable in any useful way, and this is exactly why spreads to a curve exist. It is however the natural coordinate for risk.
Definition 7.20 (Duration, DV01 and convexity).
so that .
Exercise (Duration of a zero coupon bond).
Show that a zero coupon bond maturing at , priced with continuous compounding, has , and that a coupon bond’s duration is the coupon-weighted average of its cashflow times. Deduce that duration is bounded above by maturity, with equality only for a zero coupon bond.
Remark (Two different DV01s, and they are not equal).
The definition above differentiates with respect to , the bond’s own yield to maturity, and that is one of two things the same name is used for.
A yield DV01 shifts the single number and reprices with the bond’s own discounting. A curve DV01 shifts the zero curve — every point of it, by a basis point — rebuilds the discount factors and reprices. They differ: is defined by (7.4) as the flat rate reproducing the bond’s price, so a bond whose cashflows sit on a sloped curve has a that is a cashflow-weighted average of the curve, and shifting the curve by a basis point does not shift that average by exactly a basis point unless the weights are uniform. The gap grows with the coupon and with the slope, and it is zero for a zero coupon bond, where the two definitions coincide.
Which to use is decided by what the hedge is. A position hedged with another bond wants yield DV01 on both, because the ratio is what is traded. A position hedged with swaps, or held in a book whose risk is bucketed against curve instruments, wants curve DV01, because that is the sensitivity the hedging instruments actually deliver. Reporting one and hedging with the other leaves a residual that looks like a small unexplained P&L which grows when the curve steepens — and the curve risk section below is where that becomes systematic.
Convexity is subject to the same distinction and matters for a further reason. It is why the DV01 itself moves as rates move, so a hedge set today is wrong tomorrow by an amount proportional to and to the size of the move. That is a rehedging cost rather than a mark, and it is the linear-product version of the gamma cost of chapter 5.
Exercise (A swap’s DV01 is its annuity).
Show from (7.3) that the change in value of a payer swap for a one basis point rise in the par swap rate is . This is why traders quote swap risk in annuities and why the annuity is called the PV01.
7.4 Bootstrapping the Curve
We now have the two halves of the problem. The instruments above price off the curve; the market quotes their prices. Curve construction is the inverse problem: find the curve that reprices the quotes.
The instruments are chosen by liquidity, and different parts of the curve are pinned by different ones. The front end comes from overnight and short deposits and from overnight indexed swaps. The belly comes from short term interest rate futures, or from FRAs, which fix forward rates out to two or three years. Beyond that the quotes are par swap rates, out to thirty years and more.
The mental model is to solve outward. The shortest instrument involves only the nearest discount factor, so it determines it. The next instrument, given everything shorter, involves one new discount factor, so it determines that. And so on.
Example 7.1 (Bootstrapping by hand).
Suppose the market quotes a one year deposit at , a two year annual par swap at , and a three year annual par swap at , all with and annual fixed payments.
The deposit gives the first discount factor directly:
The two year swap is at par, so by (7.3) with ,
The three year swap then gives, with ,
Reading off the continuously compounded zero rates and the simply compounded one year forward rates between the nodes,
| 1y | 2y | 3y | |
|---|---|---|---|
| forward over the year to |
Notice how much further the forwards travel. Over three years the zero rate falls by basis points and the forward rate by , nearly twice as far. This is not an accident of these numbers. The zero rate is an average of the forwards up to , and an average always moves less than the thing being averaged, so a curve that slopes gently in zero space slopes sharply in forward space. Since the forwards are what a product actually fixes on, and the zeros are what one is tempted to draw and interpolate, this is a warning about what comes next.
Exercise (Forwards as the derivative of the zero curve).
Show that , and deduce that a zero curve with a maximum at has , with the forward curve crossing the zero curve there. Confirm on the example above that a falling zero curve forces the forwards below it.
In practice one does not literally peel the instruments off one at a time. The instruments overlap, their dates do not line up, and the front end has effects a strict ordering cannot express. What is done instead is to set up a global solve: choose a set of curve nodes and an interpolation scheme, and find the node values that reprice every quoted instrument simultaneously. The bootstrap above is the special case in which the system happens to be triangular.
Interpolation is a modelling choice
Whatever the instruments are, there are finitely many of them and infinitely many dates, so the curve between the nodes has to be interpolated, and the choice is not innocent.
Suppose we interpolate linearly in the continuously compounded zero rate. Then on a segment between nodes at and ,
and since , the instantaneous forward rate is
This is piecewise linear in but discontinuous at every node, because jumps there while does not. So a perfectly reasonable looking zero curve, smooth to the eye, implies a forward curve with a jump at every instrument in the bootstrap. Every product that fixes between nodes prices off those forwards.
The general lesson is the one already visible in the worked example: the forward rate is a derivative of the curve, so it is one degree less smooth than whatever we chose to interpolate. Interpolating linearly in makes piecewise constant, hence a step function. Interpolating in the instantaneous forwards themselves makes them as smooth as we like but gives up exact locality — moving one quote moves the curve everywhere. Monotone convex schemes, which the next remark describes, are built to keep forwards continuous while preventing the overshoot a naive interpolation through the forwards produces.
Remark (What a monotone convex scheme is).
It is Hagan and West’s scheme, and it is the standard answer to the failure the figure below shows.
Start from what the bootstrap actually determines. It does not pin the instantaneous forward at any single date; it pins the average forward across each bucket between adjacent nodes, since that average is what discounts the cashflows in that bucket. Call those the discrete forwards on . Any interpolation that reprices the quotes must satisfy
for every bucket — the area under the forward curve over each bucket is fixed, however the curve is shaped inside it. A scheme with this property is called conserving, and it is the reason the construction reprices by design rather than by iteration.
The scheme then proceeds in two passes:
-
Input: the discrete forwards on each bucket , as the bootstrap left them.
-
1.
Node values. For each interior node , interpolate between the two buckets that meet there,
weighting each bucket by the length of the other one, so the nearer bucket counts for more. At the two ends there is only one bucket, and and are collared to it.
-
2.
A quadratic on each bucket. On fit the quadratic through and whose integral is . Three conditions, three coefficients, one answer — and the area condition is what makes the scheme conserving, so the quotes are repriced by construction rather than by a solver.
-
3.
Check the range. The quadratic overshoots when a node value sits too far from the bucket average it belongs to. Written in terms of
the curve stays inside the range its own inputs set exactly when falls in a particular region of the plane, and leaves it otherwise.
-
4.
Repair, by case. Where it leaves, replace the quadratic on that bucket with a piecewise quadratic that flattens: it holds one node value across part of the bucket and moves over the rest, with the split point chosen to preserve the area. Which of a handful of cases applies is decided by the signs and relative sizes of and , and every case preserves the area and stays monotone between the node values.
-
Output: a forward curve that is continuous, reprices every quote exactly, stays inside the range its neighbours set, and is positive wherever the inputs are.
The area condition in step two is the whole reason no iteration is needed to reprice — a conserving scheme reprices by algebra. And the case selection in step four is where the scheme stops being linear, since which case applies depends on the data.