How Discount-Curve Changes Alter Swap Projection Risk
Summary
The document explains why an interest rate swap’s sensitivity to its forecast curve can change when its discount curve moves. Changing discounting alters the present value assigned to projected floating-leg cash flows; as those values change, the swap’s forecast-curve delta changes too. The interaction is described as cross-gamma, with risk measured across forecast and discount curve moves.
A simplified cash-flow example illustrates the idea: forecast-rate changes alter the size of future cash flows, while discount risk depends on cash-flow size and payment timing. The answer then sketches a two-curve swap setup and points to delta and gamma calculations in a rates library as a way to obtain numerical sensitivities. The explanation is conceptual and the spreadsheet example is approximate; the document gives no complete numerical risk results. Actual values depend on curve construction, cash-flow schedules, instrument conventions, and the chosen risk bump definitions.
Key ideas
- Discounting changes can alter the value of projected swap cash flows and therefore change forecast-curve delta.
- The interaction between forecast and discount moves can be represented as cross-gamma risk.
- Cash-flow size and payment timing help explain discount sensitivity in forward space.
- Numerical sensitivities require specified curves, swap conventions, and risk bump definitions.
Tags
Full text
# Projection Delta of IRS when only Disc Curve bumps (credit spread / curve-cross-gamma?)
# Projection Delta of IRS when only Disc Curve bumps (credit spread / curve-cross-gamma?)
This is related to IRS - sensitivity to estimation (projection, coupon) curve and discounting curve.
Assume I have a single ccy receiver IRS, so we pay SOFR flat on the float leg. Assume both fixed and float leg are discounted using SOFR + some spread X. The nature of the latter can be thought of as a funding or credit spread.
I observe a positive projection delta for the float leg on the pure SOFR curve (= we will have to pay lower flows if we bump the SOFR rates down, ceteris paribus). That makes sense.
Ofc a bump in SOFR automatically bumps the discount curve as well, with impacts on both legs, and hence overall PV, but I can explain that & that's not what I'm after. I am wondering about another puzzling effect, namely how the projection delta changes for changes in X (= the discount curve ONLY):
Assume the spread X increases due to some distress, and now we suddenly need to bump it by 100bps or so. The disc factors (same for both legs) will decrease significantly, while both the fixed leg coupon stream as well as the pure SOFR projected rates remain constant. Looking at the latter, I will be discounting the float cashflows heavier, i.e. attenuate their PVs towards zero even though the forecasts remained constant. That way, my overall projection delta towards the SOFR curve will reduce, since if the disc factors eventually become small enough, the projected rates are kind of irrelevant since the PV will be close to zero. I'd intuitively think of this as sort of a "cross"-gamma (i.e., how projection delta changes for parallel change in the discount curve). Is that interpretation correct?
Is there a way (e.g. under simplified assumptions such as flat curve) to quantify this effect? Possibly via gamma?
Or maybe someone can intuitively explain using projections based on some other curve (say Libor in old times) and discount curve (SOFR) in the dual curve world without dependence on the credit spread X? That should be sort of similar?
## Answer by Attack68 (score 1, accepted)
https://quant.stackexchange.com/a/81437
Yes there is a way, many in fact.
Discounting risk is all to do with the position of cashflows. If the forecast curve is flat and a swap does not have any net cashflows then there will be no discounting risk.
But, consider the scenario with an upward sloping curve with 1y forward rates going from 1%, 2%, 3%, 4% to 5%. If you pay fixed at 3% on a 5Y Annual IRS (in 1bn notional) then you will have the following cashflows (in table). Annual discount risk (i.e. in forward space) is measured as the size of the cashflow divided by 10,000(bps) until the point it is paid. The total discount risk is the the sum of all cashflows' risks. Here is an estimate created in excel without any semblance of curves or discounting:
What would happen if the forecast curve increased by 1bp? Well then each of the cashflows would increase by 100,000, and this would affect the discount risk in the following way:
We have just created the essence of the cross-gamma grid for this trade in forward space, and note that cross-gamma risk is symmetric.
To compare these results with actual numerical values properly computed, consider the following:
```
from rateslib import * # Python 3.12, rateslib 1.6.0
### Build the curves
disc_curve = Curve({dt(2000, 1, 1): 1.0, dt(2001, 1, 1): 1.0, dt(2002, 1, 1): 1.0, dt(2003, 1, 1): 1.0, dt(2004, 1, 1): 1.0, dt(2005, 1, 1): 1.0})
fore_curve = Curve({dt(2000, 1, 1): 1.0, dt(2001, 1, 1): 1.0, dt(2002, 1, 1): 1.0, dt(2003, 1, 1): 1.0, dt(2004, 1, 1): 1.0, dt(2005, 1, 1): 1.0})
solver = Solver(
curves=[disc_curve, fore_curve],
instruments=[
IRS(dt(2000, 1, 1), "1y", spec="usd_irs", curves=disc_curve),
IRS(dt(2001, 1, 1), "1y", spec="usd_irs", curves=disc_curve),
IRS(dt(2002, 1, 1), "1y", spec="usd_irs", curves=disc_curve),
IRS(dt(2003, 1, 1), "1y", spec="usd_irs", curves=disc_curve),
IRS(dt(2004, 1, 1), "1y", spec="usd_irs", curves=disc_curve),
IRS(dt(2000, 1, 1), "1y", spec="usd_irs", curves=fore_curve),
IRS(dt(2001, 1, 1), "1y", spec="usd_irs", curves=fore_curve),
IRS(dt(2002, 1, 1), "1y", spec="usd_irs", curves=fore_curve),
IRS(dt(2003, 1, 1), "1y", spec="usd_irs", curves=fore_curve),
IRS(dt(2004, 1, 1), "1y", spec="usd_irs", curves=fore_curve),
],
s=[1.0, 2.0, 3.0, 4.0, 5.0, 1.0, 2.0, 3.0, 4.0, 5.0],
instrument_labels=["d1y", "d1y1y", "d2y1y", "d3y1y", "d4y1y", "f1y", "f1y1y", "f2y1y", "f3y1y", "f4y1y"]
)
```
Now construct the mid-market IRS and risk it:
```
irs = IRS(dt(2000, 1, 1), "5y", notional=1e9, fixed_rate=2.9327, spec="usd_irs", curves=[fore_curve, disc_curve])
irs.delta(solver=solver)
```
```
irs.gamma(solver=solver)
```
You can improve the guesses in Excel with properly derived formulae. I implemented this for a large portfolio and the derivations are included in the section "Analytic Cross-Gamma" of Pricing and Trading Interest Rate Derivatives. Although those derivations in that book look complicated they only really add discounting risk to the excel version above and handle different types of swap legs, such as zero coupon swap legs (which only pays at the end and therefore has a different discounting risk profile).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.