public virtual void test_of_collectionCollection_valueCollectionWithNull()
        {
            ICollection <LocalDate> dates  = SparseLocalDateDoubleTimeSeriesTest.dates(DATE_2011_01_01, DATE_2012_01_01);
            ICollection <double>    values = Arrays.asList(2d, null);

            assertThrowsIllegalArg(() => LocalDateDoubleTimeSeries.builder().putAll(dates, values).build());
        }
        public virtual void test_of_collectionCollection_collectionsOfDifferentSize()
        {
            ICollection <LocalDate> dates  = SparseLocalDateDoubleTimeSeriesTest.dates(DATE_2011_01_01);
            ICollection <double>    values = SparseLocalDateDoubleTimeSeriesTest.values(2d, 3d);

            assertThrowsIllegalArg(() => LocalDateDoubleTimeSeries.builder().putAll(dates, values).build());
        }
示例#3
0
        private void assertPriceIndexSeries(LocalDateDoubleTimeSeries actualSeries)
        {
            assertEquals(actualSeries.size(), 3);
            LocalDateDoubleTimeSeries expectedSeries = LocalDateDoubleTimeSeries.builder().put(LocalDate.of(2017, 1, 31), 200).put(LocalDate.of(2017, 2, 28), 300).put(LocalDate.of(2017, 3, 31), 390).build();

            assertEquals(actualSeries, expectedSeries);
        }
            internal LocalDate nextFixing;                   // Running variable through the different methods: next fixing date to be analyzed

            internal ObservationDetails(OvernightCompoundedRateComputation computation, OvernightIndexRates rates)
            {
                this.computation           = computation;
                this.rates                 = rates;
                this.indexFixingDateSeries = rates.Fixings;
                this.dayCount              = computation.Index.DayCount;
                // Details of the cutoff period
                this.firstFixing         = computation.StartDate;
                this.lastFixingP1        = computation.EndDate;
                this.lastFixing          = computation.FixingCalendar.previous(lastFixingP1);
                this.cutoffOffset        = Math.Max(computation.RateCutOffDays, 1);
                this.accrualFactorCutoff = new double[cutoffOffset - 1];
                LocalDate currentFixing = lastFixing;

                for (int i = 0; i < cutoffOffset - 1; i++)
                {
                    currentFixing = computation.FixingCalendar.previous(currentFixing);
                    LocalDate effectiveDate = computation.calculateEffectiveFromFixing(currentFixing);
                    LocalDate maturityDate  = computation.calculateMaturityFromEffective(effectiveDate);
                    accrualFactorCutoff[i] = dayCount.yearFraction(effectiveDate, maturityDate);
                }
                this.lastFixingNonCutoff = currentFixing;
                LocalDate startUnderlyingPeriod = computation.calculateEffectiveFromFixing(firstFixing);
                LocalDate endUnderlyingPeriod   = computation.calculateMaturityFromFixing(lastFixing);

                this.accrualFactorTotal = dayCount.yearFraction(startUnderlyingPeriod, endUnderlyingPeriod);
            }
        //-------------------------------------------------------------------------
        public FxIndexRates fxIndexRates(FxIndex index)
        {
            LocalDateDoubleTimeSeries fixings        = timeSeries(index);
            FxForwardRates            fxForwardRates = this.fxForwardRates(index.CurrencyPair);

            return(ForwardFxIndexRates.of(index, fxForwardRates, fixings));
        }
示例#6
0
        private void assertLibor6mSeries(LocalDateDoubleTimeSeries actualSeries)
        {
            assertEquals(actualSeries.size(), 3);
            LocalDateDoubleTimeSeries expectedSeries = LocalDateDoubleTimeSeries.builder().put(LocalDate.of(1971, 1, 4), 0.0681).put(LocalDate.of(1971, 1, 5), 0.0675).put(LocalDate.of(1971, 1, 6), 0.0669).build();

            assertEquals(actualSeries, expectedSeries);
        }
        /// <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);
        }
示例#8
0
        public virtual void densityChoosesImplementation()
        {
            LocalDateDoubleTimeSeries series1 = LocalDateDoubleTimeSeries.builder().put(date(2015, 1, 5), 14).put(date(2015, 1, 12), 12).put(date(2015, 1, 19), 13).build();

            assertEquals(series1.GetType(), typeof(SparseLocalDateDoubleTimeSeries));

            // Now add in a week's worth of data
            LocalDateDoubleTimeSeries series2 = series1.toBuilder().put(date(2015, 1, 6), 14).put(date(2015, 1, 7), 13).put(date(2015, 1, 8), 12).put(date(2015, 1, 9), 13).build();

            // Not yet enough as we have 7/11 populated (i.e. below 70%)
            assertEquals(series2.GetType(), typeof(SparseLocalDateDoubleTimeSeries));

            // Add in 1 more days giving 8/11 populated
            LocalDateDoubleTimeSeries series3 = series2.toBuilder().put(date(2015, 1, 13), 11).build();

            assertEquals(series3.GetType(), typeof(DenseLocalDateDoubleTimeSeries));

            // Now add in a weekend date, which means we have 9/15
            LocalDateDoubleTimeSeries series4 = series3.toBuilder().put(date(2015, 1, 10), 12).build();

            assertEquals(series4.GetType(), typeof(SparseLocalDateDoubleTimeSeries));

            // Add in 2 new dates giving 11/15
            LocalDateDoubleTimeSeries series5 = series4.toBuilder().put(date(2015, 1, 14), 11).put(date(2015, 1, 15), 10).build();

            assertEquals(series5.GetType(), typeof(DenseLocalDateDoubleTimeSeries));
        }
示例#9
0
        public virtual void test_duplicatesGetOverwritten()
        {
            LocalDateDoubleTimeSeries test = LocalDateDoubleTimeSeries.builder().put(date(2014, 1, 1), 12).put(date(2014, 1, 1), 14).build();

            assertEquals(test.size(), 1);
            assertEquals(test.get(date(2014, 1, 1)), double?.of(14d));
        }
        static CalibrationZeroRateAndDiscountFactorUsd2OisIrsTest()
        {
            DSC_NAMES[DSCON_CURVE_NAME] = USD;
            ISet <Index> usdFedFundSet = new HashSet <Index>();

            usdFedFundSet.Add(USD_FED_FUND);
            IDX_NAMES[DSCON_CURVE_NAME] = usdFedFundSet;
            ISet <Index> usdLibor3Set = new HashSet <Index>();

            usdLibor3Set.Add(USD_LIBOR_3M);
            IDX_NAMES[FWD3_CURVE_NAME] = usdLibor3Set;
            double fixingValue = 0.002345;
            LocalDateDoubleTimeSeries tsBdUsdLibor3M = LocalDateDoubleTimeSeries.builder().put(VAL_DATE_BD, fixingValue).build();
            LocalDate fixingDateHo = LocalDate.of(2015, 12, 24);
            LocalDateDoubleTimeSeries tsHoUsdLibor3M = LocalDateDoubleTimeSeries.builder().put(fixingDateHo, fixingValue).build();

            TS_BD_LIBOR3M = ImmutableMarketData.builder(VAL_DATE_BD).addTimeSeries(IndexQuoteId.of(USD_LIBOR_3M), tsBdUsdLibor3M).build();
            TS_HO_LIBOR3M = ImmutableMarketData.builder(VAL_DATE_HO).addTimeSeries(IndexQuoteId.of(USD_LIBOR_3M), tsHoUsdLibor3M).build();
            for (int i = 0; i < DSC_NB_OIS_NODES; i++)
            {
                DSC_NODES[i] = FixedOvernightSwapCurveNode.of(FixedOvernightSwapTemplate.of(Period.ZERO, Tenor.of(DSC_OIS_TENORS[i]), USD_FIXED_1Y_FED_FUND_OIS), QuoteId.of(StandardId.of(SCHEME, DSC_ID_VALUE[i])));
            }
            FWD3_NODES[0] = IborFixingDepositCurveNode.of(IborFixingDepositTemplate.of(USD_LIBOR_3M), QuoteId.of(StandardId.of(SCHEME, FWD3_ID_VALUE[0])));
            for (int i = 0; i < FWD3_NB_FRA_NODES; i++)
            {
                FWD3_NODES[i + 1] = FraCurveNode.of(FraTemplate.of(FWD3_FRA_TENORS[i], USD_LIBOR_3M), QuoteId.of(StandardId.of(SCHEME, FWD3_ID_VALUE[i + 1])));
            }
            for (int i = 0; i < FWD3_NB_IRS_NODES; i++)
            {
                FWD3_NODES[i + 1 + FWD3_NB_FRA_NODES] = FixedIborSwapCurveNode.of(FixedIborSwapTemplate.of(Period.ZERO, Tenor.of(FWD3_IRS_TENORS[i]), USD_FIXED_6M_LIBOR_3M), QuoteId.of(StandardId.of(SCHEME, FWD3_ID_VALUE[i + 1 + FWD3_NB_FRA_NODES])));
            }
            ImmutableMarketDataBuilder builder = ImmutableMarketData.builder(VAL_DATE_BD);

            for (int i = 0; i < FWD3_NB_NODES; i++)
            {
                builder.addValue(QuoteId.of(StandardId.of(SCHEME, FWD3_ID_VALUE[i])), FWD3_MARKET_QUOTES[i]);
            }
            for (int i = 0; i < DSC_NB_NODES; i++)
            {
                builder.addValue(QuoteId.of(StandardId.of(SCHEME, DSC_ID_VALUE[i])), DSC_MARKET_QUOTES[i]);
            }
            ALL_QUOTES_BD = builder.build();
            IList <CurveNode[]> groupDsc = new List <CurveNode[]>();

            groupDsc.Add(DSC_NODES);
            CURVES_NODES.Add(groupDsc);
            IList <CurveNode[]> groupFwd3 = new List <CurveNode[]>();

            groupFwd3.Add(FWD3_NODES);
            CURVES_NODES.Add(groupFwd3);
            IList <CurveMetadata> groupDsc = new List <CurveMetadata>();

            groupDsc.Add(DefaultCurveMetadata.builder().curveName(DSCON_CURVE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.ZERO_RATE).dayCount(CURVE_DC).build());
            CURVES_METADATA.Add(groupDsc);
            IList <CurveMetadata> groupFwd3 = new List <CurveMetadata>();

            groupFwd3.Add(DefaultCurveMetadata.builder().curveName(FWD3_CURVE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.ZERO_RATE).dayCount(CURVE_DC).build());
            CURVES_METADATA.Add(groupFwd3);
        }
        public virtual void test_of_map_valueNull()
        {
            IDictionary <LocalDate, double> map = new Dictionary <LocalDate, double>();

            map[DATE_2011_01_01] = 2d;
            map[DATE_2012_01_01] = null;
            assertThrowsIllegalArg(() => LocalDateDoubleTimeSeries.builder().putAll(map).build());
        }
        //-------------------------------------------------------------------------
        public virtual void test_stream()
        {
            LocalDateDoubleTimeSeries @base = LocalDateDoubleTimeSeries.builder().putAll(DATES_2010_12, VALUES_10_12).build();

            object[] test = @base.ToArray();
            assertEquals(test[0], LocalDateDoublePoint.of(DATE_2010_01_01, 10));
            assertEquals(test[1], LocalDateDoublePoint.of(DATE_2011_01_01, 11));
            assertEquals(test[2], LocalDateDoublePoint.of(DATE_2012_01_01, 12));
        }
        public virtual void test_earliestLatest_whenEmpty()
        {
            LocalDateDoubleTimeSeries test = LocalDateDoubleTimeSeries.empty();

            TestHelper.assertThrows(() => test.EarliestDate, typeof(NoSuchElementException));
            TestHelper.assertThrows(() => test.EarliestValue, typeof(NoSuchElementException));
            TestHelper.assertThrows(() => test.LatestDate, typeof(NoSuchElementException));
            TestHelper.assertThrows(() => test.LatestValue, typeof(NoSuchElementException));
        }
        //-------------------------------------------------------------------------
        public virtual void test_earliestLatest()
        {
            LocalDateDoubleTimeSeries test = LocalDateDoubleTimeSeries.builder().putAll(DATES_2010_12, VALUES_10_12).build();

            assertEquals(test.EarliestDate, DATE_2010_01_01);
            assertEquals(test.EarliestValue, 10d, TOLERANCE);
            assertEquals(test.LatestDate, DATE_2012_01_01);
            assertEquals(test.LatestValue, 12d, TOLERANCE);
        }
	  //-------------------------------------------------------------------------
	  // creates a simple provider
	  private SimpleRatesProvider createProvider(ResolvedFra fraExp)
	  {
		DiscountFactors mockDf = SimpleDiscountFactors.of(GBP, VAL_DATE, ConstantCurve.of(Curves.discountFactors("DSC", DAY_COUNT), DISCOUNT_FACTOR));
		LocalDateDoubleTimeSeries timeSeries = LocalDateDoubleTimeSeries.of(VAL_DATE, FORWARD_RATE);
		IborIndexRates mockIbor = SimpleIborIndexRates.of(GBP_LIBOR_3M, VAL_DATE, ConstantCurve.of(Curves.forwardRates("L3M", DAY_COUNT), FORWARD_RATE), timeSeries);
		SimpleRatesProvider prov = new SimpleRatesProvider(VAL_DATE, mockDf);
		prov.IborRates = mockIbor;
		return prov;
	  }