@Override public LocalDate adjust(LocalDate date, HolidayCalendar calendar) { return calendar.previousOrSame(date); } },
public void test_NO_HOLIDAYS_previousOrSame() { assertEquals(HolidayCalendars.NO_HOLIDAYS.previousOrSame(SAT_2014_07_12), SAT_2014_07_12); assertEquals(HolidayCalendars.NO_HOLIDAYS.previousOrSame(SUN_2014_07_13), SUN_2014_07_13); }
/** * Calculates the last business day of the month. * <p> * Given a date, this method returns the date of the last business day of the month. * * @param date the date to check * @return true if the specified date is the last business day of the month * @throws IllegalArgumentException if the date is outside the supported range */ public default LocalDate lastBusinessDayOfMonth(LocalDate date) { return previousOrSame(date.withDayOfMonth(date.lengthOfMonth())); }
@Test(dataProvider = "previousOrSame") public void test_previousOrSame(LocalDate date, LocalDate expectedPrevious, HolidayCalendar cal) { assertEquals(cal.previousOrSame(date), expectedPrevious); }
@Override public LocalDate adjust(LocalDate date, HolidayCalendar calendar) { LocalDate adjusted = calendar.previousOrSame(date); if (adjusted.getMonth() != date.getMonth()) { adjusted = calendar.next(date); } return adjusted; } },
@Test(dataProvider = "previousOrSame") public void test_previousOrSame(LocalDate date, LocalDate expectedPrevious) { HolidayCalendar test = new MockHolCal(); assertEquals(test.previousOrSame(date), expectedPrevious); }
@Override public LocalDate adjust(LocalDate date) { ArgChecker.notNull(date, "date"); LocalDate wed3 = date.with(TemporalAdjusters.dayOfWeekInMonth(3, DayOfWeek.WEDNESDAY)); return canada.previousOrSame(gblo.shift(wed3, -2)); } },
@Override public double rate( OvernightAveragedDailyRateComputation computation, LocalDate startDate, LocalDate endDate, RatesProvider provider) { OvernightIndex index = computation.getIndex(); OvernightIndexRates rates = provider.overnightIndexRates(index); LocalDate lastFixingDate = computation.getEndDate(); double interestSum = 0d; int numberOfDays = 0; LocalDate currentFixingDate = computation.getStartDate(); while (!currentFixingDate.isAfter(lastFixingDate)) { LocalDate referenceFixingDate = computation.getFixingCalendar().previousOrSame(currentFixingDate); OvernightIndexObservation indexObs = computation.observeOn(referenceFixingDate); double forwardRate = rates.rate(indexObs); interestSum += forwardRate; numberOfDays++; currentFixingDate = currentFixingDate.plusDays(1); } return interestSum / numberOfDays; }
@Override public PointSensitivityBuilder rateSensitivity( OvernightAveragedDailyRateComputation computation, LocalDate startDate, LocalDate endDate, RatesProvider provider) { OvernightIndex index = computation.getIndex(); OvernightIndexRates rates = provider.overnightIndexRates(index); LocalDate lastFixingDate = computation.getEndDate(); PointSensitivityBuilder pointSensitivityBuilder = PointSensitivityBuilder.none(); int numberOfDays = 0; LocalDate currentFixingDate = computation.getStartDate(); while (!currentFixingDate.isAfter(lastFixingDate)) { LocalDate referenceFixingDate = computation.getFixingCalendar().previousOrSame(currentFixingDate); OvernightIndexObservation indexObs = computation.observeOn(referenceFixingDate); PointSensitivityBuilder forwardRateSensitivity = rates.ratePointSensitivity(indexObs); pointSensitivityBuilder = pointSensitivityBuilder.combinedWith(forwardRateSensitivity); numberOfDays++; currentFixingDate = currentFixingDate.plusDays(1); } return pointSensitivityBuilder.multipliedBy(1d / numberOfDays); }