Skip to content
All library documents

How Forward-Curve Shifts Affect Forward Swap Rates

Article Quant Q&A · Author: J Muscat

Summary

The document explains why a parallel shift in a forward curve does not necessarily produce the same change in a forward swap rate. The effect depends on how the shift is defined: the answer defines it through overnight rates implied by discount factors, then compares swap rates before and after such a shift. The swap’s coupon frequencies affect the result because compounding changes the relationship between the curve move and the par rate.

Illustrations show that a 10 basis point shift can lead to different changes for swaps with different payment frequencies, with the less frequent example closer to the curve shift. These examples demonstrate the effect rather than establish a general conversion rule. The answer does not provide a formula for the specific 2-year expiry and 10-year swap point in the question, so a model’s implied volatility alone cannot determine the forward swap rate change without a precise shift definition and instrument conventions.

Key ideas

  • A parallel shift must be defined before its effect on a swap rate can be assessed.
  • A shift defined through overnight rates need not translate one-for-one into a swap rate move.
  • Compounding and payment frequency affect the resulting swap rate change.
  • The examples illustrate the dependence on conventions but do not give a universal conversion rule.

Tags

Full text
# Effect on Forward Swap Rate from a parallel shift in forward curve


# Effect on Forward Swap Rate from a parallel shift in forward curve












Can anything be said on how a parallel shift in the forward curve affects the forward swap curve?

To be more concise, say we have a model estimate of the implied vol for the 2Y-10Y point (2Y expiration, 10y term) of the vol surface following a parallel shift in the forward curve, can I say anything about what the 2Y forward-10Y Swap Rate changes?

## Answer by Attack68 (score 1, accepted)

https://quant.stackexchange.com/a/76963

This actually depends upon the definition of your parallel curve shift. I actually define the curve shift of a curve based on discount factors to be a shift in the overnight rates on that curve.

```
from rateslib import *

curve = Curve({dt(2023, 1, 1): 1.0, dt(2035, 1, 1): 0.5}, convention="act365f")

curve.rate(dt(2024, 5, 15), "1b")
# 5.772729343655

curve.shift(10).rate(dt(2024, 5, 15), "1b")
# 5.872729343655    /*  10.00 bps higher  */
```

But a parallel shift of this nature will not translate exactly to 10bps on any arbitrary swap rate due to compounding and second order effects which depend on a number of things, including the frequencies of the legs.

```
irs = IRS(dt(2025, 1, 1), "10Y", "A")

irs.rate(curves=curve)
# 5.942212540229013

irs.rate(curves=curve.shift(10))
# 6.048193932912746  /*  10.61 bps higher  */
```

Or for a lower frequency with less compounding effect

```
irs = IRS(dt(2025, 1, 1), "10Y", "M")

irs.rate(curves=curve)
# 5.78619430314164

irs.rate(curves=curve.shift(10))
# 5.88666517710925  /*  10.05 bp higher  */
```

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.