Zane Hassoun
MBS note

When an MBS hedge stops behaving.

This is the fixed-income problem I want to think about here: a hedge that looks fine in one rate environment can stop looking like a hedge when the curve moves. With MBS, duration is not fixed, prepayments matter, and the thing you thought was neutral can become directional fast.

A motivating example

Imagine a mortgage book with $100mm$ of current market value and an effective duration of $5.0$ years. A simple first pass says the price sensitivity to a small rate change is roughly

$$\frac{\Delta P}{P} \approx -D_{\text{eff}}\,\Delta y + \frac{1}{2}C(\Delta y)^2$$

If rates move up by $100$ basis points, the linear approximation would suggest about a $5\%$ price hit before we even worry about convexity. The catch is that MBS do not keep the same duration when rates move.

In a lower-rate world, borrowers refinance faster, prepayments speed up, and duration shortens. When rates rise, the opposite happens: prepayment incentive fades, expected life extends, and the position can become much more rate-sensitive than the hedge that was put on yesterday.

Why this matters

A lot of fixed-income hedging starts with a simple rule: match DV01. If the asset moves by one dollar for every one basis point change, size the hedge so the first-order exposure is neutral.

The problem is that MBS duration is path dependent. Once rates move, the hedge ratio you liked at the start is no longer the hedge ratio you actually have.

That is why the job is less about writing down one perfect hedge and more about tracking how the hedge changes when the regime changes.

Scenario sketch

A toy version of the problem.

Scenario Rate move Prepay incentive Effective duration Hedge read
Start 0 bp Neutral 5.0 Hedge looks fine
Rates rise +100 bp Refi incentive falls 6.1 Asset gets longer, hedge can be too small
Rates fall -100 bp Refi incentive rises 3.4 Asset gets shorter, hedge can overshoot

Changes w.r.t path of rates

The interesting bit is not just that duration changes, but that it changes in a way tied to the path of rates. That means the hedge is always chasing a moving target.

One way to think about it is to monitor a hedge ratio that evolves with the book:

$$N_{\text{hedge}}(t) \approx \frac{DV01_{\text{MBS}}(t)}{DV01_{\text{hedge}}(t)}$$

If the MBS DV01 expands because duration extends, the hedge needs to follow. If it does not, the position drifts into directional exposure.

Necessary elements

  • Coupon, seasoning, balance, and loan age.
  • Current curve, rate shocks, and volatility.
  • Refinance incentive and burnout.
  • Scenario DV01 and effective duration by path.
  • Hedge slippage when the rate regime changes.

The point is to make the hedge read itself as the book evolves, not just to print a number once.

For the implementation side, see the interactive example.

A small sketch of the engine

The code path does not need to be fancy to be useful. It needs to be explicit about the inputs, the shocks, and the hedge output.

inputs:
  - pool coupon
  - seasoning / age
  - current curve
  - rate shock grid
  - prepayment assumptions

for each scenario:
  price = price_mbs(pool, curve, prepay_model)
  dv01  = bump_and_reprice(price, curve, 1bp)
  dur   = effective_duration(price, curve)
  hedge = dv01 / dv01_hedge_instrument

output:
  scenario table
  hedge ratio drift
  warning when hedge flips stale