public void test_multipliedBy_vs_combinedWith() { UnitParameterSensitivities multiplied = SENSI_2.multipliedBy(2d); UnitParameterSensitivities added = SENSI_2.combinedWith(SENSI_2); assertEquals(multiplied, added); }
public void test_combinedWith_one_notNormalized() { UnitParameterSensitivities test = SENSI_1.combinedWith(ENTRY3); assertEquals(test.getSensitivities(), ImmutableList.of(ENTRY1, ENTRY3)); }
public void test_combinedWith_other() { UnitParameterSensitivities test = SENSI_1.combinedWith(SENSI_2); assertEquals(test.getSensitivities(), ImmutableList.of(ENTRY_TOTAL_1_2, ENTRY3)); }
public void test_combinedWith_otherEmpty() { UnitParameterSensitivities test = SENSI_1.combinedWith(UnitParameterSensitivities.empty()); assertEquals(test, SENSI_1); }
public void test_combinedWith_one_normalized() { UnitParameterSensitivities test = SENSI_1.combinedWith(ENTRY2); assertEquals(test.getSensitivities(), ImmutableList.of(ENTRY_TOTAL_1_2)); }
public void test_combinedWith_empty() { UnitParameterSensitivities test = UnitParameterSensitivities.empty().combinedWith(SENSI_1); assertEquals(test, SENSI_1); }
public void test_combinedWith_one_sizeMismatch() { assertThrowsIllegalArg(() -> SENSI_1.combinedWith(ENTRY_SMALL)); }
private UnitParameterSensitivities extractSensitivities(ResolvedTrade trade, RatesProvider provider) { CalibrationMeasure<ResolvedTrade> measure = getMeasure(trade); CurrencyParameterSensitivities paramSens = measure.sensitivities(trade, provider); UnitParameterSensitivities unitSens = UnitParameterSensitivities.empty(); for (CurrencyParameterSensitivity ccySens : paramSens.getSensitivities()) { unitSens = unitSens.combinedWith(ccySens.toUnitParameterSensitivity()); } return unitSens; }
private DoubleArray sensitivitySwap(BasicFixedLeg swap, NodalCurve curve, double swapRate) { int nPayments = swap.getNumPayments(); double annuity = 0d; UnitParameterSensitivities sensi = UnitParameterSensitivities.empty(); for (int i = 0; i < nPayments - 1; i++) { double t = swap.getPaymentTime(i); double df = Math.exp(-curve.yValue(t) * t); annuity += swap.getYearFraction(i) * df; sensi = sensi.combinedWith(curve.yValueParameterSensitivity(t).multipliedBy(-df * t * swap.getYearFraction(i) * swapRate)); } int lastIndex = nPayments - 1; double t = swap.getPaymentTime(lastIndex); double df = Math.exp(-curve.yValue(t) * t); annuity += swap.getYearFraction(lastIndex) * df; sensi = sensi.combinedWith( curve.yValueParameterSensitivity(t).multipliedBy(-df * t * (1d + swap.getYearFraction(lastIndex) * swapRate))); sensi = sensi.multipliedBy(-1d / annuity); ArgChecker.isTrue(sensi.size() == 1); return sensi.getSensitivities().get(0).getSensitivity(); }
public void test_equalWithTolerance() { UnitParameterSensitivities sensUsdTotal = UnitParameterSensitivities.of(ENTRY_TOTAL_1_2); UnitParameterSensitivities sensEur = UnitParameterSensitivities.of(ENTRY3); UnitParameterSensitivities sens1plus2 = SENSI_1.combinedWith(ENTRY2); UnitParameterSensitivities sensZeroA = UnitParameterSensitivities.of(ENTRY_ZERO3); UnitParameterSensitivities sensZeroB = UnitParameterSensitivities.of(ENTRY_ZERO0); UnitParameterSensitivities sens1plus2plus0a = SENSI_1.combinedWith(ENTRY2).combinedWith(ENTRY_ZERO0); UnitParameterSensitivities sens1plus2plus0b = SENSI_1.combinedWith(ENTRY2).combinedWith(ENTRY_ZERO3); UnitParameterSensitivities sens1plus2plus0 = SENSI_1 .combinedWith(ENTRY2).combinedWith(ENTRY_ZERO0).combinedWith(ENTRY_ZERO3); UnitParameterSensitivities sens2plus0 = SENSI_2.combinedWith(sensZeroA); assertEquals(SENSI_1.equalWithTolerance(sensZeroA, TOLERENCE_CMP), false); assertEquals(SENSI_1.equalWithTolerance(SENSI_1, TOLERENCE_CMP), true);