@ImmutablePreBuild private static void preBuild(Builder builder) { if (builder.settlementDateOffset == null && builder.paymentSchedule != null) { builder.settlementDateOffset = DaysAdjustment.ofBusinessDays(3, builder.paymentSchedule.getBusinessDayAdjustment().getCalendar()); } }
@ImmutablePreBuild private static void preBuild(Builder builder) { if (builder.settlementDateOffset == null && builder.paymentSchedule != null) { builder.settlementDateOffset = DaysAdjustment.ofBusinessDays(3, builder.paymentSchedule.getBusinessDayAdjustment().getCalendar()); } }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(PeriodicSchedule beanToCopy) { this.startDate = beanToCopy.getStartDate(); this.endDate = beanToCopy.getEndDate(); this.frequency = beanToCopy.getFrequency(); this.businessDayAdjustment = beanToCopy.getBusinessDayAdjustment(); this.startDateBusinessDayAdjustment = beanToCopy.startDateBusinessDayAdjustment; this.endDateBusinessDayAdjustment = beanToCopy.endDateBusinessDayAdjustment; this.stubConvention = beanToCopy.stubConvention; this.rollConvention = beanToCopy.rollConvention; this.firstRegularStartDate = beanToCopy.firstRegularStartDate; this.lastRegularEndDate = beanToCopy.lastRegularEndDate; this.overrideStartDate = beanToCopy.overrideStartDate; }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case -2129778896: // startDate return ((PeriodicSchedule) bean).getStartDate(); case -1607727319: // endDate return ((PeriodicSchedule) bean).getEndDate(); case -70023844: // frequency return ((PeriodicSchedule) bean).getFrequency(); case -1065319863: // businessDayAdjustment return ((PeriodicSchedule) bean).getBusinessDayAdjustment(); case 429197561: // startDateBusinessDayAdjustment return ((PeriodicSchedule) bean).startDateBusinessDayAdjustment; case -734327136: // endDateBusinessDayAdjustment return ((PeriodicSchedule) bean).endDateBusinessDayAdjustment; case -31408449: // stubConvention return ((PeriodicSchedule) bean).stubConvention; case -10223666: // rollConvention return ((PeriodicSchedule) bean).rollConvention; case 2011803076: // firstRegularStartDate return ((PeriodicSchedule) bean).firstRegularStartDate; case -1540679645: // lastRegularEndDate return ((PeriodicSchedule) bean).lastRegularEndDate; case -599936828: // overrideStartDate return ((PeriodicSchedule) bean).overrideStartDate; } return super.propertyGet(bean, propertyName, quiet); }
public void test_of_LocalDateEomFalse() { PeriodicSchedule test = PeriodicSchedule.of(JUN_04, SEP_17, P1M, BDA, SHORT_INITIAL, false); assertEquals(test.getStartDate(), JUN_04); assertEquals(test.getEndDate(), SEP_17); assertEquals(test.getFrequency(), P1M); assertEquals(test.getBusinessDayAdjustment(), BDA); assertEquals(test.getStartDateBusinessDayAdjustment(), Optional.empty()); assertEquals(test.getEndDateBusinessDayAdjustment(), Optional.empty()); assertEquals(test.getStubConvention(), Optional.of(SHORT_INITIAL)); assertEquals(test.getRollConvention(), Optional.empty()); assertEquals(test.getFirstRegularStartDate(), Optional.empty()); assertEquals(test.getLastRegularEndDate(), Optional.empty()); assertEquals(test.getOverrideStartDate(), Optional.empty()); assertEquals(test.calculatedRollConvention(), DAY_17); assertEquals(test.calculatedFirstRegularStartDate(), JUN_04); assertEquals(test.calculatedLastRegularEndDate(), SEP_17); assertEquals(test.calculatedStartDate(), AdjustableDate.of(JUN_04, BDA)); assertEquals(test.calculatedEndDate(), AdjustableDate.of(SEP_17, BDA)); }
public void test_of_LocalDateEomTrue() { PeriodicSchedule test = PeriodicSchedule.of(JUN_04, SEP_17, P1M, BDA, SHORT_FINAL, true); assertEquals(test.getStartDate(), JUN_04); assertEquals(test.getEndDate(), SEP_17); assertEquals(test.getFrequency(), P1M); assertEquals(test.getBusinessDayAdjustment(), BDA); assertEquals(test.getStartDateBusinessDayAdjustment(), Optional.empty()); assertEquals(test.getEndDateBusinessDayAdjustment(), Optional.empty()); assertEquals(test.getStubConvention(), Optional.of(SHORT_FINAL)); assertEquals(test.getRollConvention(), Optional.of(EOM)); assertEquals(test.getFirstRegularStartDate(), Optional.empty()); assertEquals(test.getLastRegularEndDate(), Optional.empty()); assertEquals(test.getOverrideStartDate(), Optional.empty()); assertEquals(test.calculatedRollConvention(), DAY_4); assertEquals(test.calculatedFirstRegularStartDate(), JUN_04); assertEquals(test.calculatedLastRegularEndDate(), SEP_17); assertEquals(test.calculatedStartDate(), AdjustableDate.of(JUN_04, BDA)); assertEquals(test.calculatedEndDate(), AdjustableDate.of(SEP_17, BDA)); }
public void test_of_LocalDateRoll() { PeriodicSchedule test = PeriodicSchedule.of(JUN_04, SEP_17, P1M, BDA, SHORT_INITIAL, DAY_17); assertEquals(test.getStartDate(), JUN_04); assertEquals(test.getEndDate(), SEP_17); assertEquals(test.getFrequency(), P1M); assertEquals(test.getBusinessDayAdjustment(), BDA); assertEquals(test.getStartDateBusinessDayAdjustment(), Optional.empty()); assertEquals(test.getEndDateBusinessDayAdjustment(), Optional.empty()); assertEquals(test.getStubConvention(), Optional.of(SHORT_INITIAL)); assertEquals(test.getRollConvention(), Optional.of(DAY_17)); assertEquals(test.getFirstRegularStartDate(), Optional.empty()); assertEquals(test.getLastRegularEndDate(), Optional.empty()); assertEquals(test.getOverrideStartDate(), Optional.empty()); assertEquals(test.calculatedRollConvention(), DAY_17); assertEquals(test.calculatedFirstRegularStartDate(), JUN_04); assertEquals(test.calculatedLastRegularEndDate(), SEP_17); assertEquals(test.calculatedStartDate(), AdjustableDate.of(JUN_04, BDA)); assertEquals(test.calculatedEndDate(), AdjustableDate.of(SEP_17, BDA)); }
public void test_builder_min() { CmsLeg test = sutCap(); assertEquals(test.getPayReceive(), RECEIVE); assertEquals(test.getCapSchedule().get(), CAP); assertFalse(test.getFloorSchedule().isPresent()); assertEquals(test.getCurrency(), EUR_EURIBOR_6M.getCurrency()); assertEquals(test.getNotional(), NOTIONAL); assertEquals(test.getDayCount(), EUR_EURIBOR_6M.getDayCount()); assertEquals(test.getStartDate(), AdjustableDate.of(START, SCHEDULE_EUR.getBusinessDayAdjustment())); assertEquals(test.getEndDate(), SCHEDULE_EUR.calculatedEndDate()); assertEquals(test.getIndex(), INDEX); assertEquals(test.getPaymentSchedule(), SCHEDULE_EUR); assertEquals(test.getFixingRelativeTo(), FixingRelativeTo.PERIOD_START); assertEquals(test.getFixingDateOffset(), EUR_EURIBOR_6M.getFixingDateOffset()); assertEquals(test.getPaymentDateOffset(), DaysAdjustment.NONE); }
public void test_builder_min_coupon() { CmsLeg test = CmsLeg.builder() .index(INDEX) .notional(NOTIONAL) .payReceive(RECEIVE) .paymentSchedule(SCHEDULE_EUR) .build(); assertEquals(test.getPayReceive(), RECEIVE); assertFalse(test.getCapSchedule().isPresent()); assertFalse(test.getFloorSchedule().isPresent()); assertEquals(test.getCurrency(), EUR_EURIBOR_6M.getCurrency()); assertEquals(test.getNotional(), NOTIONAL); assertEquals(test.getDayCount(), EUR_EURIBOR_6M.getDayCount()); assertEquals(test.getStartDate(), AdjustableDate.of(START, SCHEDULE_EUR.getBusinessDayAdjustment())); assertEquals(test.getEndDate(), SCHEDULE_EUR.calculatedEndDate()); assertEquals(test.getIndex(), INDEX); assertEquals(test.getPaymentSchedule(), SCHEDULE_EUR); assertEquals(test.getFixingRelativeTo(), FixingRelativeTo.PERIOD_START); assertEquals(test.getFixingDateOffset(), EUR_EURIBOR_6M.getFixingDateOffset()); assertEquals(test.getPaymentDateOffset(), DaysAdjustment.NONE); }
public void test_builder_full_coupon() { CmsLeg test = CmsLeg.builder() .currency(GBP) .dayCount(ACT_365_ACTUAL) .fixingRelativeTo(FixingRelativeTo.PERIOD_END) .fixingDateOffset(FIXING_OFFSET) .paymentDateOffset(PAYMENT_OFFSET) .index(INDEX) .notional(NOTIONAL) .payReceive(PAY) .paymentSchedule(SCHEDULE) .build(); assertEquals(test.getPayReceive(), PAY); assertFalse(test.getCapSchedule().isPresent()); assertFalse(test.getFloorSchedule().isPresent()); assertEquals(test.getCurrency(), GBP); assertEquals(test.getNotional(), NOTIONAL); assertEquals(test.getDayCount(), ACT_365_ACTUAL); assertEquals(test.getStartDate(), AdjustableDate.of(START, SCHEDULE.getBusinessDayAdjustment())); assertEquals(test.getEndDate(), SCHEDULE.calculatedEndDate()); assertEquals(test.getIndex(), INDEX); assertEquals(test.getPaymentSchedule(), SCHEDULE); assertEquals(test.getFixingRelativeTo(), FixingRelativeTo.PERIOD_END); assertEquals(test.getFixingDateOffset(), FIXING_OFFSET); assertEquals(test.getPaymentDateOffset(), PAYMENT_OFFSET); }
public void test_builder_full() { CmsLeg test = CmsLeg.builder() .currency(GBP) .dayCount(ACT_365_ACTUAL) .fixingRelativeTo(FixingRelativeTo.PERIOD_END) .fixingDateOffset(FIXING_OFFSET) .paymentDateOffset(PAYMENT_OFFSET) .floorSchedule(FLOOR) .index(INDEX) .notional(NOTIONAL) .payReceive(PAY) .paymentSchedule(SCHEDULE) .build(); assertEquals(test.getPayReceive(), PAY); assertFalse(test.getCapSchedule().isPresent()); assertEquals(test.getFloorSchedule().get(), FLOOR); assertEquals(test.getCurrency(), GBP); assertEquals(test.getNotional(), NOTIONAL); assertEquals(test.getDayCount(), ACT_365_ACTUAL); assertEquals(test.getStartDate(), AdjustableDate.of(START, SCHEDULE.getBusinessDayAdjustment())); assertEquals(test.getEndDate(), SCHEDULE.calculatedEndDate()); assertEquals(test.getIndex(), INDEX); assertEquals(test.getPaymentSchedule(), SCHEDULE); assertEquals(test.getFixingRelativeTo(), FixingRelativeTo.PERIOD_END); assertEquals(test.getFixingDateOffset(), FIXING_OFFSET); assertEquals(test.getPaymentDateOffset(), PAYMENT_OFFSET); }
public void test_createTrade() { DatesCdsTemplate base = DatesCdsTemplate.of(START, END, CONV1); LocalDate tradeDate = LocalDate.of(2015, 5, 5); CdsTrade test = base.createTrade(LEGAL_ENTITY, tradeDate, BUY, NOTIONAL_2M, 0.05d, REF_DATA); Cds expected = Cds.of(BUY, LEGAL_ENTITY, CONV1.getCurrency(), NOTIONAL_2M, START, END, Frequency.P3M, CONV1.getSettlementDateOffset().getCalendar(), 0.05d); PeriodicSchedule sch1 = expected.getPaymentSchedule(); expected = expected.toBuilder() .paymentSchedule(sch1.toBuilder() .startDateBusinessDayAdjustment(sch1.getBusinessDayAdjustment()) .rollConvention(RollConventions.DAY_20) .build()) .build(); assertEquals(test.getInfo().getTradeDate(), Optional.of(tradeDate)); assertEquals(test.getProduct(), expected); assertEquals(test.getUpfrontFee(), Optional.empty()); }
public void test_createTrade_withFee() { DatesCdsTemplate base = DatesCdsTemplate.of(START, END, CONV1); LocalDate tradeDate = LocalDate.of(2015, 5, 5); AdjustablePayment payment = AdjustablePayment.of(EUR, NOTIONAL_2M, CONV1.getSettlementDateOffset().adjust(tradeDate, REF_DATA)); CdsTrade test = base.createTrade(LEGAL_ENTITY, tradeDate, BUY, NOTIONAL_2M, 0.05d, payment, REF_DATA); Cds expected = Cds.of(BUY, LEGAL_ENTITY, CONV1.getCurrency(), NOTIONAL_2M, START, END, Frequency.P3M, CONV1.getSettlementDateOffset().getCalendar(), 0.05d); PeriodicSchedule sch1 = expected.getPaymentSchedule(); expected = expected.toBuilder() .paymentSchedule(sch1.toBuilder() .startDateBusinessDayAdjustment(sch1.getBusinessDayAdjustment()) .rollConvention(RollConventions.DAY_20) .build()) .build(); assertEquals(test.getInfo().getTradeDate(), Optional.of(tradeDate)); assertEquals(test.getUpfrontFee(), Optional.of(payment)); assertEquals(test.getProduct(), expected); }
expected1 = expected1.toBuilder() .paymentSchedule(sch1.toBuilder() .startDateBusinessDayAdjustment(sch1.getBusinessDayAdjustment()) .rollConvention(RollConventions.DAY_20) .build()) expected2 = expected2.toBuilder() .paymentSchedule(sch2.toBuilder() .startDateBusinessDayAdjustment(sch2.getBusinessDayAdjustment()) .rollConvention(RollConventions.DAY_20) .build())
private static RateCalculationSwapLeg parseLeg( CsvRow row, String leg, FloatingRateIndex index, DayCount defaultFixedLegDayCount) { PayReceive payReceive = LoaderUtils.parsePayReceive(getValue(row, leg, DIRECTION_FIELD)); PeriodicSchedule accrualSch = parseAccrualSchedule(row, leg); PaymentSchedule paymentSch = parsePaymentSchedule(row, leg, accrualSch.getFrequency()); NotionalSchedule notionalSch = parseNotionalSchedule(row, leg); RateCalculation calc = parseRateCalculation( row, leg, index, defaultFixedLegDayCount, accrualSch.getBusinessDayAdjustment(), notionalSch.getCurrency()); return RateCalculationSwapLeg.builder() .payReceive(payReceive) .accrualSchedule(accrualSch) .paymentSchedule(paymentSch) .notionalSchedule(notionalSch) .calculation(calc) .build(); }
expected1 = expected1.toBuilder() .paymentSchedule(sch1.toBuilder() .startDateBusinessDayAdjustment(sch1.getBusinessDayAdjustment()) .rollConvention(RollConventions.DAY_20) .build()) expected2 = expected2.toBuilder() .paymentSchedule(sch2.toBuilder() .startDateBusinessDayAdjustment(sch2.getBusinessDayAdjustment()) .rollConvention(RollConventions.DAY_20) .build())
.effectiveStartDate(protectionStart.isBeginning() ? lastPeriod.getStartDate().minusDays(1) : lastPeriod.getStartDate()) .effectiveEndDate(lastPeriod.getEndDate()) .paymentDate(paymentSchedule.getBusinessDayAdjustment().adjust(lastPeriod.getEndDate(), refData)) .notional(notional) .currency(currency)
.effectiveStartDate(protectionStart.isBeginning() ? lastPeriod.getStartDate().minusDays(1) : lastPeriod.getStartDate()) .effectiveEndDate(lastPeriod.getEndDate()) .paymentDate(paymentSchedule.getBusinessDayAdjustment().adjust(lastPeriod.getEndDate(), refData)) .notional(notional) .currency(currency)
cdsIndex.getPaymentSchedule().toBuilder() .rollConvention(RollConventions.DAY_20) .startDateBusinessDayAdjustment(cdsIndex.getPaymentSchedule().getBusinessDayAdjustment()) .build()) .build(); cdsIndex.getPaymentSchedule().toBuilder() .rollConvention(RollConventions.DAY_20) .startDateBusinessDayAdjustment(cdsIndex1.getPaymentSchedule().getBusinessDayAdjustment()) .build()) .build();