@Override public LocalDate calculateMaturityFromFixing(LocalDate fixingDate, ReferenceData refData) { LocalDate fixingBusinessDay = fixingCalendar.resolve(refData).nextOrSame(fixingDate); return maturityDateOffset.adjust(effectiveDateOffset.adjust(fixingBusinessDay, refData), refData); }
@Override public LocalDate calculateMaturityFromFixing(LocalDate fixingDate, ReferenceData refData) { // handle case where the input date is not a valid fixing date HolidayCalendar fixingCal = fixingCalendar.resolve(refData); LocalDate fixingBusinessDay = fixingCal.nextOrSame(fixingDate); // find the maturity date using the offset and calendar in DaysAdjustment return maturityDateOffset.adjust(fixingBusinessDay, refData); }
@Override public double calculateYearFraction(LocalDate firstDate, LocalDate secondDate, ScheduleInfo scheduleInfo) { if (scheduleInfo.isEndOfMonthConvention()) { return THIRTY_U_360_EOM.calculateYearFraction(firstDate, secondDate, scheduleInfo); } else { return THIRTY_360_ISDA.calculateYearFraction(firstDate, secondDate, scheduleInfo); } }
@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(); }
@Override public LocalDate calculatePublicationFromFixing(LocalDate fixingDate, ReferenceData refData) { HolidayCalendar fixingCal = fixingCalendar.resolve(refData); return fixingCal.shift(fixingCal.nextOrSame(fixingDate), publicationDateOffset); }
@Override public LocalDate calculateReferenceDateFromTradeDate( LocalDate tradeDate, YearMonth yearMonth, ReferenceData refData) { LocalDate referenceDate = dateSequence.dateMatching(yearMonth); return businessDayAdjustment.adjust(referenceDate, refData); }
/** * Finds the next business day, always returning a later date. * <p> * Given a date, this method returns the next business day. * * @param date the date to adjust * @return the first business day after the input date * @throws IllegalArgumentException if the calculation is outside the supported range */ public default LocalDate next(LocalDate date) { LocalDate next = plusDays(date, 1); return isHoliday(next) ? next(next) : next; }
private HolidayCalendar effectiveDateCalendar(ReferenceData refData) { HolidayCalendarId cal = effectiveDateOffset.getResultCalendar(); if (cal == HolidayCalendarIds.NO_HOLIDAYS) { cal = fixingCalendar; } return cal.resolve(refData); }
/** * Finds the previous business day, always returning an earlier date. * <p> * Given a date, this method returns the previous business day. * * @param date the date to adjust * @return the first business day before the input date * @throws IllegalArgumentException if the calculation is outside the supported range */ public default LocalDate previous(LocalDate date) { LocalDate previous = plusDays(date, -1); return isHoliday(previous) ? previous(previous) : previous; }
@Override public HolidayCalendarId getId() { return calendar1.getId().combinedWith(calendar2.getId()); }
public void test_SAT_SUN_shift() { ImmutableHolidayCalendar equivalent = ImmutableHolidayCalendar.of(HolidayCalendarId.of("TEST-SAT-SUN"), ImmutableList.of(), ImmutableList.of(SATURDAY, SUNDAY)); assertSatSun(equivalent); assertSatSun(HolidayCalendars.SAT_SUN); }
@Override public LocalDate nextSameOrLastInMonth(LocalDate date) { try { // day-of-month: no alteration as method is one-based and same is valid return shiftNextSameLast(date); } catch (ArrayIndexOutOfBoundsException ex) { return HolidayCalendar.super.nextSameOrLastInMonth(date); } }
@Override public LocalDate calculateMaturityFromFixing(LocalDate fixingDate, ReferenceData refData) { HolidayCalendar fixingCal = fixingCalendar.resolve(refData); return fixingCal.shift(fixingCal.nextOrSame(fixingDate), effectiveDateOffset + 1); }
@Override public LocalDate calculateEffectiveFromFixing(LocalDate fixingDate, ReferenceData refData) { LocalDate fixingBusinessDay = fixingCalendar.resolve(refData).nextOrSame(fixingDate); return effectiveDateOffset.adjust(fixingBusinessDay, refData); }
@Override public LocalDate calculateFixingFromEffective(LocalDate effectiveDate, ReferenceData refData) { HolidayCalendar fixingCal = fixingCalendar.resolve(refData); return fixingCal.shift(fixingCal.nextOrSame(effectiveDate), -effectiveDateOffset); }
@Override public LocalDate calculateMaturityFromEffective(LocalDate effectiveDate, ReferenceData refData) { HolidayCalendar fixingCal = fixingCalendar.resolve(refData); return fixingCal.shift(fixingCal.nextOrSame(effectiveDate), 1); }
@Override public LocalDate calculateEffectiveFromFixing(LocalDate fixingDate, ReferenceData refData) { HolidayCalendar fixingCal = fixingCalendar.resolve(refData); return fixingCal.shift(fixingCal.nextOrSame(fixingDate), effectiveDateOffset); }