private static IborIndex parseIborIndex(CsvRow row)
        {
            string            name      = row.getValue(NAME_FIELD);
            Currency          currency  = Currency.parse(row.getValue(CURRENCY_FIELD));
            bool              active    = bool.Parse(row.getValue(ACTIVE_FIELD));
            DayCount          dayCount  = DayCount.of(row.getValue(DAY_COUNT_FIELD));
            HolidayCalendarId fixingCal = HolidayCalendarId.of(row.getValue(FIXING_CALENDAR_FIELD));
            int offsetDays = int.Parse(row.getValue(OFFSET_DAYS_FIELD));
            HolidayCalendarId offsetCal        = HolidayCalendarId.of(row.getValue(OFFSET_CALENDAR_FIELD));
            HolidayCalendarId effectiveCal     = HolidayCalendarId.of(row.getValue(EFFECTIVE_DATE_CALENDAR_FIELD));
            Tenor             tenor            = Tenor.parse(row.getValue(TENOR_FIELD));
            LocalTime         time             = LocalTime.parse(row.getValue(FIXING_TIME_FIELD), TIME_FORMAT);
            ZoneId            zoneId           = ZoneId.of(row.getValue(FIXING_ZONE_FIELD));
            DayCount          fixedLegDayCount = DayCount.of(row.getValue(FIXED_LEG_DAY_COUNT));

            // interpret CSV
            DaysAdjustment fixingOffset    = DaysAdjustment.ofBusinessDays(-offsetDays, offsetCal, BusinessDayAdjustment.of(PRECEDING, fixingCal)).normalized();
            DaysAdjustment effectiveOffset = DaysAdjustment.ofBusinessDays(offsetDays, offsetCal, BusinessDayAdjustment.of(FOLLOWING, effectiveCal)).normalized();

            // convention can be two different things
            PeriodAdditionConvention periodAdditionConvention = PeriodAdditionConvention.extendedEnum().find(row.getField(TENOR_CONVENTION_FIELD)).orElse(PeriodAdditionConventions.NONE);
            BusinessDayConvention    tenorBusinessConvention  = BusinessDayConvention.extendedEnum().find(row.getField(TENOR_CONVENTION_FIELD)).orElse(isEndOfMonth(periodAdditionConvention) ? MODIFIED_FOLLOWING : FOLLOWING);
            BusinessDayAdjustment    adj             = BusinessDayAdjustment.of(tenorBusinessConvention, effectiveCal);
            TenorAdjustment          tenorAdjustment = TenorAdjustment.of(tenor, periodAdditionConvention, adj);

            // build result
            return(ImmutableIborIndex.builder().name(name).currency(currency).active(active).dayCount(dayCount).fixingCalendar(fixingCal).fixingDateOffset(fixingOffset).effectiveDateOffset(effectiveOffset).maturityDateOffset(tenorAdjustment).fixingTime(time).fixingZone(zoneId).defaultFixedLegDayCount(fixedLegDayCount).build());
        }
예제 #2
0
        public virtual void test_yearFraction_badOrder()
        {
            DayCount  test  = DayCount.of("Bus/252 EUTA");
            LocalDate date1 = date(2014, 12, 2);
            LocalDate date2 = date(2014, 12, 1);

            assertThrowsIllegalArg(() => test.yearFraction(date1, date2));
        }
예제 #3
0
        public virtual void test_factory_calendar()
        {
            DayCount test = DayCount.ofBus252(GBLO);

            assertEquals(test.Name, "Bus/252 GBLO");
            assertEquals(test.ToString(), "Bus/252 GBLO");

            assertSame(DayCount.of("Bus/252 GBLO"), test);
            assertSame(DayCount.ofBus252(GBLO), test);
        }
예제 #4
0
        public virtual void test_factory_nameUpper()
        {
            DayCount test = DayCount.of("BUS/252 EUTA");

            assertEquals(test.Name, "Bus/252 EUTA");
            assertEquals(test.ToString(), "Bus/252 EUTA");

            assertSame(DayCount.of("Bus/252 EUTA"), test);
            assertSame(DayCount.ofBus252(EUTA), test);
        }
예제 #5
0
        //-------------------------------------------------------------------------
        public virtual void test_equalsHashCode()
        {
            DayCount a = DayCount.of("Bus/252 EUTA");
            DayCount b = DayCount.of("Bus/252 GBLO");

            assertEquals(a.Equals(a), true);
            assertEquals(a.Equals(b), false);
            assertEquals(a.Equals(ANOTHER_TYPE), false);
            assertEquals(a.Equals(null), false);
            assertEquals(a.GetHashCode(), a.GetHashCode());
        }
예제 #6
0
        public virtual void test_days()
        {
            DayCount  test  = DayCount.of("Bus/252 EUTA");
            LocalDate date1 = date(2014, 12, 1);
            LocalDate date2 = date(2014, 12, 1);

            for (int i = 0; i < 366; i++)
            {
                assertEquals(test.days(date1, date2), EUTA.resolve(REF_DATA).daysBetween(date1, date2));
                date2 = date2.plusDays(1);
            }
        }
예제 #7
0
        private static OvernightIndex parseOvernightIndex(CsvRow row)
        {
            string            name      = row.getValue(NAME_FIELD);
            Currency          currency  = Currency.parse(row.getValue(CURRENCY_FIELD));
            bool              active    = bool.Parse(row.getValue(ACTIVE_FIELD));
            DayCount          dayCount  = DayCount.of(row.getValue(DAY_COUNT_FIELD));
            HolidayCalendarId fixingCal = HolidayCalendarId.of(row.getValue(FIXING_CALENDAR_FIELD));
            int      publicationDays    = int.Parse(row.getValue(PUBLICATION_DAYS_FIELD));
            int      effectiveDays      = int.Parse(row.getValue(EFFECTIVE_DAYS_FIELD));
            DayCount fixedLegDayCount   = DayCount.of(row.getValue(FIXED_LEG_DAY_COUNT));

            // build result
            return(ImmutableOvernightIndex.builder().name(name).currency(currency).active(active).dayCount(dayCount).fixingCalendar(fixingCal).publicationDateOffset(publicationDays).effectiveDateOffset(effectiveDays).defaultFixedLegDayCount(fixedLegDayCount).build());
        }
 // resolve instance
 internal object readResolve()
 {
     return(DayCount.of(name));
 }