@Override public boolean containsValue(MarketDataId<?> id) { return underlying1.containsValue(id) || underlying2.containsValue(id); }
@Override public Set<MarketDataId<?>> getIds() { return marketData.getIds(); }
public void test_of() { Map<MarketDataId<?>, MarketDataBox<?>> dataMap = ImmutableMap.of(ID1, BOX1); Map<ObservableId, LocalDateDoubleTimeSeries> tsMap = ImmutableMap.of(ID1, TIME_SERIES); ScenarioMarketData test = ScenarioMarketData.of(2, VAL_DATE, dataMap, tsMap); assertThat(test.getValuationDate()).isEqualTo(MarketDataBox.ofSingleValue(VAL_DATE)); assertThat(test.containsValue(ID1)).isTrue(); assertThat(test.containsValue(ID2)).isFalse(); assertThat(test.getValue(ID1)).isEqualTo(BOX1); assertThrows(() -> test.getValue(ID2), MarketDataNotFoundException.class); assertThat(test.findValue(ID1)).hasValue(BOX1); assertThat(test.findValue(ID2)).isEmpty(); assertThat(test.getIds()).isEqualTo(ImmutableSet.of(ID1)); assertThat(test.getTimeSeries(ID1)).isEqualTo(TIME_SERIES); assertThat(test.getTimeSeries(ID2)).isEqualTo(LocalDateDoubleTimeSeries.empty()); }
public void test_empty() { ScenarioMarketData test = ScenarioMarketData.empty(); assertThat(test.getValuationDate()).isEqualTo(MarketDataBox.empty()); assertThat(test.containsValue(ID1)).isFalse(); assertThat(test.containsValue(ID2)).isFalse(); assertThrows(() -> test.getValue(ID1), MarketDataNotFoundException.class); assertThrows(() -> test.getValue(ID2), MarketDataNotFoundException.class); assertThat(test.findValue(ID1)).isEmpty(); assertThat(test.findValue(ID2)).isEmpty(); assertThat(test.getIds()).isEqualTo(ImmutableSet.of()); assertThat(test.getTimeSeries(ID1)).isEqualTo(LocalDateDoubleTimeSeries.empty()); assertThat(test.getTimeSeries(ID2)).isEqualTo(LocalDateDoubleTimeSeries.empty()); }
assertThat(test.getValuationDate()).isEqualTo(MarketDataBox.ofSingleValue(VAL_DATE)); assertThat(test.containsValue(ID1)).isTrue(); assertThat(test.containsValue(ID2)).isFalse(); assertThat(test.getValue(ID1)).isEqualTo(BOX1); assertThrows(() -> test.getValue(ID2), MarketDataNotFoundException.class); assertThat(test.findValue(ID1)).hasValue(BOX1); assertThat(test.findValue(ID2)).isEmpty();
public void test_of_repeated() { ScenarioMarketData test = ScenarioMarketData.of(1, MarketData.of(VAL_DATE, ImmutableMap.of(ID1, VAL1))); assertThat(test.getValuationDate()).isEqualTo(MarketDataBox.ofSingleValue(VAL_DATE)); assertThat(test.getValue(ID1)).isEqualTo(MarketDataBox.ofSingleValue(VAL1)); }
assertThat(combinedData.getScenarioCount()).isEqualTo(3); assertThat(combinedData.getValue(TEST_ID1).getValue(0)).isEqualTo(1.1); assertThat(combinedData.getValue(TEST_ID1).getValue(2)).isEqualTo(1.1); assertThat(combinedData.getValue(TEST_ID1).getValue(3)).isEqualTo(1.1); assertThat(combinedData.getValue(TEST_ID2)).isEqualTo(MarketDataBox.ofScenarioValues(2.0, 2.1, 2.2)); assertThat(combinedData.getValue(TEST_ID3)).isEqualTo(MarketDataBox.ofScenarioValues(3.0, 3.1, 3.2)); assertThat(combinedData.getTimeSeries(TEST_ID1)).isEqualTo(timeSeries1); assertThat(combinedData.getTimeSeries(TEST_ID2)).isEqualTo(timeSeries2a); assertThat(combinedData.getTimeSeries(TEST_ID3)).isEqualTo(timeSeries3);
ReferenceData refData) { if (perturbation.getScenarioCount() != 1 && perturbation.getScenarioCount() != getScenarioCount()) { throw new IllegalArgumentException(Messages.format( "Scenario count mismatch: perturbation has {} scenarios but this market data has {}", perturbation.getScenarioCount(), getScenarioCount())); return withValue(id, perturbation.applyTo(getValue(id), refData));
public void test_scenarios() { Map<MarketDataId<?>, MarketDataBox<?>> dataMap = ImmutableMap.of(ID1, BOX1); Map<ObservableId, LocalDateDoubleTimeSeries> tsMap = ImmutableMap.of(ID1, TIME_SERIES); ScenarioMarketData test = ScenarioMarketData.of(2, VAL_DATE, dataMap, tsMap); MarketData scenario0 = test.scenario(0); MarketData scenario1 = test.scenario(1); assertThat(scenario0.getValue(ID1)).isEqualTo(BOX1.getValue(0)); assertThat(scenario1.getValue(ID1)).isEqualTo(BOX1.getValue(1)); List<Double> list = test.scenarios().map(s -> s.getValue(ID1)).collect(toImmutableList()); assertThat(list.get(0)).isEqualTo(BOX1.getValue(0)); assertThat(list.get(1)).isEqualTo(BOX1.getValue(1)); }
@Override public int getScenarioCount() { return marketData.getScenarioCount(); }
MarketDataBox<T> box = getValue(id.getMarketDataId()); return id.createScenarioValue(box, getScenarioCount()); return (U) scenarioValue; return id.createScenarioValue(box, getScenarioCount());
/** * Obtains an instance from a valuation date, map of values and time-series. * <p> * The valuation date and map of values must have the same number of scenarios. * * @param scenarioCount the number of scenarios * @param valuationDate the valuation dates associated with all scenarios * @param values the market data values, one for each scenario * @param timeSeries the time-series * @return a set of market data containing the values in the map */ public static ScenarioMarketData of( int scenarioCount, LocalDate valuationDate, Map<? extends MarketDataId<?>, MarketDataBox<?>> values, Map<? extends ObservableId, LocalDateDoubleTimeSeries> timeSeries) { return of(scenarioCount, MarketDataBox.ofSingleValue(valuationDate), values, timeSeries); }
@Override public LocalDateDoubleTimeSeries getTimeSeries(ObservableId id) { return marketData.getTimeSeries(id); }
@Override public MarketDataBox<LocalDate> getValuationDate() { return underlying.getValuationDate(); }
@Override @SuppressWarnings("unchecked") public <R> MarketDataBox<R> getValue(MarketDataId<R> id) { if (this.id.equals(id)) { return (MarketDataBox<R>) value; } return underlying.getValue(id); }
@Override public FxRateProvider fxRateProvider(int scenarioIndex) { return MarketDataFxRateProvider.of(marketData.scenario(scenarioIndex), source); }
@Override public ScenarioMarketData combinedWith(ScenarioMarketData other) { if (other instanceof ImmutableScenarioMarketData) { return combinedWith((ImmutableScenarioMarketData) other); } else { return ScenarioMarketData.super.combinedWith(other); } }
public void test_of_noScenarios() { Map<MarketDataId<?>, MarketDataBox<?>> dataMap = ImmutableMap.of(ID1, MarketDataBox.empty()); ScenarioMarketData test = ScenarioMarketData.of(0, VAL_DATE, dataMap, ImmutableMap.of()); assertThat(test.getValuationDate()).isEqualTo(MarketDataBox.ofSingleValue(VAL_DATE)); assertThat(test.containsValue(ID1)).isTrue(); assertThat(test.containsValue(ID2)).isFalse(); assertThat(test.getValue(ID1)).isEqualTo(MarketDataBox.empty()); assertThrows(() -> test.getValue(ID2), MarketDataNotFoundException.class); assertThat(test.findValue(ID1)).hasValue(MarketDataBox.empty()); assertThat(test.findValue(ID2)).isEmpty(); assertThat(test.getIds()).isEqualTo(ImmutableSet.of(ID1)); assertThat(test.getTimeSeries(ID1)).isEqualTo(LocalDateDoubleTimeSeries.empty()); assertThat(test.getTimeSeries(ID2)).isEqualTo(LocalDateDoubleTimeSeries.empty()); }