@Override public CurrencyParameterSensitivity createParameterSensitivity(Currency currency, DoubleArray sensitivities) { return CurrencyParameterSensitivity.of(getName(), parameterMetadata, currency, sensitivities); }
@Override public UnitParameterSensitivity createParameterSensitivity(DoubleArray sensitivities) { return UnitParameterSensitivity.of(getName(), parameterMetadata, sensitivities); }
public void test_withValuesXy() { InterpolatedNodalCurve base = InterpolatedNodalCurve.of(METADATA, XVALUES, YVALUES, INTERPOLATOR); InterpolatedNodalCurve test = base.withValues(XVALUES2, YVALUES_BUMPED); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE); assertThat(test.getMetadata()).isEqualTo(METADATA); assertThat(test.getXValues()).isEqualTo(XVALUES2); assertThat(test.getYValues()).isEqualTo(YVALUES_BUMPED); }
public void test_withValues() { InterpolatedNodalCurve base = InterpolatedNodalCurve.of(METADATA, XVALUES, YVALUES, INTERPOLATOR); InterpolatedNodalCurve test = base.withYValues(YVALUES_BUMPED); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE); assertThat(test.getMetadata()).isEqualTo(METADATA); assertThat(test.getXValues()).isEqualTo(XVALUES); assertThat(test.getYValues()).isEqualTo(YVALUES_BUMPED); }
public void test_withMetadata() { InterpolatedNodalCurve base = InterpolatedNodalCurve.of(METADATA, XVALUES, YVALUES, INTERPOLATOR); InterpolatedNodalCurve test = base.withMetadata(METADATA_ENTRIES); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE); assertThat(test.getMetadata()).isEqualTo(METADATA_ENTRIES); assertThat(test.getXValues()).isEqualTo(XVALUES); assertThat(test.getYValues()).isEqualTo(YVALUES); }
public void test_withNode_replace_withMetadata() { InterpolatedNodalCurve base = InterpolatedNodalCurve.of(METADATA_ENTRIES, XVALUES, YVALUES, INTERPOLATOR); LabelDateParameterMetadata item = LabelDateParameterMetadata.of(date(2015, 6, 30), TNR_1Y); InterpolatedNodalCurve test = base.withNode(2d, 4d, item); List<ParameterMetadata> list = new ArrayList<>(METADATA_ENTRIES.getParameterMetadata().get()); list.set(1, item); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE); assertThat(test.getMetadata()).isEqualTo(METADATA.withParameterMetadata(list)); assertThat(test.getXValues()).isEqualTo(DoubleArray.of(1d, 2d, 3d)); assertThat(test.getYValues()).isEqualTo(DoubleArray.of(5d, 4d, 8d)); }
public void test_withNode_inMiddle_withMetadata() { InterpolatedNodalCurve base = InterpolatedNodalCurve.of(METADATA_ENTRIES, XVALUES, YVALUES, INTERPOLATOR); LabelDateParameterMetadata item = LabelDateParameterMetadata.of(date(2015, 6, 30), TNR_1Y); InterpolatedNodalCurve test = base.withNode(2.5d, 4d, item); List<ParameterMetadata> list = new ArrayList<>(METADATA_ENTRIES.getParameterMetadata().get()); list.add(2, item); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE + 1); assertThat(test.getMetadata()).isEqualTo(METADATA_ENTRIES.withParameterMetadata(list)); assertThat(test.getXValues()).isEqualTo(DoubleArray.of(1d, 2d, 2.5d, 3d)); assertThat(test.getYValues()).isEqualTo(DoubleArray.of(5d, 7d, 4d, 8d)); }
public void test_withNode_atEnd_withoutMetadata() { InterpolatedNodalCurve base = InterpolatedNodalCurve.of(METADATA, XVALUES, YVALUES, INTERPOLATOR); LabelDateParameterMetadata item = LabelDateParameterMetadata.of(date(2015, 6, 30), TNR_1Y); InterpolatedNodalCurve test = base.withNode(0.5d, 4d, item); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE + 1); assertThat(test.getMetadata()).isEqualTo(METADATA); assertThat(test.getXValues()).isEqualTo(DoubleArray.of(0.5d, 1d, 2d, 3d)); assertThat(test.getYValues()).isEqualTo(DoubleArray.of(4d, 5d, 7d, 8d)); }
public void test_withNode_atStart_withMetadata() { InterpolatedNodalCurve base = InterpolatedNodalCurve.of(METADATA_ENTRIES, XVALUES, YVALUES, INTERPOLATOR); LabelDateParameterMetadata item = LabelDateParameterMetadata.of(date(2015, 6, 30), TNR_1Y); InterpolatedNodalCurve test = base.withNode(0.5d, 4d, item); List<ParameterMetadata> list = new ArrayList<>(); list.add(item); list.addAll(ParameterMetadata.listOfEmpty(SIZE)); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE + 1); assertThat(test.getMetadata()).isEqualTo(METADATA_ENTRIES.withParameterMetadata(list)); assertThat(test.getXValues()).isEqualTo(DoubleArray.of(0.5d, 1d, 2d, 3d)); assertThat(test.getYValues()).isEqualTo(DoubleArray.of(4d, 5d, 7d, 8d)); }
public void test_of_extrapolators() { InterpolatedNodalCurve test = InterpolatedNodalCurve.of( METADATA_ENTRIES, XVALUES, YVALUES, INTERPOLATOR, LINEAR_EXTRAPOLATOR, LINEAR_EXTRAPOLATOR); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getExtrapolatorLeft().getName()).isEqualTo(LINEAR_EXTRAPOLATOR.getName()); assertThat(test.getInterpolator().getName()).isEqualTo(INTERPOLATOR.getName()); assertThat(test.getExtrapolatorRight().getName()).isEqualTo(LINEAR_EXTRAPOLATOR.getName()); }
public void test_of_noCurveMetadata() { InterpolatedNodalCurve test = InterpolatedNodalCurve.of(METADATA_NOPARAM, XVALUES, YVALUES, INTERPOLATOR); assertThat(test.getName()).isEqualTo(CURVE_NAME); assertThat(test.getParameterCount()).isEqualTo(SIZE); assertThat(test.getParameter(0)).isEqualTo(YVALUES.get(0)); assertThat(test.getParameter(1)).isEqualTo(YVALUES.get(1)); assertThat(test.getParameterMetadata(0)).isEqualTo(SimpleCurveParameterMetadata.of(ValueType.YEAR_FRACTION, XVALUES.get(0))); assertThat(test.getParameterMetadata(1)).isEqualTo(SimpleCurveParameterMetadata.of(ValueType.YEAR_FRACTION, XVALUES.get(1))); }
public void test_of() { SimpleDiscountFactors test = SimpleDiscountFactors.of(GBP, DATE_VAL, CURVE); assertEquals(test.getCurrency(), GBP); assertEquals(test.getValuationDate(), DATE_VAL); assertEquals(test.getCurve(), CURVE); assertEquals(test.getParameterCount(), CURVE.getParameterCount()); assertEquals(test.getParameter(0), CURVE.getParameter(0)); assertEquals(test.getParameterMetadata(0), CURVE.getParameterMetadata(0)); assertEquals(test.withParameter(0, 1d).getCurve(), CURVE.withParameter(0, 1d)); assertEquals(test.withPerturbation((i, v, m) -> v + 1d).getCurve(), CURVE.withPerturbation((i, v, m) -> v + 1d)); assertEquals(test.findData(CURVE.getName()), Optional.of(CURVE)); assertEquals(test.findData(CurveName.of("Rubbish")), Optional.empty()); }
public void test_of() { ZeroRatePeriodicDiscountFactors test = ZeroRatePeriodicDiscountFactors.of(GBP, DATE_VAL, CURVE); assertEquals(test.getCurrency(), GBP); assertEquals(test.getValuationDate(), DATE_VAL); assertEquals(test.getCurve(), CURVE); assertEquals(test.getParameterCount(), CURVE.getParameterCount()); assertEquals(test.getParameter(0), CURVE.getParameter(0)); assertEquals(test.getParameterMetadata(0), CURVE.getParameterMetadata(0)); assertEquals(test.withParameter(0, 1d).getCurve(), CURVE.withParameter(0, 1d)); assertEquals(test.withPerturbation((i, v, m) -> v + 1d).getCurve(), CURVE.withPerturbation((i, v, m) -> v + 1d)); assertEquals(test.findData(CURVE.getName()), Optional.of(CURVE)); assertEquals(test.findData(CurveName.of("Rubbish")), Optional.empty()); }
public void test_of() { ZeroRateDiscountFactors test = ZeroRateDiscountFactors.of(GBP, DATE_VAL, CURVE); assertEquals(test.getCurrency(), GBP); assertEquals(test.getValuationDate(), DATE_VAL); assertEquals(test.getCurve(), CURVE); assertEquals(test.getParameterCount(), CURVE.getParameterCount()); assertEquals(test.getParameter(0), CURVE.getParameter(0)); assertEquals(test.getParameterMetadata(0), CURVE.getParameterMetadata(0)); assertEquals(test.withParameter(0, 1d).getCurve(), CURVE.withParameter(0, 1d)); assertEquals(test.withPerturbation((i, v, m) -> v + 1d).getCurve(), CURVE.withPerturbation((i, v, m) -> v + 1d)); assertEquals(test.findData(CURVE.getName()), Optional.of(CURVE)); assertEquals(test.findData(CurveName.of("Rubbish")), Optional.empty()); }
public void test_builder() { BlackFxOptionFlatVolatilities test = BlackFxOptionFlatVolatilities.builder() .currencyPair(CURRENCY_PAIR) .curve(CURVE) .valuationDateTime(VAL_DATE_TIME) .build(); assertEquals(test.getValuationDateTime(), VAL_DATE_TIME); assertEquals(test.getCurrencyPair(), CURRENCY_PAIR); assertEquals(test.getName(), FxOptionVolatilitiesName.of(CURVE.getName().getName())); assertEquals(test.getCurve(), CURVE); assertEquals(VOLS, test); }
public void test_of_withoutFixings() { DiscountIborIndexRates test = DiscountIborIndexRates.of(GBP_LIBOR_3M, DFCURVE); assertEquals(test.getIndex(), GBP_LIBOR_3M); assertEquals(test.getValuationDate(), DATE_VAL); assertEquals(test.getFixings(), SERIES_EMPTY); assertEquals(test.getDiscountFactors(), DFCURVE); assertEquals(test.getDiscountFactors(), DFCURVE); assertEquals(test.getParameterCount(), DFCURVE.getParameterCount()); assertEquals(test.getParameter(0), DFCURVE.getParameter(0)); assertEquals(test.getParameterMetadata(0), DFCURVE.getParameterMetadata(0)); assertEquals(test.withParameter(0, 1d).getDiscountFactors(), DFCURVE.withParameter(0, 1d)); assertEquals(test.withPerturbation((i, v, m) -> v + 1d).getDiscountFactors(), DFCURVE.withPerturbation((i, v, m) -> v + 1d)); assertEquals(test.findData(CURVE.getName()), Optional.of(CURVE)); assertEquals(test.findData(CurveName.of("Rubbish")), Optional.empty()); // check IborIndexRates IborIndexRates test2 = IborIndexRates.of(GBP_LIBOR_3M, DATE_VAL, CURVE); assertEquals(test, test2); }
public void test_of_withoutFixings() { SimpleIborIndexRates test = SimpleIborIndexRates.of(GBP_LIBOR_3M, DATE_VAL, CURVE); assertEquals(test.getIndex(), GBP_LIBOR_3M); assertEquals(test.getValuationDate(), DATE_VAL); assertEquals(test.getFixings(), SERIES_EMPTY); assertEquals(test.getCurve(), CURVE); assertEquals(test.getParameterCount(), CURVE.getParameterCount()); assertEquals(test.getParameter(0), CURVE.getParameter(0)); assertEquals(test.getParameterMetadata(0), CURVE.getParameterMetadata(0)); assertEquals(test.withParameter(0, 1d).getCurve(), CURVE.withParameter(0, 1d)); assertEquals(test.withPerturbation((i, v, m) -> v + 1d).getCurve(), CURVE.withPerturbation((i, v, m) -> v + 1d)); assertEquals(test.findData(CURVE.getName()), Optional.of(CURVE)); assertEquals(test.findData(CurveName.of("Rubbish")), Optional.empty()); // check IborIndexRates IborIndexRates test2 = IborIndexRates.of(GBP_LIBOR_3M, DATE_VAL, CURVE); assertEquals(test, test2); }
public void test_of_noSeasonality() { SimplePriceIndexValues test = SimplePriceIndexValues.of(US_CPI_U, VAL_DATE, CURVE_NOFIX, USCPI_TS); assertEquals(test.getIndex(), US_CPI_U); assertEquals(test.getValuationDate(), VAL_DATE); assertEquals(test.getCurve(), CURVE_NOFIX); assertEquals(test.getParameterCount(), CURVE_NOFIX.getParameterCount()); assertEquals(test.getParameter(0), CURVE_NOFIX.getParameter(0)); assertEquals(test.getParameterMetadata(0), CURVE_NOFIX.getParameterMetadata(0)); assertEquals(test.withParameter(0, 1d).getCurve(), CURVE_NOFIX.withParameter(0, 1d)); assertEquals(test.withPerturbation((i, v, m) -> v + 1d).getCurve(), CURVE_NOFIX.withPerturbation((i, v, m) -> v + 1d)); assertEquals(test.findData(CURVE_NOFIX.getName()), Optional.of(CURVE_NOFIX)); assertEquals(test.findData(CurveName.of("Rubbish")), Optional.empty()); // check PriceIndexValues PriceIndexValues test2 = PriceIndexValues.of(US_CPI_U, VAL_DATE, CURVE_NOFIX, USCPI_TS); assertEquals(test, test2); }
public void test_of() { IsdaCreditDiscountFactors test = IsdaCreditDiscountFactors.of(USD, VALUATION, CURVE); assertEquals(test.getCurrency(), USD); assertEquals(test.getCurve(), CURVE); assertEquals(test.getDayCount(), ACT_365F); assertEquals(test.getParameterCount(), RATE.size()); assertEquals(test.getParameter(3), RATE.get(3)); assertEquals(test.getParameter(1), RATE.get(1)); assertEquals(test.getParameterKeys(), TIME); assertEquals(test.getParameterMetadata(4), SimpleCurveParameterMetadata.of(METADATA.getXValueType(), TIME.get(4))); assertEquals(test.getParameterMetadata(6), SimpleCurveParameterMetadata.of(METADATA.getXValueType(), TIME.get(6))); assertEquals(test.getValuationDate(), VALUATION); assertEquals(test.findData(CURVE.getName()), Optional.of(CURVE)); assertEquals(test.findData(CurveName.of("Rubbish")), Optional.empty()); assertEquals(test.toDiscountFactors(), ZeroRateDiscountFactors.of(USD, VALUATION, CURVE)); assertEquals(test.isIsdaCompliant(), true); }
private CurrencyParameterSensitivities sensiModFn(ImmutableRatesProvider provider) { CurrencyParameterSensitivities sensi = CurrencyParameterSensitivities.empty(); // Index ImmutableMap<Index, Curve> mapIndex = provider.getIndexCurves(); for (Entry<Index, Curve> entry : mapIndex.entrySet()) { if (entry.getKey() instanceof IborIndex) { InterpolatedNodalCurve curveInt = checkInterpolated(entry.getValue()); double sumSqrt = sumMod(provider); sensi = sensi.combinedWith(CurrencyParameterSensitivity.of(curveInt.getName(), USD, DoubleArray.of(curveInt.getParameterCount(), i -> 2d * sumSqrt * curveInt.getXValues().get(i)))); } } return sensi; }