Quantitative Finance · Book 2 · Markets

Markets II: Rates, FX and Credit

Markets II: Rates, FX and Credit · Markets

3Government Bonds

Two traders on a chat agree to trade USD 10 million of a ten-year note at a yield of 4.200%. When the tickets come back they differ by USD 47 351. Both priced the same note at the same yield on the same settlement date, and both are right: one booked the price quoted on the screen, 100-12+, and the other the amount that changes hands, which adds the coupon interest earned since the last payment date, forty-one days of a 4.25% coupon. The note is the simplest instrument in this book: a fixed schedule of payments from a government that borrows in its own currency. Everything about it, its quoted price, its yield, its sensitivity to rates, depends on conventions that are fixed by regulation and market practice and that any system touching it must get exactly right. This chapter sets them out and derives the risk measures on which the rest of the book rests.

3.1 Cash flows, day counts and accrued interest

Definition 3.1 (Coupon bond)

A fixed-coupon bond pays, per 100 of face value, a coupon of c/fc/f on each of ff dates a year and repays its face value, called par, at maturity. The coupon dates are generated backwards from the maturity date in steps of 12/f12/f months; if the maturity is the last day of a month, so is every coupon date.

Definition 3.2 (Day-count convention)

A day-count convention turns two dates into a fraction of a year. Actual/360 divides the actual number of days by 360; actual/365 fixed by 365; 30/360 counts every month as 30 days; actual/actual (ICMA) counts the actual days elapsed in a coupon period and divides by the actual days in that period, so every full period earns exactly c/fc/f.

Definition 3.3 (Accrued interest, clean and dirty price)

Between two coupon dates the seller of a bond has earned part of the next coupon, and the buyer pays it to her: this is accrued interest, A=cf (1−w)A = \frac{c}{f}\,(1 - w) under actual/actual, where ww is the fraction of the current period still to run. The dirty price (or full, or invoice price) is what changes hands; the clean price quoted on screens is the dirty price less accrued interest.

The market quotes clean prices because they do not jump on coupon dates (Figure 3.4): a clean price that moves means that the market moved. In the dollar market clean prices of notes and bonds are quoted in thirty-seconds of a point, so 100-12 is 100+12/32=100.375100 + 12/32 = 100.375, and a trailing plus adds a sixty-fourth: 100-12+ is 100.390625.

Example 3.4 (Forty-one days)

A note paying 4.25% semiannually on 15 February and 15 August settles on 25 September 2026. The current period runs 184 days, of which 41 have elapsed: A=2.125×41/184=0.473505A = 2.125 \times 41/184 = 0.473505 per 100, USD 4 735 per million, USD 47 351 on the trade of the opening paragraph.

A settlement between coupon dates. The seller is paid the fraction 1 - w of the coming coupon as accrued interest; the buyer receives the whole coupon. The street convention discounts each later flow over w, 1 + w, 2 + w, … periods.
Figure 3.1. A settlement between coupon dates. The seller is paid the fraction 1−w1 - w of the coming coupon as accrued interest; the buyer receives the whole coupon. The street convention discounts each later flow over ww, 1+w1 + w, 2+w2 + w, … periods.

As of September 2026 — Conventions of three sovereign markets

US Treasury notes and bonds: semiannual coupons on dates set by the maturity; each regular payment is exactly half the annual coupon; accrued interest on the actual days of the half-year; prices in 32nds of a point. UK gilts: semiannual coupons; actual/actual accrued interest since November 1998; ex-dividend seven business days before each payment, after which the buyer does not receive the coming coupon. German Bunds: issued at 7, 10, 15 or 30 years with a fixed annual coupon.

3.2 Price and yield

Definition 3.5 (Yield to maturity)

The yield to maturity yy of a bond with nn remaining coupons, settled at fraction ww of a period before the next one, is the rate, compounded ff times a year, that equates the dirty price with its discounted flows:

Pdirty  =  ∑k=0n−1c/f(1+y/f)k+w  +  100(1+y/f)n−1+w.P_{\text{dirty}} \;=\; \sum_{k=0}^{n-1} \frac{c/f}{(1 + y/f)^{k+w}} \;+\; \frac{100}{(1 + y/f)^{n-1+w}} .

Proposition 3.6 (Price and yield)

The dirty price is a strictly decreasing, strictly convex function of yy. On a coupon date (w=1w = 1 for the period just starting) the price is 100 if and only if y=c/100y = c/100.

Proof. Each term ak(1+y/f)−tka_k (1 + y/f)^{-t_k} with ak,tk>0a_k, t_k > 0 is strictly decreasing and strictly convex in yy, so is their sum. With w=1w = 1 and v=1/(1+y/f)v = 1/(1 + y/f) the price is cf∑k=1nvk+100vn\frac cf \sum_{k=1}^{n} v^k + 100 v^n; with y/f=c/(100f)y/f = c/(100 f) the annuity equals (1−vn)/(y/f)(1 - v^n)/(y/f) and the price is 100(1−vn)+100vn=100100(1 - v^n) + 100 v^n = 100. Uniqueness follows from monotonicity. ∎

Remark 3.7 (Two conventions for the fraction)

The formula above, which compounds over the fraction ww, is the market’s. The US Treasury’s own regulation, used to set auction prices, discounts the fractional period at simple interest, Pdirty(1+w y/f)=P_{\text{dirty}}(1 + w\,y/f) = value at the next coupon date. The two agree on coupon dates and differ by a few thousandths of a point between them. A system that reproduces the regulation’s worked examples and the market’s screens must implement both (Section 3.6).

As of September 2026 — US marketable debt

Outstanding on 31 August 2026: USD 31.8 trillion of marketable Treasury securities, of which bills 7.2 trillion, notes 16.2 trillion, bonds 5.5 trillion, inflation-protected securities 2.2 trillion and floating-rate notes 0.7 trillion.

3.3 Duration, DV01 and convexity

Definition 3.8 (Duration, DV01, convexity)

With flows aka_k at times tkt_k (in periods) and v=1/(1+y/f)v = 1/(1 + y/f), the Macaulay duration is the present-value weighted average time of the flows, D=1fP∑ktkakvtkD = \frac{1}{f P}\sum_k t_k a_k v^{t_k}, in years. The modified duration is Dmod=−1PdPdy=D/(1+y/f)D_{\mathrm{mod}} = -\frac1P \frac{dP}{dy} = D/(1 + y/f). The DV01 is the fall in price for a one-basis-point rise in yield, P Dmod×10−4P\,D_{\mathrm{mod}} \times 10^{-4} per 100, usually quoted per million of face. The convexity is C=1Pd2Pdy2\mathcal C = \frac1P \frac{d^2P}{dy^2}.

Proposition 3.9 (Second-order price change)

For a parallel change Δy\Delta y of the yield,

ΔPP  =  −Dmod Δy  +  12 C (Δy)2  +  O(Δy3),C  =  1f2P(1+y/f)2∑ktk(tk+1) akvtk.\frac{\Delta P}{P} \;=\; -D_{\mathrm{mod}}\,\Delta y \;+\; \tfrac12\,\mathcal C\,(\Delta y)^2 \;+\; O(\Delta y^3), \qquad \mathcal C \;=\; \frac{1}{f^2 P (1+y/f)^2}\sum_k t_k(t_k+1)\,a_k v^{t_k} .

Proof. Taylor’s formula in yy, with ddyvt=−tf vt+1\frac{d}{dy} v^{t} = -\frac{t}{f}\,v^{t+1} and d2dy2vt=t(t+1)f2 vt+2\frac{d^2}{dy^2} v^t = \frac{t(t+1)}{f^2}\, v^{t+2}. ∎

Example 3.10 (The ten-year note)

At 4.200% the note of Example 3.4 has a clean price of 100.397405 (100-12+), a dirty price of 100.870911, a Macaulay duration of 8.142 years, a modified duration of 7.975, a DV01 of USD 804 per million and a convexity of 75.8. A 100-basis-point rise costs 7.675 points; duration alone predicts 8.044, duration and convexity together 7.662 (Figure 3.2).

Price against yield for the ten-year note of , two and a half percentage points either side of 4.20%. The tangent (duration) lies below the curve on both sides: a bond gains more when yields fall than it loses when they rise by the same amount, here by 2.2 to 2.6 points at the edges. The second-order approximation stays close to the curve over the whole range. Data: the chapter’s tutorial.
Figure 3.2. Price against yield for the ten-year note of Example 3.10, two and a half percentage points either side of 4.20%. The tangent (duration) lies below the curve on both sides: a bond gains more when yields fall than it loses when they rise by the same amount, here by 2.2 to 2.6 points at the edges. The second-order approximation stays close to the curve over the whole range. Data: the chapter’s tutorial.

Method 3.11 (Hedging one bond with another)

To hedge a face N1N_1 of bond 1 against parallel moves with bond 2, sell N2=N1 DV011/DV012N_2 = N_1\,\mathrm{DV01}_1/\mathrm{DV01}_2 of face. The hedge leaves: the difference in convexity, the risk that the two yields do not move together (curve risk), and the drift of both DV01s as time passes and yields move, which calls for rebalancing.

3.4 Zero-coupon rates, par yields and strips

Definition 3.12 (Zero-coupon rate, par yield, STRIPS)

The zero-coupon rate z(T)z(T) for maturity TT is the yield of a single payment at TT: P(0,T)=(1+z/f)−fTP(0,T) = (1 + z/f)^{-fT}. The par yield for TT is the coupon that would price a bond maturing at TT at 100. STRIPS are the US Treasury’s zero-coupon securities, created by separating an eligible note or bond into its individual coupon and principal payments, each of which then trades on its own; a complete set can be reassembled into the original security.

Proposition 3.13 (Par yields from discount factors, and back)

With discount factors Pk=P(0,k/f)P_k = P(0, k/f),

par(Tn)  =  f 1−Pn∑k=1nPk,Pn  =  1−parnf∑k<nPk1+parnf.\text{par}(T_n) \;=\; f\,\frac{1 - P_n}{\sum_{k=1}^n P_k}, \qquad P_n \;=\; \frac{1 - \frac{\text{par}_n}{f}\sum_{k<n} P_k}{1 + \frac{\text{par}_n}{f}} .

The second formula bootstraps the discount factors one maturity at a time from par yields.

Proof. A bond with coupon cc at par satisfies 100=cf∑k≤nPk+100Pn100 = \frac cf \sum_{k \le n} P_k + 100 P_n; solve for c/100c/100, or, given c/100=parnc/100 = \text{par}_n and P1,…,Pn−1P_1, \dots, P_{n-1}, for PnP_n. ∎

An illustrative par curve and the zero curve bootstrapped from it (). Where the par curve rises, the zero curve lies above it, because a coupon bond’s yield averages the zero rates of all its payments, most of them earlier and lower; where the par curve dips, at one to two years, the zero curve dips below it. Data: the chapter’s tutorial.
Figure 3.3. An illustrative par curve and the zero curve bootstrapped from it (Proposition 3.13). Where the par curve rises, the zero curve lies above it, because a coupon bond’s yield averages the zero rates of all its payments, most of them earlier and lower; where the par curve dips, at one to two years, the zero curve dips below it. Data: the chapter’s tutorial.
The ten-year note over a year at a constant yield of 4.20%, daily. The dirty price climbs as the coupon accrues and drops by the coupon when it is paid (15 February, day 184); the clean price moves only by its slow pull towards par. Data: the chapter’s tutorial.
Figure 3.4. The ten-year note over a year at a constant yield of 4.20%, daily. The dirty price climbs as the coupon accrues and drops by the coupon when it is paid (15 February, day 184); the clean price moves only by its slow pull towards par. Data: the chapter’s tutorial.

3.5 Tutorial: a bond on a real calendar

Goal. Price the ten-year note from its yield on 25 September 2026, check its DV01 against a bumped reprice, and bootstrap a zero curve. End state: the numbers of Example 3.10 and Figures 3.2 and 3.3.

  1. The schedule and the accrued interest, generated back from maturity with the end-of-month rule.

        def coupon_dates(self, settle: dt.date) -> tuple[dt.date, list[dt.date]]:
            """(previous coupon date, remaining coupon dates after settle), generated back from maturity."""
            eom = is_month_end(self.maturity)
            step = 12 // self.freq
            dates, k = [], 0
            d = self.maturity
            while d > settle:
                dates.append(d)
                k += 1
                d = add_months(self.maturity, -step * k, eom)
            return d, dates[::-1]
    
        def period_fraction(self, settle: dt.date) -> tuple[float, int]:
            """w = days from settle to the next coupon / days in the current period; n = coupons left."""
            prev, nxt = self.coupon_dates(settle)
            return (nxt[0] - settle).days / (nxt[0] - prev).days, len(nxt)
    
        def accrued(self, settle: dt.date) -> float:
            """Actual/actual (ICMA): the period's coupon times the fraction of its days elapsed."""
            w, _ = self.period_fraction(settle)
            return self.coupon / self.freq * (1.0 - w)
    Listing 3.1. Coupon dates, the fraction of the period to run, accrued interest. code/firm/bond/firm_bond.py

    You should see 0.473505 for the note on 25 September 2026.

  2. The price in both conventions of Remark 3.7.

        def dirty_price(self, y: float, settle: dt.date, treasury: bool = False) -> float:
            w, n = self.period_fraction(settle)
            c, f = self.coupon / self.freq, self.freq
            v = 1.0 / (1.0 + y / f)
            at_next = c * sum(v ** k for k in range(n)) + 100.0 * v ** (n - 1)   # value at the next coupon date
            return at_next / (1.0 + w * y / f) if treasury else at_next * v ** w
    Listing 3.2. Dirty price from yield: street and Treasury conventions. code/firm/bond/firm_bond.py

    Check the regulation’s examples: 99.057893 and 99.730918.

  3. Risk, in the systems language of the firm. The C++20 twin computes duration, DV01 and convexity in one pass over the flows.

        Risk risk(double y, year_month_day settle) const {
            int n = 0;
            const double w = fraction_to_next(settle, n);
            const double c = coupon / freq, v = 1.0 / (1.0 + y / freq);
            double p = 0.0, t1 = 0.0, t2 = 0.0;
            for (int k = 0; k < n; ++k) {
                const double t = k + w;                                  // periods to the flow
                const double pv = (c + (k == n - 1 ? 100.0 : 0.0)) * std::pow(v, t);
                p += pv;
                t1 += t * pv;
                t2 += t * (t + 1.0) * pv;
            }
            const double mac = t1 / p / freq, mod = mac / (1.0 + y / freq);
            const double conv = t2 / p / (freq * freq) / ((1.0 + y / freq) * (1.0 + y / freq));
            return {p, mac, mod, p * mod * 1e-4, conv};
    Listing 3.3. Duration, DV01 and convexity (C++20). code/firm/bond/cpp/firm_bond.hpp

    DV01 should equal half the price difference between yields 1 basis point either side, to six significant figures.

  4. The zero curve.

    def bootstrap_par(par_yields: list[float], freq: int = 2) -> list[float]:
        """Discount factors at 1/freq, 2/freq, ... years from par yields at those maturities."""
        dfs: list[float] = []
        for y in par_yields:
            c = y / freq
            dfs.append((1.0 - c * sum(dfs)) / (1.0 + c))
        return dfs
    Listing 3.4. Bootstrapping discount factors from par yields. code/firm/bond/firm_bond.py

    fig_bond.py writes the three charts of the chapter.

What to change next. Price the same note on 13 February 2027 and on 16 February 2027 and compare clean and dirty prices across the coupon; then set the coupon to zero and check that the Macaulay duration equals the remaining life.

3.6 Build: the bond library

Purpose. The first piece of the miniature firm’s pricing library (extended in One Quant Books 5 and 6): every rates component, the futures basis (Chapter 6), the auction analyser (Chapter 4), the spread measures of the credit part (Chapter 21), prices bonds through it. Python for research, C++20 for the trading path, Rust as the twin.

Interface. Bond(coupon, maturity, freq) with coupon_dates(settle), accrued(settle), dirty_price(y, settle, treasury), clean_price(…), yield_from_clean(clean, settle), risk(y, settle); act_360, act_365f, thirty_360; bootstrap_par(pars), par_yield(dfs). The C++ header and the Rust crate expose the same names.

Rules. Coupon dates from maturity backwards, end-of-month preserved; actual/actual accrued interest; the street convention by default and the Treasury convention on request; yields decimal, compounded at the coupon frequency.

Acceptance tests. code/firm/bond/tests/, cpp/firm_bond_test.cpp, rust/: the regulation’s worked examples (99.057893; accrued 0.367403 and 99.730918); a leap-year month-end schedule; price and yield round trip; DV01 and convexity against bumps; a zero bond’s duration equals its life; bootstrapped factors reprice their par yields.

Stretch. Short and long first coupons (the regulation’s other examples); ex-dividend periods as in gilts; the 30/360 European variant; a business-day calendar for payment dates.

Sources and further reading

  • 31 CFR Part 356, Appendix B, Formulas and Tables, sections I and II. US Treasury, STRIPS (TreasuryDirect); Monthly Statement of the Public Debt, August 2026.
  • UK Debt Management Office, Formulae for Calculating Gilt Prices from Yields. Deutsche Finanzagentur, Federal Bonds.
  • P. Ritchken, Fixed Income, chapter 2, “Treasury Securities”.
  • F. J. Fabozzi (ed.), The Handbook of Fixed Income Securities, McGraw-Hill, for the conventions of other markets.

3.7 Exercises

Exercise 3.1 ★

A 4.25% semiannual note paid a coupon on 15 August. Give its accrued interest per 100 for settlement on 25 September, the period being 184 days long.

Solution

Solution of Exercise 3.1.

Forty-one days of 184 have elapsed: A=2.125×41/184=0.473505A = 2.125 \times 41/184 = 0.473505 per 100.

Exercise 3.2 ★

Convert 99-16+ to a decimal price, and 101.296875 to a quote in 32nds.

Solution

Solution of Exercise 3.2.

99+16.5/32=99.51562599 + 16.5/32 = 99.515625. 101.296875=101+9.5/32101.296875 = 101 + 9.5/32: 101-09+.

Exercise 3.3 ★

Give the clean price, on a coupon date, of a three-year 4% semiannual bond at a yield of 4%, then at 5%.

Solution

Solution of Exercise 3.3.

At 4%: 100 (Proposition 3.6). At 5%: with v=1/1.025v = 1/1.025, 2∑k=16vk+100v6=97.24592\sum_{k=1}^{6} v^k + 100 v^6 = 97.2459.

Exercise 3.4 ★★

For a two-year 4% semiannual bond at a yield of 4% on a coupon date, give the Macaulay duration, the modified duration and the DV01 per million.

Solution

Solution of Exercise 3.4.

Flows of 2, 2, 2 and 102 at 1, 2, 3, 4 half-years, v=1/1.02v = 1/1.02: Macaulay duration 1.9419 years, modified 1.9419/1.02=1.90391.9419/1.02 = 1.9039, DV01 100×1.9039×10−4=0.019039100 \times 1.9039 \times 10^{-4} = 0.019039 per 100, USD 190.39 per million.

Exercise 3.5 ★★

For the ten-year note of Example 3.10, estimate the price change for a 100-basis-point fall in yield with duration alone and with convexity, and compare with a full reprice.

Solution

Solution of Exercise 3.5.

Duration alone: +100.870911×7.974966×0.01=+8.0444+100.870911 \times 7.974966 \times 0.01 = +8.0444. With convexity: +8.0444+12×100.870911×75.824×0.0001=+8.4268+8.0444 + \frac12 \times 100.870911 \times 75.824 \times 0.0001 = +8.4268. Full reprice at 3.20%: +8.4403+8.4403. For the fall, as for the rise, the second-order estimate is within 0.014 of the truth; the first-order one misses by 0.40.

Exercise 3.6 ★★

A 5% semiannual bond pays on 15 February and 15 August. Compute its accrued interest for settlement on 31 March 2026 under actual/actual and under 30/360. Which market’s investor would care about the difference?

Solution

Solution of Exercise 3.6.

Actual/actual: 44 days of a 181-day period, 2.5×44/181=0.6077352.5 \times 44/181 = 0.607735. 30/360: from 15 February to 31 March counts 30+16=4630 + 16 = 46 days, 5×46/360=0.6388895 \times 46/360 = 0.638889. The difference, 0.031 per 100 (USD 312 per million), matters to anyone who holds a bond of one convention hedged with, or financed against, an instrument of the other: every bond’s terms name its day count, and a system that assumes one for all will misprice the others.

Exercise 3.7 ★★★

Coding. With bootstrap_par, bootstrap the par curve of Figure 3.3 and report the ten-year discount factor and zero-coupon rate. Explain the sign of zero minus par at ten years.

Solution

Solution of Exercise 3.7.

Ten-year discount factor 0.657651, zero-coupon rate 4.2350% against a par yield of 4.21%. The par curve rises from two to ten years, so the earlier coupons of a ten-year par bond are discounted at lower zero rates than its final payment; its yield is a weighted average of those rates, below the ten-year zero rate.

Exercise 3.8 ★★★

Find the flaw. “A new thirty-year bond has a duration of thirty years, so a one-basis-point rise in yields costs 0.30% of its price.” Correct it for a 4.5% semiannual bond issued at par.

Solution

Solution of Exercise 3.8.

Only a zero-coupon bond has a duration equal to its life. A 4.5% thirty-year bond at par has a Macaulay duration of 16.74 years and a modified duration of 16.37; a one-basis-point rise costs 16.37×0.0001=0.164%16.37 \times 0.0001 = 0.164\% of its price, USD 1 637 per million, about half of the claim.

3.8 Problem: The Two-Bond Desk

Problem 3.1

Weekend problem — a DV01-neutral curve position

On 25 September 2026 a desk buys USD 100 million face of a five-year note (4% coupon, maturing 30 September 2031, yield 3.95%) and hedges it with the ten-year note of Example 3.10 (4.25%, 15 August 2036, yield 4.20%).

Part I — Prices.

  1. Give the five-year note’s previous and next coupon dates. Why is its next coupon so close?
  2. Give its accrued interest and its clean price, in decimal and in 32nds.
  3. Give its dirty value for USD 100 million face.
  4. Give both notes’ DV01 per million.
  5. Give both notes’ convexity.

Part II — The hedge.

  1. What face of the ten-year note must the desk sell to be DV01-neutral?
  2. What is the net cash of the position (long dirty value less short dirty value)?
  3. Reprice both notes with both yields 1 basis point higher. What is the P&L?
  4. Reprice with both yields 25 basis points higher, then 25 lower. What is the P&L each time?
  5. Why is it negative both ways?

Part III — The curve.

  1. The five-year yield rises 10 basis points, the ten-year does not move. What is the P&L?
  2. The ten-year yield rises 10 basis points, the five-year does not move. What is the P&L?
  3. Which curve move does the position profit from? Name it.
  4. Is the position’s duration zero? Its DV01?
  5. Four weeks later neither yield has moved. Is the position still DV01-neutral? What changed?

Part IV — Judgement.

  1. Why hedge DV01 rather than face value, or market value?
  2. Name two risks the hedge leaves.
  3. Why would the desk quote both notes in 32nds but compute in decimals?
  4. State the named result: the hedge ratio and the P&L of the hedged position for a 25-basis-point parallel move either way.
  5. In one sentence: what does a DV01-neutral position bet on?
Solution

Solution of Problem 3.1.

1. The maturity, 30 September, is a month-end, so the coupon dates are 31 March and 30 September: previous 31 March 2026, next 30 September 2026, five days after settlement. 2. A=2×178/183=1.945355A = 2 \times 178/183 = 1.945355; clean price 100.224893, quoted 100-07 to the nearest 64th. 3. Dirty 102.170249: USD 102 170 249. 4. Five-year USD 451.43 per million; ten-year USD 804.44 per million. 5. 23.18 and 75.82. 6. 100×451.43/804.44=USD 56.12100 \times 451.43/804.44 = \text{USD}~56.12 million of the ten-year (ratio 0.5612). 7. The short leg’s dirty value is 56 117 663×1.00870911=USD 56 606 39856\,117\,663 \times 1.00870911 = \text{USD}~56\,606\,398; net 102 170 249−56 606 398=USD 45 563 851102\,170\,249 - 56\,606\,398 = \text{USD}~45\,563\,851 long, to be financed (Chapter 5). 8. −USD 9.61-\text{USD}~9.61: the position has no DV01, only a trace of convexity. 9. +25+25: −USD 5 934-\text{USD}~5\,934. −25-25: −USD 6 092-\text{USD}~6\,092. 10. The position is short convexity: per unit of DV01, the ten-year has more convexity (75.8/7.9775.8/7.97 against 23.2/4.4223.2/4.42), and the desk is short it. Whatever the direction, the short leg’s price moves by more than its duration predicts in the unfavourable way. 11. −USD 450 252-\text{USD}~450\,252. 12. +USD 449 295+\text{USD}~449\,295. 13. A rise of the ten-year yield relative to the five-year: the position is a 5s10s steepener. 14. Its DV01 is zero by construction, and so is its duration (DV01 divided by value): the 45.6 million of net value carries no first-order rate risk. 15. No. Time shortens both notes and the five-year’s coupon of 30 September leaves its dirty price; after 28 days the long leg’s DV01 is USD 44 519 and the short leg’s USD 44 863: net short USD 344 per basis point. The hedge must be rebalanced. 16. A basis point moves a ten-year note almost twice as much as a five-year: equal face or equal value would leave a large directional position. DV01 matches the price change per unit of yield change. 17. Curve risk (the two yields move differently), convexity, and the drift of the DV01s; also the financing of each leg in repo (Chapter 5). 18. Quotes and trade prices are in 32nds by convention; risk, P&L and hedge ratios are continuous quantities that must not be rounded to a 64th before they are summed. 19. Named result: the DV01-neutral hedge sells USD 56.12 million of the ten-year against USD 100 million of the five-year (ratio 0.5612); a 25-basis-point parallel move either way costs about USD 6 000 (−5 934-5\,934 up, −6 092-6\,092 down), the price of being short convexity, while a 10-basis-point steepening earns USD 449 295. 20. On the shape of the curve, not its level.

3.9 Interview questions

Interview question 3.1 ★ trader, bank

What is the difference between a bond’s clean and dirty price, and why does the market quote the clean one?

Solution

Solution of Interview question 3.1.

The dirty price is what the buyer pays: the clean price plus the interest accrued since the last coupon, which belongs to the seller. The clean price removes the sawtooth of accrual and coupon payment, so its changes reflect changes in yield only; that is why screens quote it and why yields are quoted from it.

What the interviewer is looking for: accrued interest as the difference, and why a quoted price must not jump on coupon dates.

Interview question 3.2 ★ trader, researcher

Why is the price–yield relation convex? Is convexity good for the holder?

Solution

Solution of Interview question 3.2.

The price is a sum of discount factors (1+y/f)−t(1 + y/f)^{-t}, each convex in yy. Convexity means the bond gains more for a fall in yield than it loses for an equal rise, which is good for a holder, other things equal; markets price it, so a position long convexity usually gives up yield (carry) for it.

What the interviewer is looking for: the sum of convex terms, and the carry-for-convexity trade-off.

Interview question 3.3 ★★ trader, researcher, bank

A ten-year zero-coupon bond and a ten-year 5% coupon bond: which has the larger duration? The larger DV01 per 100 of face?

Solution

Solution of Interview question 3.3.

The zero: its duration is ten years, the coupon bond’s is shorter (about eight years at a 5% yield), since earlier coupons pull the average time in. Per 100 of face the comparison of DV01 needs the prices too: the zero trades far below par (about 61 at 5%), so its DV01 per 100 face (61×9.75×10−4≈0.05961 \times 9.75 \times 10^{-4} \approx 0.059) is smaller than the coupon bond’s (100×7.8×10−4≈0.078100 \times 7.8 \times 10^{-4} \approx 0.078). Duration is per unit of value, DV01 per unit of face.

What the interviewer is looking for: separating duration (relative) from DV01 (absolute).

Interview question 3.4 ★★ trader

You are long the five-year and want to hedge with the ten-year. How much do you sell, and what risks remain?

Solution

Solution of Interview question 3.4.

Sell the ten-year in face N10=N5×DV015/DV0110N_{10} = N_5 \times \mathrm{DV01}_5/\mathrm{DV01}_{10}, roughly 0.55 to 0.6 of the five-year face at current yields. Remaining: curve risk (you are now a steepener), convexity (short), DV01 drift over time and with yields, repo financing and specialness of each leg, and bid–ask on rebalancing.

What the interviewer is looking for: DV01 ratio, and naming the curve position that the hedge creates.

Interview question 3.5 ★★ developer

You must implement accrued interest for government bonds in three markets. What will your tests cover?

Solution

Solution of Interview question 3.5.

Month-end maturities (the end-of-month rule, including February in leap years); settlement on a coupon date (zero accrued); settlement in an ex-dividend period (negative accrued, for gilts); each market’s day count (actual/actual for Treasuries and gilts, 30/360 where a bond’s terms say so); annual against semiannual coupons; short and long first coupons; the regulation’s and the exchange’s published worked examples reproduced to the printed digit; round trips between price and yield.

What the interviewer is looking for: published worked examples as oracles, and the calendar edge cases.

Interview question 3.6 ★★★ researcher, trader

What is the modified duration of a perpetual bond paying a fixed coupon once a year, at a yield of 4%? And its Macaulay duration?

Solution

Solution of Interview question 3.6.

A perpetuity paying cc a year prices at P=c/yP = c/y. Then dP/dy=−c/y2dP/dy = -c/y^2 and the modified duration is −P′/P=1/y=25-P'/P = 1/y = 25 years at 4%. Its Macaulay duration is (1+y)/y=26(1 + y)/y = 26 years: the present-value weighted time of the payments, ∑kkvk/∑kvk=1/(1−v)=(1+y)/y\sum_k k v^k / \sum_k v^k = 1/(1 - v) = (1+y)/y.

What the interviewer is looking for: the closed form and the difference between the two durations.

Terms defined in this chapter

See all 2333 terms in the glossary