@DataProvider(name = "businessDayAdjustment") public static Object[][] data_businessDayAdjustment() { return new Object[][] { {CdsConventions.EUR_GB_STANDARD, BusinessDayAdjustment.of(FOLLOWING, GBLO_EUTA)}, {CdsConventions.EUR_STANDARD, BusinessDayAdjustment.of(FOLLOWING, EUTA)}, {CdsConventions.GBP_STANDARD, BusinessDayAdjustment.of(FOLLOWING, GBLO)}, {CdsConventions.GBP_US_STANDARD, BusinessDayAdjustment.of(FOLLOWING, GBLO_USNY)}, {CdsConventions.JPY_STANDARD, BusinessDayAdjustment.of(FOLLOWING, JPTO)}, {CdsConventions.JPY_US_GB_STANDARD, BusinessDayAdjustment.of(FOLLOWING, GBLO_USNY_JPTO)}, {CdsConventions.USD_STANDARD, BusinessDayAdjustment.of(FOLLOWING, USNY)} }; }
@DataProvider(name = "flatLegBda") public static Object[][] data_flat_leg_bda() { return new Object[][] { {XCcyIborIborSwapConventions.EUR_EURIBOR_3M_USD_LIBOR_3M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, EUTA_USNY)}, {XCcyIborIborSwapConventions.GBP_LIBOR_3M_USD_LIBOR_3M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBLO_USNY)}, {XCcyIborIborSwapConventions.GBP_LIBOR_3M_EUR_EURIBOR_3M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, EUTA_GBLO)}, {XCcyIborIborSwapConventions.GBP_LIBOR_3M_JPY_LIBOR_3M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBLO_JPTO)} }; }
@DataProvider(name = "spreadLegBda") public static Object[][] data_spread_leg_bda() { return new Object[][] { {XCcyIborIborSwapConventions.EUR_EURIBOR_3M_USD_LIBOR_3M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, EUTA_USNY)}, {XCcyIborIborSwapConventions.GBP_LIBOR_3M_USD_LIBOR_3M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBLO_USNY)}, {XCcyIborIborSwapConventions.GBP_LIBOR_3M_EUR_EURIBOR_3M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, EUTA_GBLO)}, {XCcyIborIborSwapConventions.GBP_LIBOR_3M_JPY_LIBOR_3M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBLO_JPTO)} }; }
private static Optional<BusinessDayAdjustment> parseBusinessDayAdjustment( CsvRow row, String leg, String cnvField, String calField) { BusinessDayConvention dateCnv = findValue(row, leg, cnvField) .map(s -> LoaderUtils.parseBusinessDayConvention(s)) .orElse(BusinessDayConventions.MODIFIED_FOLLOWING); return findValue(row, leg, calField) .map(s -> HolidayCalendarId.of(s)) .map(cal -> BusinessDayAdjustment.of(dateCnv, cal)); }
private static FixedRateSwapLegConvention fixedLegZcConvention(Currency ccy, HolidayCalendarId cal) { return FixedRateSwapLegConvention.builder() .paymentFrequency(Frequency.TERM) .accrualFrequency(Frequency.P12M) .accrualBusinessDayAdjustment(BusinessDayAdjustment.of(MODIFIED_FOLLOWING, cal)) .startDateBusinessDayAdjustment(BusinessDayAdjustment.of(MODIFIED_FOLLOWING, cal)) .endDateBusinessDayAdjustment(BusinessDayAdjustment.of(MODIFIED_FOLLOWING, cal)) .compoundingMethod(CompoundingMethod.STRAIGHT) .dayCount(ONE_ONE) .currency(ccy) .build(); }
public void test_noAdjust_normalized() { BusinessDayAdjustment test = BusinessDayAdjustment.of(BusinessDayConventions.NO_ADJUST, SAT_SUN); assertEquals(test.getConvention(), BusinessDayConventions.NO_ADJUST); assertEquals(test.getCalendar(), SAT_SUN); assertEquals(test.toString(), "NoAdjust using calendar Sat/Sun"); }
@Test(dataProvider = "convention", dataProviderClass = BusinessDayConventionTest.class) public void test_adjustDate(BusinessDayConvention convention, LocalDate input, LocalDate expected) { BusinessDayAdjustment test = BusinessDayAdjustment.of(convention, SAT_SUN); assertEquals(test.adjust(input, REF_DATA), expected); assertEquals(test.resolve(REF_DATA).adjust(input), expected); }
public void test_basics() { BusinessDayAdjustment test = BusinessDayAdjustment.of(MODIFIED_FOLLOWING, SAT_SUN); assertEquals(test.getConvention(), MODIFIED_FOLLOWING); assertEquals(test.getCalendar(), SAT_SUN); assertEquals(test.toString(), "ModifiedFollowing using calendar Sat/Sun"); }
public void test_noAdjust_factory() { BusinessDayAdjustment test = BusinessDayAdjustment.of(BusinessDayConventions.NO_ADJUST, NO_HOLIDAYS); assertEquals(test.getConvention(), BusinessDayConventions.NO_ADJUST); assertEquals(test.getCalendar(), NO_HOLIDAYS); assertEquals(test.toString(), "NoAdjust"); }
public void formatForCsv() { AdjustableDate date = AdjustableDate.of(date(2016, 6, 30), BusinessDayAdjustment.of(MODIFIED_FOLLOWING, SAT_SUN)); assertThat(AdjustableDateValueFormatter.INSTANCE.formatForCsv(date)).isEqualTo("2016-06-30"); } }
@ImmutablePreBuild private static void preBuild(Builder builder) { if (builder.index != null) { if (builder.name == null && builder.dateSequence != null) { builder.name = builder.index.getName() + "-" + builder.dateSequence.getName(); } if (builder.businessDayAdjustment == null) { builder.businessDayAdjustment = BusinessDayAdjustment.of( FOLLOWING, builder.index.getEffectiveDateOffset().getCalendar()); } } }
@Test public void testImmutableReferenceDataWithMergedHolidays() { HolidayCalendar hc = HolidayCalendars.FRI_SAT.combinedWith(HolidayCalendars.SAT_SUN); ImmutableReferenceData referenceData = ImmutableReferenceData.of(hc.getId(), hc); LocalDate date = BusinessDayAdjustment.of(BusinessDayConventions.PRECEDING, hc.getId()).adjust(LocalDate.of(2016, 8, 20), referenceData); assertEquals(LocalDate.of(2016, 8, 18), date); }
public void test_of_nobda() { ImmutableFxSwapConvention test = ImmutableFxSwapConvention.of(EUR_USD, PLUS_TWO_DAYS); assertEquals(test.getName(), EUR_USD.toString()); assertEquals(test.getCurrencyPair(), EUR_USD); assertEquals(test.getSpotDateOffset(), PLUS_TWO_DAYS); assertEquals(test.getBusinessDayAdjustment(), BusinessDayAdjustment.of(MODIFIED_FOLLOWING, EUTA_USNY)); }
@Override public DaysAdjustment toIborIndexFixingOffset() { DaysAdjustment base = FloatingRateName.super.toIborIndexFixingOffset(); if (fixingDateOffsetDays == null) { return base; } if (fixingDateOffsetDays == 0) { return DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(PRECEDING, base.getResultCalendar())); } return base.toBuilder().days(fixingDateOffsetDays).build().normalized(); }
private static FixedRateSwapLegConvention fixedLegZcConvention(Currency ccy, HolidayCalendarId cal) { return FixedRateSwapLegConvention.builder() .paymentFrequency(Frequency.TERM) .accrualFrequency(Frequency.P12M) .accrualBusinessDayAdjustment(BusinessDayAdjustment.of(MODIFIED_FOLLOWING, cal)) .startDateBusinessDayAdjustment(BusinessDayAdjustment.of(MODIFIED_FOLLOWING, cal)) .endDateBusinessDayAdjustment(BusinessDayAdjustment.of(MODIFIED_FOLLOWING, cal)) .compoundingMethod(CompoundingMethod.STRAIGHT) .dayCount(ONE_ONE) .currency(ccy) .build(); }
public void test_of_indexOnly() { ImmutableIborFixingDepositConvention test = ImmutableIborFixingDepositConvention.of(GBP_LIBOR_6M); assertEquals(test.getBusinessDayAdjustment(), BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBP_LIBOR_6M.getFixingCalendar())); assertEquals(test.getCurrency(), GBP_LIBOR_6M.getCurrency()); assertEquals(test.getDayCount(), GBP_LIBOR_6M.getDayCount()); assertEquals(test.getFixingDateOffset(), GBP_LIBOR_6M.getFixingDateOffset()); assertEquals(test.getIndex(), GBP_LIBOR_6M); assertEquals(test.getSpotDateOffset(), GBP_LIBOR_6M.getEffectiveDateOffset()); }
public void test_serialization() { BusinessDayAdjustment bda = BusinessDayAdjustment.of(FOLLOWING, SAT_SUN); PeriodicSchedule defn = PeriodicSchedule.of( date(2014, JUNE, 4), date(2014, SEPTEMBER, 17), P1M, bda, SHORT_INITIAL, false); assertSerialization(defn); }
public void coverage() { BusinessDayAdjustment bda = BusinessDayAdjustment.of(FOLLOWING, SAT_SUN); PeriodicSchedule defn = PeriodicSchedule.of( date(2014, JUNE, 4), date(2014, SEPTEMBER, 17), P1M, bda, SHORT_INITIAL, false); coverImmutableBean(defn); }
public void test_builder_indexOnly() { ImmutableIborFixingDepositConvention test = ImmutableIborFixingDepositConvention.builder() .index(GBP_LIBOR_6M) .build(); assertEquals(test.getBusinessDayAdjustment(), BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBP_LIBOR_6M.getFixingCalendar())); assertEquals(test.getCurrency(), GBP_LIBOR_6M.getCurrency()); assertEquals(test.getDayCount(), GBP_LIBOR_6M.getDayCount()); assertEquals(test.getFixingDateOffset(), GBP_LIBOR_6M.getFixingDateOffset()); assertEquals(test.getIndex(), GBP_LIBOR_6M); assertEquals(test.getSpotDateOffset(), GBP_LIBOR_6M.getEffectiveDateOffset()); }
public void test_serialization() { ResetSchedule test = ResetSchedule.builder() .resetFrequency(P1M) .businessDayAdjustment(BusinessDayAdjustment.of(FOLLOWING, GBLO)) .build(); assertSerialization(test); }