Why Averaging and Compounding SOFR Swaps Have Different Convexity
Summary
The document explains why an averaging overnight-rate swap cannot be priced by simply applying an averaging formula to forward rates calibrated from a compounding swap curve. Compounded SOFR swaps are described as the dominant hedging market and define the pricing numeraire. An averaging swap can be delta hedged with those instruments, but the hedge leaves residual gamma, making its value sensitive to volatility and creating a convexity adjustment.
A simplified example compares the timing of cash flows from an averaged swap with daily single-fixing hedges. Earlier hedge payments and later swap receipts create discounting exposure; the author estimates a small negative gamma effect and cites a rates-library calculation producing a similar result. The illustration is approximate and depends on its setup. The central point is that distinct rates implied by the instruments reflect their different risk profiles under the hedge framework, rather than separate real-world forecasts of future SOFR fixings.
Key ideas
- Compounding swaps provide the main market curve and hedging framework in the example.
- An averaging swap hedged with compounding swaps retains gamma exposure after its delta is neutralized.
- The residual exposure makes the averaging swap's price depend on volatility.
- Differences in implied rates reflect instrument and hedge risk, not necessarily different real-world rate expectations.
- The cash-flow timing example illustrates discounting risk, but its estimate is approximate.
Tags
Full text
# Compounding vs. Averaging Swaps Convexity
# Compounding vs. Averaging Swaps Convexity
Suppose first that we are concerned with a standard ARR compounding swap, where the floating coupons are semi-annual and are computed as the overnight realized ARR, compounded every six months. The fixed rate is the annual fixed.
The standard way to calibrate this swap curve is to take the fixed-rate quotes and back out the floating-rate coupons by bootstrapping: from the bootstrapped coupons, we can back out the (hypothetical) daily forward ARR rates (here, some assumptions have to be made on these daily forward rates, usually these assumptions are such to make the cure "smooth").
These daily forward rates are in theory tradeable.
Imagine now that we want to price an averaging swap: same structure as the compounding swap above, but instead of the daily realized ARR rates being compounded, they are averaged each six months to compute the floating-rate coupons.
The second swap requires a convexity adjustment, and it's price must be computed using a volatility model.
Why can't we just take the daily-implied ARR forwards from the compounding swap and apply the averaging formula to derive the implied forward averaging coupons, thereby pricing the averaging swap?
If we cannot do that, it means that the daily forward ARR rates implied from the compounding and averaging swap are different. Consider SOFR curve for example: this basically means that you will have two different SOFR curves, one "averaging" and "compounding", and both will have different implied daily forward rates? Isn't that super-weird? Which curve would be used to trade the daily implied forwards?
## Answer by Attack68 (score 3)
https://quant.stackexchange.com/a/84157
You are confusing real world probabilities, $\mathbb{P}$, (i.e. a real world probability distribution of where SOFR fixings are likely print) versus risk neutral probabilities, $\mathbb{Q}$, (i.e. those levels at which you can hedge your instrument at).
Suppose the market (and this not really a supposition but how the actual market works) trades SOFR swaps which are annual-annual compounded. This is a large dominant market and defines the so-called numeraire.
If you trade a compounded annual-annual SOFR IRS, you can hedge it, perfectly, using the market traded SOFR IRS. This means that you can "lock in" the rate on day zero, and the overnight rates used to price your IRS are naturally derived from the curve that is calibrated by compounded annual-annual IRSs.
If you trade an averaged annual-annual SOFR IRS, you cannot hedge it, perfectly, using the market traded SOFR IRS. You will find that your hedge applied on day zero is a perfect delta hedge, but it has residual gamma - and therefore has a price which depends upon volatility. This is exactly the same reason STIR futures have convexity adjustments.
The different levels of rates implied by each instrument is not a reflection of a real world expectation of SOFR fixings, it a reflection of the behaviour of the risk profile of the properties of one instrument relative to the hedge implemented in another instrument (the numeraire).
Edited for comment
Suppose you pay 1bn 1y averaged SOFR IRS and you hedged it with 365 daily, individual overnight SOFR IRS trades (that each had only one fixing). You do each of these in exactly the required the notionals to satisfy a perfect delta neutral hedge. What happens if the rate for one individual fixing increases? On the averaged trade you will make approximately $1e9 * 0.0001 * 1/365 = 274$ USD payable in 1yr, on the individual fixing hedge you will lose slightly less but it is payable on the date of the fixing so discounted these flows total exactly zero. Now you have a cash balance mismatch, you have a payment earlier than your receipt, or in other words you have now created discounting risk. In particular you have around $274 * 0.0001 * n / 365$ of discounting risk, where $n$ is the number of days between payment and receipt. Given that you have 365 individual hedges the individual sum of all of these risks is: $$ \sum_{i=1}^{365} 274 * 0.0001 * i/365 = 274 * 0.0001 * 183= 5 USD$$ And from the direction of cashflows this is negative gamma. This is rough approximation. What does a proper calculator generate?
```
from rateslib import * # Python 3.12, Rateslib 2.1.1
curve = Curve(
nodes={dt(2000, 1, 1): 1.0, dt(2001, 1, 1): 1.0},
convention="act360",
calendar="all"
)
irs_args=dict(convention="act360", calendar="all", frequency="A", payment_lag=0, curves=curve)
solver = Solver(
curves=[curve],
instruments=[IRS(dt(2000, 1, 1), "1y", **irs_args)],
s=[4.0],
instrument_labels=["1y"],
id="rates",
)
avg_irs = IRS(dt(2000, 1, 1), "1y", **irs_args, leg2_fixing_method="rfr_payment_delay_avg", notional=1e9)
hedge = IRS(dt(2000, 1, 1), "1y", **irs_args, notional=-0.9610275e9)
Portfolio([avg_irs, hedge]).delta(solver=solver)
```
```
Portfolio([avg_irs, hedge]).gamma(solver=solver)
```
So we estimated negative 5 and got negative 9 USD.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.