/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.instrument.index; import java.util.HashMap; import java.util.Map; import org.threeten.bp.Period; import com.opengamma.OpenGammaRuntimeException; import com.opengamma.financial.convention.calendar.Calendar; import com.opengamma.financial.convention.calendar.CalendarNoHoliday; import com.opengamma.financial.convention.daycount.DayCounts; /** * A list of swap generators that can be used in the tests. */ public final class GeneratorSwapFixedIborMaster { /** * Reference to a AUD fix vs BBSW 6M float swap. */ public static final String AUD6MBBSW6M = "AUD6MBBSW6M"; /** * Reference to a AUD 3M fix vs BBSW 3M float swap. */ public static final String AUD3MBBSW3M = "AUD3MBBSW3M"; /** * Reference to a JPY 6M fix vs LIBOR 6M float swap. */ public static final String JPY6MLIBOR6M = "JPY6MLIBOR6M"; /** * Reference to a JPY 6M fix vs LIBOR 3M float swap. */ public static final String JPY6MLIBOR3M = "JPY6MLIBOR3M"; /** * Reference to a DKK 1Y fix vs CIBOR 6M float */ public static final String DKK1YCIBOR6M = "DKK1YCIBOR6M"; /** * Reference to a GBP 6M fix vs LIBOR 6M float */ public static final String GBP6MLIBOR6M = "GBP6MLIBOR6M"; /** Reference to a GBP 3M fix vs LIBOR 3M float */ public static final String GBP3MLIBOR3M = "GBP3MLIBOR3M"; /** * Reference to a GBP 1Y fix vs LIBOR 3M float */ public static final String GBP1YLIBOR3M = "GBP1YLIBOR3M"; /** * Reference to a EUR 1Y fix vs LIBOR 6M float */ public static final String EUR1YEURIBOR6M = "EUR1YEURIBOR6M"; /** * Reference to a EUR 1Y fix vs LIBOR 3M float */ public static final String EUR1YEURIBOR3M = "EUR1YEURIBOR3M"; /** * Reference to a USD 6M fix vs LIBOR 6M float */ public static final String USD6MLIBOR6M = "USD6MLIBOR6M"; /** Reference to a USD 1Y ACT/360 fix vs LIBOR 1M float */ public static final String USD1YLIBOR1M = "USD1YLIBOR1M"; /** Reference to a USD 1Y ACT/360 fix vs LIBOR 3M float */ public static final String USD1YLIBOR3M = "USD1YLIBOR3M"; /** * Reference to a USD 6M fix vs LIBOR 3M float */ public static final String USD6MLIBOR3M = "USD6MLIBOR3M"; /** * Reference to a USD 6M fix vs LIBOR 1M float */ public static final String USD6MLIBOR1M = "USD6MLIBOR1M"; /** * The method unique instance. */ private static final GeneratorSwapFixedIborMaster INSTANCE = new GeneratorSwapFixedIborMaster(); /** * Return the unique instance of the class. * @return The instance. */ public static GeneratorSwapFixedIborMaster getInstance() { return INSTANCE; } /** * The map with the list of names and the swap generators. */ private final Map<String, GeneratorSwapFixedIbor> _generatorSwap; /** * The list of Ibor indexes for test purposes. */ private final IndexIborMaster _iborIndexMaster; /** * Private constructor. */ private GeneratorSwapFixedIborMaster() { _iborIndexMaster = IndexIborMaster.getInstance(); final Calendar baseCalendar = new CalendarNoHoliday("No Holidays"); _generatorSwap = new HashMap<>(); _generatorSwap.put(USD6MLIBOR1M, new GeneratorSwapFixedIbor(USD6MLIBOR1M, Period.ofMonths(6), DayCounts.THIRTY_U_360, _iborIndexMaster.getIndex(IndexIborMaster.USDLIBOR1M), baseCalendar)); _generatorSwap.put(USD6MLIBOR3M, new GeneratorSwapFixedIbor(USD6MLIBOR3M, Period.ofMonths(6), DayCounts.THIRTY_U_360, _iborIndexMaster.getIndex(IndexIborMaster.USDLIBOR3M), baseCalendar)); _generatorSwap.put(USD1YLIBOR1M, new GeneratorSwapFixedIbor(USD1YLIBOR1M, Period.ofMonths(12), DayCounts.ACT_360, _iborIndexMaster.getIndex(IndexIborMaster.USDLIBOR1M), baseCalendar)); _generatorSwap.put(USD1YLIBOR3M, new GeneratorSwapFixedIbor(USD1YLIBOR3M, Period.ofMonths(12), DayCounts.ACT_360, _iborIndexMaster.getIndex(IndexIborMaster.USDLIBOR3M), baseCalendar)); _generatorSwap.put(USD6MLIBOR6M, new GeneratorSwapFixedIbor(USD6MLIBOR6M, Period.ofMonths(6), DayCounts.THIRTY_U_360, _iborIndexMaster.getIndex(IndexIborMaster.USDLIBOR6M), baseCalendar)); _generatorSwap.put(EUR1YEURIBOR3M, new GeneratorSwapFixedIbor(EUR1YEURIBOR3M, Period.ofMonths(12), DayCounts.THIRTY_U_360, _iborIndexMaster.getIndex(IndexIborMaster.EURIBOR3M), baseCalendar)); _generatorSwap.put(EUR1YEURIBOR6M, new GeneratorSwapFixedIbor(EUR1YEURIBOR6M, Period.ofMonths(12), DayCounts.THIRTY_U_360, _iborIndexMaster.getIndex(IndexIborMaster.EURIBOR6M), baseCalendar)); _generatorSwap.put(GBP1YLIBOR3M, new GeneratorSwapFixedIbor(GBP1YLIBOR3M, Period.ofMonths(12), DayCounts.ACT_365, _iborIndexMaster.getIndex(IndexIborMaster.GBPLIBOR3M), baseCalendar)); _generatorSwap.put(GBP6MLIBOR6M, new GeneratorSwapFixedIbor(GBP6MLIBOR6M, Period.ofMonths(6), DayCounts.ACT_365, _iborIndexMaster.getIndex(IndexIborMaster.GBPLIBOR6M), baseCalendar)); _generatorSwap.put(GBP3MLIBOR3M, new GeneratorSwapFixedIbor(GBP3MLIBOR3M, Period.ofMonths(3), DayCounts.ACT_365, _iborIndexMaster.getIndex(IndexIborMaster.GBPLIBOR3M), baseCalendar)); _generatorSwap.put(DKK1YCIBOR6M, new GeneratorSwapFixedIbor(DKK1YCIBOR6M, Period.ofMonths(12), DayCounts.THIRTY_U_360, _iborIndexMaster.getIndex(IndexIborMaster.DKKCIBOR6M), baseCalendar)); _generatorSwap.put(JPY6MLIBOR3M, new GeneratorSwapFixedIbor(JPY6MLIBOR3M, Period.ofMonths(6), DayCounts.ACT_365, _iborIndexMaster.getIndex(IndexIborMaster.JPYLIBOR3M), baseCalendar)); _generatorSwap.put(JPY6MLIBOR6M, new GeneratorSwapFixedIbor(JPY6MLIBOR6M, Period.ofMonths(6), DayCounts.ACT_365, _iborIndexMaster.getIndex(IndexIborMaster.JPYLIBOR6M), baseCalendar)); _generatorSwap.put(AUD3MBBSW3M, new GeneratorSwapFixedIbor(AUD3MBBSW3M, Period.ofMonths(3), DayCounts.ACT_365, _iborIndexMaster.getIndex(IndexIborMaster.AUDBB3M), baseCalendar)); _generatorSwap.put(AUD6MBBSW6M, new GeneratorSwapFixedIbor(AUD6MBBSW6M, Period.ofMonths(6), DayCounts.ACT_365, _iborIndexMaster.getIndex(IndexIborMaster.AUDBB6M), baseCalendar)); } public GeneratorSwapFixedIbor getGenerator(final String name, final Calendar cal) { final GeneratorSwapFixedIbor generatorNoCalendar = _generatorSwap.get(name); if (generatorNoCalendar == null) { throw new OpenGammaRuntimeException("Could not get Ibor index for " + name); } return new GeneratorSwapFixedIbor(generatorNoCalendar.getName(), generatorNoCalendar.getFixedLegPeriod(), generatorNoCalendar.getFixedLegDayCount(), _iborIndexMaster.getIndex(generatorNoCalendar.getIborIndex().getName()), cal); } }