/// <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);
        }
コード例 #2
0
        public virtual void test_empty()
        {
            ScenarioMarketData test = ScenarioMarketData.empty();

            assertThat(test.ValuationDate).isEqualTo(MarketDataBox.empty());
            assertThat(test.containsValue(ID1)).False;
            assertThat(test.containsValue(ID2)).False;
            assertThrows(() => test.getValue(ID1), typeof(MarketDataNotFoundException));
            assertThrows(() => test.getValue(ID2), typeof(MarketDataNotFoundException));
            assertThat(test.findValue(ID1)).Empty;
            assertThat(test.findValue(ID2)).Empty;
            assertThat(test.Ids).isEqualTo(ImmutableSet.of());
            assertThat(test.getTimeSeries(ID1)).isEqualTo(LocalDateDoubleTimeSeries.empty());
            assertThat(test.getTimeSeries(ID2)).isEqualTo(LocalDateDoubleTimeSeries.empty());
        }
コード例 #3
0
        public virtual void test_of_repeated()
        {
            ScenarioMarketData test = ScenarioMarketData.of(1, MarketData.of(VAL_DATE, ImmutableMap.of(ID1, VAL1)));

            assertThat(test.ValuationDate).isEqualTo(MarketDataBox.ofSingleValue(VAL_DATE));
            assertThat(test.getValue(ID1)).isEqualTo(MarketDataBox.ofSingleValue(VAL1));
        }
コード例 #4
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Override @SuppressWarnings("unchecked") public <R> MarketDataBox<R> getValue(com.opengamma.strata.data.MarketDataId<R> id)
        public override MarketDataBox <R> getValue <R>(MarketDataId <R> id)
        {
            if (this.id.Equals(id))
            {
                return((MarketDataBox <R>)value);
            }
            return(underlying.getValue(id));
        }
コード例 #5
0
        public virtual void test_of_noScenarios()
        {
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: java.util.Map<com.opengamma.strata.data.MarketDataId<?>, MarketDataBox<?>> dataMap = com.google.common.collect.ImmutableMap.of(ID1, MarketDataBox.empty());
            IDictionary <MarketDataId <object>, MarketDataBox <object> > dataMap = ImmutableMap.of(ID1, MarketDataBox.empty());
            ScenarioMarketData test = ScenarioMarketData.of(0, VAL_DATE, dataMap, ImmutableMap.of());

            assertThat(test.ValuationDate).isEqualTo(MarketDataBox.ofSingleValue(VAL_DATE));
            assertThat(test.containsValue(ID1)).True;
            assertThat(test.containsValue(ID2)).False;
            assertThat(test.getValue(ID1)).isEqualTo(MarketDataBox.empty());
            assertThrows(() => test.getValue(ID2), typeof(MarketDataNotFoundException));
            assertThat(test.findValue(ID1)).hasValue(MarketDataBox.empty());
            assertThat(test.findValue(ID2)).Empty;
            assertThat(test.Ids).isEqualTo(ImmutableSet.of(ID1));
            assertThat(test.getTimeSeries(ID1)).isEqualTo(LocalDateDoubleTimeSeries.empty());
            assertThat(test.getTimeSeries(ID2)).isEqualTo(LocalDateDoubleTimeSeries.empty());
        }
コード例 #6
0
 /// <summary>
 /// Returns the inputs required for the curve if available.
 /// <para>
 /// If no market data is required to build the curve an empty set of inputs is returned.
 /// If the curve requires inputs which are available in {@code marketData} they are returned.
 /// If the curve requires inputs which are not available in {@code marketData} an exception is thrown
 ///
 /// </para>
 /// </summary>
 /// <param name="curveDefn">  the curve definition </param>
 /// <param name="marketData">  the market data </param>
 /// <param name="groupName">  the name of the curve group being built </param>
 /// <param name="obsSource">  the source of the observable market data </param>
 /// <returns> the input data required for the curve if available </returns>
 private MarketDataBox <RatesCurveInputs> curveInputs(CurveDefinition curveDefn, ScenarioMarketData marketData, CurveGroupName groupName, ObservableSource obsSource)
 {
     // only try to get inputs from the market data if the curve needs market data
     if (requiresMarketData(curveDefn))
     {
         RatesCurveInputsId curveInputsId = RatesCurveInputsId.of(groupName, curveDefn.Name, obsSource);
         return(marketData.getValue(curveInputsId));
     }
     else
     {
         return(MarketDataBox.ofSingleValue(RatesCurveInputs.builder().build()));
     }
 }
コード例 #7
0
        public virtual MarketDataBox <Curve> build(CurveId id, MarketDataConfig config, ScenarioMarketData marketData, ReferenceData refData)
        {
            // find curve
            CurveGroupDefinition groupDefn = config.get(typeof(CurveGroupDefinition), id.CurveGroupName);
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: com.opengamma.strata.data.MarketDataId<? extends com.opengamma.strata.market.curve.CurveGroup> groupId = groupDefn.createGroupId(id.getObservableSource());
            MarketDataId <CurveGroup> groupId = groupDefn.createGroupId(id.ObservableSource);
//JAVA TO C# CONVERTER WARNING: Java wildcard generics have no direct equivalent in .NET:
//ORIGINAL LINE: com.opengamma.strata.data.scenario.MarketDataBox<? extends com.opengamma.strata.market.curve.CurveGroup> curveGroupBox = marketData.getValue(groupId);
            MarketDataBox <CurveGroup> curveGroupBox = marketData.getValue(groupId);

            return(curveGroupBox.map(curveGroup => findCurve(id, curveGroup)));
        }
コード例 #8
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)));
        }
コード例 #9
0
        public override MarketDataBox <T> getValue <T>(MarketDataId <T> id)
        {
            Optional <MarketDataBox <T> > value1 = underlying1.findValue(id);

            return(value1.Present ? value1.get() : underlying2.getValue(id));
        }
コード例 #10
0
        private MarketDataBox <FxRate> buildFxRate(FxRateId id, QuoteId key, ScenarioMarketData marketData)
        {
            MarketDataBox <double> quote = marketData.getValue(key);

            return(quote.map(rate => FxRate.of(id.Pair, rate)));
        }
コード例 #11
0
 public override T getValue <T>(MarketDataId <T> id)
 {
     return(marketData.getValue(id).getValue(scenarioIndex));
 }
コード例 #12
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));
        }