public void test_getSensitivity_name() { assertEquals(SENSI_3.getSensitivity(NAME1, NAME1, USD), ENTRY_USD); assertEquals(SENSI_3.getSensitivity(NAME1, NAME2, USD), CrossGammaParameterSensitivity.of(NAME1, METADATA1, NAME2, METADATA2, USD, MATRIX_USD2)); assertEquals(SENSI_3.getSensitivity(NAME2, NAME1, USD), CrossGammaParameterSensitivity.of(NAME2, METADATA2, NAME1, METADATA1, USD, MATRIX_USD2)); assertEquals(SENSI_3.getSensitivity(NAME2, NAME2, USD), CrossGammaParameterSensitivity.of(NAME2, METADATA2, NAME2, METADATA2, USD, DoubleMatrix.of(2, 2, -500, -400, -200, -300))); }
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)); }
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()); }
System.arraycopy(times3.toArray(), 0, timesTotal, times2.size(), times3.size()); assertEquals(sensiComputed.size(), 2); DoubleMatrix s2 = sensiComputed.getSensitivity(RatesProviderDataSets.USD_L3_NAME, USD).getSensitivity(); assertEquals(s2.columnCount(), paramsTotal); for (int i = 0; i < times2.size(); i++) { DoubleMatrix s3 = sensiComputed.getSensitivity(RatesProviderDataSets.USD_L6_NAME, USD).getSensitivity(); assertEquals(s3.columnCount(), paramsTotal); for (int i = 0; i < times3.size(); i++) {
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++) {
DoubleArray times4 = RatesProviderDataSets.TIMES_4; assertEquals(sensiComputed.size(), 4); DoubleMatrix s1 = sensiComputed.getSensitivity(RatesProviderDataSets.USD_DSC_NAME, USD).getSensitivity(); assertEquals(s1.columnCount(), times1.size()); for (int i = 0; i < times1.size(); i++) { DoubleMatrix s2 = sensiComputed.getSensitivity(RatesProviderDataSets.USD_L3_NAME, USD).getSensitivity(); assertEquals(s2.columnCount(), times2.size()); for (int i = 0; i < times2.size(); i++) { DoubleMatrix s3 = sensiComputed.getSensitivity(RatesProviderDataSets.USD_L6_NAME, USD).getSensitivity(); assertEquals(s3.columnCount(), times3.size()); for (int i = 0; i < times3.size(); i++) { DoubleMatrix s4 = sensiComputed.getSensitivity(RatesProviderDataSets.USD_CPI_NAME, USD).getSensitivity(); assertEquals(s4.columnCount(), times4.size()); for (int i = 0; i < times4.size(); i++) {
DoubleArray timesUsIssuer2 = RatesProviderDataSets.TIMES_2; assertEquals(sensiComputed.size(), 4); DoubleMatrix s1 = sensiComputed.getSensitivity(RatesProviderDataSets.USD_L3_NAME, USD).getSensitivity(); assertEquals(s1.columnCount(), timesUsL3.size()); for (int i = 0; i < timesUsL3.size(); i++) { DoubleMatrix s2 = sensiComputed.getSensitivity(RatesProviderDataSets.US_REPO_CURVE_NAME, USD).getSensitivity(); assertEquals(s2.columnCount(), timesUsRepo.size()); for (int i = 0; i < timesUsRepo.size(); i++) { DoubleMatrix s3 = sensiComputed.getSensitivity(RatesProviderDataSets.US_ISSUER_CURVE_1_NAME, USD).getSensitivity(); assertEquals(s3.columnCount(), timesUsIssuer1.size()); for (int i = 0; i < timesUsIssuer1.size(); i++) { DoubleMatrix s4 = sensiComputed.getSensitivity(RatesProviderDataSets.US_ISSUER_CURVE_2_NAME, USD).getSensitivity(); assertEquals(s4.columnCount(), timesUsIssuer2.size()); for (int i = 0; i < timesUsIssuer2.size(); i++) {
DoubleMatrix s1 = sensiComputed.getSensitivity(RatesProviderDataSets.USD_DSC_NAME, USD).getSensitivity(); assertEquals(s1.columnCount(), paramsTotal); for (int i = 0; i < times1.size(); i++) { DoubleMatrix s2 = sensiComputed.getSensitivity(RatesProviderDataSets.USD_L3_NAME, USD).getSensitivity(); assertEquals(s2.columnCount(), paramsTotal); for (int i = 0; i < times2.size(); i++) { DoubleMatrix s3 = sensiComputed.getSensitivity(RatesProviderDataSets.USD_L6_NAME, USD).getSensitivity(); assertEquals(s3.columnCount(), paramsTotal); for (int i = 0; i < times3.size(); i++) { DoubleMatrix s4 = sensiComputed.getSensitivity(RatesProviderDataSets.USD_CPI_NAME, USD).getSensitivity(); assertEquals(s4.columnCount(), paramsTotal); for (int i = 0; i < times4.size(); i++) {
DoubleMatrix s1 = sensiCrossComputed.getSensitivity(RatesProviderDataSets.USD_DSC_NAME, USD).getSensitivity(); assertEquals(s1.columnCount(), paramsTotal); for (int i = 0; i < times1.size(); i++) { DoubleMatrix s2 = sensiCrossComputed.getSensitivity(RatesProviderDataSets.USD_L3_NAME, USD).getSensitivity(); assertEquals(s2.columnCount(), paramsTotal); for (int i = 0; i < times2.size(); i++) { DoubleMatrix s3 = sensiCrossComputed.getSensitivity(RatesProviderDataSets.USD_L6_NAME, USD).getSensitivity(); assertEquals(s3.columnCount(), paramsTotal); for (int i = 0; i < times3.size(); i++) { DoubleMatrix s4 = sensiCrossComputed.getSensitivity(RatesProviderDataSets.USD_CPI_NAME, USD).getSensitivity(); assertEquals(s4.columnCount(), paramsTotal); for (int i = 0; i < times4.size(); i++) { DoubleMatrix s1Intra = sensiIntraComputed.getSensitivity(RatesProviderDataSets.USD_DSC_NAME, USD).getSensitivity(); DoubleMatrix s2Intra = sensiIntraComputed.getSensitivity(RatesProviderDataSets.USD_L3_NAME, USD).getSensitivity(); DoubleMatrix s3Intra = sensiIntraComputed.getSensitivity(RatesProviderDataSets.USD_L6_NAME, USD).getSensitivity(); DoubleMatrix s4Intra = sensiIntraComputed.getSensitivity(RatesProviderDataSets.USD_CPI_NAME, USD).getSensitivity(); int offsetOis = times4.size(); for (int i = 0; i < times1.size(); i++) {