/** * 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 static com.opengamma.financial.convention.initializer.PerCurrencyConventionHelper.DEPOSIT; import static com.opengamma.financial.convention.initializer.PerCurrencyConventionHelper.IRS_FIXED_LEG; import static com.opengamma.financial.convention.initializer.PerCurrencyConventionHelper.IRS_IBOR_LEG; import static com.opengamma.financial.convention.initializer.PerCurrencyConventionHelper.JIBOR; import static com.opengamma.financial.convention.initializer.PerCurrencyConventionHelper.getConventionName; import static com.opengamma.financial.convention.initializer.PerCurrencyConventionHelper.getIds; import org.threeten.bp.LocalTime; import com.opengamma.analytics.math.interpolation.Interpolator1DFactory; import com.opengamma.core.id.ExternalSchemes; import com.opengamma.financial.convention.DepositConvention; import com.opengamma.financial.convention.IborIndexConvention; import com.opengamma.financial.convention.StubType; import com.opengamma.financial.convention.SwapFixedLegConvention; import com.opengamma.financial.convention.VanillaIborLegConvention; import com.opengamma.financial.convention.businessday.BusinessDayConvention; import com.opengamma.financial.convention.businessday.BusinessDayConventions; import com.opengamma.financial.convention.daycount.DayCount; import com.opengamma.financial.convention.daycount.DayCounts; import com.opengamma.id.ExternalId; import com.opengamma.master.convention.ConventionMaster; import com.opengamma.util.money.Currency; import com.opengamma.util.time.Tenor; /** * The conventions for Great Britain. */ public class ZAConventions extends ConventionMasterInitializer { /** Singleton. */ public static final ConventionMasterInitializer INSTANCE = new ZAConventions(); private static final BusinessDayConvention FOLLOWING = BusinessDayConventions.FOLLOWING; private static final DayCount ACT_360 = DayCounts.ACT_360; private static final DayCount ACT_365 = DayCounts.ACT_365; private static final ExternalId ZA = ExternalSchemes.financialRegionId("ZA"); private static final Currency ZAR = Currency.of("ZAR"); /** * Restricted constructor. */ protected ZAConventions() { } //------------------------------------------------------------------------- @Override public void init(final ConventionMaster master) { addSwapFixedLegConvention(master); addVanillaIborLegConvention(master); addDepositConventions(master); addLiborConventions(master); } protected void addSwapFixedLegConvention(final ConventionMaster master) { final String fixedSwapLegConventionName = getConventionName(ZAR, IRS_FIXED_LEG); final SwapFixedLegConvention fixedLegConvention = new SwapFixedLegConvention(fixedSwapLegConventionName, getIds(ZAR, IRS_FIXED_LEG), Tenor.THREE_MONTHS, ACT_365, FOLLOWING, ZAR, ZA, 2, false, StubType.NONE, false, 2); addConvention(master, fixedLegConvention); } protected void addVanillaIborLegConvention(final ConventionMaster master) { final String vanillaIborLegConventionName = getConventionName(ZAR, IRS_IBOR_LEG); final String tenorString = "3m"; final String libor3mConventionName = getConventionName(ZAR, tenorString, JIBOR); final ExternalId libor3mConventionId = PerCurrencyConventionHelper.simpleNameId(libor3mConventionName); final VanillaIborLegConvention vanillaIborLegConvention = new VanillaIborLegConvention( vanillaIborLegConventionName, getIds(ZAR, tenorString, IRS_IBOR_LEG), libor3mConventionId, true, Interpolator1DFactory.LINEAR, Tenor.THREE_MONTHS, 2, false, StubType.NONE, false, 2); addConvention(master, vanillaIborLegConvention); } protected void addDepositConventions(final ConventionMaster master) { final String depositConventionName = getConventionName(ZAR, DEPOSIT); final DepositConvention depositConvention = new DepositConvention( depositConventionName, getIds(ZAR, DEPOSIT), ACT_360, FOLLOWING, 0, false, ZAR, ZA); addConvention(master, depositConvention); } protected void addLiborConventions(final ConventionMaster master) { final String liborConventionName = getConventionName(ZAR, JIBOR); final IborIndexConvention liborConvention = new IborIndexConvention( liborConventionName, getIds(ZAR, JIBOR), ACT_365, FOLLOWING, 2, false, ZAR, LocalTime.of(11, 00), "ZA", ZA, ZA, ""); addConvention(master, liborConvention); } }