Fast Swap Pricing with Cached Curves and Live Risk Adjustments
Summary
The document explains how a market maker can price a custom-dated interest-rate swap when exchange-traded inputs move during curve construction. A pricing server periodically calibrates and caches curves from a snapshot of streaming market data. Those curves provide a swap mid-rate and its sensitivity to calibration instruments.
For a new request, the method starts with the cached mid and risk profile, then maps live changes in liquid futures to estimated changes across swap-rate tenors using a linear relationship. It combines those estimated rate changes with the swap's tenor risks to adjust the cached mid rapidly, avoiding the delay of recalibrating the full curve for every quote. The example describes this workflow for a EUR swap using government bond futures. The approach is an approximation: its accuracy depends on the mapping, risk scaling, and the freshness of the cached curves; no validation results or error bounds are provided.
Key ideas
- A server can periodically calibrate interest-rate curves from streaming market snapshots.
- Cached curves can supply a custom swap's mid-rate and sensitivities to calibration instruments.
- A linear mapping translates live futures moves into estimated changes in swap rates by tenor.
- The estimated changes can be combined with swap risks to update the mid quickly.
- The adjustment is approximate and depends on mapping quality and cached-curve freshness.
Tags
Full text
# Fast swap pricing
# Fast swap pricing
Let's say I want to price a given unconventional swap as quick as possible (for ex. a 7.5y swap). The way I do it is I get the swap rate, sofr future price from different maket, construct my sofr curve and price the swap. The problem is that while I am constructing my sofr curve and price the swap, the market data can change. So how do you take into account that the market data can tick while pricing the swap? MM needs to take this into account to not get picked off, so wondering how this problem was solved by MM.
## Answer by Attack68 (score 5)
https://quant.stackexchange.com/a/82327
The way this generally works that there is some server that continually builds interest rate curves during the day with incoming streaming data. For example purposes lets slow this down completely and suggest that interest curves are constructed every 10 minutes. That is, every 10 minutes, a set of data, $D$ is used within some calibration framework, $F$, to produce a set of curves, $C$.
$$ C_i = F(D_i) $$
Notice that the $i$ index would be applicable to index every 10 minute interval.
Now suppose that there is an RFQ for a custom dated swap - whatever you want. Lets say its 7.35y swap with slight forward start. The curves will do two things:
- Determine the mid-market rate of that swap.
- Determine the risks of that swap to calibrating instruments.
Using AD and the cached curves, both of these operations are effectively instantaneous with the most recent curves constructed, $C_{latest}$ that have already been constructed (but in our case that may be many minutes ago). The output might be:
```
RATE: 2.8654%
RISK:
1y: -0.1
2y: -2000
3y: -200
4y: 0.2
5y: 0.4
6y: 0.8
7y: 12000
8y: 2500
9y: 0.0
```
The trick now is to have a mapping against fast instruments. Lets assume that this is a EUR IRS, we will ignore the EURIBOR futures and just use Schatz, Bobl and Bund. We linearly map changes in the above swap rates to the movement of these instruments using linear algebra.
Let $\mathbf{x}$ be the 3 value vector of market changes in those three futures (in BPs). I.e. these are the measured changes between the live futures values and those values stored in $D_{latest}$. And $\mathbf{A}$ is a static mapping of those futures changes to implied changes of those swap rates. Then the changes in the 1Y..9Y swap rates between $D_{latest}$ and live is:
$$ \mathbf{y} = \mathbf{Ax} $$
Now we just have scale the risks, $\mathbf{S}$, by those swap rate change assumptions to alter the rate of this custom swap.
$$ rate_{adjustment} = \frac{ \mathbf{S \cdot y} } { \sum \mathbf{S} } $$
The automatic mid-market that is returned is $$2.8654 + rate_{adjustment}$$ This takes microseconds to react to exchange traded instrument price changes.
Of course in practice curves might be constructed in intervals of seconds rather than 10 minutes. And they might only take milliseconds to construct.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.