/** * Obtains an instance from an array of sensitivity entries. * <p> * The order of sensitivities is typically unimportant, however it is retained * and exposed in {@link #equals(Object)}. * * @param sensitivities the sensitivities * @return the sensitivities instance */ public static UnitParameterSensitivities of(UnitParameterSensitivity... sensitivities) { return of(Arrays.asList(sensitivities)); }
/** * Splits this sensitivity instance. * <p> * This examines each individual sensitivity to see if it can be {@link CurrencyParameterSensitivity#split() split}. * If any can be split, the result will contain the combination of the split sensitivities. * * @return this sensitivity, with any combined sensitivities split */ public UnitParameterSensitivities split() { if (!sensitivities.stream().anyMatch(s -> s.getParameterSplit().isPresent())) { return this; } return of(sensitivities.stream() .flatMap(s -> s.split().stream()) .collect(toImmutableList())); }
public void test_of_list_none() { ImmutableList<UnitParameterSensitivity> list = ImmutableList.of(); UnitParameterSensitivities test = UnitParameterSensitivities.of(list); assertEquals(test.size(), 0); }
public void test_of_array_none() { UnitParameterSensitivities test = UnitParameterSensitivities.of(); assertEquals(test.size(), 0); }
public void test_of_single() { UnitParameterSensitivities test = UnitParameterSensitivities.of(ENTRY1); assertEquals(test.size(), 1); assertEquals(test.getSensitivities(), ImmutableList.of(ENTRY1)); }
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_findSensitivity() { UnitParameterSensitivities test = UnitParameterSensitivities.of(ENTRY1); assertEquals(test.findSensitivity(NAME1), Optional.of(ENTRY1)); assertEquals(test.findSensitivity(NAME0), Optional.empty()); }
public void test_getSensitivity() { UnitParameterSensitivities test = UnitParameterSensitivities.of(ENTRY1); assertEquals(test.getSensitivity(NAME1), ENTRY1); assertThrowsIllegalArg(() -> test.getSensitivity(NAME0)); }
private UnitParameterSensitivities unitParameterSensitivity(YearMonth month) { // If fixing in the past, check time series and returns the historic month price index if present if (month.isBefore(YearMonth.from(valuationDate))) { if (fixings.get(month.atEndOfMonth()).isPresent()) { return UnitParameterSensitivities.empty(); } } double nbMonth = numberOfMonths(month); return UnitParameterSensitivities.of(curve.yValueParameterSensitivity(nbMonth)); }
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);
public void test_value_parameter_sensitivity() { for (int i = 0; i < TEST_MONTHS.length; i++) { YearMonth fixingMonth = TEST_OBS[i].getFixingMonth(); if (!USCPI_TS.containsDate(fixingMonth.atEndOfMonth())) { InflationRateSensitivity ptsExpected = (InflationRateSensitivity) InflationRateSensitivity.of(TEST_OBS[i], 1d); CurrencyParameterSensitivities psComputed = INSTANCE.parameterSensitivity(ptsExpected); double x = YearMonth.from(VAL_DATE).until(fixingMonth, MONTHS); UnitParameterSensitivities sens1 = UnitParameterSensitivities.of(CURVE_INFL.yValueParameterSensitivity(x)); CurrencyParameterSensitivities psExpected = sens1.multipliedBy(ptsExpected.getCurrency(), ptsExpected.getSensitivity()); assertTrue(psComputed.equalWithTolerance(psExpected, TOLERANCE_DELTA), "test " + i); } } }
public void test_value_parameter_sensitivity_futfixing() { for (int i = 0; i < TEST_MONTHS.length; i++) { YearMonth fixingMonth = TEST_OBS[i].getFixingMonth(); if (!fixingMonth.isBefore(YearMonth.from(VAL_DATE_2)) && !USCPI_TS.containsDate(fixingMonth.atEndOfMonth())) { InflationRateSensitivity ptsExpected = (InflationRateSensitivity) InflationRateSensitivity.of(TEST_OBS[i], 1d); CurrencyParameterSensitivities psComputed = INSTANCE_WITH_FUTFIXING.parameterSensitivity(ptsExpected); double x = YearMonth.from(VAL_DATE_2).until(fixingMonth, MONTHS); UnitParameterSensitivities sens1 = UnitParameterSensitivities.of(CURVE_INFL2.yValueParameterSensitivity(x)); CurrencyParameterSensitivities psExpected = sens1.multipliedBy(ptsExpected.getCurrency(), ptsExpected.getSensitivity()); assertTrue(psComputed.equalWithTolerance(psExpected, TOLERANCE_DELTA), "test " + i); } } }