Quantitative Finance · Book 2 · Markets

Markets II: Rates, FX and Credit

Markets II: Rates, FX and Credit · Markets

21Corporate Bonds

A company’s bonds are rated BBB−-, the lowest rung of investment grade. For months its bonds’ spread over Treasuries has been widening, as analysts and investors read the same numbers the rating agencies read. Then one agency cuts it to BB++. The bonds are due to leave the investment-grade indices; funds whose mandates allow only investment grade must sell them, and high-yield funds, which did not own them yesterday, must decide at what price to buy. When the European Central Bank studied such “fallen angels”, it found that most of the damage to their prices came before the downgrade, and that after the last agency had downgraded them their prices partly recovered, as if the forced sales had pushed them too far. This chapter introduces corporate bonds: how they are issued, what their ratings mean, the several spreads by which their prices are quoted and compared, and the covenants and seniority that decide what their holders recover when a company fails.

21.1 Issuance and the new-issue concession

Definition 21.1 (New-issue concession)

The new-issue concession is the extra spread at which a company’s new bond is priced over its existing bonds of similar maturity, the price the issuer pays to attract enough buyers quickly.

A company issues bonds through a syndicate of banks that underwrite them (One Quant Book 1, chapter 2): they announce the deal, take orders from investors over a few hours at an initial price guidance, tighten the price as the book of orders grows, and allocate. The bonds are priced as a spread over a benchmark Treasury of similar maturity. When a new issue comes wide of where the company’s outstanding bonds trade, the difference is the concession: a reward for absorbing new supply and for committing large amounts at once. A concession that disappears in the first days of trading is the investors’ gain and the issuer’s cost.

21.2 Ratings and the investment-grade line

Definition 21.2 (Credit rating, investment grade, high yield, fallen angel)

A credit rating is a rating agency’s opinion of an issuer’s or a bond’s creditworthiness, on a letter scale from AAA (Aaa) down to D. Bonds rated BBB−- (Baa3) or above are investment grade; those rated BB++ (Ba1) or below are high yield. A fallen angel is an issuer downgraded from investment grade to high yield by at least one of the three major agencies.

The line between BBB−- and BB++ is one notch on a scale, but it divides the market. Many insurers, pension funds and bond funds may hold only investment grade; indices are split at the line, and so are the funds that track them; regulators and central banks use it too. When the Federal Reserve set up its facility to buy newly issued corporate bonds in 2020, it required issuers to be rated at least BBB−-/Baa3 on 22 March 2020, and allowed those downgraded afterwards down to BB−-/Ba3: the line, with a bridge for the fallen.

The ECB’s study found the market’s pattern around the line: credit default swap premiums of fallen angels widened well before the first downgrade, moved little on the day, and partly recovered after the last investment-grade rating was lost; funds tracking indices mostly use sampling and may keep a downgraded bond for a while, which spreads the selling over time. Of the fallen angels in Moody’s data over twenty years, nearly a quarter returned to investment grade, almost half stayed in high yield and 12% defaulted. Figure 21.1 draws the pattern on an illustrative bond.

The spread of an illustrative fallen angel: most of the widening comes before the downgrade, a forced-selling overshoot on the day, then a recovery towards the level fair for its new rating, the pattern the ECB found in the credit default swaps of fallen angels. Illustrative path; data: the chapter’s tutorial.
Figure 21.1. The spread of an illustrative fallen angel: most of the widening comes before the downgrade, a forced-selling overshoot on the day, then a recovery towards the level fair for its new rating, the pattern the ECB found in the credit default swaps of fallen angels. Illustrative path; data: the chapter’s tutorial.

21.3 The family of spread measures

Definition 21.3 (Credit spread; G-, I-, Z- and asset-swap spreads)

A credit spread is the extra yield a risky bond pays over a reference curve. The G-spread is the bond’s yield minus the government yield interpolated at its maturity; the I-spread its yield minus the interpolated swap rate. The Z-spread is the constant spread which, added to the swap zero curve, discounts the bond’s cash flows to its price. The asset-swap spread is the spread over the floating rate that a buyer of the bond earns by swapping its fixed coupons into floating payments, at par: the difference between the bond’s value on the swap curve and its price, divided by the annuity of the floating leg.

The four measures answer different questions. The G-spread compares the bond with the safest asset; it mixes credit with the swap spread and with any mismatch of coupon and curve shape. The I-spread compares it with swaps, the instrument dealers hedge with. The Z-spread uses the whole zero curve, not one point, and so prices the bond’s actual cash flows. The asset-swap spread is what an investor who funds at the floating rate and buys the bond with a swap actually earns. On a flat curve and a bond at par they coincide; in general they do not.

Proposition 21.4 (Why the measures differ)

For a bond whose yield is yy and whose maturity is TT: the G- and I-spreads differ by the swap spread at TT; the Z-spread differs from the I-spread by the effect of the curve’s slope on the bond’s cash flows, which a single yield ignores; and the asset-swap spread and the Z-spread measure the same gap between the bond’s price and its value on the swap curve, the first as a running spread paid on par, the second as a shift of every discount rate: they agree to first order near par, and part as the spread grows and the price moves away from par.

Proof. The first follows from the definitions. A yield discounts every cash flow at one rate; the Z-spread discounts each at the zero rate of its date plus a constant; when the curve slopes, the two agree only if the zero rates equal the yield. The asset swap turns the gap Pcurve−PP_{\mathrm{curve}} - P into a running spread by dividing it by the floating leg’s annuity AA. A small Z-spread zz lowers the price by about z∑iticiP(0,ti)z\sum_i t_i c_i P(0,t_i), a duration-weighted sum close to 100A100A for a bond near par; so the two spreads are close. The Z-spread’s effect on price is not linear, and the weights differ when the coupon is far from the swap rate, so the gap widens with the spread and with the distance from par. ∎

Example 21.5 (One bond, four spreads)

A seven-year corporate bond pays a 5.50% semiannual coupon and trades at 99.00: its yield is 5.6751%. With the illustrative curves of Figure 21.2, the seven-year Treasury at 4.50% and swap at 4.25%, its G-spread is 117.5 basis points and its I-spread 142.5. Its Z-spread over the swap zero curve is 140.7 basis points and its asset-swap spread 142.9.

The bond of  against illustrative Treasury and swap curves. The G-spread is measured to the Treasury curve and the I-spread to the swap curve, which lies below it here, as it has at long maturities since the swap spreads turned negative (). Illustrative; data: the chapter’s tutorial.
Figure 21.2. The bond of Example 21.5 against illustrative Treasury and swap curves. The G-spread is measured to the Treasury curve and the I-spread to the swap curve, which lies below it here, as it has at long maturities since the swap spreads turned negative (Chapter 9). Illustrative; data: the chapter’s tutorial.

Definition 21.6 (Option-adjusted spread)

The option-adjusted spread (OAS) of a bond with embedded options is the spread over the curve at which the bond’s value, computed with a model of rates that values the options, equals its price: the Z-spread less the options’ cost expressed as a spread.

A callable bond’s Z-spread overstates what its holder is paid for credit, because part of the yield is payment for the call the holder has sold to the issuer (Chapter 13). If the bond of Example 21.5 were callable at par in three years, the call would be a receiver swaption on the remaining four years struck at the coupon. Valued at 100 basis points of normal volatility it is worth 4.80 points, 79.7 basis points a year over the bond’s life: an option-adjusted spread of about 61 basis points against a Z-spread of 141.

The history of credit spreads is a history of crises. The Treasury publishes a high-quality corporate yield curve, built from bonds rated AAA, AA and A; its ten-year rate over the ten-year Treasury yield rose from under 1 percentage point in early 2007 to 5.04 in October 2008, and to about 2.1 in the spring of 2020 (Figure 21.3).

Ten-year high-quality corporate spot rate (Treasury HQM curve, bonds rated AAA, AA or A) minus the ten-year Treasury yield, monthly, 1984 to August 2026. The measure mixes credit with the difference between a zero-coupon and a par rate, but its peaks, 2008 and 2020, are the credit crises. Data: FRED series HQMCB10YR (US Treasury) and GS10.
Figure 21.3. Ten-year high-quality corporate spot rate (Treasury HQM curve, bonds rated AAA, AA or A) minus the ten-year Treasury yield, monthly, 1984 to August 2026. The measure mixes credit with the difference between a zero-coupon and a par rate, but its peaks, 2008 and 2020, are the credit crises. Data: FRED series HQMCB10YR (US Treasury) and GS10.

As of September 2026 — Spreads now

Ten-year HQM corporate spot rate 5.58% and ten-year Treasury 4.68% in August 2026 (monthly averages): a gap of 0.90 percentage points. The widely quoted index spreads of corporate bonds are published by index providers under licence and are not reproduced here.

21.4 Covenants, seniority and recovery

Definition 21.7 (Covenant, seniority, recovery rate)

A covenant is a promise in a bond’s terms that restricts what the issuer may do (borrow more, pay dividends, sell assets, merge) or requires it to maintain some condition. Seniority is a claim’s rank in the order of payment in insolvency: secured before senior unsecured before subordinated before equity. The recovery rate is the share of a bond’s face value its holders receive after the issuer defaults.

Seniority and recovery on an illustrative default. A firm worth 600 at default owes 200 secured, 500 senior unsecured and 200 subordinated: the secured creditors are paid in full, the senior unsecured share the remaining 400, and the subordinated recover nothing. Schematic.
Figure 21.4. Seniority and recovery on an illustrative default. A firm worth 600 at default owes 200 secured, 500 senior unsecured and 200 subordinated: the secured creditors are paid in full, the senior unsecured share the remaining 400, and the subordinated recover nothing. Schematic.

Investment-grade bonds usually carry few covenants; high-yield bonds carry more, because their holders need protection against a company that takes on more debt or pays its cash to shareholders. Seniority decides recovery: in a liquidation or restructuring, senior secured claims are paid first out of their collateral, senior unsecured claims share what is left, and subordinated claims are paid only after them (Figure 21.4). Recovery rates vary widely with the firm, the industry and the cycle, which is why a spread is compensation for two uncertain numbers: the probability of default and the loss when it happens, the subject of Chapter 23.

Remark 21.8 (Spread, default and loss)

Over a year, a spread ss roughly pays for an annual default probability pp times a loss given default 1−R1 - R: s≈p(1−R)s \approx p(1 - R), plus premia for risk and illiquidity. A spread of 140 basis points with a recovery of 40% corresponds, if it were all expected loss, to a default probability of 2.3% a year. Whatever the bonds’ actual default rate falls short of that is the premium investors demand for bearing default risk and illiquidity.

21.5 Tutorial: four spreads of one bond

Goal. Compute the G-, I-, Z- and asset-swap spreads of a bond, and its option-adjusted spread if it is callable; plot the spread history. End state: Figures 21.2 and 21.3, Example 21.5 and the numbers of the weekend problem.

  1. Curves and yields: interpolation, the bond’s cash flows, price and yield.

    def interp(curve: list[tuple[float, float]], t: float) -> float:
        if t <= curve[0][0]:
            return curve[0][1]
        for (t0, r0), (t1, r1) in zip(curve, curve[1:], strict=False):
            if t <= t1:
                return r0 + (r1 - r0) * (t - t0) / (t1 - t0)
        return curve[-1][1]
    
    
    def flows(coupon: float, years: float, freq: int = 2) -> list[tuple[float, float]]:
        n = round(years * freq)
        return [(k / freq, coupon / freq + (100.0 if k == n else 0.0)) for k in range(1, n + 1)]
    
    
    def price_from_yield(coupon: float, years: float, y: float, freq: int = 2) -> float:
        return sum(cf / (1 + y / freq) ** (t * freq) for t, cf in flows(coupon, years, freq))
    
    
    def yield_from_price(coupon: float, years: float, price: float, freq: int = 2) -> float:
        lo, hi = -0.05, 1.0
        for _ in range(200):
            mid = 0.5 * (lo + hi)
            lo, hi = (mid, hi) if price_from_yield(coupon, years, mid, freq) > price else (lo, mid)
        return 0.5 * (lo + hi)
    Listing 21.1. Curve interpolation, cash flows, price and yield. code/firm/spreads/firm_spreads.py
  2. The spreads: to par curves, to the zero curve, and the asset swap.

    def g_spread(y: float, years: float, govt_par: list[tuple[float, float]]) -> float:
        return y - interp(govt_par, years)
    
    
    def i_spread(y: float, years: float, swap_par: list[tuple[float, float]]) -> float:
        return y - interp(swap_par, years)
    
    
    def price_on_zero(coupon: float, years: float, zero: list[tuple[float, float]], z: float = 0.0, freq: int = 2) -> float:
        return sum(cf * math.exp(-(interp(zero, t) + z) * t) for t, cf in flows(coupon, years, freq))
    
    
    def z_spread(coupon: float, years: float, price: float, zero: list[tuple[float, float]], freq: int = 2) -> float:
        """Constant spread over the zero curve that reprices the bond."""
        lo, hi = -0.05, 0.5
        for _ in range(200):
            mid = 0.5 * (lo + hi)
            lo, hi = (mid, hi) if price_on_zero(coupon, years, zero, mid, freq) > price else (lo, mid)
        return 0.5 * (lo + hi)
    
    
    def asset_swap_spread(coupon: float, years: float, price: float, zero: list[tuple[float, float]],
                          freq: int = 2) -> float:
        """Par-par asset-swap spread: (price on the swap curve - market price) / annuity of the floating leg."""
        annuity = sum(math.exp(-interp(zero, t) * t) / freq for t, _ in flows(coupon, years, freq))
        return (price_on_zero(coupon, years, zero, 0.0, freq) - price) / (100.0 * annuity)
    Listing 21.2. G-, I-, Z- and asset-swap spreads. code/firm/spreads/firm_spreads.py
  3. Run credit_demo.measures(), credit_demo.callable_oas(), credit_demo.fallen_angel() and fig_credit.py.

What to change next. Steepen the swap curve and watch the Z-spread move away from the I-spread; then price the bond at 110 and at 90 and compare the asset-swap and Z-spreads, as Proposition 21.4 predicts.

21.6 Build: the spread-measure library

Purpose. The miniature firm quotes and compares corporate bonds, hedges them with Treasuries or swaps, and must speak each client’s spread language.

Interface. interp(curve, t); flows; price_from_yield; yield_from_price; g_spread; i_spread; price_on_zero; z_spread; asset_swap_spread; spread_price_impact(duration, widening, price).

Rules. Curves as (years, rate) points, linearly interpolated; semiannual coupons; prices dirty on a coupon date; zero rates continuously compounded; root finding by bisection.

Acceptance tests. code/firm/spreads/tests/: interpolation and yield round trips; spreads equal on flat curves; the Z-spread recovered from a price built with it; an asset-swap spread of zero for a bond priced on the curve.

Stretch. Accrued interest and settlement dates (the bond build of Chapter 3); OAS for Bermudan calls with a short-rate lattice (One Quant Book 6); spreads to a fitted issuer curve.

Sources and further reading

  • M. Belloni, T. Helmersson, M. Jarmuzek, B. Mosk and F. Nikolic, “Understanding what happens when angels fall”, ECB Financial Stability Review, November 2020.
  • Federal Reserve, Primary Market Corporate Credit Facility term sheet, April 2020.
  • US Department of the Treasury, High Quality Market corporate bond yield curve; FRED series HQMCB10YR and GS10.

21.7 Exercises

Exercise 21.1 ★

A ten-year bond yields 6.10%. The ten-year Treasury yields 4.68% and the ten-year swap rate is 4.40%. Give its G- and I-spreads.

Solution

Solution of Exercise 21.1.

G-spread 6.10−4.68=1426.10 - 4.68 = 142 basis points; I-spread 6.10−4.40=1706.10 - 4.40 = 170.

Exercise 21.2 ★

Rated Baa3 by one agency and BB++ by another, is a bond investment grade? Is its issuer a fallen angel if it was BBB−- at both last month?

Solution

Solution of Exercise 21.2.

It has a split rating: investment grade at one agency, high yield at the other. Whether it counts as investment grade depends on the rule of the index or mandate (some use the lowest rating, some the middle of three). By the ECB’s definition its issuer is a fallen angel, downgraded to high yield by at least one major agency.

Exercise 21.3 ★

A bond of modified duration 6 sees its spread widen by 80 basis points. Give its price change per 100.

Solution

Solution of Exercise 21.3.

−6×0.0080×100=−4.8-6 \times 0.0080 \times 100 = -4.8 per 100.

Exercise 21.4 ★★

In Example 21.5, the Z-spread and the asset-swap spread differ by 2.2 basis points. Why are they close, and when would they differ by more?

Solution

Solution of Exercise 21.4.

Both measure the gap between the bond’s price and its value on the swap curve, one as a running spread on par, the other as a shift of every discount rate; near par and for moderate spreads they agree to first order, and the 2.2 basis points are compounding and weighting differences. They part as the spread grows and the price moves away from par: repriced at 85, the bond has a Z-spread of 401.6 basis points and an asset-swap spread of 375.5.

Exercise 21.5 ★★

A spread of 140 basis points and a recovery of 40%: what annual default probability would the spread pay for if it were all expected loss? What else does the spread pay for?

Solution

Solution of Exercise 21.5.

0.0140/0.60=2.33%0.0140/0.60 = 2.33\% a year. The rest of the spread, whatever actual defaults fall short of that, pays for bearing the uncertainty of default and loss, for illiquidity, and in some markets for taxes and for the cost of holding the bond.

Exercise 21.6 ★★

Why does a new issue come with a concession, and who gains if it disappears?

Solution

Solution of Exercise 21.6.

Investors must absorb a large new supply at once and commit before the book is complete; the issuer pays a little to fill it quickly and at size. If the concession disappears as the bonds trade up to the company’s curve, the buyers at issue gain it and the issuer has paid it.

Exercise 21.8 ★★★

Find the flaw. “This callable bond yields 140 basis points over swaps, the same as the bullet bond of the same issuer, so it is equally cheap.” Correct it.

Solution

Solution of Exercise 21.8.

Part of the callable’s spread pays for the call its holder has sold the issuer: its option-adjusted spread, the credit part, is lower. In Example 21.5’s terms a Z-spread of 141 basis points became an OAS of about 61 once a three-year call was valued. Compare OAS with OAS, not Z-spread with Z-spread.

21.8 Problem: The Fallen Angel

Problem 21.1

Weekend problem — what forced selling costs and pays

A fund holds USD 50 million of a company’s bonds, modified duration 6. Six months before any downgrade their spread is 250 basis points; it widens to 290 three months before, 330 one month before, and 400 on the day the last agency cuts the company to BB++ and the bonds leave the investment-grade indices; then 380 a month later, 350 after three months and 345 after six. Analysts judge 350 fair for a BB++ credit.

Part I — Before the downgrade.

  1. What did the bonds lose, per 100, between six months before and the downgrade?
  2. How much of that happened before the downgrade day?
  3. Why does the market move before the agencies?
  4. What would an investment-grade fund have done with a negative outlook?
  5. Give the reaction on the day, per 100.

Part II — The forced sale.

  1. Give the overshoot over fair value, in spread and per 100.
  2. What does the overshoot cost the fund if it sells on the day?
  3. Who buys, and why do they need a discount?
  4. How do index rules and fund sampling change the pressure?
  5. What does the fund gain by waiting three months, if it may?

Part III — The buyer.

  1. Give a buyer’s gain per 100 from buying on the day and selling three months later.
  2. What risk does the buyer bear?
  3. What do the ECB’s figures on later outcomes say about that risk?
  4. How does the carry of the higher spread add to the return?
  5. Why is the trade not free money?

Part IV — Judgement.

  1. Why do ratings matter so much when prices move first?
  2. How would a central-bank facility like that of 2020 change the pattern?
  3. What would you ask the fund’s mandate to allow?
  4. State the named result: the forced-selling discount and its recovery.
  5. In one sentence: why do fallen angels overshoot?
Solution

Solution of Problem 21.1.

1. 6×1.50%=9.06 \times 1.50\% = 9.0 per 100. 2. 6×0.80%=4.86 \times 0.80\% = 4.8 per 100, 53% of the fall. 3. Investors read the same results, leverage and outlook changes the agencies do, and act on them continuously; the agencies act by committee and announcement. 4. Sold early, or reduced its holding, if its mandate or risk policy treats a negative outlook at BBB−- as a warning. 5. 6×0.70%=4.26 \times 0.70\% = 4.2 per 100. 6. 50 basis points over the fair 350: 3.0 per 100. 7. About USD 1.5 million on USD 50 million, sold at 3 points below fair value. 8. High-yield funds and investors who can hold high yield; they must take on a large supply at once and fund it by selling other bonds, and they know the sellers are forced. 9. Index providers’ rules differ, so not every index drops the bond on the same day; funds that sample the index and may keep a bond for a while spread their sales out, reducing the pressure. 10. The overshoot, if the spread returns to 350: 3 points, USD 1.5 million, plus the higher coupon income. 11. 3.0 per 100, from 400 to 350. 12. Further downgrades or default, and a spread that does not recover. 13. That most fallen angels survive (nearly a quarter returned to investment grade, almost half stayed high yield) but 12% defaulted within the twenty years. 14. About 4.00%×0.25=1.04.00\% \times 0.25 = 1.0 per 100 over three months in spread carry, on top of the price gain. 15. The buyer is paid for taking the risk the sellers must shed, and the spread may widen further before it recovers. 16. Because investment mandates, indices and regulations are written in ratings: the line decides who may own the bond, whatever its price. 17. By offering a buyer for recently downgraded bonds within limits, it would reduce the overshoot, as the 2020 facility’s BB−-/Ba3 provision was designed to. 18. To keep a fallen angel for a period, or up to a limit, instead of selling at once. 19. Named result: the fallen angel’s discount: forced selling pushed the bonds 50 basis points past fair value, 3 points per 100, USD 1.5 million on the holding, which a buyer recovered within three months. 20. Because many holders must sell at the same moment to buyers who need a discount to absorb them.

21.9 Interview questions

Interview question 21.1 ★ trader, researcher

What is the difference between the G-spread, the Z-spread and the asset-swap spread?

Solution

Solution of Interview question 21.1.

The G-spread is the yield over the interpolated government yield; the Z-spread is the constant spread over the zero curve that reprices all the cash flows; the asset-swap spread is what an investor earns over the floating rate by swapping the bond’s coupons at par. They differ by the swap spread, the curve’s shape and the bond’s price away from par.

What the interviewer is looking for: definitions and why they differ.

Interview question 21.2 ★ trader, bank

What is a fallen angel, and why do its bonds often cheapen around the downgrade?

Solution

Solution of Interview question 21.2.

An issuer downgraded from investment grade to high yield. Its bonds leave investment-grade indices and many mandates, so holders must sell to a smaller set of buyers who want a discount; the market also reprices the credit before the downgrade. Evidence shows much of the move before the event and a partial recovery after.

What the interviewer is looking for: the forced-selling mechanism and the timing.

Interview question 21.3 ★★ researcher

How would you decompose a credit spread into expected loss and risk premium?

Solution

Solution of Interview question 21.3.

Estimate expected loss from default probabilities and recoveries, historical or from a model, by rating and maturity; subtract it from the spread over a risk-free curve; the remainder is compensation for risk and illiquidity, which can be related to market volatility, liquidity measures and investors’ capacity. Check the result across ratings and through the cycle.

What the interviewer is looking for: expected loss versus premium, and its time variation.

Interview question 21.4 ★★ trader

A client asks for a price on USD 50 million of a BBB bond that rarely trades. How do you price it?

Solution

Solution of Interview question 21.4.

Start from the issuer’s other bonds and CDS, interpolated to the maturity, and from comparable issuers; adjust for size, coupon, covenants and liquidity; check recent trades and quotes on platforms; then price the risk of holding USD 50 million until you can hedge or sell it, which widens the price with size and illiquidity.

What the interviewer is looking for: relative value from the curve and comparables, plus a size charge.

Interview question 21.5 ★★ researcher, trader

Why does the OAS of a callable bond differ from its Z-spread, and which should you compare across bonds?

Solution

Solution of Interview question 21.5.

The Z-spread includes payment for the call the holder has sold; the OAS removes the option’s value, computed with a rate model, and keeps the credit and liquidity part. Compare OAS across bonds with different options; Z-spreads only across bullets.

What the interviewer is looking for: option value inside the spread.

Interview question 21.6 ★★★ developer, researcher

Design a system that computes spreads for fifty thousand corporate bonds every minute.

Solution

Solution of Interview question 21.6.

Maintain curves (Treasury, swap, zero) updated on market events; hold each bond’s cash-flow schedule precomputed; recompute prices and spreads in vectorised batches, with root finders warm-started from the last value; parallelise across bonds and recompute only those whose price or curve changed; validate against a reference implementation and flag failures to converge.

What the interviewer is looking for: precomputation, warm starts, incremental updates.

Terms defined in this chapter

See all 2333 terms in the glossary