/**
* 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.id.ExternalSchemes;
import com.opengamma.financial.convention.FXForwardAndSwapConvention;
import com.opengamma.financial.convention.FXSpotConvention;
import com.opengamma.financial.convention.businessday.BusinessDayConvention;
import com.opengamma.financial.convention.businessday.BusinessDayConventions;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.master.convention.ConventionMaster;
/**
* The conventions for US FX.
*/
public class USFXConventions extends ConventionMasterInitializer {
/** Singleton. */
public static final ConventionMasterInitializer INSTANCE = new USFXConventions();
private static final BusinessDayConvention FOLLOWING = BusinessDayConventions.FOLLOWING;
private static final ExternalId US = ExternalSchemes.financialRegionId("US");
/**
* Restricted constructor.
*/
protected USFXConventions() {
}
//-------------------------------------------------------------------------
@Override
public void init(final ConventionMaster master) {
addUsdCadFxSpotConvention(master);
addUsdCadForwardConvention(master);
addFxSpotConvention(master);
addFxForwardConvention(master);
}
protected void addUsdCadFxSpotConvention(final ConventionMaster master) {
final FXSpotConvention usdCadSpot = new FXSpotConvention(
"USD/CAD FX Spot", ExternalIdBundle.of(ExternalId.of("CONVENTION", "USD/CAD FX Spot")), 1, US);
addConvention(master, usdCadSpot);
}
protected void addUsdCadForwardConvention(final ConventionMaster master) {
final FXForwardAndSwapConvention usdCadForward = new FXForwardAndSwapConvention(
"USD/CAD FX Forward", ExternalIdBundle.of(ExternalId.of("CONVENTION", "USD/CAD FX Forward")),
ExternalId.of("CONVENTION", "USD/CAD FX Spot"), FOLLOWING, false, US);
addConvention(master, usdCadForward);
}
protected void addFxSpotConvention(final ConventionMaster master) {
final FXSpotConvention fxSpot = new FXSpotConvention(
"FX Spot", ExternalIdBundle.of(ExternalId.of("CONVENTION", "FX Spot")), 2, US);
addConvention(master, fxSpot);
}
protected void addFxForwardConvention(final ConventionMaster master) {
// TODO: Holiday should not be US only.
final FXForwardAndSwapConvention fxForward = new FXForwardAndSwapConvention(
"FX Forward", ExternalIdBundle.of(ExternalId.of("CONVENTION", "FX Forward")),
ExternalId.of("CONVENTION", "FX Spot"), FOLLOWING, false, US);
addConvention(master, fxForward);
}
}