/** * Gets a label describing the strike. * * @return the label */ public default String getLabel() { return getType() + "=" + getValue(); }
public void test_surfaceParameterSensitivity() { for (int i = 0; i < NB_EXPIRY; i++) { for (int j = 0; j < NB_STRIKE; ++j) { double timeToExpiry = VOLS.relativeTime(TEST_EXPIRY[i]); FxOptionSensitivity sensi = FxOptionSensitivity.of( VOLS.getName(), CURRENCY_PAIR, timeToExpiry, TEST_STRIKE[j], FORWARD[i], GBP, 1d); CurrencyParameterSensitivity computed = VOLS.parameterSensitivity(sensi).getSensitivities().get(0); Iterator<ParameterMetadata> itr = computed.getParameterMetadata().iterator(); for (double value : computed.getSensitivity().toArray()) { FxVolatilitySurfaceYearFractionParameterMetadata meta = ((FxVolatilitySurfaceYearFractionParameterMetadata) itr.next()); double nodeExpiry = meta.getYearFraction(); double nodeDelta = meta.getStrike().getValue(); double expected = nodeSensitivity( VOLS, CURRENCY_PAIR, TEST_EXPIRY[i], TEST_STRIKE[j], FORWARD[i], nodeExpiry, nodeDelta); assertEquals(value, expected, EPS); } } } }
for (int j = 0; j < nVol; ++j) { GenericVolatilitySurfaceYearFractionParameterMetadata meta = (GenericVolatilitySurfaceYearFractionParameterMetadata) list.get(j); if (meta.getYearFraction() == TIME.get(i) && meta.getStrike().getValue() == MONEYNESS.get(i)) { index = j; continue;
public void test_surfaceParameterSensitivity_inverse() { for (int i = 0; i < NB_EXPIRY; i++) { for (int j = 0; j < NB_STRIKE; ++j) { double timeToExpiry = VOLS.relativeTime(TEST_EXPIRY[i]); FxOptionSensitivity sensi = FxOptionSensitivity.of( VOLS.getName(), CURRENCY_PAIR.inverse(), timeToExpiry, 1d / TEST_STRIKE[j], 1d / FORWARD[i], GBP, 1d); CurrencyParameterSensitivity computed = VOLS.parameterSensitivity(sensi).getSensitivities().get(0); Iterator<ParameterMetadata> itr = computed.getParameterMetadata().iterator(); for (double value : computed.getSensitivity().toArray()) { FxVolatilitySurfaceYearFractionParameterMetadata meta = ((FxVolatilitySurfaceYearFractionParameterMetadata) itr.next()); double nodeExpiry = meta.getYearFraction(); double nodeDelta = meta.getStrike().getValue(); double expected = nodeSensitivity(VOLS, CURRENCY_PAIR.inverse(), TEST_EXPIRY[i], 1d / TEST_STRIKE[j], 1d / FORWARD[i], nodeExpiry, nodeDelta); assertEquals(value, expected, EPS); } } } }
for (int j = 0; j < nVol; ++j) { GenericVolatilitySurfaceYearFractionParameterMetadata meta = (GenericVolatilitySurfaceYearFractionParameterMetadata) list.get(j); if (meta.getYearFraction() == TIME.get(i) && meta.getStrike().getValue() == MONEYNESS.get(i)) { index = j; continue;
GenericVolatilitySurfacePeriodParameterMetadata metadata = (GenericVolatilitySurfacePeriodParameterMetadata) surface.getParameterMetadata(i); assertEquals(metadata.getStrike().getValue(), surface.getYValues().get(i));
GenericVolatilitySurfacePeriodParameterMetadata metadata = (GenericVolatilitySurfacePeriodParameterMetadata) surface.getParameterMetadata(i); assertEquals(metadata.getStrike().getValue() + 0.02, surface.getYValues().get(i));
GenericVolatilitySurfacePeriodParameterMetadata metadata = (GenericVolatilitySurfacePeriodParameterMetadata) surface.getParameterMetadata(i); assertEquals(metadata.getStrike().getValue(), surface.getYValues().get(i));