public void coverage_builder() { PeriodicSchedule test = PeriodicSchedule.builder() .startDate(JUL_17) .endDate(SEP_17) .frequency(P2M) .businessDayAdjustment(BDA_NONE) .startDateBusinessDayAdjustment(BDA_NONE) .endDateBusinessDayAdjustment(BDA_NONE) .stubConvention(STUB_NONE) .rollConvention(EOM) .firstRegularStartDate(JUL_17) .lastRegularEndDate(SEP_17) .overrideStartDate(AdjustableDate.of(JUL_11)) .build(); assertEquals(test.getStartDate(), JUL_17); assertEquals(test.getEndDate(), SEP_17); assertEquals(test.calculatedStartDate(), AdjustableDate.of(JUL_11, BDA_NONE)); assertEquals(test.calculatedEndDate(), AdjustableDate.of(SEP_17, BDA_NONE)); }
public void test_startEndAdjust() { BusinessDayAdjustment bda1 = BusinessDayAdjustment.of(PRECEDING, SAT_SUN); BusinessDayAdjustment bda2 = BusinessDayAdjustment.of(MODIFIED_PRECEDING, SAT_SUN); PeriodicSchedule test = PeriodicSchedule.builder() .startDate(date(2014, 10, 4)) .endDate(date(2015, 4, 4)) .frequency(P3M) .businessDayAdjustment(BDA) .startDateBusinessDayAdjustment(bda1) .endDateBusinessDayAdjustment(bda2) .stubConvention(STUB_NONE) .build(); assertEquals(test.calculatedStartDate(), AdjustableDate.of(date(2014, 10, 4), bda1)); assertEquals(test.calculatedEndDate(), AdjustableDate.of(date(2015, 4, 4), bda2)); assertEquals(test.createUnadjustedDates(), list(date(2014, 10, 4), date(2015, 1, 4), date(2015, 4, 4))); assertEquals(test.createAdjustedDates(REF_DATA), list(date(2014, 10, 3), date(2015, 1, 5), date(2015, 4, 3))); }
public void test_toLeg1() { FixedRateSwapLegConvention base = FixedRateSwapLegConvention.of(GBP, ACT_365F, P3M, BDA_MOD_FOLLOW); LocalDate startDate = LocalDate.of(2015, 5, 5); LocalDate endDate = LocalDate.of(2020, 5, 5); RateCalculationSwapLeg test = base.toLeg(startDate, endDate, PAY, NOTIONAL_2M, 0.25d); RateCalculationSwapLeg expected = RateCalculationSwapLeg.builder() .payReceive(PAY) .accrualSchedule(PeriodicSchedule.builder() .frequency(P3M) .startDate(startDate) .endDate(endDate) .businessDayAdjustment(BDA_MOD_FOLLOW) .stubConvention(StubConvention.SMART_INITIAL) .build()) .paymentSchedule(PaymentSchedule.builder() .paymentFrequency(P3M) .paymentDateOffset(DaysAdjustment.NONE) .build()) .notionalSchedule(NotionalSchedule.of(GBP, NOTIONAL_2M)) .calculation(FixedRateCalculation.of(0.25d, ACT_365F)) .build(); assertEquals(test, expected); }
private static SwapLeg iborLeg( LocalDate start, LocalDate end, IborIndex index, PayReceive payReceive, NotionalSchedule notional, StubConvention stubConvention) { Frequency freq = Frequency.of(index.getTenor().getPeriod()); return RateCalculationSwapLeg.builder() .payReceive(payReceive) .accrualSchedule(PeriodicSchedule.builder() .startDate(start) .endDate(end) .frequency(freq) .businessDayAdjustment(BDA_MF) .stubConvention(stubConvention) .build()) .paymentSchedule(PaymentSchedule.builder() .paymentFrequency(freq) .paymentDateOffset(DaysAdjustment.NONE) .build()) .notionalSchedule(notional) .calculation(IborRateCalculation.builder() .index(index) .fixingDateOffset(DaysAdjustment.ofBusinessDays(-2, index.getFixingCalendar(), BDA_P)) .build()) .build(); }
private static SwapLeg fixedLeg( LocalDate start, LocalDate end, Frequency frequency, PayReceive payReceive, NotionalSchedule notional, double fixedRate, StubConvention stubConvention) { return RateCalculationSwapLeg.builder() .payReceive(payReceive) .accrualSchedule(PeriodicSchedule.builder() .startDate(start) .endDate(end) .frequency(frequency) .businessDayAdjustment(BDA_MF) .stubConvention(stubConvention) .build()) .paymentSchedule(PaymentSchedule.builder() .paymentFrequency(frequency) .paymentDateOffset(DaysAdjustment.NONE) .build()) .notionalSchedule(notional) .calculation(FixedRateCalculation.builder() .dayCount(THIRTY_U_360) .rate(ValueSchedule.of(fixedRate)) .build()) .build(); }
public void test_toLeg() { OvernightRateSwapLegConvention base = OvernightRateSwapLegConvention.of(GBP_SONIA, TERM, 2); LocalDate startDate = LocalDate.of(2015, 5, 5); LocalDate endDate = LocalDate.of(2020, 5, 5); RateCalculationSwapLeg test = base.toLeg(startDate, endDate, PAY, NOTIONAL_2M); RateCalculationSwapLeg expected = RateCalculationSwapLeg.builder() .payReceive(PAY) .accrualSchedule(PeriodicSchedule.builder() .frequency(TERM) .startDate(startDate) .endDate(endDate) .businessDayAdjustment(BDA_MOD_FOLLOW) .stubConvention(StubConvention.SMART_INITIAL) .build()) .paymentSchedule(PaymentSchedule.builder() .paymentFrequency(TERM) .paymentDateOffset(DaysAdjustment.ofBusinessDays(2, GBP_SONIA.getFixingCalendar())) .build()) .notionalSchedule(NotionalSchedule.of(GBP, NOTIONAL_2M)) .calculation(OvernightRateCalculation.of(GBP_SONIA)) .build(); assertEquals(test, expected); }
private PeriodicSchedule of( LocalDate start, LocalDate end, Frequency freq, BusinessDayAdjustment bda, StubConvention stubConv, RollConvention rollConv, LocalDate firstReg, LocalDate lastReg, BusinessDayAdjustment startBda, BusinessDayAdjustment endBda, AdjustableDate overrideStartDate) { return PeriodicSchedule.builder() .startDate(start) .endDate(end) .frequency(freq) .businessDayAdjustment(bda) .startDateBusinessDayAdjustment(startBda) .endDateBusinessDayAdjustment(endBda) .stubConvention(stubConv) .rollConvention(rollConv) .firstRegularStartDate(firstReg) .lastRegularEndDate(lastReg) .overrideStartDate(overrideStartDate) .build(); }
@Test(expectedExceptions = ScheduleException.class) public void test_none_badStub() { // Jun 4th to Sep 17th requires a stub, but NONE specified PeriodicSchedule defn = PeriodicSchedule.builder() .startDate(JUN_04) .endDate(SEP_17) .frequency(P1M) .businessDayAdjustment(BDA) .stubConvention(STUB_NONE) .rollConvention(DAY_4) .firstRegularStartDate(null) .lastRegularEndDate(null) .build(); defn.createUnadjustedDates(); }
@Test(expectedExceptions = ScheduleException.class) public void test_none_stubDate() { // Jun 17th to Sep 17th is correct for NONE stub convention, but firstRegularStartDate specified PeriodicSchedule defn = PeriodicSchedule.builder() .startDate(JUN_17) .endDate(SEP_17) .frequency(P1M) .businessDayAdjustment(BDA) .stubConvention(STUB_NONE) .rollConvention(DAY_4) .firstRegularStartDate(JUL_17) .lastRegularEndDate(null) .build(); defn.createUnadjustedDates(); }
@Test(expectedExceptions = ScheduleException.class) public void test_termFrequency_badInitialStub() { PeriodicSchedule defn = PeriodicSchedule.builder() .startDate(JUN_04) .endDate(SEP_17) .frequency(TERM) .businessDayAdjustment(BDA) .stubConvention(STUB_NONE) .rollConvention(DAY_4) .firstRegularStartDate(JUN_17) .lastRegularEndDate(null) .build(); defn.createUnadjustedDates(); }
public void test_emptyWhenAdjusted_term_createUnadjustedDates() { PeriodicSchedule defn = PeriodicSchedule.builder() .startDate(date(2015, 5, 29)) .endDate(date(2015, 5, 31)) .frequency(TERM) .businessDayAdjustment(BDA) .stubConvention(null) .rollConvention(null) .firstRegularStartDate(null) .lastRegularEndDate(null) .build(); ImmutableList<LocalDate> test = defn.createUnadjustedDates(); assertEquals(test, list(date(2015, 5, 29), date(2015, 5, 31))); }
@Test(expectedExceptions = ScheduleException.class) public void test_both_badStub() { PeriodicSchedule defn = PeriodicSchedule.builder() .startDate(JUN_17) .endDate(SEP_17) .frequency(P1M) .businessDayAdjustment(BDA) .stubConvention(STUB_BOTH) .rollConvention(null) .firstRegularStartDate(JUN_17) .lastRegularEndDate(SEP_17) .build(); defn.createUnadjustedDates(); }
public void test_emptyWhenAdjusted_twoPeriods_createUnadjustedDates() { PeriodicSchedule defn = PeriodicSchedule.builder() .startDate(date(2015, 5, 27)) .endDate(date(2015, 5, 31)) .frequency(Frequency.ofDays(2)) .businessDayAdjustment(BDA) .stubConvention(STUB_NONE) .rollConvention(null) .firstRegularStartDate(null) .lastRegularEndDate(null) .build(); ImmutableList<LocalDate> test = defn.createUnadjustedDates(); assertEquals(test, list(date(2015, 5, 27), date(2015, 5, 29), date(2015, 5, 31))); }
@Test(expectedExceptions = ScheduleException.class, expectedExceptionsMessageRegExp = ".*duplicate adjusted dates.*") public void test_emptyWhenAdjusted_twoPeriods_createSchedule() { PeriodicSchedule defn = PeriodicSchedule.builder() .startDate(date(2015, 5, 27)) .endDate(date(2015, 5, 31)) .frequency(Frequency.ofDays(2)) .businessDayAdjustment(BDA) .stubConvention(STUB_NONE) .rollConvention(null) .firstRegularStartDate(null) .lastRegularEndDate(null) .build(); defn.createSchedule(REF_DATA); }
@Test(expectedExceptions = ScheduleException.class, expectedExceptionsMessageRegExp = ".*duplicate adjusted dates.*") public void test_emptyWhenAdjusted_twoPeriods_createAdjustedDates() { PeriodicSchedule defn = PeriodicSchedule.builder() .startDate(date(2015, 5, 27)) .endDate(date(2015, 5, 31)) .frequency(Frequency.ofDays(2)) .businessDayAdjustment(BDA) .stubConvention(STUB_NONE) .rollConvention(null) .firstRegularStartDate(null) .lastRegularEndDate(null) .build(); defn.createAdjustedDates(REF_DATA); }
@Test(expectedExceptions = ScheduleException.class, expectedExceptionsMessageRegExp = ".*duplicate adjusted dates.*") public void test_emptyWhenAdjusted_term_createSchedule() { PeriodicSchedule defn = PeriodicSchedule.builder() .startDate(date(2015, 5, 29)) .endDate(date(2015, 5, 31)) .frequency(TERM) .businessDayAdjustment(BDA) .stubConvention(null) .rollConvention(null) .firstRegularStartDate(null) .lastRegularEndDate(null) .build(); defn.createSchedule(REF_DATA); }
@Test(expectedExceptions = ScheduleException.class) public void test_forwards_badStub() { PeriodicSchedule defn = PeriodicSchedule.builder() .startDate(JUN_17) .endDate(SEP_17) .frequency(P1M) .businessDayAdjustment(BDA) .stubConvention(SHORT_FINAL) .rollConvention(DAY_11) .firstRegularStartDate(null) .lastRegularEndDate(null) .build(); defn.createUnadjustedDates(); }
@Test(expectedExceptions = ScheduleException.class, expectedExceptionsMessageRegExp = ".*duplicate adjusted dates.*") public void test_emptyWhenAdjusted_term_createAdjustedDates() { PeriodicSchedule defn = PeriodicSchedule.builder() .startDate(date(2015, 5, 29)) .endDate(date(2015, 5, 31)) .frequency(TERM) .businessDayAdjustment(BDA) .stubConvention(null) .rollConvention(null) .firstRegularStartDate(null) .lastRegularEndDate(null) .build(); defn.createAdjustedDates(REF_DATA); }
@Test(expectedExceptions = ScheduleException.class) public void test_termFrequency_badFinalStub() { PeriodicSchedule defn = PeriodicSchedule.builder() .startDate(JUN_04) .endDate(SEP_17) .frequency(TERM) .businessDayAdjustment(BDA) .stubConvention(STUB_NONE) .rollConvention(DAY_4) .firstRegularStartDate(null) .lastRegularEndDate(SEP_04) .build(); defn.createUnadjustedDates(); }
@Test(expectedExceptions = ScheduleException.class) public void test_backwards_badStub() { PeriodicSchedule defn = PeriodicSchedule.builder() .startDate(JUN_17) .endDate(SEP_17) .frequency(P1M) .businessDayAdjustment(BDA) .stubConvention(SHORT_INITIAL) .rollConvention(DAY_11) .firstRegularStartDate(null) .lastRegularEndDate(null) .build(); defn.createUnadjustedDates(); }