public void test_withPerturbation() { ParameterPerturbation perturbation = (i, v, m) -> v + i + 0.5d; ParameterizedDataCombiner test = ParameterizedDataCombiner.of(DATA1, DATA2, DATA3); List<ParameterizedData> perturbed = test.withPerturbation(ParameterizedData.class, perturbation); assertEquals(perturbed.get(0), new TestingParameterizedData2(1.5d, 3.5d)); assertEquals(perturbed.get(1), new TestingParameterizedData(5.5d)); assertEquals(perturbed.get(2), new TestingParameterizedData2(7.5d, 9.5d)); }
public void test_withParameter() { ParameterizedDataCombiner test = ParameterizedDataCombiner.of(DATA1, DATA2, DATA3); assertEquals(test.withParameter( ParameterizedData.class, 0, -1d), ImmutableList.of(DATA1.withParameter(0, -1d), DATA2, DATA3)); assertEquals(test.withParameter( ParameterizedData.class, 1, -1d), ImmutableList.of(DATA1.withParameter(1, -1d), DATA2, DATA3)); assertEquals(test.withParameter( ParameterizedData.class, 2, -1d), ImmutableList.of(DATA1, DATA2.withParameter(0, -1d), DATA3)); assertEquals(test.withParameter( ParameterizedData.class, 3, -1d), ImmutableList.of(DATA1, DATA2, DATA3.withParameter(0, -1d))); assertEquals(test.withParameter( ParameterizedData.class, 4, -1d), ImmutableList.of(DATA1, DATA2, DATA3.withParameter(1, -1d))); }
public void test_underlyingWithParameter4() { ParameterizedDataCombiner test = ParameterizedDataCombiner.of(DATA1, DATA2, DATA3); assertEquals(test.underlyingWithParameter(0, TestingParameterizedData2.class, 4, -1d).getParameter(0), 1d); assertEquals(test.underlyingWithParameter(0, TestingParameterizedData2.class, 4, -1d).getParameter(1), 2d); assertEquals(test.underlyingWithParameter(1, TestingParameterizedData.class, 4, -1d).getParameter(0), 3d); assertEquals(test.underlyingWithParameter(2, TestingParameterizedData2.class, 4, -1d).getParameter(0), 4d); assertEquals(test.underlyingWithParameter(2, TestingParameterizedData2.class, 4, -1d).getParameter(1), -1d); }
public void test_underlyingWithParameter2() { ParameterizedDataCombiner test = ParameterizedDataCombiner.of(DATA1, DATA2, DATA3); assertEquals(test.underlyingWithParameter(0, TestingParameterizedData2.class, 2, -1d).getParameter(0), 1d); assertEquals(test.underlyingWithParameter(0, TestingParameterizedData2.class, 2, -1d).getParameter(1), 2d); assertEquals(test.underlyingWithParameter(1, TestingParameterizedData.class, 2, -1d).getParameter(0), -1d); assertEquals(test.underlyingWithParameter(2, TestingParameterizedData2.class, 2, -1d).getParameter(0), 4d); assertEquals(test.underlyingWithParameter(2, TestingParameterizedData2.class, 2, -1d).getParameter(1), 5d); }
public void test_underlyingWithPerturbation() { ParameterPerturbation perturbation = (i, v, m) -> v + i + 0.5d; ParameterizedDataCombiner test = ParameterizedDataCombiner.of(DATA1, DATA2, DATA3); assertEquals(test.underlyingWithPerturbation(0, TestingParameterizedData2.class, perturbation).getParameter(0), 1.5d); assertEquals(test.underlyingWithPerturbation(0, TestingParameterizedData2.class, perturbation).getParameter(1), 3.5d); assertEquals(test.underlyingWithPerturbation(1, TestingParameterizedData.class, perturbation).getParameter(0), 5.5d); assertEquals(test.underlyingWithPerturbation(2, TestingParameterizedData2.class, perturbation).getParameter(0), 7.5d); assertEquals(test.underlyingWithPerturbation(2, TestingParameterizedData2.class, perturbation).getParameter(1), 9.5d); }
public void test_underlyingWithParameter1() { ParameterizedDataCombiner test = ParameterizedDataCombiner.of(DATA1, DATA2, DATA3); assertEquals(test.underlyingWithParameter(0, TestingParameterizedData2.class, 1, -1d).getParameter(0), 1d); assertEquals(test.underlyingWithParameter(0, TestingParameterizedData2.class, 1, -1d).getParameter(1), -1d); assertEquals(test.underlyingWithParameter(1, TestingParameterizedData.class, 1, -1d).getParameter(0), 3d); assertEquals(test.underlyingWithParameter(2, TestingParameterizedData2.class, 1, -1d).getParameter(0), 4d); assertEquals(test.underlyingWithParameter(2, TestingParameterizedData2.class, 1, -1d).getParameter(1), 5d); }
public void test_underlyingWithParameter0() { ParameterizedDataCombiner test = ParameterizedDataCombiner.of(DATA1, DATA2, DATA3); assertEquals(test.underlyingWithParameter(0, TestingParameterizedData2.class, 0, -1d).getParameter(0), -1d); assertEquals(test.underlyingWithParameter(0, TestingParameterizedData2.class, 0, -1d).getParameter(1), 2d); assertEquals(test.underlyingWithParameter(1, TestingParameterizedData.class, 0, -1d).getParameter(0), 3d); assertEquals(test.underlyingWithParameter(2, TestingParameterizedData2.class, 0, -1d).getParameter(0), 4d); assertEquals(test.underlyingWithParameter(2, TestingParameterizedData2.class, 0, -1d).getParameter(1), 5d); }
public void test_underlyingWithParameter3() { ParameterizedDataCombiner test = ParameterizedDataCombiner.of(DATA1, DATA2, DATA3); assertEquals(test.underlyingWithParameter(0, TestingParameterizedData2.class, 3, -1d).getParameter(0), 1d); assertEquals(test.underlyingWithParameter(0, TestingParameterizedData2.class, 3, -1d).getParameter(1), 2d); assertEquals(test.underlyingWithParameter(1, TestingParameterizedData.class, 3, -1d).getParameter(0), 3d); assertEquals(test.underlyingWithParameter(2, TestingParameterizedData2.class, 3, -1d).getParameter(0), -1d); assertEquals(test.underlyingWithParameter(2, TestingParameterizedData2.class, 3, -1d).getParameter(1), 5d); }
public void test_basics() { ParameterizedDataCombiner test = ParameterizedDataCombiner.of(DATA1, DATA2, DATA3); assertEquals(test.getParameterCount(), 5); assertEquals(test.getParameter(0), 1d); assertEquals(test.getParameter(1), 2d); assertEquals(test.getParameter(2), 3d); assertEquals(test.getParameter(3), 4d); assertEquals(test.getParameter(4), 5d); assertEquals(test.getParameterMetadata(0), ParameterMetadata.empty()); assertThrows(() -> test.getParameter(-1), IndexOutOfBoundsException.class); assertThrows(() -> test.getParameter(5), IndexOutOfBoundsException.class); assertThrows(() -> test.getParameterMetadata(-1), IndexOutOfBoundsException.class); assertThrows(() -> test.getParameterMetadata(5), IndexOutOfBoundsException.class); assertThrowsIllegalArg(() -> ParameterizedDataCombiner.of()); }
@ImmutableConstructor private SabrParameters( Curve alphaCurve, Curve betaCurve, Curve rhoCurve, Curve nuCurve, Curve shiftCurve, SabrVolatilityFormula sabrFormula) { validate(alphaCurve, "alphaCurve", ValueType.SABR_ALPHA); validate(betaCurve, "betaCurve", ValueType.SABR_BETA); validate(rhoCurve, "rhoCurve", ValueType.SABR_RHO); validate(nuCurve, "nuCurve", ValueType.SABR_NU); ArgChecker.notNull(shiftCurve, "shiftCurve"); ArgChecker.notNull(sabrFormula, "sabrFormula"); DayCount dayCount = alphaCurve.getMetadata().findInfo(CurveInfoType.DAY_COUNT) .orElseThrow(() -> new IllegalArgumentException("Incorrect curve metadata, missing DayCount")); validate(betaCurve, dayCount); validate(rhoCurve, dayCount); validate(nuCurve, dayCount); validate(shiftCurve, dayCount); this.alphaCurve = alphaCurve; this.betaCurve = betaCurve; this.rhoCurve = rhoCurve; this.nuCurve = nuCurve; this.shiftCurve = shiftCurve; this.sabrVolatilityFormula = sabrFormula; this.dayCount = dayCount; this.paramCombiner = ParameterizedDataCombiner.of(alphaCurve, betaCurve, rhoCurve, nuCurve, shiftCurve); }
@ImmutableConstructor private SabrInterestRateParameters( Surface alphaSurface, Surface betaSurface, Surface rhoSurface, Surface nuSurface, Surface shiftSurface, SabrVolatilityFormula sabrFormula) { validate(alphaSurface, "alphaSurface", ValueType.SABR_ALPHA); validate(betaSurface, "betaSurface", ValueType.SABR_BETA); validate(rhoSurface, "rhoSurface", ValueType.SABR_RHO); validate(nuSurface, "nuSurface", ValueType.SABR_NU); ArgChecker.notNull(shiftSurface, "shiftSurface"); ArgChecker.notNull(sabrFormula, "sabrFormula"); DayCount dayCount = alphaSurface.getMetadata().findInfo(SurfaceInfoType.DAY_COUNT) .orElseThrow(() -> new IllegalArgumentException("Incorrect surface metadata, missing DayCount")); validate(betaSurface, dayCount); validate(rhoSurface, dayCount); validate(nuSurface, dayCount); validate(shiftSurface, dayCount); this.alphaSurface = alphaSurface; this.betaSurface = betaSurface; this.rhoSurface = rhoSurface; this.nuSurface = nuSurface; this.shiftSurface = shiftSurface; this.sabrVolatilityFormula = sabrFormula; this.dayCount = dayCount; this.paramCombiner = ParameterizedDataCombiner.of(alphaSurface, betaSurface, rhoSurface, nuSurface, shiftSurface); }
this.counterCurrencyDiscountFactors = counterCurrencyDiscountFactors; this.valuationDate = baseCurrencyDiscountFactors.getValuationDate(); this.paramCombiner = ParameterizedDataCombiner.of(baseCurrencyDiscountFactors, counterCurrencyDiscountFactors);
this.strikeExtrapolatorRight = strikeExtrapolatorRight; this.expiries = expiries; this.paramCombiner = ParameterizedDataCombiner.of(volatilityTerm);