/** * Calculates the settlement date from the valuation date. * * @param valuationDate the valuation date * @param refData the reference data to use * @return the settlement date */ public LocalDate calculateSettlementDateFromValuation(LocalDate valuationDate, ReferenceData refData) { return settlementDateOffset.adjust(valuationDate, refData); }
public void test_ofBusinessDays2_oneDay() { DaysAdjustment test = DaysAdjustment.ofBusinessDays(1, SAT_SUN); assertEquals(test.getDays(), 1); assertEquals(test.getCalendar(), SAT_SUN); assertEquals(test.getAdjustment(), BDA_NONE); assertEquals(test.toString(), "1 business day using calendar Sat/Sun"); }
@ImmutableDefaults private static void applyDefaults(Builder builder) { builder.dayCount = DayCounts.ACT_360; builder.paymentOnDefault = PaymentOnDefault.ACCRUED_PREMIUM; builder.protectionStart = ProtectionStartOfDay.BEGINNING; builder.stepinDateOffset = DaysAdjustment.ofCalendarDays(1); }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(DaysAdjustment beanToCopy) { this.days = beanToCopy.getDays(); this.calendar = beanToCopy.getCalendar(); this.adjustment = beanToCopy.getAdjustment(); }
@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(); }
@ImmutablePreBuild private static void preBuild(Builder builder) { if (builder.fixingDateOffset == null && builder.fixingCalendar != null && builder.maturityDateOffset != null) { int days = builder.maturityDateOffset.getDays(); HolidayCalendarId maturityCal = builder.maturityDateOffset.getCalendar(); if (maturityCal.combinedWith(builder.fixingCalendar).equals(maturityCal)) { builder.fixingDateOffset = DaysAdjustment.ofBusinessDays(-days, maturityCal); } else { builder.fixingDateOffset = DaysAdjustment.ofBusinessDays( -days, maturityCal, BusinessDayAdjustment.of(BusinessDayConventions.PRECEDING, builder.fixingCalendar)); } } }
public void test_ofBusinessDays3_null() { assertThrowsIllegalArg(() -> DaysAdjustment.ofBusinessDays(3, null, BDA_FOLLOW_SAT_SUN)); assertThrowsIllegalArg(() -> DaysAdjustment.ofBusinessDays(3, SAT_SUN, null)); assertThrowsIllegalArg(() -> DaysAdjustment.ofBusinessDays(3, null, null)); }
public void test_ofBusinessDays2_adjust() { DaysAdjustment test = DaysAdjustment.ofBusinessDays(2, SAT_SUN); LocalDate base = date(2014, 8, 15); // Fri assertEquals(test.adjust(base, REF_DATA), date(2014, 8, 19)); // Tue assertEquals(test.resolve(REF_DATA).adjust(base), date(2014, 8, 19)); // Tue }
public void test_ofCalendarDays1_adjust() { DaysAdjustment test = DaysAdjustment.ofCalendarDays(2); LocalDate base = date(2014, 8, 15); // Fri assertEquals(test.adjust(base, REF_DATA), date(2014, 8, 17)); // Sun assertEquals(test.resolve(REF_DATA).adjust(base), date(2014, 8, 17)); // Sun }
public void coverage_builder() { DaysAdjustment test = DaysAdjustment.builder() .days(1) .calendar(SAT_SUN) .adjustment(BDA_FOLLOW_WED_THU) .build(); assertEquals(test.getDays(), 1); assertEquals(test.getCalendar(), SAT_SUN); assertEquals(test.getAdjustment(), BDA_FOLLOW_WED_THU); }
public void test_normalized() { DaysAdjustment zeroDays = DaysAdjustment.ofCalendarDays(0, BDA_FOLLOW_SAT_SUN); DaysAdjustment zeroDaysWithCalendar = DaysAdjustment.ofBusinessDays(0, WED_THU, BDA_FOLLOW_SAT_SUN); DaysAdjustment twoDays = DaysAdjustment.ofCalendarDays(2, BDA_FOLLOW_SAT_SUN); DaysAdjustment twoDaysWithCalendar = DaysAdjustment.ofBusinessDays(2, WED_THU, BDA_FOLLOW_SAT_SUN); DaysAdjustment twoDaysWithSameCalendar = DaysAdjustment.ofBusinessDays(2, SAT_SUN, BDA_FOLLOW_SAT_SUN); DaysAdjustment twoDaysWithNoAdjust = DaysAdjustment.ofBusinessDays(2, SAT_SUN); assertEquals(zeroDays.normalized(), zeroDays); assertEquals(zeroDaysWithCalendar.normalized(), zeroDays); assertEquals(twoDays.normalized(), twoDays); assertEquals(twoDaysWithCalendar.normalized(), twoDaysWithCalendar); assertEquals(twoDaysWithSameCalendar.normalized(), twoDaysWithNoAdjust); assertEquals(twoDaysWithNoAdjust.normalized(), twoDaysWithNoAdjust); }
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); }
public void test_cibor() { assertEquals(FloatingRateName.of("DKK-CIBOR-DKNA13").getDefaultTenor(), Tenor.TENOR_3M); assertEquals(FloatingRateName.of("DKK-CIBOR-DKNA13").toFloatingRateIndex(), IborIndices.DKK_CIBOR_3M); assertEquals(FloatingRateName.of("DKK-CIBOR-DKNA13").toFloatingRateIndex(Tenor.TENOR_1M), IborIndices.DKK_CIBOR_1M); assertEquals(FloatingRateName.of("DKK-CIBOR-DKNA13").toIborIndex(Tenor.TENOR_6M), IborIndices.DKK_CIBOR_6M); assertEquals(FloatingRateName.of("DKK-CIBOR2-DKNA13").toIborIndex(Tenor.TENOR_6M), IborIndices.DKK_CIBOR_6M); assertEquals( FloatingRateName.of("DKK-CIBOR-DKNA13").toIborIndexFixingOffset(), DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(PRECEDING, DKCO))); assertEquals( FloatingRateName.of("DKK-CIBOR2-DKNA13").toIborIndexFixingOffset(), DaysAdjustment.ofBusinessDays(-2, DKCO)); }
/** * Gets the business day adjustment to apply to the start and end date, * providing a default result if no override specified. * <p> * The start and end date are typically defined as valid business days and thus * do not need to be adjusted. If this optional property is present, then the * start and end date will be adjusted as defined here. * <p> * This will default to 'ModifiedFollowing' using the spot date offset calendar if not specified. * * @return the business day adjustment, not null */ public BusinessDayAdjustment getBusinessDayAdjustment() { return businessDayAdjustment != null ? businessDayAdjustment : BusinessDayAdjustment.of(MODIFIED_FOLLOWING, spotDateOffset.getCalendar()); }
.startDate(startDate) .endDate(endDate) .paymentDate(AdjustableDate.of(paymentDate, getPaymentDateOffset().getAdjustment())) .fixedRate(fixedRate) .index(index)
public void equals() { DaysAdjustment a = DaysAdjustment.ofBusinessDays(3, NO_HOLIDAYS, BDA_FOLLOW_SAT_SUN); DaysAdjustment b = DaysAdjustment.ofBusinessDays(4, NO_HOLIDAYS, BDA_FOLLOW_SAT_SUN); DaysAdjustment c = DaysAdjustment.ofBusinessDays(3, WED_THU, BDA_FOLLOW_SAT_SUN); DaysAdjustment d = DaysAdjustment.ofBusinessDays(3, NO_HOLIDAYS, BDA_FOLLOW_WED_THU); assertEquals(a.equals(b), false); assertEquals(a.equals(c), false); assertEquals(a.equals(d), false); }
public void test_getResultCalendar3() { DaysAdjustment test = DaysAdjustment.ofCalendarDays(3); assertEquals(test.getResultCalendar(), NO_HOLIDAYS); }
private static IborIndex lockIndexCalendar(IborIndex index) { return ((ImmutableIborIndex) index).toBuilder() .fixingCalendar(CalendarUSD.NYC) .effectiveDateOffset(index.getEffectiveDateOffset().toBuilder() .calendar(CalendarUSD.NYC) .adjustment(index.getEffectiveDateOffset().getAdjustment().toBuilder() .calendar(CalendarUSD.NYC) .build()) .build()) .maturityDateOffset(index.getMaturityDateOffset().toBuilder() .adjustment(index.getMaturityDateOffset().getAdjustment().toBuilder() .calendar(CalendarUSD.NYC) .build()) .build()) .build(); }
@Override public Function<LocalDate, FxIndexObservation> resolve(ReferenceData refData) { HolidayCalendar fixingCal = fixingCalendar.resolve(refData); DateAdjuster maturityAdj = maturityDateOffset.resolve(refData); return fixingDate -> create(fixingDate, fixingCal, maturityAdj); }