/// <summary>
        /// Tests the combinedWith method when the other set of market data is not an instance of ImmutableScenarioMarketData
        /// </summary>
        public virtual void test_combinedWithDifferentImpl()
        {
            LocalDateDoubleTimeSeries timeSeries1 = LocalDateDoubleTimeSeries.builder().put(date(2011, 3, 8), 1).put(date(2011, 3, 9), 2).put(date(2011, 3, 10), 3).build();

            LocalDateDoubleTimeSeries timeSeries2 = LocalDateDoubleTimeSeries.builder().put(date(2011, 3, 8), 10).put(date(2011, 3, 9), 20).put(date(2011, 3, 10), 30).build();

            LocalDateDoubleTimeSeries timeSeries2a = LocalDateDoubleTimeSeries.builder().put(date(2011, 3, 8), 1000).put(date(2011, 3, 9), 2000).put(date(2011, 3, 10), 3000).build();

            LocalDateDoubleTimeSeries timeSeries3 = LocalDateDoubleTimeSeries.builder().put(date(2011, 3, 8), 100).put(date(2011, 3, 9), 200).put(date(2011, 3, 10), 300).build();

            MarketData marketData = ImmutableMarketData.builder(LocalDate.of(2011, 3, 8)).addTimeSeries(TEST_ID1, timeSeries1).addTimeSeries(TEST_ID2, timeSeries2).addValue(TEST_ID1, 1.1).addValue(TEST_ID2, 1.2).build();

            RepeatedScenarioMarketData repeatedScenarioMarketData = RepeatedScenarioMarketData.of(3, marketData);

            ImmutableScenarioMarketData immutableScenarioMarketData = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)).addTimeSeries(TEST_ID2, timeSeries2a).addTimeSeries(TEST_ID3, timeSeries3).addBox(TEST_ID2, MarketDataBox.ofScenarioValues(2.0, 2.1, 2.2)).addBox(TEST_ID3, MarketDataBox.ofScenarioValues(3.0, 3.1, 3.2)).build();

            ScenarioMarketData combinedData = immutableScenarioMarketData.combinedWith(repeatedScenarioMarketData);

            assertThat(combinedData.ScenarioCount).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);
        }
Esempio n. 2
0
        public virtual void isSingleOrScenarioValue()
        {
            MarketDataBox <int> box = MarketDataBox.ofScenarioValues(27, 28, 29);

            assertThat(box.SingleValue).False;
            assertThat(box.ScenarioValue).True;
        }
Esempio n. 3
0
        public virtual void combineWithScenarioBoxWithWrongNumberOfScenarios()
        {
            MarketDataBox <int> box      = MarketDataBox.ofScenarioValues(27, 28, 29);
            MarketDataBox <int> otherBox = MarketDataBox.ofScenarioValues(15, 16, 17, 18);

            assertThrows(() => box.combineWith(otherBox, (v1, v2) => v1 + v2), typeof(System.ArgumentException), "Scenario values must have the same number of scenarios.*");
        }
Esempio n. 4
0
        public virtual void map()
        {
            MarketDataBox <int> box    = MarketDataBox.ofScenarioValues(27, 28, 29);
            MarketDataBox <int> result = box.map(v => v * 2);

            assertThat(result).isEqualTo(MarketDataBox.ofScenarioValues(54, 56, 58));
        }
Esempio n. 5
0
        public virtual void stream()
        {
            MarketDataBox <int> box  = MarketDataBox.ofScenarioValues(27, 28, 29);
            IList <int>         list = box.ToList();

            assertThat(list).isEqualTo(ImmutableList.of(27, 28, 29));
        }
Esempio n. 6
0
        public virtual void getScenarioValueFromOtherScenarioValue()
        {
            MarketDataBox <double> box        = MarketDataBox.ofScenarioValues(9d, 9d, 9d);
            TestMarketData         marketData = new TestMarketData(box);
            TestArrayKey           key        = new TestArrayKey();
            TestDoubleArray        array      = marketData.getScenarioValue(key);

            assertThat(array.values).isEqualTo(DoubleArray.of(9, 9, 9));
        }
        private MarketDataBox <R> combineWithMultiple <U, R>(MarketDataBox <U> other, System.Func <T, U, R> fn)
        {
            ScenarioArray <U> otherValue = other.ScenarioValue;
            int scenarioCount            = otherValue.ScenarioCount;

            IList <R> values = IntStream.range(0, scenarioCount).mapToObj(i => fn(value, other.getValue(i))).collect(toImmutableList());

            return(MarketDataBox.ofScenarioValues(values));
        }
        public MarketDataBox <R> mapWithIndex <R>(int scenarioCount, ObjIntFunction <T, R> fn)
        {
            if (scenarioCount != ScenarioCount)
            {
                throw new System.ArgumentException(Messages.format("Scenario count {} does not equal the scenario count of the value {}", scenarioCount, ScenarioCount));
            }
            IList <R> perturbedValues = IntStream.range(0, scenarioCount).mapToObj(idx => fn.apply(getValue(idx), idx)).collect(toImmutableList());

            return(MarketDataBox.ofScenarioValues(perturbedValues));
        }
Esempio n. 9
0
        public virtual void getScenarioValue()
        {
            MarketDataBox <int> box           = MarketDataBox.ofScenarioValues(27, 28, 29);
            ScenarioArray <int> scenarioValue = box.ScenarioValue;

            assertThat(scenarioValue.ScenarioCount).isEqualTo(3);
            assertThat(scenarioValue.get(0)).isEqualTo(27);
            assertThat(scenarioValue.get(1)).isEqualTo(28);
            assertThat(scenarioValue.get(2)).isEqualTo(29);
        }
Esempio n. 10
0
        public virtual void getValue()
        {
            MarketDataBox <int> box = MarketDataBox.ofScenarioValues(27, 28, 29);

            assertThat(box.getValue(0)).isEqualTo(27);
            assertThat(box.getValue(1)).isEqualTo(28);
            assertThat(box.getValue(2)).isEqualTo(29);
            assertThrows(() => box.getValue(-1), typeof(System.ArgumentException), "Expected 0 <= 'scenarioIndex' < 3, but found -1");
            assertThrows(() => box.getValue(3), typeof(System.ArgumentException), "Expected 0 <= 'scenarioIndex' < 3, but found 3");
        }
Esempio n. 11
0
        /// <summary>
        /// Tests that applying a function multiple times to the value creates a box of scenario values.
        /// </summary>
        public virtual void mapWithIndex()
        {
            MarketDataBox <int> box         = MarketDataBox.ofScenarioValues(27, 28, 29);
            MarketDataBox <int> scenarioBox = box.mapWithIndex(3, (v, idx) => v + idx);

            assertThat(scenarioBox.ScenarioValue).True;
            assertThat(scenarioBox.ScenarioCount).isEqualTo(3);
            assertThat(scenarioBox.getValue(0)).isEqualTo(27);
            assertThat(scenarioBox.getValue(1)).isEqualTo(29);
            assertThat(scenarioBox.getValue(2)).isEqualTo(31);
        }
Esempio n. 12
0
        public virtual void combineWithScenarioBox()
        {
            MarketDataBox <int> box       = MarketDataBox.ofScenarioValues(27, 28, 29);
            MarketDataBox <int> otherBox  = MarketDataBox.ofScenarioValues(15, 16, 17);
            MarketDataBox <int> resultBox = box.combineWith(otherBox, (v1, v2) => v1 + v2);

            assertThat(resultBox.ScenarioValue).True;
            assertThat(resultBox.ScenarioCount).isEqualTo(3);
            assertThat(resultBox.getValue(0)).isEqualTo(42);
            assertThat(resultBox.getValue(1)).isEqualTo(44);
            assertThat(resultBox.getValue(2)).isEqualTo(46);
        }
Esempio n. 13
0
        public virtual void test_none()
        {
            ScenarioPerturbation <double> test = ScenarioPerturbation.none();

            assertEquals(test.ScenarioCount, 1);
            MarketDataBox <double> box1 = MarketDataBox.ofScenarioValues(1d, 2d, 3d);

            assertEquals(test.applyTo(box1, REF_DATA), box1);
            MarketDataBox <double> box2 = MarketDataBox.ofSingleValue(1d);

            assertEquals(test.applyTo(box2, REF_DATA), box2);
        }
Esempio n. 14
0
        /// <summary>
        /// Creates zoned date time.
        /// <para>
        /// If the scenario size of {@code dates} is greater than the size of {@code localTimes},
        /// {@code defaultLocalTime} is used.
        /// If {@code dates} is single value, {@code defaultLocalTime} is used.
        ///
        /// </para>
        /// </summary>
        /// <param name="dates">  the local date </param>
        /// <returns> the zoned date time </returns>
        public MarketDataBox <ZonedDateTime> toZonedDateTime(MarketDataBox <LocalDate> dates)
        {
            if (dates.ScenarioValue)
            {
                int nScenarios = dates.ScenarioCount;
                int nTimes     = localTimes.size();
                IList <ZonedDateTime> zonedDateTimes = IntStream.range(0, nScenarios).mapToObj(scenarioIndex => zonedDateTime(dates.getValue(scenarioIndex), nTimes, scenarioIndex)).collect(Collectors.toList());
                return(MarketDataBox.ofScenarioValues(zonedDateTimes));
            }
            ZonedDateTime zonedDateTime = dates.SingleValue.atTime(defaultLocalTime).atZone(zoneId);

            return(MarketDataBox.ofSingleValue(zonedDateTime));
        }
Esempio n. 15
0
        public virtual void buildScenario()
        {
            FxRateMarketDataFunction function   = new FxRateMarketDataFunction();
            MarketDataBox <double>   quoteBox   = MarketDataBox.ofScenarioValues(1.1d, 1.2d, 1.3d);
            ScenarioMarketData       marketData = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)).addBox(QUOTE_ID, quoteBox).build();
            MarketDataBox <FxRate>   rateBox    = function.build(RATE_ID, config(), marketData, REF_DATA);

            assertThat(rateBox.SingleValue).False;
            assertThat(rateBox.ScenarioCount).isEqualTo(3);
            assertThat(rateBox.getValue(0)).isEqualTo(FxRate.of(CURRENCY_PAIR, 1.1d));
            assertThat(rateBox.getValue(1)).isEqualTo(FxRate.of(CURRENCY_PAIR, 1.2d));
            assertThat(rateBox.getValue(2)).isEqualTo(FxRate.of(CURRENCY_PAIR, 1.3d));
        }
        public virtual 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)));
        }
        public virtual 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.ScenarioCount, 2);
            assertEquals(marketData.Ids, ImmutableSet.of(eurGbpId, eurUsdId));
            assertEquals(marketData.getValue(eurGbpId), MarketDataBox.ofSingleValue(eurGbpRate));
            assertEquals(marketData.getValue(eurUsdId), MarketDataBox.ofScenarioValues(eurUsdRate1, eurUsdRate2));
        }
Esempio n. 18
0
        public virtual MarketDataBox <FxOptionVolatilities> build(FxOptionVolatilitiesId id, MarketDataConfig marketDataConfig, ScenarioMarketData marketData, ReferenceData refData)
        {
            FxOptionVolatilitiesDefinition volatilitiesDefinition = marketDataConfig.get(typeof(FxOptionVolatilitiesDefinition), id.Name.Name);
            ValuationZoneTimeDefinition    zoneTimeDefinition     = marketDataConfig.get(typeof(ValuationZoneTimeDefinition));
            int nScenarios = marketData.ScenarioCount;
            MarketDataBox <LocalDate>     valuationDates     = marketData.ValuationDate;
            MarketDataBox <ZonedDateTime> valuationDateTimes = zoneTimeDefinition.toZonedDateTime(valuationDates);

            int nParameters = volatilitiesDefinition.ParameterCount;
//JAVA TO C# CONVERTER TODO TASK: Most Java stream collectors are not converted by Java to C# Converter:
            ImmutableList <MarketDataBox <double> > inputs = volatilitiesDefinition.volatilitiesInputs().Select(q => marketData.getValue(q)).collect(toImmutableList());
            ImmutableList <FxOptionVolatilities>    vols   = IntStream.range(0, nScenarios).mapToObj(scenarioIndex => volatilitiesDefinition.volatilities(valuationDateTimes.getValue(scenarioIndex), DoubleArray.of(nParameters, paramIndex => inputs.get(paramIndex).getValue(scenarioIndex)), refData)).collect(toImmutableList());

            return(nScenarios > 1 ? MarketDataBox.ofScenarioValues(vols) : MarketDataBox.ofSingleValue(vols.get(0)));
        }
Esempio n. 19
0
        public MarketDataBox <RatesCurveInputs> build(RatesCurveInputsId id, MarketDataConfig marketDataConfig, ScenarioMarketData marketData, ReferenceData refData)
        {
            CurveGroupName             groupName          = id.CurveGroupName;
            CurveName                  curveName          = id.CurveName;
            RatesCurveGroupDefinition  groupDefn          = marketDataConfig.get(typeof(RatesCurveGroupDefinition), groupName);
            Optional <CurveDefinition> optionalDefinition = groupDefn.findCurveDefinition(id.CurveName);

            if (!optionalDefinition.Present)
            {
                throw new System.ArgumentException(Messages.format("No curve named '{}' found in group '{}'", curveName, groupName));
            }
            CurveDefinition configuredDefn = optionalDefinition.get();
            // determine market data needs
            MarketDataBox <LocalDate> valuationDates = marketData.ValuationDate;
            bool multipleValuationDates = valuationDates.ScenarioValue;

            // curve definition can vary for each valuation date
            if (multipleValuationDates)
            {
                IList <CurveDefinition> curveDefns = IntStream.range(0, valuationDates.ScenarioCount).mapToObj(valuationDates.getValue).map((LocalDate valDate) => configuredDefn.filtered(valDate, refData)).collect(toImmutableList());

//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: java.util.Set<com.opengamma.strata.data.MarketDataId<?>> requirements = nodeRequirements(curveDefns);
                ISet <MarketDataId <object> > requirements = nodeRequirements(curveDefns);
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: java.util.Map<com.opengamma.strata.data.MarketDataId<?>, com.opengamma.strata.data.scenario.MarketDataBox<?>> marketDataValues = requirements.stream().collect(toImmutableMap(k -> k, k -> marketData.getValue(k)));
//JAVA TO C# CONVERTER TODO TASK: Most Java stream collectors are not converted by Java to C# Converter:
                IDictionary <MarketDataId <object>, MarketDataBox <object> > marketDataValues = requirements.collect(toImmutableMap(k => k, k => marketData.getValue(k)));
                return(buildMultipleCurveInputs(MarketDataBox.ofScenarioValues(curveDefns), marketDataValues, valuationDates, refData));
            }
            // only one valuation date
            LocalDate       valuationDate = valuationDates.getValue(0);
            CurveDefinition filteredDefn  = configuredDefn.filtered(valuationDate, refData);
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: java.util.Set<com.opengamma.strata.data.MarketDataId<?>> requirements = nodeRequirements(com.google.common.collect.ImmutableList.of(filteredDefn));
            ISet <MarketDataId <object> > requirements = nodeRequirements(ImmutableList.of(filteredDefn));
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: java.util.Map<com.opengamma.strata.data.MarketDataId<?>, com.opengamma.strata.data.scenario.MarketDataBox<?>> marketDataValues = requirements.stream().collect(toImmutableMap(k -> k, k -> marketData.getValue(k)));
//JAVA TO C# CONVERTER TODO TASK: Most Java stream collectors are not converted by Java to C# Converter:
            IDictionary <MarketDataId <object>, MarketDataBox <object> > marketDataValues = requirements.collect(toImmutableMap(k => k, k => marketData.getValue(k)));
            // Do any of the inputs contain values for multiple scenarios, or do they contain 1 value each?
            bool multipleInputValues = marketDataValues.Values.Any(MarketDataBox.isScenarioValue);

            return(multipleInputValues || multipleValuationDates?buildMultipleCurveInputs(MarketDataBox.ofSingleValue(filteredDefn), marketDataValues, valuationDates, refData) : buildSingleCurveInputs(filteredDefn, marketDataValues, valuationDate, refData));
        }
Esempio n. 20
0
        // calibrates when there are multiple groups
        private MarketDataBox <RatesCurveGroup> buildMultipleCurveGroups(RatesCurveGroupDefinition configuredGroup, RatesCurveCalibrator calibrator, MarketDataBox <LocalDate> valuationDateBox, IList <MarketDataBox <RatesCurveInputs> > inputBoxes, IDictionary <ObservableId, LocalDateDoubleTimeSeries> fixings, ReferenceData refData)
        {
            int scenarioCount = RatesCurveGroupMarketDataFunction.scenarioCount(valuationDateBox, inputBoxes);

            ImmutableList.Builder <RatesCurveGroup> builder = ImmutableList.builder();

            for (int i = 0; i < scenarioCount; i++)
            {
                LocalDate valuationDate = valuationDateBox.getValue(i);
                RatesCurveGroupDefinition filteredGroup   = configuredGroup.filtered(valuationDate, refData);
                IList <RatesCurveInputs>  curveInputsList = inputsForScenario(inputBoxes, i);
                MarketData inputs = inputsByKey(valuationDate, curveInputsList, fixings);
                builder.add(buildGroup(filteredGroup, calibrator, inputs, refData));
            }
            ImmutableList <RatesCurveGroup> curveGroups = builder.build();

            return(MarketDataBox.ofScenarioValues(curveGroups));
        }
Esempio n. 21
0
        // one valuation date, scenario market data
        private MarketDataBox <RatesCurveInputs> buildMultipleCurveInputs <T1>(MarketDataBox <CurveDefinition> filteredDefns, IDictionary <T1> marketData, MarketDataBox <LocalDate> valuationDates, ReferenceData refData) where T1 : com.opengamma.strata.data.MarketDataId <T1>
        {
            // If there are multiple values for any of the input data values or for the valuation
            // dates then we need to create multiple sets of inputs
            int scenarioCount = RatesCurveInputsMarketDataFunction.scenarioCount(valuationDates, marketData);

            ImmutableList.Builder <CurveMetadata> curveMetadataBuilder = ImmutableList.builder();
            for (int i = 0; i < scenarioCount; i++)
            {
                LocalDate       valDate = valuationDates.getValue(i);
                CurveDefinition defn    = filteredDefns.getValue(i);
                curveMetadataBuilder.add(defn.metadata(valDate, refData));
            }
            IList <CurveMetadata> curveMetadata = curveMetadataBuilder.build();

//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: java.util.List<java.util.Map<? extends com.opengamma.strata.data.MarketDataId<?>, ?>> scenarioValues = java.util.stream.IntStream.range(0, scenarioCount).mapToObj(i -> buildScenarioValues(marketData, i)).collect(toImmutableList());
            IList <IDictionary <MarketDataId <object>, ?> > scenarioValues = IntStream.range(0, scenarioCount).mapToObj(i => buildScenarioValues(marketData, i)).collect(toImmutableList());

            IList <RatesCurveInputs> curveInputs = zip(scenarioValues.stream(), curveMetadata.stream()).map(pair => RatesCurveInputs.of(pair.First, pair.Second)).collect(toImmutableList());

            return(MarketDataBox.ofScenarioValues(curveInputs));
        }
        private MarketDataBox <R> applyToScenarios <R>(System.Func <int, R> fn)
        {
            IList <R> results = IntStream.range(0, value.ScenarioCount).mapToObj(fn.apply).collect(toImmutableList());

            return(MarketDataBox.ofScenarioValues(results));
        }
        public MarketDataBox <R> mapWithIndex <R>(int scenarioCount, ObjIntFunction <T, R> fn)
        {
            IList <R> perturbedValues = IntStream.range(0, scenarioCount).mapToObj(idx => fn.apply(value, idx)).collect(toImmutableList());

            return(MarketDataBox.ofScenarioValues(perturbedValues));
        }
        public virtual 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();

            ScenarioMarketData combined = marketData1.combinedWith(marketData2);

            assertThat(combined).isEqualTo(expected);
            assertThat(combined.Ids).isEqualTo(ImmutableSet.of(TEST_ID1, TEST_ID2));
        }
        public virtual 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 virtual void test_combinedWith()
        {
            LocalDateDoubleTimeSeries timeSeries1 = LocalDateDoubleTimeSeries.builder().put(date(2011, 3, 8), 1).put(date(2011, 3, 9), 2).put(date(2011, 3, 10), 3).build();

            LocalDateDoubleTimeSeries timeSeries2 = LocalDateDoubleTimeSeries.builder().put(date(2011, 3, 8), 10).put(date(2011, 3, 9), 20).put(date(2011, 3, 10), 30).build();

            LocalDateDoubleTimeSeries timeSeries2a = LocalDateDoubleTimeSeries.builder().put(date(2011, 3, 8), 1000).put(date(2011, 3, 9), 2000).put(date(2011, 3, 10), 3000).build();

            LocalDateDoubleTimeSeries timeSeries3 = LocalDateDoubleTimeSeries.builder().put(date(2011, 3, 8), 100).put(date(2011, 3, 9), 200).put(date(2011, 3, 10), 300).build();

            ImmutableScenarioMarketData marketData1 = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)).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();

            ImmutableScenarioMarketData marketData2 = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 10)).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();

            // marketData1 values should be in the combined data when the same ID is present in both
            ImmutableScenarioMarketData expected = ImmutableScenarioMarketData.builder(LocalDate.of(2011, 3, 8)).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();

            ScenarioMarketData combined = marketData1.combinedWith(marketData2);

            assertThat(combined).isEqualTo(expected);
            assertThat(combined.Ids).isEqualTo(ImmutableSet.of(TEST_ID1, TEST_ID2, TEST_ID3));
        }
Esempio n. 27
0
        /// <summary>
        /// Tests that an exception is thrown when trying to apply a function multiple times with a scenario count
        /// that doesn't match the scenario count of the box.
        /// </summary>
        public virtual void mapWithIndexWrongNumberOfScenarios()
        {
            MarketDataBox <int> box = MarketDataBox.ofScenarioValues(27, 28, 29);

            assertThrows(() => box.mapWithIndex(4, (v, idx) => v + idx), typeof(System.ArgumentException));
        }
Esempio n. 28
0
        public virtual void getMarketDataType()
        {
            MarketDataBox <int> box = MarketDataBox.ofScenarioValues(27, 28, 29);

            assertThat(box.MarketDataType).isEqualTo(typeof(Integer));
        }
Esempio n. 29
0
        public virtual void getScenarioCount()
        {
            MarketDataBox <int> box = MarketDataBox.ofScenarioValues(27, 28, 29);

            assertThat(box.ScenarioCount).isEqualTo(3);
        }
Esempio n. 30
0
        public virtual void getSingleValue()
        {
            MarketDataBox <int> box = MarketDataBox.ofScenarioValues(27, 28, 29);

            assertThrows(box.getSingleValue, typeof(System.InvalidOperationException), "This box does not contain a single value");
        }