3

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!

bluk
  • 131
  • 4

1 Answers1

0

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.

  • Perhaps I've misunderstood, but are u saying it's possible to use the generic IborIndex class to synthetically create a term overnight index (with daily compounding)? – user35980 Feb 15 '24 at 10:04
  • 1
    yes - if you create a 3M index and and use it with an RFR curve, its forward rates will be computed as (D1/D2-1)/t and it happens to be the same formula you would use to compute daily compounded ON rates over the same period. Which is why using a synthetic index in combination with discounting curve built normally with RFR instruments can be a reasonable workaround until QuantLib supports RFR cross currency swaps natively. Note though that it's just a workaround for this particular case, don't try to deal with actual real world term SOFR this way, it's a different beast. – Denys Usynin Feb 15 '24 at 10:50
  • i'm going to try this out - it can be useful in other areas e.g. using the FloatFloatSwap class allows for principal exchanges (but this class only takes in IborIndex), so constructing an OIS with principal exchanges (without having to add in additional cashflows manually) can in theory be done. thanks. – user35980 Feb 15 '24 at 11:14
  • Ok, so that example worked - brilliant stuff. I don't see any reason why this workaround cannot be used to price OIS swaptions and caps/floors (forward looking at least) using the standard Ibor versions of those instrument classes currently in quantlib. – user35980 Feb 15 '24 at 14:56