public void test_of_single() { CrossGammaParameterSensitivities test = CrossGammaParameterSensitivities.of(ENTRY_USD); assertEquals(test.size(), 1); assertEquals(test.getSensitivities(), ImmutableList.of(ENTRY_USD)); }
if (!equalWithTolerance(sens1.getSensitivity(), sens2.getSensitivity(), tolerance)) { return false; } else { if (!equalZeroWithTolerance(sens1.getSensitivity(), tolerance)) { return false; if (!equalZeroWithTolerance(sens2.getSensitivity(), tolerance)) { return false;
public void test_findSensitivity() { CrossGammaParameterSensitivities test = CrossGammaParameterSensitivities.of(ENTRY_USD); assertEquals(test.findSensitivity(NAME1, USD), Optional.of(ENTRY_USD)); assertEquals(test.findSensitivity(NAME1, EUR), Optional.empty()); assertEquals(test.findSensitivity(NAME0, USD), Optional.empty()); assertEquals(test.findSensitivity(NAME0, EUR), Optional.empty()); }
public void test_combinedWith_empty() { CrossGammaParameterSensitivities test = CrossGammaParameterSensitivities.empty().combinedWith(SENSI_1); assertEquals(test, SENSI_1); }
public void test_multipliedBy_vs_combinedWith() { CrossGammaParameterSensitivities multiplied = SENSI_2.multipliedBy(2d); CrossGammaParameterSensitivities added = SENSI_2.combinedWith(SENSI_2); assertEquals(multiplied, added); }
DoubleArray times = RatesProviderDataSets.TIMES_1; for (CrossGammaParameterSensitivities sensi : new CrossGammaParameterSensitivities[] {forward, central, backward}) { CurrencyParameterSensitivities diagonalComputed = sensi.diagonal(); assertEquals(sensi.size(), 1); assertEquals(diagonalComputed.size(), 1); DoubleMatrix s = sensi.getSensitivities().get(0).getSensitivity(); assertEquals(s.columnCount(), times.size()); for (int i = 0; i < times.size(); i++) { assertTrue(forward.equalWithTolerance(forwardCross, TOL)); CrossGammaParameterSensitivities centralCross = CENTRAL.calculateCrossGammaCrossCurve(RatesProviderDataSets.SINGLE_USD, this::sensiFn); assertTrue(central.equalWithTolerance(centralCross, TOL)); CrossGammaParameterSensitivities backwardCross = BACKWARD.calculateCrossGammaCrossCurve(RatesProviderDataSets.SINGLE_USD, this::sensiFn); assertTrue(backward.equalWithTolerance(backwardCross, TOL));
public void test_combinedWith_one_notNormalized() { CrossGammaParameterSensitivities test = SENSI_1.combinedWith(ENTRY_EUR); assertEquals(test.getSensitivities(), ImmutableList.of(ENTRY_USD, ENTRY_EUR)); }
public void test_equalWithTolerance() { CrossGammaParameterSensitivities sensUsdTotal = CrossGammaParameterSensitivities.of(ENTRY_USD_TOTAL); CrossGammaParameterSensitivities sensEur = CrossGammaParameterSensitivities.of(ENTRY_EUR); CrossGammaParameterSensitivities sens1plus2 = SENSI_1.combinedWith(ENTRY_USD2); CrossGammaParameterSensitivities sensZeroA = CrossGammaParameterSensitivities.of(ENTRY_ZERO3); CrossGammaParameterSensitivities sensZeroB = CrossGammaParameterSensitivities.of(ENTRY_ZERO0); CrossGammaParameterSensitivities sens1plus2plus0a = SENSI_1.combinedWith(ENTRY_USD2).combinedWith(ENTRY_ZERO0); CrossGammaParameterSensitivities sens1plus2plus0b = SENSI_1.combinedWith(ENTRY_USD2).combinedWith(ENTRY_ZERO3); CrossGammaParameterSensitivities sens1plus2plus0 = SENSI_1 .combinedWith(ENTRY_USD2).combinedWith(ENTRY_ZERO0).combinedWith(ENTRY_ZERO3); CrossGammaParameterSensitivities sens2plus0 = SENSI_2.combinedWith(sensZeroA); assertEquals(SENSI_1.equalWithTolerance(sensZeroA, TOLERENCE_CMP), false); assertEquals(SENSI_1.equalWithTolerance(SENSI_1, TOLERENCE_CMP), true); assertEquals(SENSI_1.equalWithTolerance(SENSI_2, TOLERENCE_CMP), false); assertEquals(SENSI_1.equalWithTolerance(sensUsdTotal, TOLERENCE_CMP), false); assertEquals(SENSI_1.equalWithTolerance(sensEur, TOLERENCE_CMP), false); assertEquals(SENSI_1.equalWithTolerance(sens1plus2, TOLERENCE_CMP), false); assertEquals(SENSI_1.equalWithTolerance(sens2plus0, TOLERENCE_CMP), false); assertEquals(SENSI_2.equalWithTolerance(sensZeroA, TOLERENCE_CMP), false); assertEquals(SENSI_2.equalWithTolerance(SENSI_1, TOLERENCE_CMP), false); assertEquals(SENSI_2.equalWithTolerance(SENSI_2, TOLERENCE_CMP), true); assertEquals(SENSI_2.equalWithTolerance(sensUsdTotal, TOLERENCE_CMP), false); assertEquals(SENSI_2.equalWithTolerance(sensEur, TOLERENCE_CMP), false); assertEquals(SENSI_2.equalWithTolerance(sens1plus2, TOLERENCE_CMP), false); assertEquals(SENSI_2.equalWithTolerance(sens2plus0, TOLERENCE_CMP), true); assertEquals(sensZeroA.equalWithTolerance(sensZeroA, TOLERENCE_CMP), true); assertEquals(sensZeroA.equalWithTolerance(SENSI_1, TOLERENCE_CMP), false); assertEquals(sensZeroA.equalWithTolerance(SENSI_2, TOLERENCE_CMP), false);
public void sensitivity_multi_curve_empty() { CrossGammaParameterSensitivities sensiComputed = CENTRAL.calculateCrossGammaIntraCurve(RatesProviderDataSets.MULTI_CPI_USD, this::sensiModFn); DoubleArray times2 = RatesProviderDataSets.TIMES_2; DoubleArray times3 = RatesProviderDataSets.TIMES_3; assertEquals(sensiComputed.size(), 2); DoubleMatrix s2 = sensiComputed.getSensitivity(RatesProviderDataSets.USD_L3_NAME, USD).getSensitivity(); assertEquals(s2.columnCount(), times2.size()); for (int i = 0; i < times2.size(); i++) { for (int j = 0; j < times2.size(); j++) { double expected = 2d * times2.get(i) * times2.get(j); assertEquals(s2.get(i, j), expected, Math.max(Math.abs(expected), 1d) * EPS); } } DoubleMatrix s3 = sensiComputed.getSensitivity(RatesProviderDataSets.USD_L6_NAME, USD).getSensitivity(); assertEquals(s3.columnCount(), times3.size()); for (int i = 0; i < times3.size(); i++) { for (int j = 0; j < times3.size(); j++) { double expected = 2d * times3.get(i) * times3.get(j); assertEquals(s3.get(i, j), expected, Math.max(Math.abs(expected), 1d) * EPS); } } Optional<CrossGammaParameterSensitivity> oisSensi = sensiComputed.findSensitivity(RatesProviderDataSets.USD_DSC_NAME, USD); assertFalse(oisSensi.isPresent()); Optional<CrossGammaParameterSensitivity> priceIndexSensi = sensiComputed.findSensitivity(RatesProviderDataSets.USD_CPI_NAME, USD); assertFalse(priceIndexSensi.isPresent()); }
public void test_convertedTo_multipleCurrency_mergeWhenSameName() { CrossGammaParameterSensitivities test = SENSI_1.combinedWith(ENTRY_USD2_IN_EUR).convertedTo(USD, FX_RATE); assertEquals(test.getSensitivities(), ImmutableList.of(ENTRY_USD_TOTAL)); }
public void test_empty() { CrossGammaParameterSensitivities test = CrossGammaParameterSensitivities.empty(); assertEquals(test.size(), 0); assertEquals(test.getSensitivities().size(), 0); }
DoubleArray timesUsIssuer1 = RatesProviderDataSets.TIMES_3; DoubleArray timesUsIssuer2 = RatesProviderDataSets.TIMES_2; assertEquals(sensiComputed.size(), 3); DoubleMatrix s1 = sensiComputed.getSensitivity(RatesProviderDataSets.US_REPO_CURVE_NAME, USD).getSensitivity(); assertEquals(s1.columnCount(), timesUsRepo.size()); for (int i = 0; i < timesUsRepo.size(); i++) { DoubleMatrix s2 = sensiComputed.getSensitivity(RatesProviderDataSets.US_ISSUER_CURVE_1_NAME, USD).getSensitivity(); assertEquals(s2.columnCount(), timesUsIssuer1.size()); for (int i = 0; i < timesUsIssuer1.size(); i++) { DoubleMatrix s3 = sensiComputed.getSensitivity(RatesProviderDataSets.US_ISSUER_CURVE_2_NAME, USD).getSensitivity(); assertEquals(s3.columnCount(), timesUsIssuer2.size()); for (int i = 0; i < timesUsIssuer2.size(); i++) {
public void test_convertedTo_multipleCurrency() { CrossGammaParameterSensitivities test = SENSI_2.convertedTo(USD, FX_RATE); assertEquals(test.getSensitivities(), ImmutableList.of(ENTRY_USD2, ENTRY_EUR_IN_USD)); }
public void test_mapSensitivities() { CrossGammaParameterSensitivities multiplied = SENSI_1.mapSensitivities(a -> 1 / a); DoubleMatrix test = multiplied.getSensitivities().get(0).getSensitivity(); for (int i = 0; i < MATRIX_USD1.columnCount(); i++) { for (int j = 0; j < MATRIX_USD1.rowCount(); j++) { assertEquals(test.get(i, j), 1 / MATRIX_USD1.get(i, j)); } } }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 1226228605: // sensitivities return ((CrossGammaParameterSensitivities) bean).getSensitivities(); } return super.propertyGet(bean, propertyName, quiet); }
public void test_multipliedBy() { CrossGammaParameterSensitivities multiplied = SENSI_1.multipliedBy(FACTOR1); DoubleMatrix test = multiplied.getSensitivities().get(0).getSensitivity(); for (int i = 0; i < MATRIX_USD1.columnCount(); i++) { for (int j = 0; j < MATRIX_USD1.rowCount(); j++) { assertEquals(test.get(i, j), MATRIX_USD1.get(i, j) * FACTOR1); } } }
public void test_getSensitivity() { CrossGammaParameterSensitivities test = CrossGammaParameterSensitivities.of(ENTRY_USD); assertEquals(test.getSensitivity(NAME1, USD), ENTRY_USD); assertThrowsIllegalArg(() -> test.getSensitivity(NAME1, EUR)); assertThrowsIllegalArg(() -> test.getSensitivity(NAME0, USD)); assertThrowsIllegalArg(() -> test.getSensitivity(NAME0, EUR)); }
/** * Gets a single sensitivity instance by name and currency. * * @param name the curve name to find * @param currency the currency to find * @return the matching sensitivity * @throws IllegalArgumentException if the name and currency do not match an entry */ public CrossGammaParameterSensitivity getSensitivity(MarketDataName<?> name, Currency currency) { return findSensitivity(name, currency) .orElseThrow(() -> new IllegalArgumentException(Messages.format( "Unable to find sensitivity: {} for {}", name, currency))); }
public void test_diagonal() { assertEquals(SENSI_2.diagonal().size(), 2); assertEquals(SENSI_2.diagonal().getSensitivity(NAME1, USD), ENTRY_USD2.diagonal()); assertEquals(SENSI_2.diagonal().getSensitivity(NAME2, EUR), ENTRY_EUR.diagonal()); assertEquals(SENSI_3.diagonal().getSensitivity(NAME1, USD), ENTRY_USD12.diagonal()); assertEquals(SENSI_3.diagonal().getSensitivity(NAME2, USD), ENTRY_USD21.diagonal()); }