@Override public ScenarioMarketData combinedWith(ScenarioMarketData other) { if (other instanceof ImmutableScenarioMarketData) { return combinedWith((ImmutableScenarioMarketData) other); } else { return ScenarioMarketData.super.combinedWith(other); } }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case -1203198113: // scenarioCount return ((ImmutableScenarioMarketData) bean).getScenarioCount(); case 113107279: // valuationDate return ((ImmutableScenarioMarketData) bean).getValuationDate(); case -823812830: // values return ((ImmutableScenarioMarketData) bean).getValues(); case 779431844: // timeSeries return ((ImmutableScenarioMarketData) bean).getTimeSeries(); } return super.propertyGet(bean, propertyName, quiet); }
/** * 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 the market data, one for each scenario * @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, MarketDataBox<LocalDate> valuationDate, Map<? extends MarketDataId<?>, MarketDataBox<?>> values, Map<? extends ObservableId, LocalDateDoubleTimeSeries> timeSeries) { return ImmutableScenarioMarketData.of(scenarioCount, valuationDate, values, timeSeries); }
/** * 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 the market data, one for each scenario * @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 ImmutableScenarioMarketData of( int scenarioCount, MarketDataBox<LocalDate> valuationDate, Map<? extends MarketDataId<?>, MarketDataBox<?>> values, Map<? extends ObservableId, LocalDateDoubleTimeSeries> timeSeries) { MapStream.of(values).forEach((key, value) -> checkType(key, value, scenarioCount)); return new ImmutableScenarioMarketData(scenarioCount, valuationDate, values, timeSeries); }
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)); }
public void test_combinedWithIncompatibleScenarioCount() { ImmutableScenarioMarketData marketData1 = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)) .addBox(TEST_ID1, MarketDataBox.ofScenarioValues(1.0, 1.1, 1.2)) .build(); ImmutableScenarioMarketData marketData2 = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)) .addBox(TEST_ID2, MarketDataBox.ofScenarioValues(1.0, 1.1)) .build(); assertThrowsIllegalArg(() -> marketData1.combinedWith(marketData2), ".* same number of scenarios .* 3 and 2"); }
public void addNothing() { ImmutableScenarioMarketData marketData = ImmutableScenarioMarketData.builder(VAL_DATE).build(); assertEquals(marketData.getScenarioCount(), 1); }
@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); }
/** * Builds the market data. * * @return the market data */ public ImmutableScenarioMarketData build() { if (scenarioCount == -1) { scenarioCount = 1; } return new ImmutableScenarioMarketData(scenarioCount, valuationDate, values, timeSeries); }
/** * Obtains a market data instance that contains no data and has no scenarios. * * @return an empty instance */ public static ScenarioMarketData empty() { return ImmutableScenarioMarketData.empty(); }
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_combinedWithIncompatibleScenarioCount() { ImmutableScenarioMarketData marketData1 = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)) .addBox(TEST_ID1, MarketDataBox.ofScenarioValues(1.0, 1.1, 1.2)) .build(); ImmutableScenarioMarketData marketData2 = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)) .addBox(TEST_ID2, MarketDataBox.ofScenarioValues(1.0, 1.1)) .build(); assertThrowsIllegalArg(() -> marketData1.combinedWith(marketData2), ".* same number of scenarios .* 3 and 2"); }
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(); }
@Override public ImmutableScenarioMarketData build() { return new ImmutableScenarioMarketData( scenarioCount, valuationDate, values, timeSeries); }
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)); }
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); }
/** * 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 ImmutableScenarioMarketData of( int scenarioCount, LocalDate valuationDate, Map<? extends MarketDataId<?>, MarketDataBox<?>> values, Map<? extends ObservableId, LocalDateDoubleTimeSeries> timeSeries) { return of(scenarioCount, MarketDataBox.ofSingleValue(valuationDate), values, timeSeries); }
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); } }
Map<ObservableId, LocalDateDoubleTimeSeries> timeSeries = new HashMap<>(other.timeSeries); timeSeries.putAll(this.timeSeries); return new ImmutableScenarioMarketData(mergedCount, valuationDate, values, timeSeries);
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)); }