@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 1226228605: // sensitivities return ((UnitParameterSensitivities) bean).getSensitivities(); } return super.propertyGet(bean, propertyName, quiet); }
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_one_normalized() { UnitParameterSensitivities test = SENSI_1.combinedWith(ENTRY2); assertEquals(test.getSensitivities(), ImmutableList.of(ENTRY_TOTAL_1_2)); }
public void test_combinedWith_one_notNormalized() { UnitParameterSensitivities test = SENSI_1.combinedWith(ENTRY3); assertEquals(test.getSensitivities(), ImmutableList.of(ENTRY1, ENTRY3)); }
public void test_of_list_notNormalized() { ImmutableList<UnitParameterSensitivity> list = ImmutableList.of(ENTRY1, ENTRY3); UnitParameterSensitivities test = UnitParameterSensitivities.of(list); assertEquals(test.size(), 2); assertEquals(test.getSensitivities(), ImmutableList.of(ENTRY1, ENTRY3)); }
public void test_of_list_normalized() { ImmutableList<UnitParameterSensitivity> list = ImmutableList.of(ENTRY1, ENTRY2); UnitParameterSensitivities test = UnitParameterSensitivities.of(list); assertEquals(test.size(), 1); assertEquals(test.getSensitivities(), ImmutableList.of(ENTRY_TOTAL_1_2)); }
public void test_of_single() { UnitParameterSensitivities test = UnitParameterSensitivities.of(ENTRY1); assertEquals(test.size(), 1); assertEquals(test.getSensitivities(), ImmutableList.of(ENTRY1)); }
public void test_empty() { UnitParameterSensitivities test = UnitParameterSensitivities.empty(); assertEquals(test.size(), 0); assertEquals(test.getSensitivities().size(), 0); }
public void test_multipliedBy() { UnitParameterSensitivities multiplied = SENSI_1.multipliedBy(FACTOR1); DoubleArray test = multiplied.getSensitivities().get(0).getSensitivity(); for (int i = 0; i < VECTOR1.size(); i++) { assertEquals(test.get(i), VECTOR1.get(i) * FACTOR1); } }
public void test_mapSensitivities() { UnitParameterSensitivities multiplied = SENSI_1.mapSensitivities(a -> 1 / a); DoubleArray test = multiplied.getSensitivities().get(0).getSensitivity(); for (int i = 0; i < VECTOR1.size(); i++) { assertEquals(test.get(i), 1 / VECTOR1.get(i)); } }
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(); }