Market Data combination - Discount curves


Say for instance I have created a single market data with curves in two currencies (USD and EUR curves).

  • USD-Disc / USD-3M / EUR-Disc / EUR-3M
    Where the “Disc” curves have been defined as discount and forward curves and the 3M curves as forward curves.

The obective is to create a new market data adding a FX curve to the previous curve group holding the calibrated values obtained as described above and assign that to a new curve group.

I have tried by simply adding the FX curve linked to EURUSD

  • USD-Disc / USD-3M / EUR-Disc / EUR-3M / EURUSD
    Where the “Disc” curves have been defined as discount and forward curves, the 3M curves as forward curves and the FX as discount on EUR.

The problem is that the ZC for EUR forward and discount curves have changed since the new assigned EUR discount curve for the calibration process is the EURUSD (and the EUR-Disc is no longer used during the calibration process).
Any tip to manage this? Which is the best way to manage this?
Shall I try it through combination of markets? I mean, calibrate one market data with the curves in step 1 and then combine this built market data with another market data that only contains the EURUSD curve. Does it work? Is it the best way to do it?

Thank you very much.
Best regards Abe

Hi Abe,

From what I understand, you are trying to price single currency IRS in EUR and USD, each collateralised in their own currency, and FX swaps EUR/USD.

In Strata, the RatesProvider is designed to contain one set of coherent data used to price under only one “collateral and multi-curve framework” for each currency.

In your case, you have the IRS in EUR collateralised in EUR (let’s say ESTR) and FX swaps EUR/USD, I guess collateralised at USD FF. This means that there are 2 ways to collateralise EUR in your problem. This cannot be dealt with directly in the RatesProvider or “pricer”.

This is better dealt with in the “CalculationRunner”. This is a higher level mechanism that is used to deal with the type of issue you describe. You would create two RatesProvider, one for single currency trades and one for FX swaps. Then the runner will filter the trades according to some rules you set and use the correct data set. An easier way to do it to start with, would be to simply have a if statement, using one RatesProvider for FX swaps and the other for single currency swaps.