Extending FX Curves with Cross-Currency Basis Swaps
Summary
The document discusses extending an FX curve beyond the maturity range covered by FX swaps, using cross-currency swaps (CCS) or non-deliverable swaps (NDS). It asks whether QuantLib can support these instruments as curve-building inputs. The answer identifies two helper classes added in 2021 for mark-to-market and constant-notional cross-currency basis swaps, which can be used to bootstrap the curve.
The helpers are described as experimental but reported to work in the author's framework. A limitation is that they support term indices such as IBOR-like rates rather than overnight RFR indices directly. The suggested workaround is to supply a synthetic term index with suitable conventions alongside RFR-based curves; the author says RFR compounding then yields the intended FX curve. The document gives no NDS implementation example, and the claim of expected results is based on one user's experience rather than broader validation.
Key ideas
- Cross-currency basis swaps can provide quotes for extending an FX curve beyond available FX swap maturities.
- QuantLib added helpers for mark-to-market and constant-notional cross-currency basis swaps in 2021.
- The described helpers remain experimental and support term indices rather than RFR indices directly.
- A synthetic term index with appropriate conventions can be paired with RFR curves as a workaround.
Tags
Full text
# FX curve stripping beyond one year (with CCS and NDS) # FX curve stripping beyond one year (with CCS and NDS) In QuantLib, the FxSwapRateHelper allows to create bootstrap a curve FX Swap quotes. For instance, the link below includes example of bootstrapping PLN yield curve using EURPLN spot rate and forward points, with discounting using EONIA curve, from line 68 onwards: https://github.com/lballabio/QuantLib-SWIG/blob/master/Python/test/ratehelpers.py#L68 I am exploring to extend the curve beyond one year, where there is no FX swap quotes, and would have to be done using cross currency swap (CCS) or non-deliverable swap (NDS) depending on the particular currency. In case of CCS, I have read from another answer three years before that it was not natively implemented in QuantLib back then. Does anyone know if anything has changed? For the NDS case, I am not able to find any discussion on it, but a helper for such swaps does not seem to exist in the library. Could anyone provide an example for that, possibly with twists on other rate helpers, e.g. the swap/fixedratebondhelper? Thanks! ## Answer by Denys Usynin (score 0) https://quant.stackexchange.com/a/78325 There is now support for this functionality: MtMCrossCurrencyBasisSwapRateHelper and ConstNotionalCrossCurrencyBasisSwapRateHelper classes have been added in 2021. These classes are still sitting in the experimental folder but they seem to work ok - I used them in my QuantLib based framework (example here) and it produced expected results. One limitation is that it currently only support term indices (eg IBOR-like) but if you define a fake LIBOR-like 3M index with appropriate day count and fixing delay, and pass it in together with RFR-based curves you will build the right FX curve due to RFR compounding working out to match hypothetical term IBOR rate.
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.