@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 1226228605: // sensitivities return ((CurrencyParameterSensitivities) bean).getSensitivities(); } return super.propertyGet(bean, propertyName, quiet); }
private static void checkCurrency(CurrencyParameterSensitivities paramSensitivities) { List<CurrencyParameterSensitivity> sensitivitiesList = paramSensitivities.getSensitivities(); if (sensitivitiesList.size() > 0) { // When no sensitivity, no check required. Currency ccy = sensitivitiesList.get(0).getCurrency(); for (int i = 1; i < sensitivitiesList.size(); i++) { ArgChecker.isTrue(ccy.equals(sensitivitiesList.get(i).getCurrency()), "sensitivities must be in the same currency for aggregation"); } } }
public void test_convertedTo_multipleCurrency() { CurveSensitivities base = sut2(); CurveSensitivities test = base.convertedTo(USD, FX_RATE); assertEquals(test.getTypedSensitivities().get(ZERO_RATE_DELTA).getSensitivities(), ImmutableList.of(ENTRY_USD)); assertEquals( test.getTypedSensitivities().get(ZERO_RATE_GAMMA).getSensitivities(), ImmutableList.of(ENTRY_USD2, ENTRY_EUR_IN_USD)); }
public void test_of_single() { CurrencyParameterSensitivities test = CurrencyParameterSensitivities.of(ENTRY_USD); assertEquals(test.size(), 1); assertEquals(test.getSensitivities(), ImmutableList.of(ENTRY_USD)); }
public void test_empty() { CurrencyParameterSensitivities test = CurrencyParameterSensitivities.empty(); assertEquals(test.size(), 0); assertEquals(test.getSensitivities().size(), 0); }
public void test_withParameterMetadatas() { CurrencyParameterSensitivity entry1 = CurrencyParameterSensitivity.of(NAME1, METADATA1B, USD, DoubleArray.of(0, 1, 2, 3)); CurrencyParameterSensitivities base = CurrencyParameterSensitivities.of(entry1); CurrencyParameterSensitivities test = base.withParameterMetadatas(md -> TENOR_MD_1Y); assertEquals(test.getSensitivities().get(0).getParameterMetadata().size(), 1); assertEquals(test.getSensitivities().get(0).getParameterMetadata(0), TENOR_MD_1Y); assertEquals(test.getSensitivities().get(0).getSensitivity(), DoubleArray.of(6)); }
public void test_withMarketDataNames() { CurveSensitivities base = sut(); CurveSensitivities test = base.withMarketDataNames(name -> NAME2); assertEquals( base.getTypedSensitivities().get(ZERO_RATE_DELTA).getSensitivities().get(0).getMarketDataName(), NAME1); assertEquals( test.getTypedSensitivities().get(ZERO_RATE_DELTA).getSensitivities().get(0).getMarketDataName(), NAME2); }
public void test_withMarketDataNames() { CurrencyParameterSensitivity entry1 = CurrencyParameterSensitivity.of(NAME1, METADATA1B, USD, DoubleArray.of(0, 1, 2, 3)); CurrencyParameterSensitivities base = CurrencyParameterSensitivities.of(entry1); CurrencyParameterSensitivities test = base.withMarketDataNames(name -> NAME2); assertEquals(SENSI_1.getSensitivities().get(0).getMarketDataName(), NAME1); assertEquals(test.getSensitivities().get(0).getMarketDataName(), NAME2); }
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; }
public void test_createParameterSensitivity() { ZeroRateDiscountFactors test = ZeroRateDiscountFactors.of(GBP, DATE_VAL, CURVE); DoubleArray sensitivities = DoubleArray.of(0.12, 0.15); CurrencyParameterSensitivities sens = test.createParameterSensitivity(USD, sensitivities); assertEquals(sens.getSensitivities().get(0), CURVE.createParameterSensitivity(USD, sensitivities)); }
public void test_createParameterSensitivity() { SimplePriceIndexValues test = SimplePriceIndexValues.of(US_CPI_U, VAL_DATE, CURVE_NOFIX, USCPI_TS); DoubleArray sensitivities = DoubleArray.of(0.12, 0.15, 0.16, 0.17); CurrencyParameterSensitivities sens = test.createParameterSensitivity(USD, sensitivities); assertEquals(sens.getSensitivities().get(0), CURVE_NOFIX.createParameterSensitivity(USD, sensitivities)); }
public void test_createParameterSensitivity() { SimpleDiscountFactors test = SimpleDiscountFactors.of(GBP, DATE_VAL, CURVE); DoubleArray sensitivities = DoubleArray.of(0.12, 0.15); CurrencyParameterSensitivities sens = test.createParameterSensitivity(USD, sensitivities); assertEquals(sens.getSensitivities().get(0), CURVE.createParameterSensitivity(USD, sensitivities)); }
public void test_createParameterSensitivity() { SimpleIborIndexRates test = SimpleIborIndexRates.of(GBP_LIBOR_3M, DATE_VAL, CURVE, SERIES); DoubleArray sensitivities = DoubleArray.of(0.12, 0.15); CurrencyParameterSensitivities sens = test.createParameterSensitivity(USD, sensitivities); assertEquals(sens.getSensitivities().get(0), CURVE.createParameterSensitivity(USD, sensitivities)); }
public void test_createParameterSensitivity() { ZeroRatePeriodicDiscountFactors test = ZeroRatePeriodicDiscountFactors.of(GBP, DATE_VAL, CURVE); DoubleArray sensitivities = DoubleArray.of(0.12, 0.15, 0.16); CurrencyParameterSensitivities sens = test.createParameterSensitivity(USD, sensitivities); assertEquals(sens.getSensitivities().get(0), CURVE.createParameterSensitivity(USD, sensitivities)); }
public void test_createParameterSensitivity() { IsdaCreditDiscountFactors test = IsdaCreditDiscountFactors.of(USD, VALUATION, CURVE); DoubleArray sensitivities = DoubleArray.of(0.12, 0.1, 0.49, 0.15, 0.56, 0.17, 0.32, 0.118, 0.456, 5.0, 12.0, 0.65, 0.34, 0.75, 0.12, 0.15, 0.12, 0.15, 0.04); CurrencyParameterSensitivities sens = test.createParameterSensitivity(USD, sensitivities); assertEquals(sens.getSensitivities().get(0), CURVE.createParameterSensitivity(USD, sensitivities)); }
public void test_multipliedBy() { CurrencyParameterSensitivities multiplied = SENSI_1.multipliedBy(FACTOR1); DoubleArray test = multiplied.getSensitivities().get(0).getSensitivity(); for (int i = 0; i < VECTOR_USD1.size(); i++) { assertEquals(test.get(i), VECTOR_USD1.get(i) * FACTOR1); } }
@Test public void sensitivity_single_curve() { CurrencyParameterSensitivities sensiComputed = FD_CALCULATOR.sensitivity(RatesProviderDataSets.SINGLE_USD, this::fn); DoubleArray times = RatesProviderDataSets.TIMES_1; assertEquals(sensiComputed.size(), 1); DoubleArray s = sensiComputed.getSensitivities().get(0).getSensitivity(); assertEquals(s.size(), times.size()); for (int i = 0; i < times.size(); i++) { assertEquals(s.get(i), times.get(i) * 4.0d, TOLERANCE_DELTA); } }
public void test_mapSensitivities() { CurrencyParameterSensitivities multiplied = SENSI_1.mapSensitivities(a -> 1 / a); DoubleArray test = multiplied.getSensitivities().get(0).getSensitivity(); for (int i = 0; i < VECTOR_USD1.size(); i++) { assertEquals(test.get(i), 1 / VECTOR_USD1.get(i)); } }
public void test_parameterSensitivity() { ZeroRatePeriodicDiscountFactors test = ZeroRatePeriodicDiscountFactors.of(GBP, DATE_VAL, CURVE); double sensiValue = 25d; ZeroRateSensitivity point = test.zeroRatePointSensitivity(DATE_AFTER); point = point.multipliedBy(sensiValue); CurrencyParameterSensitivities sensiObject = test.parameterSensitivity(point); assertEquals(sensiObject.size(), 1); CurrencyParameterSensitivity sensi1 = sensiObject.getSensitivities().get(0); assertEquals(sensi1.getCurrency(), GBP); }
public void test_presentValueSensitivityVolatility() { PointSensitivityBuilder pointCaplet = PRICER.presentValueSensitivityModelParamsVolatility(CAPLET_LONG, RATES, VOLS); CurrencyParameterSensitivity computedCaplet = VOLS.parameterSensitivity(pointCaplet.build()).getSensitivities().get(0); PointSensitivityBuilder pointFloorlet = PRICER.presentValueSensitivityModelParamsVolatility(FLOORLET_SHORT, RATES, VOLS); CurrencyParameterSensitivity computedFloorlet = VOLS.parameterSensitivity(pointFloorlet.build()).getSensitivities().get(0); testSurfaceSensitivity(computedCaplet, VOLS, v -> PRICER.presentValue(CAPLET_LONG, RATES, v)); testSurfaceSensitivity(computedFloorlet, VOLS, v -> PRICER.presentValue(FLOORLET_SHORT, RATES, v)); }