/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.convention.initializer;
import com.opengamma.core.convention.Convention;
import com.opengamma.core.link.ConventionLink;
import com.opengamma.financial.convention.rolldate.RollDateAdjusterFactory;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.util.money.Currency;
/**
* Helper for per-currency conventions.
*/
public class PerCurrencyConventionHelper {
/** The convention scheme name string **/
public static final String SCHEME_NAME = "CONVENTION";
/** Overnight Index string **/
public static final String OVERNIGHT = "Overnight";
/** Ibor (interbank offered rate) index string **/
public static final String IBOR = "Ibor";
/** Libor (London interbank offered rate) index string **/
public static final String LIBOR = "Libor";
/** Libor (London interbank offered rate) index string **/
public static final String LIBOR_CONV = "LIBOR Convention";
/** Jibar (Johannesburg interbank agreed rate) index string */
public static final String JIBOR = "Jibar";
/** Deposit convention string **/
public static final String DEPOSIT = "Deposit";
/** Deposit Overnight convention string **/
public static final String DEPOSIT_ON = "DepositON";
/** FRA convention string **/
public static final String FRA = "FRA";
/** OIS fixed leg convention string **/
public static final String OIS_FIXED_LEG = "OIS Fixed Leg";
/** IRS fixed leg convention string **/
public static final String IRS_FIXED_LEG = "IRS Fixed Leg";
/** IRS fixed leg convention string **/
public static final String FIXED_LEG = "Fixed Leg";
/** OIS float leg convention string **/
public static final String OIS_ON_LEG = "OIS Overnight Leg";
/** Overnight with composition, i.e. OIS-like **/
public static final String ON_CMP_LEG = "ON Comp Leg";
/** Overnight with arithmetic average, i.e. FF-like **/
public static final String ON_AA_LEG = "ON AA Leg";
/** Suffix to indicate that a leg as a unnatural payment lag to match the other leg. **/
public static final String PAY_LAG = "Pay Lag ";
/** IRS Ibor leg convention string **/
public static final String IRS_IBOR_LEG = "IRS Ibor Leg";
/** Ibor leg convention string **/
public static final String IBOR_LEG = "Ibor Leg";
/** Libor leg convention string **/
public static final String LIBOR_LEG = "Libor Leg";
/** Compounding Ibor leg convention string **/
public static final String IBOR_CMP_LEG = "Comp Ibor Leg";
/** Flat Compounding Ibor leg convention string **/
public static final String IBOR_CMP_FLAT_LEG = "Comp Flat Ibor Leg";
/** Swap string */
public static final String SWAP = "Swap";
/** Quarterly Eurodollar futures string */
public static final String EURODOLLAR_FUTURE = "Quarterly ED, 3M Libor";
/** Fed fund futures string */
public static final String FED_FUNDS_FUTURE = "Fed Funds Future";
/** CME deliverable swap future string */
public static final String CME_DELIVERABLE_SWAP_FUTURE = "CME Deliverable Swap Future";
/** Inflation swap leg string */
public static final String INFLATION_LEG = "Inflation Swap Leg";
/** Price index string */
public static final String PRICE_INDEX = "Price Index";
/** Swap index string */
public static final String SWAP_INDEX = "Swap Index";
/** FX Spot string */
public static final String FX_SPOT = "FX Spot";
/** FX Forward string */
public static final String FX_FORWARD = "FX Forward";
/** Tenor string: 1M **/
public static final String TENOR_STR_1M = "1M";
/** Tenor string: 3M **/
public static final String TENOR_STR_3M = "3M";
/** Tenor string: 6M **/
public static final String TENOR_STR_6M = "6M";
/** Tenor string: 12M **/
public static final String TENOR_STR_12M = "12M";
/** Tenor string: 1Y **/
public static final String TENOR_STR_1Y = "1Y";
/** Tenor string: short period instruments (usually for 1w or 2w) **/
public static final String TENOR_STR_SHORT = "Short";
/** STIR Futures (i.e. futures on Ibor) **/
public static final String STIR_FUTURES = "STIR Futures ";
/** Serial (i.e. monthly) futures **/
public static final String SERIAL = "Serial";
/** Quarterly (i.e. March, June, September, December) futures **/
public static final String QUARTERLY = "Quarterly";
/** Monthly **/
public static final String MONTHLY = "Monthly";
/** IMM dates **/
public static final String IMM = "IMM";
/** Government (Simplified bond description) **/
public static final String GOVT = "Govt ";
/** Quarterly IMM roll dates **/
public static final ExternalId QUARTERLY_IMM_DATES = ExternalId.of(SCHEME_NAME, RollDateAdjusterFactory.QUARTERLY_IMM_ROLL_STRING);
/** Monthly IMM roll dates **/
public static final ExternalId MONTHLY_IMM_DATES = ExternalId.of(SCHEME_NAME, RollDateAdjusterFactory.MONTHLY_IMM_ROLL_STRING);
public static ExternalIdBundle getIds(final Currency currency, final String instrumentName) {
final String idName = getConventionName(currency, instrumentName);
return ExternalIdBundle.of(simpleNameId(idName));
}
public static ExternalId getId(final Currency currency, final String instrumentName) {
final String idName = getConventionName(currency, instrumentName);
return simpleNameId(idName);
}
public static String getConventionName(final Currency currency, final String instrumentName) {
return currency.getCode() + " " + instrumentName;
}
public static ExternalIdBundle getIds(final Currency currency, final String tenorString, final String instrumentName) {
final String idName = getConventionName(currency, tenorString, instrumentName);
return ExternalIdBundle.of(simpleNameId(idName));
}
public static ExternalId getId(final Currency currency, final String tenorString, final String instrumentName) {
final String idName = getConventionName(currency, tenorString, instrumentName);
return simpleNameId(idName);
}
public static ExternalIdBundle getIds(final String idName) {
return ExternalIdBundle.of(simpleNameId(idName));
}
public static String getConventionName(final Currency currency, final String tenorString, final String instrumentName) {
return currency.getCode() + " " + tenorString + " " + instrumentName;
}
public static ExternalId simpleNameId(final String name) {
return ExternalId.of(SCHEME_NAME, name);
}
public static ConventionLink<Convention> getConventionLink(Currency ccy, String instrumentName) {
return ConventionLink.resolvable(getId(ccy, instrumentName));
}
}