Yield Spread

A casual breakdown of yield spreads: the G-spread over government bonds, the I-spread over the swap rate, the Z-spread that drops the flat-term-structure assumption by shifting the whole spot curve in parallel, and the option-adjusted spread for callable bonds.

Last time we looked at the Yield Curve, so this time let’s talk about the Yield Spread.

Actually — the full, proper story of Yield Spread is a Level 2 thing, and I did debate going all-in and tossing in my Level 2 notes too. But I’m writing this based on Level 1, so I’ll just keep it at the Level 1 level. heh

OK so. Bond prices are often quoted as a percentage of par. Separately, yields are quoted as rates, and yield differences as spreads in basis points. And every bond is basically the risk-free rate baked in (obviously you need the risk-free rate — otherwise why on earth would I buy something that isn’t a government bond??), plus “how much spread are you layering on top? (how many bp of spread?)” In other words, all the bond-chatter in the world could collapse into: “what’s the spread on it?” The idea is: ignore everything else, look only at the spread being layered on, and from that decide whether the thing is expensive or cheap.

Then the question becomes — what do we use as the risk-free rate (the Benchmark Bond)? Easy pick: government bonds. Specifically, the on-the-run issue. The spread layered on top of that is what people mean by the G-spread. (G for Government.)

But… hold on. Who here can actually borrow money at the government-bond rate? Government bonds are the price of the government borrowing. An individual or corporation usually pays a spread above that benchmark. Not being able to borrow at the government rate doesn’t stop it being a useful risk-free benchmark.

So what should we use as the risk-free rate in the private sector??

Something convenient-looking would be LIBOR. But LIBOR is also kind of a problem, lol. It’s the rate the big London banks charge each other for borrowing. And those banks are themselves insanely, ridiculously high-quality…

Historically, another common benchmark was the fixed rate on a LIBOR swap of the relevant maturity. That gives a swap curve, not a way to remove LIBOR’s bank-credit component. Modern markets commonly use overnight-risk-free-rate swap curves instead. And the spread measured against that is called the I-Spread. (I for Interpolated.)

OK so let me tell you what a Swap rate is. Swap rate: “what fixed % would you swap your floating rate for?”

Swap cartoon: A holds a floating-rate bond paying LIBOR and asks for swap takers; B with a 3% fixed-rate bond says ‘Oh! Me!!’, C with 5% says ‘Not bad?’, D with 7% says ‘Nuts! Not with you’; A and C swap LIBOR for 5%, so the swap rate is 5%

A: “I’ve got a bond paying LIBOR — anyone want to swap rates with me?”
B: “I’ve got a 3% fixed bond. Let’s swap. You get 3% fixed, I’ll take the floating.”
C: “I’ve got a 5% fixed bond. Let’s swap. You get 5% fixed, I’ll take the floating.”
D: “I’ve got a 7% fixed bond, but nah, I’m not swapping with you. Mine’s better.”

Roughly like that — the fixed rate the market settles on as fair in exchange for a floating rate is the Swap rate.

(The actual Pricing and Valuation of a Swap gets covered in detail in Derivatives, so don’t stress about it. Figuring out that x% — as in, “current LIBOR trades cleanly for x% fixed!” — that’s what’s called Pricing a Swap.)

Anyway. Use that maturity-matched swap rate as the benchmark, and the question “how many extra % of spread is embedded relative to this?” gives you the I-spread. For Level 1 I think knowing it at that level is totally fine.

The whole point of studying spreads, by the way, is basically this:

Getting rid of the lazy idea that YTM going up automatically means the thing got riskier.

(Sounds obvious when you say it out loud… heh)

Since y = rf + spread: y up with rf up and the spread unchanged points to a macro factor hitting all bonds alike, y up with rf unchanged and the spread up to a micro factor hitting only that bond; strictly you should tell which

OK — all of that was literally just warmup. Now we get to the real main event.

Zero Volatility Spread & Option Adjusted Spread

Let’s start with the Zero Volatility Spread.

Every spread we talked about above was YTM-based. YTM is the single internal rate that equates the bond’s promised cash flows with its observed price. It works even when the market spot curve isn’t flat. The limitation is that one number doesn’t show that whole curve — different cash-flow timings can matter when comparing bonds. (Let me draw it out one more time.)

The YTM formula discounts every cash flow (C, C, C+P) at the same y, which is the same as assuming a flat term structure: y drawn as a flat line over T = 1, 2, 3

The thing that answers “how much spread is embedded relative to government bonds?” without leaning on the flat-term-structure assumption — that’s exactly the Zero Volatility Spread. The Z-Spread.

Spot rates 4% (1Y), 8.167% (2Y) and 12.377% (3Y); a 3-year corporate bond with a 9% coupon trades at 89.464, so its YTM is 13.5%, while the 3-year Treasury bond’s YTM is 12%

In a setup like this, the G-Spread is trivially $12\% + x = 13.5\%$, so $x = 1.5\%$.

Then — what exactly!! is the Z-Spread computed from?!

(What’s the calculation that dodges the flat-term-structure assumption as hard as possible?)

The Z-spread equation for that bond: 89.464 = 9/(1 + 0.04 + ZS) + 9/(1 + 0.08167 + ZS)^2 + 109/(1 + 0.12377 + ZS)^3

We think of it like this. That is,

$$P_0 = \frac{c}{1+TS_1+ZS} + \frac{c}{(1+TS_2+ZS)^2} + \frac{c+\text{Par}}{(1+TS_3+ZS)^3} = \sum_t \frac{CF_t}{(1+TS_t+ZS)^t}$$

TS: Treasury Spot, ZS: Zero Volatility Spread.

The idea is: look at how much spread sits on top of the spot rate, using this setup — and one thing that falls out is:

In the price formula the same ZS is added to each Treasury spot rate TS1, TS2 and TS3

And in diagram form, it’s this:

The straight bond’s Z curve lies above the zero curve of spot rates S1, S2, S3 by the same Z-spread at every maturity: a parallel shift

This means a Parallel Shift of the Yield Curve!

But… what if this bond is Callable?

If the bond is callable its price P0 is lower, so the straight-bond logic gives a bigger Zero volatility Spread

Remember — we saw earlier that a bond identical in every way except that it’s callable is going to be priced cheaper, by exactly the amount of call risk the bondholder is sitting on, right? If you take the logic above and apply it straight to a Callable Bond, the ZS comes out larger than it “should” — so we borrow the Option Adjusted Yield logic we saw earlier and bring it in here:

Pricing formula with ZS + α in every term, labelled Option Adjusted Spread: value the option and work it into the spread

We already covered the Option Adjusted idea before, so this shouldn’t feel all that painful. A real OAS calculation uses an interest-rate/option model with changing callable cash flows; the static ZS + α drawing is only an intuition sketch. Anyway — since this (as α) carries over identically, and it’s still a Parallel Shift concept, if we draw the whole thing on one diagram:

Zero curve with three curves above it: the straight bond’s Z-spread curve Z_SB (red), the option-adjusted spread (blue) and the callable bond’s non-adjusted Z-spread curve Z_CB (green)

The thing you actually need for the exam, I’m pretty sure, is just the ordering of the spreads:

(straight bond’s Z-spread ≈ option adjusted < non-adjusted)

The OAS is the callable bond’s own, non-adjusted Z-spread with the option’s value taken back out (OAS = Z-spread − option-cost spread, with both terms expressed in basis points), so it comes back to about where the straight bond’s Z-spread sits. Still — if you keep the logic above in your head, there’s no real reason to get confused. heh heh heh

For reference (you don’t need to know this), as for why of all the names in the world it’s called “Zero Volatility” —

Why ‘Zero Volatility’: the spot rates S_t are all observable at t = 0 but will move over time; the Z-spread treats them as frozen, while Level II puts volatility into the spread with a binomial tree (S up, S down)

The details live in Level 2, so I think it’s fine to just go “ah, so it was computed assuming zero volatility” and move on.

OK — last thing, for real.

For both the Z-Spread and the Option Adjusted Spread, I kept hammering on Parallel Shift. And you might be tempted to retroactively apply that to the G-spread we saw earlier — so, just to kill that temptation —

G-spread visualized: the gap between the YTM curve and the curve above it is a separate G-spread at 1, 2 and 3 years, with no parallel shift anywhere, unlike the Z-spread

The distinction is: G-spread and I-spread compare the bond’s YTM with a maturity-matched benchmark yield or swap rate. Z-spread uses the whole spot curve with one constant add-on. G- and I-spreads do not require the market term structure to be flat!!

These need to be held apart in your head!!!

Aaaaand with that — everyone, every-every-everyone~

Happy New Year~~ Happy New Year, everyone~


Heads-up. The figures here are the original notes, slips and all. A few things to watch for:

  • For a callable bond, the option-adjusted spread is the Z-spread minus the value of the call option (in basis points), not plus: $OAS = Z\text{-spread} - \text{option value}$, so it is smaller than the callable bond’s Z-spread and close to the Z-spread of a comparable straight bond ($Z_{SB} \approx OAS \lt Z_{CB}$). The pictures add the option value and draw the OAS above $Z_{SB}$.
  • LIBOR has since been retired (the US dollar panel rates ended on 30 June 2023); swap rates, and so the I-spread, are now quoted against risk-free rates such as SOFR.
  • The flat line in the YTM sketches represents the single IRR used to summarize this bond’s price; it does not mean the market spot curve has to be flat. Spread widening can also reflect market-wide credit or liquidity conditions, not only an issuer-specific problem.

Comments

Discussion happens via GitHub Discussions. You'll need a GitHub account to comment.