@ImmutablePreBuild private static void preBuild(Builder builder) { if (builder.label == null && builder.strike != null) { builder.label = Pair.of(builder.yearFraction, builder.strike.getLabel()).toString(); } }
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;
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;
@ImmutablePreBuild private static void preBuild(Builder builder) { if (builder.label == null && builder.strike != null) { builder.label = Pair.of(builder.period, builder.strike.getLabel()).toString(); } }
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); } } } }
@ImmutablePreBuild private static void preBuild(Builder builder) { if (builder.label == null && builder.strike != null) { builder.label = Pair.of(builder.yearFraction, builder.strike.getLabel()).toString(); } }
GenericVolatilitySurfacePeriodParameterMetadata metadata = (GenericVolatilitySurfacePeriodParameterMetadata) surface.getParameterMetadata(i); assertEquals(metadata.getStrike().getValue(), surface.getYValues().get(i));
/** * Creates node metadata using period and strike. * * @param period the period * @param strike the strike * @return node metadata */ public static GenericVolatilitySurfacePeriodParameterMetadata of( Period period, Strike strike) { String label = Pair.of(period, strike.getLabel()).toString(); return new GenericVolatilitySurfacePeriodParameterMetadata(period, strike, label); }
GenericVolatilitySurfacePeriodParameterMetadata metadata = (GenericVolatilitySurfacePeriodParameterMetadata) surface.getParameterMetadata(i); assertEquals(metadata.getStrike().getValue() + 0.02, surface.getYValues().get(i));
/** * Creates node metadata using year fraction and strike. * * @param yearFraction the year fraction * @param strike the strike * @return node metadata */ public static GenericVolatilitySurfaceYearFractionParameterMetadata of( double yearFraction, Strike strike) { String label = Pair.of(yearFraction, strike.getLabel()).toString(); return new GenericVolatilitySurfaceYearFractionParameterMetadata(yearFraction, strike, label); }
GenericVolatilitySurfacePeriodParameterMetadata metadata = (GenericVolatilitySurfacePeriodParameterMetadata) surface.getParameterMetadata(i); assertEquals(metadata.getStrike().getValue(), surface.getYValues().get(i));
/** * Creates node metadata using year fraction, strike and currency pair. * * @param yearFraction the year fraction * @param strike the strike * @param currencyPair the currency pair * @return node metadata */ public static FxVolatilitySurfaceYearFractionParameterMetadata of( double yearFraction, Strike strike, CurrencyPair currencyPair) { String label = Pair.of(yearFraction, strike.getLabel()).toString(); return new FxVolatilitySurfaceYearFractionParameterMetadata(yearFraction, strike, currencyPair, label); }