Home › Forums › Getting Started › Cross Currency Swap Valuation
- This topic has 5 replies, 3 voices, and was last updated 7 years, 6 months ago by Anonymous.
-
AuthorPosts
-
June 21, 2017 at 2:06 pm #6149AnonymousInactive
Dear ORE-Enthusiasts!
We’re currently valuing our Swap Portfolio, including some Xccy Swaps and the question on valuation of these swaps arose.
In the past we have done this using currency basis swaps in Addition to the respective currencies yield curves.
Now I don’t see any possibility to include the Basis swaps in todaysmarket.xml or curveconfig.xml, except with curves designed for collateralization (“CHF in USD”). For a general valuation purpose this is too restrictive however, ie. CHF/USD and CHF/EUR swaps can’t be valued with the “CHF in USD” curve at the same time..-regards,
RolandJune 22, 2017 at 9:35 am #6150AnonymousInactiveHi Roland,
You are free to configure ORE however you like, depending on your requirements, some examples include:
1) Old fashioned, Single curve, Libor discounting, just set the correct curve spec in todaysmarket.xml for discounting with libor curves
2) OIS discounting: Bootstrap FedFunds for USD flows, Eonia for EUR and TOIS or SARON for CHF, again just configure it in todays market, of course this will not capture the basis.
3) XOIS discounting: Assume a single collateral currency, e.g. USD, use FedFunds for USD discounting and then build “CHF IN USD” and “EUR IN USD” curves as you have seen. This will use USD/CHF and EUR/USD basis swap quotes in the bootstrap, but you do not see them in todaysmarket as such, rather the curves are set-up correctly and discounting / pricing is done as with a vanilla swap.
In all cases everything will be priced, we have tried not to put in any restrictions or assumptions, that is left to the user.
It sounds like you want to do (3) but with your CHF/EUR swap you are not assuming USD collateral but rather want to assume EUR or CHF, is that correct? so you are not assuming that the trades are in the same netting set. In that case the simplest thing for you to do is have two configurations (one EUR based and one USD based) and either run ORE twice or build a new application that can switch between the two configurations for different trades based on rules that you decide, we have not imposed any logic or assumptions on which curves are used to discount each cash flow.
Hope that helps, I’m confident you can reproduce the prices you are looking for, it’s just a matter of configuration.
Regards,
Niall.June 22, 2017 at 3:48 pm #6151AnonymousInactiveDear Niall!
Thank you very much for the detailed Explanation, it’s 3) indeed.
We’ve decided to settle for the <ForeignCCY> in EUR Option, as we have collateral in EUR (based in EUR) and the Triangulation of Basis swap rates should also be sufficient for ForeignCcy1/ForeignCcy2 Swaps (e.g. CHF/USD).
At the same time we have the collateral in EUR effect covered with that as well.-regards,
RolandJune 23, 2017 at 7:55 am #6152Roland LichtersKeymasterHi Roland,
following up on Niall’s comments, please have a look at Example_8. It covers pricing and exposure simulation for a cross currency swap, so the set up we have chosen there takes cross currency basis into account, and it is assuming EUR collateral.
In Examples/Example_8/Input/ore.xml we say that we want to use the market configuration “collateral_eur”.
In Examples/Input/todaysmarket.xml you then see that this means we use the following discount curves
Yield/EUR/EUR1D
Yield/USD/USD-IN-EUR
Yield/GBP/GBP-IN-EUR
Yield/CHF/CHF6M
Yield/JPY/JPY6M
i.e. Eonia discounting in EUR and e.g. a USD-IN-EUR for discounting USD cash flows.And finally in Examples/Input/curveconfig.xml you will find the following which defines how the USD-IN-EUR curve is constructed from FX Forwards and Cross Currency Basis Swaps:
USD-IN-EUR
USD collateralized in EUR discount curve
USD
FX Forward
FXFWD/RATE/EUR/USD/3M
FXFWD/RATE/EUR/USD/6M
FXFWD/RATE/EUR/USD/9M
FXFWD/RATE/EUR/USD/12M
EUR-USD-FX-CONVENTIONS
EUR1D
FX/RATE/EUR/USD
Cross Currency Basis Swap
CC_BASIS_SWAP/BASIS_SPREAD/USD/3M/EUR/3M/2Y
CC_BASIS_SWAP/BASIS_SPREAD/USD/3M/EUR/3M/3Y
CC_BASIS_SWAP/BASIS_SPREAD/USD/3M/EUR/3M/4Y
CC_BASIS_SWAP/BASIS_SPREAD/USD/3M/EUR/3M/5Y
CC_BASIS_SWAP/BASIS_SPREAD/USD/3M/EUR/3M/7Y
CC_BASIS_SWAP/BASIS_SPREAD/USD/3M/EUR/3M/10Y
CC_BASIS_SWAP/BASIS_SPREAD/USD/3M/EUR/3M/15Y
CC_BASIS_SWAP/BASIS_SPREAD/USD/3M/EUR/3M/20Y
CC_BASIS_SWAP/BASIS_SPREAD/USD/3M/EUR/3M/30Y
CC_BASIS_SWAP/BASIS_SPREAD/USD/3M/EUR/3M/40Y
CC_BASIS_SWAP/BASIS_SPREAD/USD/3M/EUR/3M/50Y
EUR-USD-XCCY-BASIS-CONVENTIONS
EUR1D
FX/RATE/EUR/USD USD3M EUR3M
Discount
LogLinear
A365
0.000000000001
I hope that helps.
Regards,
RolandJune 23, 2017 at 7:57 am #6153Roland LichtersKeymasterHi Roland,
I copied the XML snippets to my post, but the tags got removed, unfortunately. I think you get my point though.
Regards,
RolandJune 27, 2017 at 3:13 pm #6154AnonymousInactiveDear Roland!
I managed to set it up now like you suggested and it works very well!
regards,
Roland -
AuthorPosts
- You must be logged in to reply to this topic.