@Override public LocalDateDoubleTimeSeries getTimeSeries(ObservableId id) { return underlying.getTimeSeries(id); }
/** * Calibrates a single curve group, containing one or more curves. * <p> * The calibration is defined using {@link RatesCurveGroupDefinition}. * Observable market data, time-series and FX are also needed to complete the calibration. * The valuation date is defined by the market data. * <p> * The Jacobian matrices are computed and stored in curve metadata. * * @param curveGroupDefn the curve group definition * @param marketData the market data required to build a trade for the instrument, including time-series * @param refData the reference data, used to resolve the trades * @return the rates provider resulting from the calibration */ public ImmutableRatesProvider calibrate( RatesCurveGroupDefinition curveGroupDefn, MarketData marketData, ReferenceData refData) { Map<Index, LocalDateDoubleTimeSeries> timeSeries = marketData.getTimeSeriesIds().stream() .flatMap(filtering(IndexQuoteId.class)) .collect(toImmutableMap(id -> id.getIndex(), id -> marketData.getTimeSeries(id))); ImmutableRatesProvider knownData = ImmutableRatesProvider.builder(marketData.getValuationDate()) .fxRateProvider(MarketDataFxRateProvider.of(marketData)) .timeSeries(timeSeries) .build(); return calibrate(ImmutableList.of(curveGroupDefn), knownData, marketData, refData); }
@Override public LocalDateDoubleTimeSeries getTimeSeries(ObservableId id) { return underlying.getTimeSeries(id); }
@Override public LocalDateDoubleTimeSeries getTimeSeries(ObservableId id) { LocalDateDoubleTimeSeries timeSeries = underlying1.getTimeSeries(id); return !timeSeries.isEmpty() ? timeSeries : underlying2.getTimeSeries(id); }
public void empty() { MarketData test = MarketData.empty(VAL_DATE); assertEquals(test.containsValue(ID1), false); assertEquals(test.getIds(), ImmutableSet.of()); assertEquals(test.getTimeSeries(ID4), LocalDateDoubleTimeSeries.empty()); }
public void test_of_3arg() { Map<MarketDataId<?>, Object> dataMap = ImmutableMap.of(ID1, VAL1); Map<ObservableId, LocalDateDoubleTimeSeries> tsMap = ImmutableMap.of(ID5, TIME_SERIES); MarketData test = MarketData.of(VAL_DATE, dataMap, tsMap); assertEquals(test.containsValue(ID1), true); assertEquals(test.getValue(ID1), VAL1); assertEquals(test.findValue(ID1), Optional.of(VAL1)); assertEquals(test.containsValue(ID2), false); assertThrows(() -> test.getValue(ID2), MarketDataNotFoundException.class); assertEquals(test.findValue(ID2), Optional.empty()); assertEquals(test.getIds(), ImmutableSet.of(ID1)); assertEquals(test.getTimeSeries(ID4), LocalDateDoubleTimeSeries.empty()); assertEquals(test.getTimeSeries(ID5), TIME_SERIES); }
public void test_of_2arg() { Map<MarketDataId<?>, Object> dataMap = ImmutableMap.of(ID1, VAL1, ID2, VAL2); MarketData test = MarketData.of(VAL_DATE, dataMap); assertEquals(test.containsValue(ID1), true); assertEquals(test.getValue(ID1), VAL1); assertEquals(test.findValue(ID1), Optional.of(VAL1)); assertEquals(test.containsValue(ID2), true); assertEquals(test.getValue(ID2), VAL2); assertEquals(test.findValue(ID2), Optional.of(VAL2)); assertEquals(test.containsValue(ID3), false); assertThrows(() -> test.getValue(ID3), MarketDataNotFoundException.class); assertEquals(test.findValue(ID3), Optional.empty()); assertEquals(test.getIds(), ImmutableSet.of(ID1, ID2)); assertEquals(test.findIds(ID1.getMarketDataName()), ImmutableSet.of(ID1)); assertEquals(test.findIds(new TestingName("Foo")), ImmutableSet.of()); assertEquals(test.getTimeSeries(ID4), LocalDateDoubleTimeSeries.empty()); assertEquals(test.getTimeSeries(ID5), LocalDateDoubleTimeSeries.empty()); }
@Override public double initialGuess(MarketData marketData, ValueType valueType) { if (ValueType.PRICE_INDEX.equals(valueType)) { PriceIndex index = template.getConvention().getFloatingLeg().getIndex(); LocalDateDoubleTimeSeries ts = marketData.getTimeSeries(IndexQuoteId.of(index)); double latestIndex = ts.getLatestValue(); double rate = marketData.getValue(rateId); double year = template.getTenor().getPeriod().getYears(); return latestIndex * Math.pow(1.0 + rate, year); } if (ValueType.ZERO_RATE.equals(valueType)) { return marketData.getValue(rateId); } throw new IllegalArgumentException("No default initial guess when value type is not 'PriceIndex' or 'ZeroRate'."); }