private static double checkedFixing( LocalDate currentFixingTs, LocalDateDoubleTimeSeries indexFixingDateSeries, OvernightIndex index) { OptionalDouble fixedRate = indexFixingDateSeries.get(currentFixingTs); return fixedRate.orElseThrow(() -> new PricingException( "Could not get fixing value of index " + index.getName() + " for date " + currentFixingTs)); } }
@Override public double value(PriceIndexObservation observation) { YearMonth fixingMonth = observation.getFixingMonth(); // If fixing in the past, check time series and returns the historic month price index if present if (fixingMonth.isBefore(YearMonth.from(valuationDate))) { OptionalDouble fixing = fixings.get(fixingMonth.atEndOfMonth()); if (fixing.isPresent()) { return fixing.getAsDouble(); } } throw new MarketDataNotFoundException("Unable to query forward value for historic index " + index); }
public void test_stream_withCollector() { LocalDateDoubleTimeSeries base = LocalDateDoubleTimeSeries.builder().putAll(DATES_2010_12, VALUES_10_12).build(); LocalDateDoubleTimeSeries test = base.stream() .map(point -> point.withValue(1.5d)) .collect(LocalDateDoubleTimeSeries.collector()); assertEquals(test.size(), 3); assertEquals(test.get(DATE_2010_01_01), OptionalDouble.of(1.5)); assertEquals(test.get(DATE_2011_01_01), OptionalDouble.of(1.5)); assertEquals(test.get(DATE_2012_01_01), OptionalDouble.of(1.5)); }
public void test_stream_withCollector() { LocalDateDoubleTimeSeries base = LocalDateDoubleTimeSeries.builder().putAll(DATES_2010_12, VALUES_10_12).build(); LocalDateDoubleTimeSeries test = base.stream() .map(point -> point.withValue(1.5d)) .collect(LocalDateDoubleTimeSeries.collector()); assertEquals(test.size(), 3); assertEquals(test.get(DATE_2010_01_01), OptionalDouble.of(1.5)); assertEquals(test.get(DATE_2011_01_01), OptionalDouble.of(1.5)); assertEquals(test.get(DATE_2012_01_01), OptionalDouble.of(1.5)); }
public void test_filter_byValue() { LocalDateDoubleTimeSeries base = LocalDateDoubleTimeSeries.builder().putAll(DATES_2015_1_WEEK, VALUES_1_WEEK).build(); LocalDateDoubleTimeSeries test = base.filter((ld, v) -> v % 2 == 1); assertEquals(test.size(), 2); assertEquals(test.get(DATE_2015_01_06), OptionalDouble.of(11d)); assertEquals(test.get(DATE_2015_01_08), OptionalDouble.of(13d)); }
public void test_filter_byDate() { List<LocalDate> dates = dates(DATE_2010_01_01, DATE_2011_06_01, DATE_2012_01_01, DATE_2013_06_01, DATE_2014_01_01); LocalDateDoubleTimeSeries base = LocalDateDoubleTimeSeries.builder().putAll(dates, VALUES_10_14).build(); LocalDateDoubleTimeSeries test = base.filter((ld, v) -> ld.getMonthValue() != 6); assertEquals(test.size(), 3); assertEquals(test.get(DATE_2010_01_01), OptionalDouble.of(10d)); assertEquals(test.get(DATE_2012_01_01), OptionalDouble.of(12d)); assertEquals(test.get(DATE_2014_01_01), OptionalDouble.of(14d)); }
public void test_filter_byDate() { List<LocalDate> dates = dates(DATE_2010_01_01, DATE_2011_06_01, DATE_2012_01_01, DATE_2013_06_01, DATE_2014_01_01); LocalDateDoubleTimeSeries base = LocalDateDoubleTimeSeries.builder().putAll(dates, VALUES_1_WEEK).build(); LocalDateDoubleTimeSeries test = base.filter((ld, v) -> ld.getMonthValue() != 6); assertEquals(test.size(), 3); assertEquals(test.get(DATE_2010_01_01), OptionalDouble.of(10d)); assertEquals(test.get(DATE_2012_01_01), OptionalDouble.of(12d)); assertEquals(test.get(DATE_2014_01_01), OptionalDouble.of(14d)); }
public void test_filter_byValue() { LocalDateDoubleTimeSeries base = LocalDateDoubleTimeSeries.builder().putAll(DATES_2010_14, VALUES_10_14).build(); LocalDateDoubleTimeSeries test = base.filter((ld, v) -> v % 2 == 1); assertEquals(test.size(), 2); assertEquals(test.get(DATE_2011_01_01), OptionalDouble.of(11d)); assertEquals(test.get(DATE_2013_01_01), OptionalDouble.of(13d)); }
public void test_of_collectionCollection_datesUnordered() { Collection<LocalDate> dates = dates(DATE_2012_01_01, DATE_2011_01_01); Collection<Double> values = values(2d, 1d); LocalDateDoubleTimeSeries series = LocalDateDoubleTimeSeries.builder().putAll(dates, values).build(); assertEquals(series.get(DATE_2011_01_01), OptionalDouble.of(1d)); assertEquals(series.get(DATE_2012_01_01), OptionalDouble.of(2d)); }
public void test_combineWith_intersectionWithSomeMatchingElements() { LocalDateDoubleTimeSeries series1 = LocalDateDoubleTimeSeries.builder().putAll(DATES_2010_14, VALUES_10_14).build(); List<LocalDate> dates2 = dates(DATE_2010_01_01, DATE_2011_06_01, DATE_2012_01_01, DATE_2013_06_01, DATE_2014_01_01); List<Double> values2 = values(1.0, 1.1, 1.2, 1.3, 1.4); LocalDateDoubleTimeSeries series2 = LocalDateDoubleTimeSeries.builder().putAll(dates2, values2).build(); LocalDateDoubleTimeSeries test = series1.intersection(series2, Double::sum); assertEquals(test.size(), 3); assertEquals(test.get(DATE_2010_01_01), OptionalDouble.of(11.0)); assertEquals(test.get(DATE_2012_01_01), OptionalDouble.of(13.2)); assertEquals(test.get(DATE_2014_01_01), OptionalDouble.of(15.4)); }
public void test_filter_byDateAndValue() { List<LocalDate> dates = dates(DATE_2010_01_01, DATE_2011_06_01, DATE_2012_01_01, DATE_2013_06_01, DATE_2014_01_01); LocalDateDoubleTimeSeries series = LocalDateDoubleTimeSeries.builder().putAll(dates, VALUES_1_WEEK).build(); LocalDateDoubleTimeSeries test = series.filter((ld, v) -> ld.getYear() >= 2012 && v % 2 == 0); assertEquals(test.size(), 2); assertEquals(test.get(DATE_2012_01_01), OptionalDouble.of(12d)); assertEquals(test.get(DATE_2014_01_01), OptionalDouble.of(14d)); }
@Override public PointSensitivityBuilder valuePointSensitivity(PriceIndexObservation observation) { YearMonth fixingMonth = observation.getFixingMonth(); // If fixing in the past, check time series and returns the historic month price index if present if (fixingMonth.isBefore(YearMonth.from(valuationDate))) { if (fixings.get(fixingMonth.atEndOfMonth()).isPresent()) { return PointSensitivityBuilder.none(); } } return InflationRateSensitivity.of(observation, 1d); }
@Override public PointSensitivityBuilder ratePointSensitivity(OvernightIndexObservation observation) { LocalDate fixingDate = observation.getFixingDate(); LocalDate valuationDate = getValuationDate(); if (fixingDate.isBefore(valuationDate) || (fixingDate.equals(valuationDate) && fixings.get(fixingDate).isPresent())) { return PointSensitivityBuilder.none(); } throw new MarketDataNotFoundException("Unable to query forward rate sensitivity for historic index " + index); }
@Override public PointSensitivityBuilder ratePointSensitivity(IborIndexObservation observation) { LocalDate fixingDate = observation.getFixingDate(); LocalDate valuationDate = getValuationDate(); if (fixingDate.isBefore(valuationDate) || (fixingDate.equals(valuationDate) && fixings.get(fixingDate).isPresent())) { return PointSensitivityBuilder.none(); } return IborRateSensitivity.of(observation, 1d); }
@Override public PointSensitivityBuilder ratePointSensitivity(IborIndexObservation observation) { LocalDate fixingDate = observation.getFixingDate(); LocalDate valuationDate = getValuationDate(); if (fixingDate.isBefore(valuationDate) || (fixingDate.equals(valuationDate) && fixings.get(fixingDate).isPresent())) { return PointSensitivityBuilder.none(); } return IborRateSensitivity.of(observation, 1d); }
@Override public PointSensitivityBuilder ratePointSensitivity(IborIndexObservation observation) { LocalDate fixingDate = observation.getFixingDate(); LocalDate valuationDate = getValuationDate(); if (fixingDate.isBefore(valuationDate) || (fixingDate.equals(valuationDate) && fixings.get(fixingDate).isPresent())) { return PointSensitivityBuilder.none(); } throw new MarketDataNotFoundException("Unable to query forward rate sensitivity for historic index " + index); }
@Override public PointSensitivityBuilder ratePointSensitivity(OvernightIndexObservation observation) { LocalDate valuationDate = getValuationDate(); LocalDate fixingDate = observation.getFixingDate(); LocalDate publicationDate = observation.getPublicationDate(); if (publicationDate.isBefore(valuationDate) || (publicationDate.equals(valuationDate) && fixings.get(fixingDate).isPresent())) { return PointSensitivityBuilder.none(); } return OvernightRateSensitivity.of(observation, 1d); }
@Override public PointSensitivityBuilder ratePointSensitivity(FxIndexObservation observation, Currency baseCurrency) { ArgChecker.isTrue( index.getCurrencyPair().contains(baseCurrency), "Currency {} invalid for FxIndex {}", baseCurrency, index); LocalDate fixingDate = observation.getFixingDate(); if (fixingDate.isBefore(getValuationDate()) || (fixingDate.equals(getValuationDate()) && fixings.get(fixingDate).isPresent())) { return PointSensitivityBuilder.none(); } return FxIndexSensitivity.of(observation, baseCurrency, 1d); }
public void test_duplicatesGetOverwritten() { LocalDateDoubleTimeSeries test = LocalDateDoubleTimeSeries.builder() .put(date(2014, 1, 1), 12) .put(date(2014, 1, 1), 14) .build(); assertEquals(test.size(), 1); assertEquals(test.get(date(2014, 1, 1)), OptionalDouble.of(14d)); }