/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.fudgemsg;
import org.testng.annotations.Test;
import org.threeten.bp.LocalTime;
import com.opengamma.analytics.financial.interestrate.CompoundingType;
import com.opengamma.analytics.math.interpolation.Interpolator1DFactory;
import com.opengamma.financial.convention.CMSLegConvention;
import com.opengamma.financial.convention.CompoundingIborLegConvention;
import com.opengamma.financial.convention.DeliverablePriceQuotedSwapFutureConvention;
import com.opengamma.financial.convention.DepositConvention;
import com.opengamma.financial.convention.FXForwardAndSwapConvention;
import com.opengamma.financial.convention.FXSpotConvention;
import com.opengamma.financial.convention.FederalFundsFutureConvention;
import com.opengamma.financial.convention.IborIndexConvention;
import com.opengamma.financial.convention.InMemoryConventionBundleMaster;
import com.opengamma.financial.convention.InflationLegConvention;
import com.opengamma.financial.convention.InterestRateFutureConvention;
import com.opengamma.financial.convention.OISLegConvention;
import com.opengamma.financial.convention.OvernightIndexConvention;
import com.opengamma.financial.convention.PriceIndexConvention;
import com.opengamma.financial.convention.RollDateFRAConvention;
import com.opengamma.financial.convention.RollDateSwapConvention;
import com.opengamma.financial.convention.StubType;
import com.opengamma.financial.convention.SwapConvention;
import com.opengamma.financial.convention.SwapFixedLegConvention;
import com.opengamma.financial.convention.SwapIndexConvention;
import com.opengamma.financial.convention.VanillaIborLegConvention;
import com.opengamma.financial.convention.businessday.BusinessDayConventions;
import com.opengamma.financial.convention.daycount.DayCounts;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.id.UniqueId;
import com.opengamma.util.money.Currency;
import com.opengamma.util.test.AbstractFudgeBuilderTestCase;
import com.opengamma.util.test.TestGroup;
import com.opengamma.util.time.Tenor;
/**
*
*/
@Test(groups = TestGroup.UNIT)
public class ConventionBuildersTest extends AbstractFudgeBuilderTestCase {
@Test
public void testCMSLegConvention() {
final CMSLegConvention convention = new CMSLegConvention("EUR CMS", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("EUR CMS")),
ExternalId.of("Test", "EUR 6m Swap Index"), Tenor.SIX_MONTHS, true);
convention.setUniqueId(UniqueId.of("Test", "123"));
assertEncodeDecodeCycle(CMSLegConvention.class, convention);
}
@Test
public void testCompoundingIborLegConvention() {
final CompoundingIborLegConvention convention = new CompoundingIborLegConvention("EUR Compounded", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("EUR Compounded")),
ExternalId.of("Test", "EURIBOR 3M"), Tenor.SIX_MONTHS, CompoundingType.FLAT_COMPOUNDING, Tenor.THREE_MONTHS, StubType.SHORT_START, 2, false, StubType.LONG_START, true, 1);
convention.setUniqueId(UniqueId.of("Test", "12345"));
assertEncodeDecodeCycle(CompoundingIborLegConvention.class, convention);
}
@Test
public void testDepositConvention() {
final DepositConvention convention = new DepositConvention("EUR Deposit", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("EUR Deposit")),
DayCounts.ACT_365, BusinessDayConventions.FOLLOWING, 2, true,
Currency.EUR, ExternalId.of("Test", "EU"));
convention.setUniqueId(UniqueId.of("Test", "1234"));
assertEncodeDecodeCycle(DepositConvention.class, convention);
}
@Test
public void testFXForwardAndSwapConvention() {
final FXForwardAndSwapConvention convention = new FXForwardAndSwapConvention("USD/CAD", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("USD/CAD")),
ExternalId.of("Test", "FX"), BusinessDayConventions.FOLLOWING, true, ExternalId.of("Test", "US"));
convention.setUniqueId(UniqueId.of("Test", "1234"));
assertEncodeDecodeCycle(FXForwardAndSwapConvention.class, convention);
}
@Test
public void testFXSpotConvention() {
final FXSpotConvention convention = new FXSpotConvention("USD/CAD", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("USD/CAD")),
1, ExternalId.of("Test", "US"));
convention.setUniqueId(UniqueId.of("Test", "1234"));
assertEncodeDecodeCycle(FXSpotConvention.class, convention);
}
@Test
public void testIborIndexConvention() {
final IborIndexConvention convention = new IborIndexConvention("EUR Deposit", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("EUR Deposit")),
DayCounts.ACT_365, BusinessDayConventions.FOLLOWING, 2, true,
Currency.EUR, LocalTime.of(11, 0), "EU", ExternalId.of("Test", "EU"), ExternalId.of("Test", "EU"), "Page");
convention.setUniqueId(UniqueId.of("Test", "1234567"));
assertEncodeDecodeCycle(IborIndexConvention.class, convention);
}
@Test
public void testInterestRateFutureConvention() {
final InterestRateFutureConvention convention = new InterestRateFutureConvention("ER", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("ER")),
ExternalId.of("Test", "3rd Wednesday"), ExternalId.of("Test", "EUX"), ExternalId.of("Test", "3m Euribor"));
convention.setUniqueId(UniqueId.of("Test", "123456"));
assertEncodeDecodeCycle(InterestRateFutureConvention.class, convention);
}
@Test
public void testFederalFundsFutureConvention() {
final FederalFundsFutureConvention convention = new FederalFundsFutureConvention("FF", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("FF")),
ExternalId.of("Test", "EOM"), ExternalId.of("Test", "CME"), ExternalId.of("Test", "FF Rate"), 5000000);
convention.setUniqueId(UniqueId.of("Test", "123456"));
assertEncodeDecodeCycle(FederalFundsFutureConvention.class, convention);
}
@Test
public void testDeliverablePriceQuotedSwapFutureConvention() {
final DeliverablePriceQuotedSwapFutureConvention convention = new DeliverablePriceQuotedSwapFutureConvention("T1U", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("T1U")),
ExternalId.of("Test", "3rd Wednesday"), ExternalId.of("Test", "CME"), ExternalId.of("Test", "Swap"), 100000);
convention.setUniqueId(UniqueId.of("Test", "123456"));
assertEncodeDecodeCycle(DeliverablePriceQuotedSwapFutureConvention.class, convention);
}
@Test
public void testIMMFRAConvention() {
final RollDateFRAConvention convention = new RollDateFRAConvention("IMM FRA", InMemoryConventionBundleMaster.simpleNameSecurityId("IMM FRA").toBundle(),
ExternalId.of("Test", "Ibor"), ExternalId.of("Test", "IMM dates"));
convention.setUniqueId(UniqueId.of("Test", "3577"));
assertEncodeDecodeCycle(RollDateFRAConvention.class, convention);
}
@Test
public void testIMMSwapConvention() {
final RollDateSwapConvention convention = new RollDateSwapConvention("IMM Swap", InMemoryConventionBundleMaster.simpleNameSecurityId("IMM Swap").toBundle(),
ExternalId.of("Test", "Pay"), ExternalId.of("Test", "Receive"), ExternalId.of("Test", "IMM dates"));
convention.setUniqueId(UniqueId.of("Test", "9836"));
assertEncodeDecodeCycle(RollDateSwapConvention.class, convention);
}
@Test
public void testOISLegConvention() {
final OISLegConvention convention = new OISLegConvention("EUR OIS", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("EUR OIS")),
ExternalId.of("Test", "EONIA"), Tenor.SIX_MONTHS, BusinessDayConventions.MODIFIED_FOLLOWING, 1, true, StubType.LONG_START, false, 4);
convention.setUniqueId(UniqueId.of("Test", "123"));
assertEncodeDecodeCycle(OISLegConvention.class, convention);
}
@Test
public void testOvernightIndexConvention() {
final OvernightIndexConvention convention = new OvernightIndexConvention("EONIA", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("EONIA")),
DayCounts.ACT_360, 2, Currency.EUR, ExternalId.of("Test", "EU"));
convention.setUniqueId(UniqueId.of("Test", "1234"));
assertEncodeDecodeCycle(OvernightIndexConvention.class, convention);
}
@Test
public void testPriceIndexConvention() {
final PriceIndexConvention convention = new PriceIndexConvention("CPI", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("CPI")), Currency.USD, ExternalId.of("Region", "US"),
ExternalId.of("Test", "CPI"));
convention.setUniqueId(UniqueId.of("Test", "9385"));
assertEncodeDecodeCycle(PriceIndexConvention.class, convention);
}
@Test
public void testSwapConvention() {
final SwapConvention convention = new SwapConvention("EUR Swap", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("EUR Swap")),
ExternalId.of("Test", "EUR Pay Leg"), ExternalId.of("Test", "EUR Receive Leg"));
convention.setUniqueId(UniqueId.of("Test", "123"));
assertEncodeDecodeCycle(SwapConvention.class, convention);
}
@Test
public void testSwapFixedLegConvention() {
final SwapFixedLegConvention convention = new SwapFixedLegConvention("EUR Fixed Leg", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("EUR Fixed Leg")),
Tenor.THREE_MONTHS, DayCounts.THIRTY_U_360, BusinessDayConventions.FOLLOWING,
Currency.EUR, ExternalId.of("Test", "EU"), 2, true, StubType.LONG_END, false, 3);
convention.setUniqueId(UniqueId.of("Test", "123"));
assertEncodeDecodeCycle(SwapFixedLegConvention.class, convention);
}
@Test
public void testSwapIndexConvention() {
final SwapIndexConvention convention = new SwapIndexConvention("EUR 3m Swap", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("EUR 3m Swap")),
LocalTime.of(11, 0), ExternalId.of("Test", "EUR 3m Swap"));
convention.setUniqueId(UniqueId.of("Test", "12345"));
assertEncodeDecodeCycle(SwapIndexConvention.class, convention);
}
@Test
public void testVanillaIborLegConvention() {
final VanillaIborLegConvention convention = new VanillaIborLegConvention("EUR 3m Swap", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("EUR 3m Swap")),
ExternalId.of("Test", "3m Euribor"), true, Interpolator1DFactory.LINEAR, Tenor.THREE_MONTHS, 2, true, StubType.SHORT_END, false, 7);
convention.setUniqueId(UniqueId.of("Test", "12345"));
assertEncodeDecodeCycle(VanillaIborLegConvention.class, convention);
}
@Test
public void testInflationLegConvention() {
final InflationLegConvention convention = new InflationLegConvention("CPI", ExternalIdBundle.of(InMemoryConventionBundleMaster.simpleNameSecurityId("CPI")),
BusinessDayConventions.FOLLOWING, DayCounts.ACT_360, true, 3, 1, ExternalId.of("Test", "Price"));
convention.setUniqueId(UniqueId.of("Test", "98657"));
assertEncodeDecodeCycle(InflationLegConvention.class, convention);
}
}