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()); }
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)); }
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); }
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)); }
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; }