// ------------------------------------------------------------------------- public void coverage() { ImmutableIborIborSwapConvention test = ImmutableIborIborSwapConvention.of(NAME, IBOR3M, IBOR6M); coverImmutableBean(test); ImmutableIborIborSwapConvention test2 = ImmutableIborIborSwapConvention.of(NAME, IBOR1M, IBOR6M); coverBeanEquals(test, test2); ImmutableIborIborSwapConvention test3 = ImmutableIborIborSwapConvention.of(NAME, IBOR1M, IBOR3M); coverBeanEquals(test, test3); }
public void test_expandAllSpecified() { ImmutableIborIborSwapConvention test = ImmutableIborIborSwapConvention.builder() .name(NAME) .spreadLeg(IBOR3M) .flatLeg(IBOR6M) .spotDateOffset(PLUS_ONE_DAY) .build() .expand(); assertEquals(test.getSpreadLeg(), IBOR3M.expand()); assertEquals(test.getFlatLeg(), IBOR6M.expand()); assertEquals(test.getSpotDateOffset(), PLUS_ONE_DAY); }
// ------------------------------------------------------------------------- public void test_of() { ImmutableIborIborSwapConvention test = ImmutableIborIborSwapConvention.of(NAME, IBOR3M, IBOR6M); assertEquals(test.getName(), NAME); assertEquals(test.getSpreadLeg(), IBOR3M); assertEquals(test.getFlatLeg(), IBOR6M); assertEquals(test.getSpotDateOffset(), USD_LIBOR_3M.getEffectiveDateOffset()); }
// ------------------------------------------------------------------------- public void test_toTrade_tenor() { IborIborSwapConvention base = ImmutableIborIborSwapConvention.of(NAME, IBOR3M, IBOR6M); LocalDate tradeDate = LocalDate.of(2015, 5, 5); LocalDate startDate = date(2015, 5, 7); LocalDate endDate = date(2025, 5, 7); SwapTrade test = base.toTrade(tradeDate, TENOR_10Y, BUY, NOTIONAL_2M, 0.25d); Swap expected = Swap.of( IBOR3M.toLeg(startDate, endDate, PAY, NOTIONAL_2M, 0.25d), IBOR6M.toLeg(startDate, endDate, RECEIVE, NOTIONAL_2M)); assertEquals(test.getTradeInfo().getTradeDate(), Optional.of(tradeDate)); assertEquals(test.getProduct(), expected); }
/** * Market standard Ibor-Ibor swap conventions. * * <p>http://www.opengamma.com/sites/default/files/interest-rate-instruments-and-market-conventions.pdf */ final class StandardIborIborSwapConventions { /** * USD standard LIBOR 3M vs LIBOR 6M swap. The LIBOR 3M leg pays semi-annually with 'Flat' * compounding method. */ public static final IborIborSwapConvention USD_LIBOR_3M_LIBOR_6M = ImmutableIborIborSwapConvention.of( "USD-LIBOR-3M-LIBOR-6M", IborRateSwapLegConvention.builder() .index(IborIndices.USD_LIBOR_3M) .paymentFrequency(Frequency.P6M) .compoundingMethod(CompoundingMethod.FLAT) .stubConvention(StubConvention.SHORT_INITIAL) .build(), IborRateSwapLegConvention.of(IborIndices.USD_LIBOR_6M)); /** * USD standard LIBOR 1M vs LIBOR 3M swap. The LIBOR 1M leg pays quarterly with 'Flat' compounding * method. */ public static final IborIborSwapConvention USD_LIBOR_1M_LIBOR_3M = ImmutableIborIborSwapConvention.of( "USD-LIBOR-1M-LIBOR-3M", IborRateSwapLegConvention.builder() .index(IborIndices.USD_LIBOR_1M) .paymentFrequency(Frequency.P3M) .compoundingMethod(CompoundingMethod.FLAT) .stubConvention(StubConvention.SHORT_INITIAL) .build(), IborRateSwapLegConvention.of(IborIndices.USD_LIBOR_3M)); // ------------------------------------------------------------------------- /** Restricted constructor. */ private StandardIborIborSwapConventions() {} }
// ------------------------------------------------------------------------- public void test_builder_notEnoughData() { assertThrowsIllegalArg( () -> ImmutableIborIborSwapConvention.builder().spotDateOffset(NEXT_SAME_BUS_DAY).build()); }
public void test_serialization() { IborIborSwapConvention test = ImmutableIborIborSwapConvention.of(NAME, IBOR3M, IBOR6M); assertSerialization(test); }