New Currency Configuration - AED


#1

Hi team, I was able to calibrate an AED 3M EIBOR curve using your hints from http://forums.opengamma.com/t/curve-values-in-strata/479.

The “zero rate” result is good for 1M, 3M, 6M (via FRA), and 9M (via FRA).
But the “zero rate” result looks strange for the IRS quoted (annual fixed vs 3m float) rates.

curve date 5/10/2016
Tenor 3m, IBOR rate is 1.069, zero rate estimated 1.069, Strata gives 1.073
Tenor 6m x 9m, FRA rate is 1.443, zero rate estimated 1.269, Strata gives 1.270
Tenor 1y, swap rate is 1.35, zero rate estimated 1.349, Strata gives 1.628

I set up the config files as below (plus making various changes to the source to include AED).
If it’s helpful you could see my fork with all of these changes.

Any other hints on correctly setting up this curve?

– groups.csv
Group Name,Curve Type,Reference,Curve Name
AED-DSCON-EIBOR3M,Forward,AED-EIBOR-1M,AED-3ME
AED-DSCON-EIBOR3M,Forward,AED-EIBOR-3M,AED-3ME
AED-DSCON-EIBOR3M,Discount,AED,AED-3ME

– settings.csv
Curve Name,Value Type,Day Count,Interpolator,Left Extrapolator,Right Extrapolator
AED-3ME,Zero,Act/365F,Linear,Flat,Flat

– calibrations.csv
Curve Name,Label,Symbology,Ticker,Field Name,Type,Convention,Time,Spread
,
AED-3ME,1M,OG-Ticker,AED-Fixing-1M,MarketValue,FIX,AED-EIBOR-1M,1M,
AED-3ME,3M,OG-Ticker,AED-Fixing-3M,MarketValue,FIX,AED-EIBOR-3M,3M,
AED-3ME,6M,OG-Ticker,AED-FRA-3Mx6M,MarketValue,FRA,AED-EIBOR-3M,3Mx6M,
AED-3ME,9M,OG-Ticker,AED-FRA-6Mx9M,MarketValue,FRA,AED-EIBOR-3M,6Mx9M,
AED-3ME,1Y,OG-Ticker,AED-IRS3M-1Y,MarketValue,IRS,AED-FIXED-1Y-EIBOR-3M,1Y,
AED-3ME,2Y,OG-Ticker,AED-IRS3M-2Y,MarketValue,IRS,AED-FIXED-1Y-EIBOR-3M,2Y,
AED-3ME,3Y,OG-Ticker,AED-IRS3M-3Y,MarketValue,IRS,AED-FIXED-1Y-EIBOR-3M,3Y,
AED-3ME,4Y,OG-Ticker,AED-IRS3M-4Y,MarketValue,IRS,AED-FIXED-1Y-EIBOR-3M,4Y,
AED-3ME,5Y,OG-Ticker,AED-IRS3M-5Y,MarketValue,IRS,AED-FIXED-1Y-EIBOR-3M,5Y,
AED-3ME,7Y,OG-Ticker,AED-IRS3M-7Y,MarketValue,IRS,AED-FIXED-1Y-EIBOR-3M,7Y,
AED-3ME,10Y,OG-Ticker,AED-IRS3M-10Y,MarketValue,IRS,AED-FIXED-1Y-EIBOR-3M,10Y,

– modules/basics/src/main/resources/com/opengamma/strata/config/base/IborIndexData.csv

Name,Currency,Active,Day Count,Fixing Calendar,Offset Days,Offset Calendar,Effective Date Calendar,Tenor,Tenor Convention,FixingTime,FixingZone
,
+AED-EIBOR-1M,AED,true,Act/360,Fri/Sat,2,Fri/Sat,Fri/Sat,1M,LastBusinessDay,11:00,Europe/London
+AED-EIBOR-3M,AED,true,Act/360,Fri/Sat,2,Fri/Sat,Fri/Sat,3M,LastBusinessDay,11:00,Europe/London
+,

– …rc/main/java/com/opengamma/strata/product/swap/type/StandardFixedIborSwapConventions.java

/**

    • AED(UA) vanilla fixed vs EIBOR 3M swap.
    • The fixed leg pays every 1 year with day count ‘Act/360’.
  • */
  • public static final FixedIborSwapConvention AED_FIXED_1Y_EIBOR_3M =
  • ImmutableFixedIborSwapConvention.of(
  • “AED-FIXED-1Y-EIBOR-3M”,
  • FixedRateSwapLegConvention.of(AED, ACT_360, P12M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, FRI_SAT)),
  • IborRateSwapLegConvention.of(IborIndices.AED_EIBOR_3M));

– modules/product/src/main/resources/com/opengamma/strata/config/base/SwapIndexData.csv

Name,Active,Convention,Tenor,FixingTime,FixingZone
,
+AED-EIBOR-1100-1Y,true,AED-FIXED-1Y-EIBOR-3M,1Y,11:00,America/New_York
+AED-EIBOR-1100-2Y,true,AED-FIXED-1Y-EIBOR-3M,2Y,11:00,America/New_York
+AED-EIBOR-1100-3Y,true,AED-FIXED-1Y-EIBOR-3M,3Y,11:00,America/New_York
+AED-EIBOR-1100-4Y,true,AED-FIXED-1Y-EIBOR-3M,4Y,11:00,America/New_York
+AED-EIBOR-1100-5Y,true,AED-FIXED-1Y-EIBOR-3M,5Y,11:00,America/New_York
+AED-EIBOR-1100-7Y,true,AED-FIXED-1Y-EIBOR-3M,7Y,11:00,America/New_York
+AED-EIBOR-1100-10Y,true,AED-FIXED-1Y-EIBOR-3M,10Y,11:00,America/New_York

Thanks very much for your time!!


#2

Looking at your branch, the first thing I’d note is that there is no need to create your own Fri/Sat calendar. Strata has one built in, see HolidayCalendars.FRI_SAT with the name “Fri/Sat”.

Beyond that, your files seem reasonable, however I do not know what the conventions are for AED. What is clear is that as the tenors of the instruments gets longer, there is more potential for an incorrect setting to make the calibration wrong. This may explain why the short tenor instruments are fine but the longer tenor ones are not.

Looking at the EIBOR definition it says that

For the purposes of this Fixing, trading days (or “value days”) are
every day except Friday and UAE banking holidays. In case of a trading
day being declared a banking holiday then the trading day (value day) is
automatically rolled over to the next business day for banks.

Thus, the Fri/Sat holiday is wrong as Saturday is a working day. In addition, it does not include any holidays. Really, a new holiday calendar “AEAD” will be needed. (A new calendar can be added in GlobalHolidayCalendars, or by adding data to HolidayCalendarData.ini)

The definition does not specify the day count in use, so it is worth checking that Act/360 is correct.

The IborIndexData.csv file should also specify the time-zone of “Asia/Dubai”, not London.

The SwapIndexData.csv file is used for CMS and will not affect curve building.

Finally, it is possible that “Linear” interpolation is not the best option for calibration.

While none of these points answer your question, I hope they give you some pointers to try. My suspicion is that the holiday calendar is the main problem.