@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 111972721: // value return ((DeltaStrike) bean).getValue(); } return super.propertyGet(bean, propertyName, quiet); }
@Override public DeltaStrike build() { return new DeltaStrike( value); }
private DeltaStrike( double value) { this.value = value; validate(); }
private static ImmutableList<ParameterMetadata> createParameterMetadata(double expiry, DoubleArray delta) { ArgChecker.notNull(delta, "delta"); int nbDelta = delta.size(); ParameterMetadata[] parameterMetadata = new ParameterMetadata[2 * nbDelta + 1]; parameterMetadata[nbDelta] = GenericVolatilitySurfaceYearFractionParameterMetadata.of(expiry, DeltaStrike.of(0.5d)); for (int i = 0; i < nbDelta; i++) { parameterMetadata[i] = GenericVolatilitySurfaceYearFractionParameterMetadata.of(expiry, DeltaStrike.of(1d - delta.get(i))); // Put parameterMetadata[2 * nbDelta - i] = GenericVolatilitySurfaceYearFractionParameterMetadata.of(expiry, DeltaStrike.of(delta.get(i))); // Call } return ImmutableList.copyOf(parameterMetadata); }
public void test_of_withStrikeType() { FxVolatilitySurfaceYearFractionParameterMetadata test = FxVolatilitySurfaceYearFractionParameterMetadata.of(TIME_TO_EXPIRY, STRIKE, CURRENCY_PAIR); assertEquals(test.getCurrencyPair(), CURRENCY_PAIR); assertEquals(test.getIdentifier(), Pair.of(TIME_TO_EXPIRY, STRIKE)); assertEquals(test.getLabel(), Pair.of(TIME_TO_EXPIRY, STRIKE.getLabel()).toString()); assertEquals(test.getStrike(), STRIKE); assertEquals(test.getYearFraction(), TIME_TO_EXPIRY); }
public void test_builder_noLabel() { BeanBuilder<? extends FxVolatilitySurfaceYearFractionParameterMetadata> builder = FxVolatilitySurfaceYearFractionParameterMetadata.meta().builder(); Pair<Double, Strike> pair = Pair.of(TIME_TO_EXPIRY, STRIKE); builder.set(FxVolatilitySurfaceYearFractionParameterMetadata.meta().currencyPair(), CURRENCY_PAIR); builder.set(FxVolatilitySurfaceYearFractionParameterMetadata.meta().yearFraction(), TIME_TO_EXPIRY); builder.set(FxVolatilitySurfaceYearFractionParameterMetadata.meta().strike(), STRIKE); FxVolatilitySurfaceYearFractionParameterMetadata test = builder.build(); assertEquals(test.getCurrencyPair(), CURRENCY_PAIR); assertEquals(test.getIdentifier(), pair); assertEquals(test.getLabel(), Pair.of(TIME_TO_EXPIRY, STRIKE.getLabel()).toString()); assertEquals(test.getStrike(), STRIKE); assertEquals(test.getYearFraction(), TIME_TO_EXPIRY); }
/** * Obtains an instance of {@code Delta} with the value of absolute delta. * * @param delta the value of absolute delta * @return the instance */ public static DeltaStrike of(double delta) { return new DeltaStrike(delta); }
public void test_serialization() { DeltaStrike test = DeltaStrike.of(0.6d); assertSerialization(test); }
@Override public DeltaStrike withValue(double value) { return new DeltaStrike(value); }
private CurrencyParameterSensitivity parameterSensitivity(FxOptionSensitivity point) { double expiryTime = point.getExpiry(); double strike = currencyPair.isInverse(point.getCurrencyPair()) ? 1d / point.getStrike() : point.getStrike(); double forward = currencyPair.isInverse(point.getCurrencyPair()) ? 1d / point.getForward() : point.getForward(); double pointValue = point.getSensitivity(); DoubleMatrix bucketedSensi = smile.volatilityAndSensitivities(expiryTime, strike, forward).getSensitivities(); double[] times = smile.getExpiries().toArray(); int nTimes = times.length; List<Double> sensiList = new ArrayList<Double>(); List<ParameterMetadata> paramList = new ArrayList<ParameterMetadata>(); for (int i = 0; i < nTimes; ++i) { DoubleArray deltas = smile.getVolatilityTerm().get(i).getDelta(); int nDeltas = deltas.size(); int nDeltasTotal = 2 * nDeltas + 1; double[] deltasTotal = new double[nDeltasTotal]; // absolute delta deltasTotal[nDeltas] = 0.5d; for (int j = 0; j < nDeltas; ++j) { deltasTotal[j] = 1d - deltas.get(j); deltasTotal[2 * nDeltas - j] = deltas.get(j); } for (int j = 0; j < nDeltasTotal; ++j) { sensiList.add(bucketedSensi.get(i, j) * pointValue); DeltaStrike absoluteDelta = DeltaStrike.of(deltasTotal[j]); ParameterMetadata parameterMetadata = FxVolatilitySurfaceYearFractionParameterMetadata.of( times[i], absoluteDelta, currencyPair); paramList.add(parameterMetadata); } } return CurrencyParameterSensitivity.of(name, paramList, point.getCurrency(), DoubleArray.copyOf(sensiList)); }