public void test_toTrade_dates() { FraConvention base = ImmutableFraConvention.builder() .index(GBP_LIBOR_3M) .spotDateOffset(NEXT_SAME_BUS_DAY) .build(); LocalDate tradeDate = LocalDate.of(2015, 5, 5); LocalDate startDate = date(2015, 8, 5); LocalDate endDate = date(2015, 11, 5); LocalDate paymentDate = startDate; FraTrade test = base.toTrade(tradeDate, startDate, endDate, startDate, BUY, NOTIONAL_2M, 0.25d); Fra expected = Fra.builder() .buySell(BUY) .notional(NOTIONAL_2M) .startDate(startDate) .endDate(endDate) .paymentDate(AdjustableDate.of(paymentDate)) .fixedRate(0.25d) .index(GBP_LIBOR_3M) .build(); assertEquals(test.getInfo().getTradeDate(), Optional.of(tradeDate)); assertEquals(test.getProduct(), expected); }
public void test_builder_allSpecified() { ImmutableFraConvention test = ImmutableFraConvention.builder() .name(GBP_LIBOR_3M.getName()) .index(GBP_LIBOR_3M) .currency(GBP) .spotDateOffset(PLUS_ONE_DAY) .businessDayAdjustment(BDA_FOLLOW) .paymentDateOffset(PLUS_TWO_DAYS) .fixingDateOffset(MINUS_FIVE_DAYS) .dayCount(ACT_360) .discounting(FraDiscountingMethod.NONE) .build(); assertEquals(test.getName(), GBP_LIBOR_3M.getName()); assertEquals(test.getIndex(), GBP_LIBOR_3M); assertEquals(test.getCurrency(), GBP); assertEquals(test.getSpotDateOffset(), PLUS_ONE_DAY); assertEquals(test.getBusinessDayAdjustment(), BDA_FOLLOW); assertEquals(test.getPaymentDateOffset(), PLUS_TWO_DAYS); assertEquals(test.getFixingDateOffset(), MINUS_FIVE_DAYS); assertEquals(test.getDayCount(), ACT_360); assertEquals(test.getDiscounting(), FraDiscountingMethod.NONE); }
public void test_createTrade_periods_adjust() { FraConvention base = ImmutableFraConvention.builder() .index(GBP_LIBOR_3M) .spotDateOffset(NEXT_SAME_BUS_DAY) .paymentDateOffset(DaysAdjustment.ofCalendarDays(0, BDA_FOLLOW)) .build(); LocalDate tradeDate = LocalDate.of(2016, 8, 11); FraTrade test = base.createTrade(tradeDate, Period.ofMonths(1), Period.ofMonths(4), BUY, NOTIONAL_2M, 0.25d, REF_DATA); Fra expected = Fra.builder() .buySell(BUY) .notional(NOTIONAL_2M) .startDate(date(2016, 9, 12)) .endDate(date(2016, 12, 12)) .paymentDate(AdjustableDate.of(date(2016, 9, 12), BDA_FOLLOW)) .fixedRate(0.25d) .index(GBP_LIBOR_3M) .build(); assertEquals(test.getInfo().getTradeDate(), Optional.of(tradeDate)); assertEquals(test.getProduct(), expected); }
public void test_createTrade_paymentOffset() { FraConvention convention = ((ImmutableFraConvention) FRA_GBP_LIBOR_3M).toBuilder() .paymentDateOffset(PLUS_TWO_DAYS) .build(); FraTemplate base = FraTemplate.of(Period.ofMonths(3), Period.ofMonths(6), convention); LocalDate tradeDate = LocalDate.of(2015, 5, 4); // trade date is a holiday! FraTrade test = base.createTrade(tradeDate, BUY, NOTIONAL_2M, 0.25d, REF_DATA); Fra expected = Fra.builder() .buySell(BUY) .notional(NOTIONAL_2M) .startDate(date(2015, 8, 5)) .endDate(date(2015, 11, 5)) .paymentDate(AdjustableDate.of(date(2015, 8, 7), PLUS_TWO_DAYS.getAdjustment())) .fixedRate(0.25d) .index(GBP_LIBOR_3M) .build(); assertEquals(test.getInfo().getTradeDate(), Optional.of(tradeDate)); assertEquals(test.getProduct(), expected); }
public void test_toTrade_dates_paymentOffset() { FraConvention base = ImmutableFraConvention.builder() .index(GBP_LIBOR_3M) .spotDateOffset(NEXT_SAME_BUS_DAY) .paymentDateOffset(PLUS_TWO_DAYS) .build(); LocalDate tradeDate = LocalDate.of(2015, 5, 5); LocalDate startDate = date(2015, 8, 5); LocalDate endDate = date(2015, 11, 5); LocalDate paymentDate = date(2015, 8, 7); FraTrade test = base.toTrade(tradeDate, startDate, endDate, paymentDate, BUY, NOTIONAL_2M, 0.25d); Fra expected = Fra.builder() .buySell(BUY) .notional(NOTIONAL_2M) .startDate(date(2015, 8, 5)) .endDate(date(2015, 11, 5)) .paymentDate(AdjustableDate.of(paymentDate, PLUS_TWO_DAYS.getAdjustment())) .fixedRate(0.25d) .index(GBP_LIBOR_3M) .build(); assertEquals(test.getInfo().getTradeDate(), Optional.of(tradeDate)); assertEquals(test.getProduct(), expected); }
public void test_createTrade_periods() { FraConvention base = ImmutableFraConvention.builder() .index(GBP_LIBOR_3M) .spotDateOffset(NEXT_SAME_BUS_DAY) .build(); LocalDate tradeDate = LocalDate.of(2015, 5, 5); FraTrade test = base.createTrade(tradeDate, Period.ofMonths(3), Period.ofMonths(6), BUY, NOTIONAL_2M, 0.25d, REF_DATA); Fra expected = Fra.builder() .buySell(BUY) .notional(NOTIONAL_2M) .startDate(date(2015, 8, 5)) .endDate(date(2015, 11, 5)) .fixedRate(0.25d) .index(GBP_LIBOR_3M) .build(); assertEquals(test.getInfo().getTradeDate(), Optional.of(tradeDate)); assertEquals(test.getProduct(), expected); }
public void test_createTrade_period() { FraConvention base = ImmutableFraConvention.builder() .index(GBP_LIBOR_3M) .spotDateOffset(NEXT_SAME_BUS_DAY) .build(); LocalDate tradeDate = LocalDate.of(2015, 5, 5); FraTrade test = base.createTrade(tradeDate, Period.ofMonths(3), BUY, NOTIONAL_2M, 0.25d, REF_DATA); Fra expected = Fra.builder() .buySell(BUY) .notional(NOTIONAL_2M) .startDate(date(2015, 8, 5)) .endDate(date(2015, 11, 5)) .fixedRate(0.25d) .index(GBP_LIBOR_3M) .build(); assertEquals(test.getInfo().getTradeDate(), Optional.of(tradeDate)); assertEquals(test.getProduct(), expected); }
/** * Obtains a convention based on the specified index. * <p> * The standard market convention for a FRA is based exclusively on the index. * This creates an instance that contains the index. * The instance is not dereferenced using the {@code FraConvention} name, as such * the result of this method and {@link FraConvention#of(IborIndex)} can differ. * <p> * Use the {@linkplain #builder() builder} for unusual conventions. * * @param index the index, the market convention values are extracted from the index * @return the convention */ public static ImmutableFraConvention of(IborIndex index) { return ImmutableFraConvention.builder() .index(index) .build(); }
public void test_createTrade_periods_adjust_payOffset() { FraConvention base = ImmutableFraConvention.builder() .index(GBP_LIBOR_3M) .spotDateOffset(NEXT_SAME_BUS_DAY) .paymentDateOffset(PLUS_TWO_DAYS) .build(); LocalDate tradeDate = LocalDate.of(2016, 8, 11); FraTrade test = base.createTrade(tradeDate, Period.ofMonths(1), Period.ofMonths(4), BUY, NOTIONAL_2M, 0.25d, REF_DATA); Fra expected = Fra.builder() .buySell(BUY) .notional(NOTIONAL_2M) .startDate(date(2016, 9, 12)) .endDate(date(2016, 12, 12)) .paymentDate(AdjustableDate.of(date(2016, 9, 14), PLUS_TWO_DAYS.getAdjustment())) .fixedRate(0.25d) .index(GBP_LIBOR_3M) .build(); assertEquals(test.getInfo().getTradeDate(), Optional.of(tradeDate)); assertEquals(test.getProduct(), expected); }
public void coverage() { ImmutableFraConvention test = ImmutableFraConvention.builder() .index(GBP_LIBOR_3M) .build(); coverImmutableBean(test); ImmutableFraConvention test2 = ImmutableFraConvention.builder() .index(GBP_LIBOR_3M) .name("Test") .currency(USD) .spotDateOffset(PLUS_ONE_DAY) .businessDayAdjustment(BDA_FOLLOW) .paymentDateOffset(PLUS_TWO_DAYS) .fixingDateOffset(MINUS_FIVE_DAYS) .dayCount(ACT_360) .discounting(FraDiscountingMethod.NONE) .build(); coverBeanEquals(test, test2); coverPrivateConstructor(FraConventions.class); coverPrivateConstructor(FraConventionLookup.class); }
public void test_builder_minSpecified() { ImmutableFraConvention test = ImmutableFraConvention.builder() .index(GBP_LIBOR_3M) .build(); assertEquals(test.getName(), GBP_LIBOR_3M.getName()); assertEquals(test.getIndex(), GBP_LIBOR_3M); assertEquals(test.getCurrency(), GBP); assertEquals(test.getSpotDateOffset(), GBP_LIBOR_3M.getEffectiveDateOffset()); assertEquals(test.getBusinessDayAdjustment(), BDA_MOD_FOLLOW); assertEquals(test.getPaymentDateOffset(), DaysAdjustment.NONE); assertEquals(test.getFixingDateOffset(), GBP_LIBOR_3M.getFixingDateOffset()); assertEquals(test.getDayCount(), GBP_LIBOR_3M.getDayCount()); assertEquals(test.getDiscounting(), ISDA); }
/** * Returns a builder used to create an instance of the bean. * @return the builder, not null */ public static ImmutableFraConvention.Builder builder() { return new ImmutableFraConvention.Builder(); }
@Override public ImmutableFraConvention.Builder builder() { return new ImmutableFraConvention.Builder(); }
/** * Returns a builder that allows this bean to be mutated. * @return the mutable builder, not null */ public Builder toBuilder() { return new Builder(this); }
public void test_builder_noIndex() { assertThrowsIllegalArg(() -> ImmutableFraConvention.builder() .spotDateOffset(NEXT_SAME_BUS_DAY) .build()); }