# How to build a cross currency swap pricer?

We're looking to build a pricer to convert a funding spread in a given currency over a specific funding basis e.g. 20 bps EUR 3m€ and convert it to a funding spread to a different currency with a different funding basis say USD 6m\$L.

We're in the process of sourcing market swap data including discount factors for EONIA, FedFund and LIBOR for different tenors.

Looking for someone to help us with this, could even turn into a paid project, basically I'm totally lost! Thanks!

• Do you have Bloomberg? They have a few screens to help you with this. I don't think you need to pay anyone, it's already done. You can see the forward matrix by just using EUR Currency FRD. Then in Excel you can strip all of these curves to switch A into B or whatever you want to do. And the swap pricer is pretty flexible as it is for different base curves. May 26, 2016 at 12:58

I recenlty worked on a similar problem and solved it with the help of Quantlib library. Assuming you are working with EUR and USD:

• get cross currency (xccy) swap data EUR / USD. You want to know how the xccy is collateralized and if Mark-to-Market resets apply to the USD leg.
• get interest rates swaps fixed vs ois / 3m / 6m in EUR and USD
• build USD/FedFunds and EUR/Eonia models in Quantlib
• [here is the difficult part] boostrap a discounting curve for EUR cashflows under USD/Fedfund collateral (this is not implemented in Quantlib) [*]

Now you have a model that allows you to solve your problem, i.e. price any kind of cross currency swap between EUR and USD

[*] assuming that the swap you want to price is under USD/FedFunds collateralization

You don't need all the discount factors. You just need the currency basis swap market, which exists precisely for this purpose. For example if the 5 yr eur/usd currency basis is -25, it means that you can exchange a euribor-25 liability for a usd libor flat liability. These swaps also have an exchange of principal amounts at the start and end to convert the debt synthetically from euro to dollars.

So your eur+20 liability would become a usdlibor+ 45 liability in dollars.

• No, 45bps running in USD is not worth the same as 45bps running in EUR, so you cannot just move a spread from one leg of the xccy swap to the other. That is due to different discount curves for EUR and USD, and non-flat EURUSD FX forwards. That could be the case only in a very specific scenario which never happens in the real world. I wish xccy swap pricing was that easy, but unfortunately it is not... Jan 9, 2017 at 15:11
• You are technically correct , but the difference is small at today's rates. I left out those details to get my main point across.
– dm63
Jan 10, 2017 at 2:20
• The question was asked due to the exact fact that X bps running in EUR is not worth the same as X bps running in USD, so using this as a basis for an answer does not make sense to me. Besides, if OP was fine with this approximation, I'm sure they could have solved the "find X in EUR + 20 = USD + X given that USD = EUR - 25" question without posting on here. Jan 16, 2017 at 21:50

If you have access to Bloomberg, using SWPM, you can calculate the result simply with a cross currency basis swap.

• Cross currency basis swaps in Bloomberg are usually quoted in 3M IBOR/3M IBOR terms. The question specifically mentions OIS, so just using XCcyBS would not give a full answer, or even an accurate one in the case the IBOR/OIS basis levels in each currency were quite different. Additionally there are complexities in deciding how to interpolate the different curves for discounting cashflows that do not align with standard maturities quoted in BBG, albeit I do not know specifically how the SWPM function is setup.
– Attack68
Sep 25, 2018 at 4:49