Free sample chapter from FRM Level I: Valuation Models.
Chapter 1: Pricing Conventions, Discounting, Arbitrage and Interest Rates
Chapter 1: Pricing Conventions, Discounting, Arbitrage and Interest Rates
Financial Markets and Products II priced Ravensmoor's $350 million government book — one five-year Treasury paying 4.00% twice a year — at 100.9096 per 100 of face value, by discounting each cash flow off the bank's zero curve. That chapter used the curve. This one asks what the curve is, why a bond's price must be the one it gives, and what else the same curve can tell us.
The answer to the second question is the foundation of everything in this course: a bond is a portfolio of zero-coupon bonds, and two portfolios with identical cash flows must have the same price. If they did not, a trader could buy the cheaper, sell the dearer and lock in a profit with no risk. Ravensmoor's bond can be split into eleven separate Treasury zero-coupon securities — STRIPS — and their prices add up to exactly 100.9096.
From one table of discount factors this chapter then reads every kind of interest rate a fixed-income market quotes:
- Spot rates, the yields on zero-coupon bonds, from 3.02% at six months to 3.82% at five years.
- Forward rates, the rates the curve locks in for future periods, rising from 3.00% to 4.07% before dipping at the long end.
- Par rates, the coupons at which new bonds would sell at 100: 3.7993% at five years — which is also the fixed rate of a five-year interest rate swap on the same curve.
- 18.1309 + 82.7787 Coupon STRIPS + principal STRIP (= 100.9096, the government book's price)
- 0.2043 Arbitrage profit per 100 (a bond quoted below its replicating portfolio)
- 3.7993% Five-year par rate (the coupon that prices at 100, and the swap rate)
Learning Objectives
Learning objectives
- Price fixed cash flows from discount factors, and explain the law of one price by arbitrage
- Copy one bond's payments with a portfolio of others, and profit when the two are priced apart
- Compare Treasury coupon bonds with STRIPS, and principal STRIPS with coupon STRIPS
- Compute accrued interest and dirty prices under the main day-count conventions
- Convert between compounding frequencies and measure their effect on value
- Compute discount factors, forward rates and par rates from spot rates, and relate the three curves
- Explain how time to maturity affects a bond's price and how curve trades express a view on slope
- Show why a newly agreed swap's fixed rate is a par coupon
1.1 Discount Factors and the Law of One Price
Discount factor The price today of $1 to be received with certainty at a future date , written . Viewed as a function of , it is the discount function.
A discount factor turns any certain future cash flow into its present value, and back again:
Discount factors are less than 1 for any future date, because a dollar later is worth less than a dollar now, and they fall with maturity. Ravensmoor's curve, from Financial Markets and Products II:
| Maturity (years) | 0.5 | 1.0 | 1.5 | 2.0 | 2.5 | 3.0 | 3.5 | 4.0 | 4.5 | 5.0 |
|---|---|---|---|---|---|---|---|---|---|---|
| Discount factor | 0.985112 | 0.968507 | 0.950992 | 0.933327 | 0.915532 | 0.897628 | 0.879765 | 0.862086 | 0.844720 | 0.827787 |
A bond with several cash flows is priced by applying each date's discount factor to that date's payment and adding:
The law of one price
Law of one price Two securities, or portfolios, that pay exactly the same cash flows at exactly the same times must have the same price.
The argument is an arbitrage argument. If two portfolios with identical cash flows had different prices, an investor could buy the cheaper and sell the dearer. Every future cash flow received on the long side would exactly meet the cash flow owed on the short side, so the investor would keep the price difference today with no risk and no further obligation. Traders seek out such opportunities, and their buying and selling pushes the two prices together until the difference disappears, or shrinks to less than the costs of the trade.
Applied to bonds, the law of one price says that every bond's price must equal the sum of its cash flows times the market's discount factors. Discount factors are therefore not an assumption made by an analyst; they are implied by the prices of traded bonds, and a bond that disagrees with them is mispriced relative to the others.
1.2 Arbitrage and Replication
Arbitrage A trading strategy that requires no net investment, has no chance of loss, and has a positive chance of profit. In fixed income, it usually means buying a security and selling a portfolio with the same cash flows for more, or the reverse.
To test whether a bond is fairly priced, build a replicating portfolio: a combination of other securities whose cash flows match the bond's on every date. Work backward from the last cash flow, because each later security also pays earlier coupons that the earlier securities must then offset.
Worked Problem — Replicating a One-Year Bond
Problem. Two Treasury securities are available, both priced off Ravensmoor's curve: a six-month bill paying 100 at six months (price 98.5112), and a one-year 6% semiannual bond paying 3 at six months and 103 at one year (price 102.7115). A one-year 2% semiannual bond, which pays 1 at six months and 101 at one year, is quoted at 98.60. Build a portfolio of the bill and the 6% bond that replicates the 2% bond, and determine whether there is an arbitrage.
Solution. Step 1 — match the last cash flow. Only the 6% bond pays at one year. To receive 101 there, hold units of it.
Step 2 — match the earlier cash flow. That position also pays at six months, but the 2% bond pays only 1. Hold units of the bill so that :
a short position of 0.019417 units of the bill.
Step 3 — the cost of the replica.
That product uses the holdings rounded to six decimals. Carried at full precision, as the keystrokes do by storing them, the replica costs 98.8043, and that is the figure used from here on.
Step 4 — compare. The replica costs 98.8043 and pays exactly what the 2% bond pays; the 2% bond is quoted at 98.60. Buy the 2% bond and sell the replicating portfolio: receive 98.8043, pay 98.60, and lock in 0.2043 per 100 of face value today. Every later cash flow is matched: the bond's coupons and principal pay what the short replica owes.
BA II Plus keystrokes: The Replicating Portfolio — Target pays 1 and 101; the 6% bond pays 3 and 103 (price 102.711514); the bill pays 100 (price 98.511194)
| Keys | Display | Note |
|---|---|---|
| 101 ÷ 103 = STO 1 | → 0.980583 | units of the 6% bond |
| × 3 = +/- + 1 = ÷ 100 = STO 2 | → -0.019417 | units of the bill (short) |
| RCL 1 × 102.711514 = STO 3 | → 100.717116 | cost of the bond leg |
| RCL 2 × 98.511194 + RCL 3 = | → 98.804277 | cost of the replica |
| - 98.6 = | → 0.204277 | arbitrage profit per 100 |
Validation: the replicating portfolio and the arbitrage
import numpy as np
d1, d2 = np.exp(-0.030 * 0.5), np.exp(-0.032 * 1.0) # six-month and one-year discount factors
bill = 100 * d1 # six-month bill
bond6 = 3 * d1 + 103 * d2 # one-year 6% bond
target = 1 * d1 + 101 * d2 # one-year 2% bond, fair value
x = 101 / 103 # match the one-year cash flow
y = (1 - 3 * x) / 100 # then the six-month cash flow
print(f"hold {x:.6f} of the 6% bond and {y:.6f} of the bill: cost {x * bond6 + y * bill:.4f}")
print(f"fair value {target:.4f}; quoted 98.60 -> buy it, sell the replica, lock in {target - 98.60:.4f}")
# Output:
# hold 0.980583 of the 6% bond and -0.019417 of the bill: cost 98.8043
# fair value 98.8043; quoted 98.60 -> buy it, sell the replica, lock in 0.2043
In practice, apparent arbitrages are usually smaller than the costs of executing them — bid-ask spreads, financing and the cost of borrowing a bond to short it — or reflect something the cash flows do not show, such as a bond's liquidity or its value as collateral. The law of one price holds up to these frictions, not beyond them.
1.3 Treasury Coupon Bonds and STRIPS
A US Treasury note or bond pays a fixed coupon every six months and its face value at maturity. Under the Treasury's STRIPS program (Separate Trading of Registered Interest and Principal of Securities), a dealer can ask for an eligible coupon security to be split into its individual payments, each of which then trades as a separate zero-coupon security:
- Coupon STRIPS (C-STRIPS) — one for each coupon payment.
- Principal STRIPS (P-STRIPS) — one for the face value at maturity.
The process also runs in reverse: a dealer who assembles every coupon STRIP and the principal STRIP of a particular note can reconstitute the original bond. STRIPS and reconstitution are what keep a coupon bond's price tied to the prices of its pieces. If the pieces were worth more than the whole, dealers would buy bonds and strip them; if less, they would buy STRIPS and reconstitute.
Worked Problem — The Government Book as STRIPS
Problem. Ravensmoor's five-year 4.00% Treasury pays 2.00 every six months and 100 at five years. Using the discount factors in §1.1, value its coupon STRIPS and its principal STRIP per 100 of face value, and confirm that they add up to the bond's price.
Solution. Each coupon STRIP is worth : from at six months down to at five years. The ten together are worth 18.1309.
The principal STRIP is worth 82.7787.
Together: 100.9096, the bond's price. Ravensmoor's $350 million position holds about $346.85 million of face value — and could, in principle, be stripped into $346.85 million of five-year P-STRIPS and $6.94 million face of C-STRIPS on each of ten dates.
BA II Plus keystrokes: The Five-Year Discount Factor and Principal STRIP — Five-year zero rate 3.78%, continuously compounded
| Keys | Display | Note |
|---|---|---|
| 0.0378 × 5 = +/- 2nd eˣ | → 0.827787 | five-year discount factor |
| × 100 = | → 82.7787 | principal STRIP per 100 |
Validation: discount factors and STRIPS
import numpy as np
t = np.arange(1, 11) * 0.5
z = np.array([3.00, 3.20, 3.35, 3.45, 3.53, 3.60, 3.66, 3.71, 3.75, 3.78]) / 100
d = np.exp(-z * t) # discount factors
cash = np.full(10, 2.0)
cash[-1] += 100 # five-year 4.00% semiannual bond
print("discount factors:", " ".join(f"{x:.6f}" for x in d))
print(f"coupon STRIPS {(2 * d).sum():.4f} + principal STRIP {100 * d[-1]:.4f} = {(cash * d).sum():.4f}")
# Output:
# discount factors: 0.985112 0.968507 0.950992 0.933327 0.915532 0.897628 0.879765 0.862086 0.844720 0.827787
# coupon STRIPS 18.1309 + principal STRIP 82.7787 = 100.9096
P-STRIPS and C-STRIPS
A P-STRIP and a C-STRIP maturing on the same date pay the same $100 at the same time, so by the law of one price they should trade at the same price. In practice they can differ slightly, for two reasons:
- Fungibility. C-STRIPS maturing on a given date are interchangeable regardless of which bond they came from. A P-STRIP is tied to one particular note or bond, and is the only piece that can be used to reconstitute it.
- Reconstitution value and liquidity. Because a P-STRIP is needed to rebuild its specific bond, it can carry a premium when that bond is in demand, for instance as the cheapest bond to deliver into a futures contract or when it trades special in the repo market.
These differences are small, but they are a real example of the frictions that limit the law of one price.
1.4 Clean and Dirty Prices, Accrued Interest and Day Counts
Between coupon dates, a bond's seller has earned part of the next coupon. The buyer will receive the full coupon on the next payment date, so the buyer compensates the seller for the part already earned: accrued interest.
Clean and dirty price The clean (or flat, or quoted) price excludes accrued interest. The dirty (or full, or invoice) price includes it, and is what the buyer actually pays: dirty price = clean price + accrued interest.
US Treasury prices are quoted in 32nds of a point: 98-16 means per 100.
Markets quote clean prices because dirty prices jump. A dirty price rises steadily as accrued interest builds and then falls by the coupon amount on each payment date, even if nothing about the bond's value has changed. The clean price strips out that saw-tooth pattern and moves only when yields move or the bond pulls toward par.
Day-count conventions
How "days since last coupon" and "days in the period" are counted depends on the market:
| Convention | How it counts | Typical use |
|---|---|---|
| Actual/actual | Actual days elapsed over actual days in the coupon period | US Treasury notes and bonds |
| 30/360 | Every month treated as 30 days and every year as 360 | US corporate and municipal bonds |
| Actual/360 | Actual days elapsed over a 360-day year | Money-market instruments, T-bills, SOFR, repo |
Under 30/360, a period from 15 March to 15 September is always 180 days, and from 15 March to 26 May is days. Under actual/360, a full year of interest is paid on 365 days at a rate that assumes 360, so the investor earns slightly more than the quoted rate.
Worked Problem — Accrued Interest on the Government Book
Problem. Ravensmoor sells $10 million face value of its 4.00% Treasury for settlement 73 days after the last coupon date, in a coupon period of 182 days. The quoted price is 100.50. Treasuries use actual/actual. Compute the accrued interest, the dirty price per 100 and the cash the buyer pays.
Solution. The semiannual coupon is 2.00 per 100, so
The dirty price is 101.3022 per 100, and the buyer pays $10,130,220. Of that, $80,220 is the coupon interest Ravensmoor earned while it held the bond.
BA II Plus keystrokes: Accrued Interest and Dirty Price — Coupon 2.00 per period; 73 of 182 days elapsed; clean price 100.50
| Keys | Display | Note |
|---|---|---|
| 2 × 73 ÷ 182 = | → 0.802198 | accrued interest per 100 |
| + 100.5 = | → 101.302198 | dirty price per 100 |
1.5 Compounding Frequency
Financial Markets and Products II showed that one rate can be stated at different compounding frequencies. Investing $1 at a rate compounded times a year for years, and at a continuously compounded rate , gives
Two rates are equivalent if they give the same terminal value:
For a fixed quoted rate, more frequent compounding means a higher future value and a lower present value. $100 invested for five years at 4% grows to $121.67 with annual compounding, $121.90 semiannually, $122.10 monthly and $122.14 continuously. Equivalently, a bond's value falls as the compounding frequency of the rate used to discount it rises, because the same quoted rate is in fact a larger rate.
The practical rule is to discount a cash flow with a rate quoted on the same basis as the curve it came from — and to convert before mixing. Ravensmoor's curve is continuously compounded; US Treasury yields are quoted semiannually.
Worked Problem — Converting the Five-Year Rate
Problem. Ravensmoor's five-year zero rate is 3.78% with continuous compounding. What is the equivalent rate with semiannual compounding, and with annual compounding?
Solution.
All three describe the same discount factor, 0.827787. A Treasury trader quoting the five-year zero would say 3.8159%.
BA II Plus keystrokes: Continuous to Semiannual — R_c = 3.78%
| Keys | Display | Note |
|---|---|---|
| 0.0378 ÷ 2 = 2nd eˣ | → 1.019080 | growth over six months |
| - 1 = × 2 = | → 0.038159 | semiannually compounded rate |
1.6 Spot Rates and Discount Factors
Spot rate The yield on a zero-coupon bond maturing at a given date: the single rate that discounts a cash flow at that date to its present value. Also called the zero rate. Each maturity has its own.
A spot rate and a discount factor contain exactly the same information:
Ravensmoor's spot rates, restated with semiannual compounding to match Treasury quotation, run from 3.0226% at six months to 3.8159% at five years. Spot rates are found by bootstrapping — solving for the discount factor at each maturity in turn from the prices of coupon bonds, as Financial Markets and Products II did — or read directly from STRIPS prices: a five-year STRIP priced at 82.7787 implies a five-year discount factor of 0.827787.
1.7 Forward Rates
Forward rate The rate, agreed today, for borrowing or lending over a future period. It is implied by the spot curve: investing to a later date must give the same result as investing to an earlier date and then rolling over at the forward rate.
With continuous compounding the forward rate for the period from to is
and in terms of discount factors, . With other compounding, the same no-arbitrage logic gives, for example, with annual rates.
Worked Problem — A Forward Rate on Ravensmoor's Curve
Problem. Ravensmoor's two-year and three-year zero rates are 3.45% and 3.60%, continuously compounded. What one-year rate does the curve imply for borrowing from year 2 to year 3?
Solution.
The forward rate is above both spot rates. When spot rates rise with maturity, the forward rate for a later period must be higher still, because it alone has to lift the longer average.
BA II Plus keystrokes: Forward Rate (Chain Mode Safe) — R(2) = 3.45%, R(3) = 3.60%, continuous
| Keys | Display | Note |
|---|---|---|
| 0.0345 × 2 = STO 1 | → 0.069 | two-year term |
| 0.036 × 3 - RCL 1 = | → 0.039 | the forward rate for year 3 |
The curve's six-month forward rates rise from 3.00% to 4.07% for the period from four to four and a half years, then dip to 4.05% for the last six months. A forward rate below the one before it means the spot curve is bending over: its slope is starting to flatten.
1.8 Par Rates, and How Spot, Forward and Par Relate
Par rate The coupon rate at which a bond of a given maturity would be priced at exactly its face value. It is the yield to maturity of a bond that trades at par.
For a bond paying a semiannual coupon for periods to be worth 100,
The sum of the discount factors in the denominator is the present value of receiving 1 every six months for the life of the bond — the semiannual annuity factor. Per $1 a year paid semiannually, it is half that sum: on Ravensmoor's curve, 9.065454 ÷ 2 = 4.5327.
Worked Problem — The Five-Year Par Rate
Problem. Using Ravensmoor's ten discount factors in §1.1, find the five-year par rate.
Solution. First add the ten discount factors. On the calculator this is ten plain additions, which chain mode handles without any need to store intermediates: . (The unrounded factors sum to 9.065454; the difference is rounding in the sixth decimal and does not reach the par rate.)
A new five-year Treasury would need a coupon of 3.7993% to be priced at 100. Ravensmoor's 4.00% bond pays more than that, which is why it trades above par.
BA II Plus keystrokes: Par Rate From Discount Factors — The ten discount factors of §1.1; d(5) = 0.827787
| Keys | Display | Note |
|---|---|---|
| 0.985112 + 0.968507 + 0.950992 + 0.933327 + 0.915532 + 0.897628 + 0.879765 + 0.862086 + 0.84472 + 0.827787 = STO 1 | → 9.065456 | sum of the discount factors |
| 1 - 0.827787 = × 2 = | → 0.344426 | twice one minus the last discount factor |
| ÷ RCL 1 = | → 0.037993 | par rate, 3.7993% |
How the three curves relate
| Maturity | 1 year | 2 years | 3 years | 5 years |
|---|---|---|---|---|
| Spot rate (semiannual) | 3.2257% | 3.4799% | 3.6326% | 3.8159% |
| Par rate | 3.2241% | 3.4744% | 3.6231% | 3.7993% |
| Six-month forward ending then | 3.43% | 3.79% | 3.99% | 4.09% |
(The forward rates in the table are restated semiannually; their continuous values are those in §1.7.)
The pattern is general:
- When the spot curve slopes upward, forward rates lie above spot rates, and spot rates lie above par rates. A par bond's yield is a weighted average of the spot rates for all its cash flows, and the early coupons are discounted at the lower short rates, so the par rate sits below the spot rate for the final maturity.
- When the spot curve slopes downward, the order reverses: forward rates below spot rates, and spot rates below par rates.
- When the curve is flat, all three are equal.
The gaps are small at short maturities and widen as the coupons' weight in the bond grows.
Validation: compounding, forward rates and par rates
import numpy as np
t = np.arange(1, 11) * 0.5
z = np.array([3.00, 3.20, 3.35, 3.45, 3.53, 3.60, 3.66, 3.71, 3.75, 3.78]) / 100
d = np.exp(-z * t)
r = z[-1]
print(f"3.78% continuous = {2 * (np.exp(r / 2) - 1):.4%} semiannual = {np.exp(r) - 1:.4%} annual")
fwd = (z * t - np.concatenate([[0], z[:-1] * t[:-1]])) / 0.5
print("six-month forwards:", " ".join(f"{f:.2%}" for f in fwd))
print(f"one-year forward from 2 to 3 years: {z[5] * 3 - z[3] * 2:.4%}")
for n in (2, 4, 6, 10):
print(f"{n / 2:.0f}-year par rate: {2 * (1 - d[n - 1]) / d[:n].sum():.4%}")
# Output:
# 3.78% continuous = 3.8159% semiannual = 3.8524% annual
# six-month forwards: 3.00% 3.40% 3.65% 3.75% 3.85% 3.95% 4.02% 4.06% 4.07% 4.05%
# one-year forward from 2 to 3 years: 3.9000%
# 1-year par rate: 3.2241%
# 2-year par rate: 3.4744%
# 3-year par rate: 3.6231%
# 5-year par rate: 3.7993%
1.9 Maturity and Price
Hold a bond's yield fixed and let time pass. A bond's price at a given yield depends on how many coupons remain, so its price changes even when the market does not:
- A premium bond — coupon above its yield — falls in price as maturity approaches, because the excess coupon has fewer periods left to be worth anything.
- A discount bond — coupon below its yield — rises in price as maturity approaches.
- Both converge to par at maturity. This is the pull to par.
At a constant yield of 3.7985%, Ravensmoor's 4.00% bond is worth 100.9098 with five years left, 100.5663 with three and 100.1959 with one. A 3.00% bond at the same yield rises from 96.3947 to 97.7560 to 99.2237. (The five-year figure is 0.0002 above the book's price of 100.9096 only because the yield is rounded to four decimals; at the unrounded 3.79855% it is exactly 100.9096.)
The same logic answers a related question: how does a bond's price depend on its maturity, holding coupon and yield fixed? For a premium bond, a longer maturity means a higher price, because the excess coupon is received for longer. For a discount bond, a longer maturity means a lower price. A bond whose coupon equals its yield is priced at par whatever its maturity.
In reality, yields do not stay fixed while time passes, and the return a bond earns over a period combines this pull to par with movement along, and of, the curve. Chapter 2 separates the pieces.
1.10 Flattening and Steepening Trades
The slope of the curve is the difference between a long-term rate and a short-term one, often the 10-year rate minus the 2-year rate. The curve steepens when that difference widens and flattens when it narrows. Either can happen with rates rising or falling:
| Short rates | Long rates | |
|---|---|---|
| Bull steepening | Fall more | Fall less |
| Bear steepening | Rise less | Rise more |
| Bull flattening | Fall less | Fall more |
| Bear flattening | Rise more | Rise less |
A trader who expects a change in slope but has no view on the level of rates builds a DV01-neutral spread trade: positions in a short and a long bond sized so that a parallel move in rates leaves the portfolio's value unchanged.
- A steepener profits if the curve steepens: buy the short maturity and sell the long maturity, each sized to the same DV01.
- A flattener profits if the curve flattens: sell the short maturity and buy the long maturity.
The DV01 — the dollar value of a one-basis-point change in yield — is the subject of Chapter 3. Here it is enough that a longer bond's price moves more for each basis point. Per 100 of face value, with the change in yield as a decimal and the resulting change in price,
so a bond whose price falls by 0.045 per 100 when its yield rises one basis point () has a DV01 of 0.045. The validation below bumps each yield one basis point down and one up, , and takes half the price difference.
Worked Problem — A Two-Year/Five-Year Steepener
Problem. Two par bonds sit on Ravensmoor's curve: a two-year bond with a 3.4744% coupon and a five-year bond with a 3.7993% coupon. Measured by moving each bond's own yield one basis point down and up, the two-year bond has a DV01 of 0.019161 per 100 face and the five-year bond a DV01 of 0.045150. A trader expects the curve to steepen and shorts $10 million face of the five-year bond. (a) What face of the two-year bond makes the trade DV01-neutral? (b) What does the trade earn if two-year yields fall 10 basis points and five-year yields rise 5?
Solution. (a) The five-year position has a DV01 of , or $4,515 per basis point. Matching it with the two-year bond needs
about $23.56 million face.
(b) The long two-year position gains , or $45,150, as its yield falls 10 basis points. The short five-year position gains , or $22,575, as its yield rises 5. The trade earns about $67,725. In a parallel shift, the two legs offset to first order, and the trade is indifferent to the level of rates.
BA II Plus keystrokes: Sizing the Steepener — DV01 per 100: two-year 0.019161, five-year 0.045150; short $10M five-year
| Keys | Display | Note |
|---|---|---|
| 10 × 0.04515 ÷ 0.019161 = | → 23.563488 | two-year face, $M |
Validation: sizing the steepener
def price(c, y, n): # semiannual bond, coupon and yield in %
return sum(c / 2 / (1 + y / 200) ** k for k in range(1, n + 1)) + 100 / (1 + y / 200) ** n
def dv01(c, n): # par bond: priced at its own coupon
return (price(c, c - 0.01, n) - price(c, c + 0.01, n)) / 2
d2, d5 = dv01(3.4744, 4), dv01(3.7993, 10)
face2 = 10e6 * d5 / d2
print(f"DV01 per 100: two-year {d2:.6f}, five-year {d5:.6f}")
print(f"buy {face2 / 1e6:.4f}M two-year against 10M five-year")
pnl = face2 / 100 * d2 * 10 + 10e6 / 100 * d5 * 5 # 2y yield -10bp, 5y yield +5bp
print(f"steepening P&L: {pnl:,.0f}")
# Output:
# DV01 per 100: two-year 0.019161, five-year 0.045150
# buy 23.5637M two-year against 10M five-year
# steepening P&L: 67,724
The validation's $67,724 differs from the hand figure by a dollar because it uses unrounded DV01s. Two caveats apply to any such trade: a DV01-neutral position is neutral only to parallel moves and only to first order, and it earns or pays the difference in carry between its two legs while it is held. Chapter 4 shows how to measure exposure to every point on the curve, not just two.
1.11 Swaps and the Par Swap Curve
In a plain-vanilla interest rate swap, two parties exchange payments on a notional principal: one pays a fixed rate, the other a floating rate — today usually compounded SOFR — for the life of the swap. No principal changes hands. The fixed rate is set so that the swap is worth zero when it is agreed.
The floating side of a swap can be valued simply: a floating-rate note that resets to the market rate each period is worth par on every reset date. So a swap's floating leg plus a notional principal at maturity is worth par, and for the swap to be worth zero, the fixed leg plus the same notional must also be worth par. That is exactly the definition of a par bond.
The swap rate for a given maturity is the par rate of the swap market's discount curve. If the swap market's discount factors were Ravensmoor's Treasury curve, the five-year swap rate with semiannual payments would be 3.7993%. (USD SOFR swaps conventionally pay the fixed leg annually; semiannual payments are a simplification here, chosen to match the Treasury bond.) In practice the swap curve is built from SOFR-based swaps and sits a little away from the Treasury curve, and the difference between the two — the swap spread — reflects the credit, liquidity and funding differences between Treasuries and swaps. But the method is the same: the market quotes swap rates, the swap rates are par rates, and bootstrapping them gives the swap discount curve used to value every other swap and derivative.
Because swap rates are quoted directly for a full range of maturities and the market is extremely liquid, the par swap curve is often the most reliable source of a term structure, and the swap curve and the Treasury curve are the two benchmark curves of the fixed-income market.
1.12 Putting It All Together: One Curve, Every Rate
Ravensmoor's ten discount factors were inherited from Financial Markets and Products II. In this chapter they have produced:
| From the discount factors | Value |
|---|---|
| Government book price | 100.9096 = 18.1309 coupon STRIPS + 82.7787 principal STRIP |
| Five-year spot rate | 3.78% continuous = 3.8159% semiannual = 3.8524% annual |
| Forward rate, year 2 to year 3 | 3.90% |
| Five-year par rate and swap rate | 3.7993% |
| Fair value of a one-year 2% bond | 98.8043 — so a quote of 98.60 is an arbitrage of 0.2043 |
| Two-year/five-year steepener | $23.56 million long against $10 million short; +$67,725 if the curve steepens 15 basis points |
Every one of these follows from the law of one price. None depends on a model of how rates will behave; they follow from the requirement that identical cash flows have identical prices. That is why discount factors come first in fixed-income valuation, and why every later chapter of this course — returns, durations, key rates, and even the option models — begins from them.
Rates Are Prices in Disguise
Spot, forward, par and swap rates, and the yield of a bond quoted on any compounding basis, are all different ways of expressing the same discount factors. When two of them appear to disagree, either they are quoted on different bases or one of them is mispriced. Converting everything back to discount factors is the fastest way to tell which.
Chapter Summary
What You Learned in Chapter 1
- A discount factor is the price today of $1 at time ; a bond's price is . The law of one price says identical cash flows have identical prices, enforced by arbitrage.
- Replication: match the last cash flow first and work backward. A one-year 2% bond replicated by 0.980583 of a one-year 6% bond and −0.019417 of a six-month bill costs 98.8043; quoted at 98.60, it is an arbitrage of 0.2043.
- STRIPS split Treasuries into C-STRIPS (coupons; fungible across bonds) and P-STRIPS (principal; tied to one bond and needed to reconstitute it). The government book is 18.1309 of coupon STRIPS and 82.7787 of principal STRIP: 100.9096.
- Dirty price = clean price + accrued interest; markets quote clean prices. Day counts: actual/actual for Treasuries, 30/360 for corporates, actual/360 for the money market. 73 of 182 days on a 4% bond: accrued 0.8022.
- Compounding: . More frequent compounding of the same quoted rate raises future value and lowers present value. 3.78% continuous = 3.8159% semiannual = 3.8524% annual.
- Spot rates are zero-coupon yields and carry the same information as discount factors. Forward rates are implied by the spot curve: ; year 2 to 3 on Ravensmoor's curve, 3.90%.
- Par rates: ; Ravensmoor's five-year par rate is 3.7993%. On an upward-sloping curve, forward > spot > par; on a downward-sloping one, the order reverses.
- With yield unchanged, premium bonds fall and discount bonds rise toward par as maturity approaches.
- Steepening and flattening change the curve's slope; a DV01-neutral steepener buys the short end and sells the long end. $23.56 million two-year against $10 million five-year earns $67,725 on a 15-basis-point steepening.
- A swap rate is a par rate on the swap market's discount curve, because a swap's floating leg is worth par; the par swap curve is a benchmark term structure in its own right.
What's Next
This chapter priced bonds. Chapter 2 asks what they earn. A bond's yield to maturity compresses the whole curve into one number, its spread measures what the market charges above a benchmark, and its realised return over a holding period depends on coupons, reinvestment and how prices move. Ravensmoor's government book earns 2.0194% over the next six months if the curve stays where it is, and exactly the six-month rate of 1.5113% if the forward rates of this chapter come true — and the difference has a name.
Concept Checks
-
Which statement best describes the law of one price as it applies to bonds?
- Every bond with the same maturity must have the same price, regardless of its coupon or its issuer's credit
- Two securities or portfolios with identical cash flows at identical times must have the same price
- A bond's price must equal its face value at every date before maturity
- All bonds issued by the same government must trade at the same yield to maturity
-
The two-year spot rate is 4.00% with annual compounding. What is the two-year discount factor?
- 0.9615
- 0.9200
- 0.9246
- 0.9231
-
Which statement about principal STRIPS and coupon STRIPS maturing on the same date is correct?
- A principal STRIP is tied to a specific bond and is needed to reconstitute it, while coupon STRIPS maturing on the same date are interchangeable
- Coupon STRIPS always trade at a large premium to principal STRIPS of the same date, because they are created from interest payments rather than from principal
- Principal STRIPS pay a coupon every six months, while coupon STRIPS pay only at maturity
- Principal and coupon STRIPS cannot both exist for the same maturity date
-
Why do bond markets usually quote clean prices rather than dirty prices?
- Because the clean price is the amount the buyer actually pays at settlement
- Because the clean price is the present value of the remaining cash flows, while the dirty price overstates it
- Because accrued interest is paid separately by the issuer to the seller, rather than by the buyer at settlement
- Because the dirty price jumps on each coupon date while the clean price changes only with yields and time
-
Which day-count convention is standard for US Treasury notes and bonds?
- Actual/360
- 30/360
- Actual/actual
- Actual/365 with a fixed 365-day year in every case
-
A rate is quoted at 5% a year. Holding the quoted rate fixed, what happens to the present value of a cash flow in three years as the compounding frequency increases?
- It falls, because more frequent compounding makes the effective discount rate larger
- It rises, because more frequent compounding brings the cash flow closer to today
- It is unchanged, because the quoted rate is unchanged
- It falls for annual and semiannual compounding, but rises once the compounding becomes continuous
-
The spot curve slopes upward. How do spot, forward and par rates at the same maturity compare?
- Par rates exceed spot rates, which exceed forward rates
- All three are equal, because they are derived from the same discount factors
- Forward rates exceed spot rates, which exceed par rates
- Spot rates exceed forward rates, which exceed par rates
-
A bond's coupon is above its yield to maturity. If its yield does not change, what happens to its price as time passes?
- It rises toward a value above par, because the coupon continues to exceed the yield
- It falls toward par, because the excess coupon is received for fewer remaining periods
- It stays constant, because the yield has not changed
- It falls below par before recovering to par at maturity
-
A trader expects the yield curve to flatten but has no view on the overall level of rates. Which position expresses that view?
- Buy both a two-year and a ten-year bond in equal face amounts
- Buy the two-year bond and sell the ten-year bond, in equal face amounts
- Sell the ten-year bond and buy the two-year bond, sized so the position has zero net DV01
- Sell the two-year bond and buy the ten-year bond, sized so the position has zero net DV01
-
Why is the fixed rate of a newly agreed interest rate swap equal to a par rate?
- Because the floating leg plus notional is worth par on a reset date, so the fixed leg plus notional must also be worth par
- Because regulators require every swap's fixed rate to equal the Treasury par yield of the same maturity on the trade date
- Because the fixed rate is chosen to equal the current overnight rate
- Because swaps exchange their notional principal at the start and the end
Exam-Style Practice
Ten standalone questions in the style of the FRM Level I exam. Allow 24 minutes — the exam's pace of 2.4 minutes a question.
Chapter 1 — Pricing Conventions, Discounting, Arbitrage and Interest Rates
-
The one-year and two-year discount factors are 0.97 and 0.94. What is the price of a two-year bond that pays an annual coupon of 5 and 100 at maturity?
- 103.40
- 103.55
- 106.70
- 110.00
-
A Treasury coupon bond is quoted at 101.20. The STRIPS into which its coupons and principal can be split have a combined market value of 101.55. Ignoring transaction costs, which strategy is an arbitrage, and what does it earn per 100 face?
- Buy the STRIPS, reconstitute the bond and sell it, earning 0.35
- Buy the bond and sell short the STRIPS without stripping it, earning 101.55
- Buy the bond, strip it and sell the STRIPS, earning 0.35
- No arbitrage exists, because the bond and the STRIPS are different securities
-
A US Treasury note with a 5% coupon, paid semiannually, is bought for settlement 60 days after its last coupon date, in a coupon period of 181 days. Its quoted price is 98.40. What is its dirty price per 100 face?
- 99.2333
- 100.0575
- 97.5713
- 99.2287
-
A rate is quoted as 6.00% with annual compounding. What is the equivalent rate with continuous compounding?
- 5.91%
- 5.83%
- 6.18%
- 6.00%
-
The two-year and three-year spot rates are 4.00% and 4.50%, both annually compounded. What is the one-year forward rate from year 2 to year 3?
- 5.50%
- 4.25%
- 5.51%
- 5.00%
-
The one-year and two-year discount factors are 0.97 and 0.93. What is the two-year par rate for a bond paying annual coupons?
- 3.70%
- 3.68%
- 3.50%
- 4.30%
-
A bond pays a 3% coupon and has a yield to maturity of 4%. If its yield stays at 4%, what happens to its price over the next year?
- It rises toward par, because the coupon shortfall applies to fewer remaining periods
- It falls further below par, because the coupon is below the yield
- It stays the same, because a bond's price depends only on its yield, and the yield has not changed
- It rises above par, because the coupon is paid during the year
-
A trader shorts $20 million face of a ten-year bond with a DV01 of 0.085 per 100 face, and wants a DV01-neutral steepener using a two-year bond with a DV01 of 0.019 per 100 face. What face amount of the two-year bond should the trader buy?
- $20.00 million
- $4.47 million
- $109.47 million
- $89.47 million
-
Swap discount factors for one, two and three years, with annual payments, are 0.97, 0.93 and 0.89. What is the three-year par swap rate?
- 3.96%
- 3.67%
- 3.94%
- 4.49%
-
A six-month Treasury bill pays 100 at six months. A one-year 8% Treasury, paying semiannually, pays 4 at six months and 104 at one year. Which portfolio of these two securities replicates a one-year 3% semiannual bond, which pays 1.5 at six months and 101.5 at one year?
- Hold 0.975962 of the 8% bond and sell short 0.024038 of the bill
- Hold 1.015000 of the 8% bond and sell short 0.025600 of the bill
- Hold 0.975962 of the 8% bond and buy 0.024038 of the bill
- Hold 0.975962 of the 8% bond and buy 0.015000 of the bill