/**
* Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.strata.product.swap.type;
import static com.opengamma.strata.basics.currency.Currency.CHF;
import static com.opengamma.strata.basics.currency.Currency.EUR;
import static com.opengamma.strata.basics.currency.Currency.GBP;
import static com.opengamma.strata.basics.currency.Currency.JPY;
import static com.opengamma.strata.basics.currency.Currency.USD;
import static com.opengamma.strata.basics.date.BusinessDayConventions.MODIFIED_FOLLOWING;
import static com.opengamma.strata.basics.date.DayCounts.ACT_360;
import static com.opengamma.strata.basics.date.DayCounts.ACT_365F;
import static com.opengamma.strata.basics.date.DayCounts.THIRTY_U_360;
import static com.opengamma.strata.basics.date.HolidayCalendarIds.CHZU;
import static com.opengamma.strata.basics.date.HolidayCalendarIds.EUTA;
import static com.opengamma.strata.basics.date.HolidayCalendarIds.GBLO;
import static com.opengamma.strata.basics.date.HolidayCalendarIds.JPTO;
import static com.opengamma.strata.basics.date.HolidayCalendarIds.USNY;
import static com.opengamma.strata.basics.schedule.Frequency.P12M;
import static com.opengamma.strata.basics.schedule.Frequency.P3M;
import static com.opengamma.strata.basics.schedule.Frequency.P6M;
import com.opengamma.strata.basics.date.BusinessDayAdjustment;
import com.opengamma.strata.basics.date.HolidayCalendarId;
import com.opengamma.strata.basics.index.IborIndices;
/**
* Market standard Fixed-Ibor swap conventions.
* <p>
* http://www.opengamma.com/sites/default/files/interest-rate-instruments-and-market-conventions.pdf
*/
final class StandardFixedIborSwapConventions {
// GBLO+USNY calendar
private static final HolidayCalendarId GBLO_USNY = GBLO.combinedWith(USNY);
// GBLO+CHZU calendar
private static final HolidayCalendarId GBLO_CHZU = GBLO.combinedWith(CHZU);
// GBLO+JPTO calendar
private static final HolidayCalendarId GBLO_JPTO = GBLO.combinedWith(JPTO);
/**
* USD(NY) vanilla fixed vs LIBOR 3M swap.
* The fixed leg pays every 6 months with day count '30U/360'.
*/
public static final FixedIborSwapConvention USD_FIXED_6M_LIBOR_3M =
ImmutableFixedIborSwapConvention.of(
"USD-FIXED-6M-LIBOR-3M",
FixedRateSwapLegConvention.of(USD, THIRTY_U_360, P6M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBLO_USNY)),
IborRateSwapLegConvention.of(IborIndices.USD_LIBOR_3M));
/**
* USD(London) vanilla fixed vs LIBOR 3M swap.
* The fixed leg pays yearly with day count 'Act/360'.
*/
public static final FixedIborSwapConvention USD_FIXED_1Y_LIBOR_3M =
ImmutableFixedIborSwapConvention.of(
"USD-FIXED-1Y-LIBOR-3M",
FixedRateSwapLegConvention.of(USD, ACT_360, P12M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBLO_USNY)),
IborRateSwapLegConvention.of(IborIndices.USD_LIBOR_3M));
//-------------------------------------------------------------------------
/**
* EUR(1Y) vanilla fixed vs Euribor 3M swap.
* The fixed leg pays yearly with day count '30U/360'.
*/
public static final FixedIborSwapConvention EUR_FIXED_1Y_EURIBOR_3M =
ImmutableFixedIborSwapConvention.of(
"EUR-FIXED-1Y-EURIBOR-3M",
FixedRateSwapLegConvention.of(EUR, THIRTY_U_360, P12M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, EUTA)),
IborRateSwapLegConvention.of(IborIndices.EUR_EURIBOR_3M));
/**
* EUR(>1Y) vanilla fixed vs Euribor 6M swap.
* The fixed leg pays yearly with day count '30U/360'.
*/
public static final FixedIborSwapConvention EUR_FIXED_1Y_EURIBOR_6M =
ImmutableFixedIborSwapConvention.of(
"EUR-FIXED-1Y-EURIBOR-6M",
FixedRateSwapLegConvention.of(EUR, THIRTY_U_360, P12M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, EUTA)),
IborRateSwapLegConvention.of(IborIndices.EUR_EURIBOR_6M));
//-------------------------------------------------------------------------
/**
* GBP(1Y) vanilla fixed vs LIBOR 3M swap.
* The fixed leg pays yearly with day count 'Act/365F'.
*/
public static final FixedIborSwapConvention GBP_FIXED_1Y_LIBOR_3M =
ImmutableFixedIborSwapConvention.of(
"GBP-FIXED-1Y-LIBOR-3M",
FixedRateSwapLegConvention.of(GBP, ACT_365F, P12M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBLO)),
IborRateSwapLegConvention.of(IborIndices.GBP_LIBOR_3M));
/**
* GBP(>1Y) vanilla fixed vs LIBOR 6M swap.
* The fixed leg pays every 6 months with day count 'Act/365F'.
*/
public static final FixedIborSwapConvention GBP_FIXED_6M_LIBOR_6M =
ImmutableFixedIborSwapConvention.of(
"GBP-FIXED-6M-LIBOR-6M",
FixedRateSwapLegConvention.of(GBP, ACT_365F, P6M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBLO)),
IborRateSwapLegConvention.of(IborIndices.GBP_LIBOR_6M));
/**
* GBP(>1Y) vanilla fixed vs LIBOR 3M swap.
* The fixed leg pays every 3 months with day count 'Act/365F'.
*/
public static final FixedIborSwapConvention GBP_FIXED_3M_LIBOR_3M =
ImmutableFixedIborSwapConvention.of(
"GBP-FIXED-3M-LIBOR-3M",
FixedRateSwapLegConvention.of(GBP, ACT_365F, P3M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBLO)),
IborRateSwapLegConvention.of(IborIndices.GBP_LIBOR_3M));
//-------------------------------------------------------------------------
/**
* CHF(1Y) vanilla fixed vs LIBOR 3M swap.
* The fixed leg pays yearly with day count '30U/360'.
*/
public static final FixedIborSwapConvention CHF_FIXED_1Y_LIBOR_3M =
ImmutableFixedIborSwapConvention.of(
"CHF-FIXED-1Y-LIBOR-3M",
FixedRateSwapLegConvention.of(CHF, THIRTY_U_360, P12M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBLO_CHZU)),
IborRateSwapLegConvention.of(IborIndices.CHF_LIBOR_3M));
/**
* CHF(>1Y) vanilla fixed vs LIBOR 6M swap.
* The fixed leg pays yearly with day count '30U/360'.
*/
public static final FixedIborSwapConvention CHF_FIXED_1Y_LIBOR_6M =
ImmutableFixedIborSwapConvention.of(
"CHF-FIXED-1Y-LIBOR-6M",
FixedRateSwapLegConvention.of(CHF, THIRTY_U_360, P12M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBLO_CHZU)),
IborRateSwapLegConvention.of(IborIndices.CHF_LIBOR_6M));
//-------------------------------------------------------------------------
/**
* JPY(Tibor) vanilla fixed vs Tibor 3M swap.
* The fixed leg pays every 6 months with day count 'Act/365F'.
*/
public static final FixedIborSwapConvention JPY_FIXED_6M_TIBORJ_3M =
ImmutableFixedIborSwapConvention.of(
"JPY-FIXED-6M-TIBOR-JAPAN-3M",
FixedRateSwapLegConvention.of(JPY, ACT_365F, P6M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, JPTO)),
IborRateSwapLegConvention.of(IborIndices.JPY_TIBOR_JAPAN_3M));
/**
* JPY(LIBOR) vanilla fixed vs LIBOR 6M swap.
* The fixed leg pays every 6 months with day count 'Act/365F'.
*/
public static final FixedIborSwapConvention JPY_FIXED_6M_LIBOR_6M =
ImmutableFixedIborSwapConvention.of(
"JPY-FIXED-6M-LIBOR-6M",
FixedRateSwapLegConvention.of(JPY, ACT_365F, P6M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBLO_JPTO)),
IborRateSwapLegConvention.of(IborIndices.JPY_LIBOR_6M));
//-------------------------------------------------------------------------
/**
* Restricted constructor.
*/
private StandardFixedIborSwapConventions() {
}
}