private static ImmutableScenarioMarketData baseData() { Map<ObservableId, LocalDateDoubleTimeSeries> timeSeriesMap = ImmutableMap.of(ID4, TIME_SERIES); return ImmutableScenarioMarketData.builder(VAL_DATE) .addBox(ID1, VAL1) .addBox(ID2, VAL2) .addTimeSeriesMap(timeSeriesMap) .build(); }
/** * Sets the values in the builder, replacing any existing values. * * @param values the values * @return this builder */ public ImmutableScenarioMarketDataBuilder values(Map<? extends MarketDataId<?>, ?> values) { this.values.clear(); return addValueMap(values); }
/** * Creates a mutable builder that can be used to create an instance of the market data. * * @param valuationDate the valuation date associated with the market data * @return the mutable builder */ public static ImmutableScenarioMarketDataBuilder builder(LocalDate valuationDate) { return new ImmutableScenarioMarketDataBuilder(valuationDate); }
/** * Adds market data values for each scenario. * <p> * Each value in the map is a market data box. * Any existing value with the same identifier will be replaced. * * @param values the items of market data, keyed by identifier * @return this builder */ public ImmutableScenarioMarketDataBuilder addBoxMap( Map<? extends MarketDataId<?>, ? extends MarketDataBox<?>> values) { ArgChecker.notNull(values, "values"); for (Entry<? extends MarketDataId<?>, ? extends MarketDataBox<?>> entry : values.entrySet()) { MarketDataId<?> id = entry.getKey(); MarketDataBox<?> box = entry.getValue(); checkBoxType(id, box); checkAndUpdateScenarioCount(box); this.values.put(id, box); } return this; }
.addTimeSeries(TEST_ID1, timeSeries1) .addTimeSeries(TEST_ID2, timeSeries2) .addBox(TEST_ID1, MarketDataBox.ofScenarioValues(1.0, 1.1, 1.2)) .addBox(TEST_ID2, MarketDataBox.ofScenarioValues(2.0, 2.1, 2.2)) .build(); .addTimeSeries(TEST_ID2, timeSeries2a) .addTimeSeries(TEST_ID3, timeSeries3) .addBox(TEST_ID2, MarketDataBox.ofScenarioValues(21.0, 21.1, 21.2)) .addBox(TEST_ID3, MarketDataBox.ofScenarioValues(3.0, 3.1, 3.2)) .build(); .addTimeSeries(TEST_ID1, timeSeries1) .addTimeSeries(TEST_ID2, timeSeries2) .addTimeSeries(TEST_ID3, timeSeries3) .addBox(TEST_ID1, MarketDataBox.ofScenarioValues(1.0, 1.1, 1.2)) .addBox(TEST_ID2, MarketDataBox.ofScenarioValues(2.0, 2.1, 2.2)) .addBox(TEST_ID3, MarketDataBox.ofScenarioValues(3.0, 3.1, 3.2)) .build();
public void test_combinedWithOtherHasOneScenario() { ImmutableScenarioMarketData marketData1 = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)) .addBox(TEST_ID2, MarketDataBox.ofScenarioValues(1.0, 1.1)) .build(); ImmutableScenarioMarketData marketData2 = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)) .addBox(TEST_ID1, MarketDataBox.ofSingleValue(1.0)) .build(); ImmutableScenarioMarketData expected = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)) .addBox(TEST_ID1, MarketDataBox.ofSingleValue(1.0)) .addBox(TEST_ID2, MarketDataBox.ofScenarioValues(1.0, 1.1)) .build(); assertThat(marketData1.combinedWith(marketData2)).isEqualTo(expected); }
public void test_addSingleAndList() { FxRateId eurGbpId = FxRateId.of(Currency.EUR, Currency.GBP); FxRateId eurUsdId = FxRateId.of(Currency.EUR, Currency.USD); FxRate eurGbpRate = FxRate.of(Currency.EUR, Currency.GBP, 0.8); FxRate eurUsdRate1 = FxRate.of(Currency.EUR, Currency.USD, 1.1); FxRate eurUsdRate2 = FxRate.of(Currency.EUR, Currency.USD, 1.2); ImmutableScenarioMarketData marketData = ImmutableScenarioMarketData.builder(VAL_DATE) .addValue(eurGbpId, eurGbpRate) .addScenarioValue(eurUsdId, ImmutableList.of(eurUsdRate1, eurUsdRate2)) .build(); assertEquals(marketData.getScenarioCount(), 2); assertEquals(marketData.getIds(), ImmutableSet.of(eurGbpId, eurUsdId)); assertEquals(marketData.getValue(eurGbpId), MarketDataBox.ofSingleValue(eurGbpRate)); assertEquals(marketData.getValue(eurUsdId), MarketDataBox.ofScenarioValues(eurUsdRate1, eurUsdRate2)); }
public void test_addSingleAndBox() { FxRateId eurGbpId = FxRateId.of(Currency.EUR, Currency.GBP); FxRateId eurUsdId = FxRateId.of(Currency.EUR, Currency.USD); FxRate eurGbpRate = FxRate.of(Currency.EUR, Currency.GBP, 0.8); FxRate eurUsdRate1 = FxRate.of(Currency.EUR, Currency.USD, 1.1); FxRate eurUsdRate2 = FxRate.of(Currency.EUR, Currency.USD, 1.2); ImmutableScenarioMarketData marketData = ImmutableScenarioMarketData.builder(VAL_DATE) .addValue(eurGbpId, eurGbpRate) .addBox(eurUsdId, MarketDataBox.ofScenarioValues(eurUsdRate1, eurUsdRate2)) .build(); assertEquals(marketData.getScenarioCount(), 2); assertEquals(marketData.getIds(), ImmutableSet.of(eurGbpId, eurUsdId)); assertEquals(marketData.getValue(eurGbpId), MarketDataBox.ofSingleValue(eurGbpRate)); assertEquals(marketData.getValue(eurUsdId), MarketDataBox.ofScenarioValues(eurUsdRate1, eurUsdRate2)); }
public void test_addValueMap() { FxRateId eurGbpId = FxRateId.of(Currency.EUR, Currency.GBP); FxRateId eurUsdId = FxRateId.of(Currency.EUR, Currency.USD); FxRate eurGbpRate = FxRate.of(Currency.EUR, Currency.GBP, 0.8); FxRate eurUsdRate = FxRate.of(Currency.EUR, Currency.USD, 1.1); Map<FxRateId, FxRate> values = ImmutableMap.of( eurGbpId, eurGbpRate, eurUsdId, eurUsdRate); ImmutableScenarioMarketData marketData = ImmutableScenarioMarketData.builder(VAL_DATE) .addValueMap(values) .build(); assertEquals(marketData.getScenarioCount(), 1); assertEquals(marketData.getIds(), ImmutableSet.of(eurGbpId, eurUsdId)); assertEquals(marketData.getValue(eurGbpId), MarketDataBox.ofSingleValue(eurGbpRate)); assertEquals(marketData.getValue(eurUsdId), MarketDataBox.ofSingleValue(eurUsdRate)); }
@BeforeClass public void setUp() throws Exception { ScenarioMarketData marketData = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)) .addValue(FxRateId.of(Currency.GBP, Currency.USD), FxRate.of(Currency.GBP, Currency.USD, 1.4d)) .build(); fxRateProvider = ScenarioFxRateProvider.of(marketData); }
/** * Sets the time-series in the builder, replacing any existing values. * * @param timeSeries the time-series * @return this builder */ public ImmutableScenarioMarketDataBuilder timeSeries(Map<? extends ObservableId, LocalDateDoubleTimeSeries> timeSeries) { this.timeSeries.clear(); return addTimeSeriesMap(timeSeries); }
public void test_values() { FxRateId eurGbpId = FxRateId.of(Currency.EUR, Currency.GBP); FxRateId eurUsdId = FxRateId.of(Currency.EUR, Currency.USD); FxRate eurGbpRate1 = FxRate.of(Currency.EUR, Currency.GBP, 0.85); FxRate eurGbpRate2 = FxRate.of(Currency.EUR, Currency.GBP, 0.8); FxRate eurUsdRate2 = FxRate.of(Currency.EUR, Currency.USD, 1.1); Map<FxRateId, FxRate> values1 = ImmutableMap.of( eurGbpId, eurGbpRate1); Map<FxRateId, FxRate> values2 = ImmutableMap.of( eurGbpId, eurGbpRate2, eurUsdId, eurUsdRate2); ImmutableScenarioMarketData marketData = ImmutableScenarioMarketData.builder(VAL_DATE) .values(values1) .values(values2) // replaces values1 .build(); assertEquals(marketData.getScenarioCount(), 1); assertEquals(marketData.getIds(), ImmutableSet.of(eurGbpId, eurUsdId)); assertEquals(marketData.getValue(eurGbpId), MarketDataBox.ofSingleValue(eurGbpRate2)); assertEquals(marketData.getValue(eurUsdId), MarketDataBox.ofSingleValue(eurUsdRate2)); }
public void test_addScenarioValueMap() { FxRateId eurGbpId = FxRateId.of(Currency.EUR, Currency.GBP); FxRateId eurUsdId = FxRateId.of(Currency.EUR, Currency.USD); FxRateScenarioArray eurGbpRates = FxRateScenarioArray.of(Currency.EUR, Currency.GBP, DoubleArray.of(0.79, 0.8, 0.81)); FxRateScenarioArray eurUsdRates = FxRateScenarioArray.of(Currency.EUR, Currency.USD, DoubleArray.of(1.09, 1.1, 1.11)); Map<FxRateId, FxRateScenarioArray> values = ImmutableMap.of( eurGbpId, eurGbpRates, eurUsdId, eurUsdRates); ImmutableScenarioMarketData marketData = ImmutableScenarioMarketData.builder(VAL_DATE) .addScenarioValueMap(values) .build(); assertEquals(marketData.getScenarioCount(), 3); assertEquals(marketData.getIds(), ImmutableSet.of(eurGbpId, eurUsdId)); assertEquals(marketData.getValue(eurGbpId), MarketDataBox.ofScenarioValue(eurGbpRates)); assertEquals(marketData.getValue(eurUsdId), MarketDataBox.ofScenarioValue(eurUsdRates)); }
/** * Adds market data wrapped in a box. * <p> * Any existing value with the same identifier will be replaced. * * @param id the identifier * @param value the market data value * @param <T> the type of the market data value * @return this builder */ public <T> ImmutableScenarioMarketDataBuilder addBox(MarketDataId<T> id, MarketDataBox<? extends T> value) { ArgChecker.notNull(id, "id"); ArgChecker.notNull(value, "value"); checkAndUpdateScenarioCount(value); values.put(id, value); return this; }
public void addNothing() { ImmutableScenarioMarketData marketData = ImmutableScenarioMarketData.builder(VAL_DATE).build(); assertEquals(marketData.getScenarioCount(), 1); }
public void test_addBadScenarioCount() { FxRateId eurGbpId = FxRateId.of(Currency.EUR, Currency.GBP); FxRateId eurUsdId = FxRateId.of(Currency.EUR, Currency.USD); FxRate eurGbpRate1 = FxRate.of(Currency.EUR, Currency.GBP, 0.8); FxRate eurGbpRate2 = FxRate.of(Currency.EUR, Currency.GBP, 0.9); FxRate eurGbpRate3 = FxRate.of(Currency.EUR, Currency.GBP, 0.95); FxRate eurUsdRate1 = FxRate.of(Currency.EUR, Currency.USD, 1.1); FxRate eurUsdRate2 = FxRate.of(Currency.EUR, Currency.USD, 1.2); ImmutableScenarioMarketDataBuilder builder = ImmutableScenarioMarketData.builder(VAL_DATE) .addBox(eurGbpId, MarketDataBox.ofScenarioValues(eurGbpRate1, eurGbpRate2, eurGbpRate3)); assertThrowsIllegalArg(() -> builder.addBox(eurUsdId, MarketDataBox.ofScenarioValues(eurUsdRate1, eurUsdRate2))); }
.addTimeSeries(TEST_ID1, timeSeries1) .addTimeSeries(TEST_ID2, timeSeries2) .addBox(TEST_ID1, MarketDataBox.ofScenarioValues(1.0, 1.1, 1.2)) .addBox(TEST_ID2, MarketDataBox.ofScenarioValues(2.0, 2.1, 2.2)) .build(); .addTimeSeries(TEST_ID2, timeSeries2a) .addTimeSeries(TEST_ID3, timeSeries3) .addBox(TEST_ID2, MarketDataBox.ofScenarioValues(21.0, 21.1, 21.2)) .addBox(TEST_ID3, MarketDataBox.ofScenarioValues(3.0, 3.1, 3.2)) .build(); .addTimeSeries(TEST_ID1, timeSeries1) .addTimeSeries(TEST_ID2, timeSeries2) .addTimeSeries(TEST_ID3, timeSeries3) .addBox(TEST_ID1, MarketDataBox.ofScenarioValues(1.0, 1.1, 1.2)) .addBox(TEST_ID2, MarketDataBox.ofScenarioValues(2.0, 2.1, 2.2)) .addBox(TEST_ID3, MarketDataBox.ofScenarioValues(3.0, 3.1, 3.2)) .build();
public void test_combinedWithReceiverHasOneScenario() { ImmutableScenarioMarketData marketData1 = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)) .addBox(TEST_ID1, MarketDataBox.ofSingleValue(1.0)) .build(); ImmutableScenarioMarketData marketData2 = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)) .addBox(TEST_ID2, MarketDataBox.ofScenarioValues(1.0, 1.1)) .build(); ImmutableScenarioMarketData expected = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)) .addBox(TEST_ID1, MarketDataBox.ofSingleValue(1.0)) .addBox(TEST_ID2, MarketDataBox.ofScenarioValues(1.0, 1.1)) .build(); assertThat(marketData1.combinedWith(marketData2)).isEqualTo(expected); }
/** * Adds market data values for each scenario. * <p> * Each value in the map contains multiple market data items, one for each scenario. * Any existing value with the same identifier will be replaced. * * @param values the items of market data, keyed by identifier * @return this builder */ public ImmutableScenarioMarketDataBuilder addScenarioValueMap( Map<? extends MarketDataId<?>, ? extends ScenarioArray<?>> values) { ArgChecker.notNull(values, "values"); for (Entry<? extends MarketDataId<?>, ? extends ScenarioArray<?>> entry : values.entrySet()) { MarketDataId<?> id = entry.getKey(); ScenarioArray<?> value = entry.getValue(); MarketDataBox<?> box = MarketDataBox.ofScenarioValue(value); checkBoxType(id, box); checkAndUpdateScenarioCount(box); this.values.put(id, box); } return this; }
public void specifySource() { ObservableSource testSource = ObservableSource.of("test"); ScenarioMarketData marketData = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)) .addValue(FxRateId.of(Currency.GBP, Currency.USD), FxRate.of(Currency.GBP, Currency.USD, 1.4d)) .addValue(FxRateId.of(Currency.GBP, Currency.USD, testSource), FxRate.of(Currency.GBP, Currency.USD, 1.41d)) .build(); ScenarioFxRateProvider defaultRateProvider = ScenarioFxRateProvider.of(marketData); ScenarioFxRateProvider sourceRateProvider = ScenarioFxRateProvider.of(marketData, testSource); assertThat(defaultRateProvider.fxRate(Currency.GBP, Currency.USD, 0)).isEqualTo(1.4d); assertThat(sourceRateProvider.fxRate(Currency.GBP, Currency.USD, 0)).isEqualTo(1.41d); } }