Examples of VolatilitySurface


Examples of com.opengamma.analytics.financial.model.volatility.surface.VolatilitySurface

    return message;
  }

  @Override
  public FunctionalVolatilitySurfaceData buildObject(final FudgeDeserializer deserializer, final FudgeMsg message) {
    final VolatilitySurface surface = deserializer.fieldValueToObject(VolatilitySurface.class, message.getByName(SURFACE_FIELD));
    final String xLabel = message.getString(X_LABEL_FIELD);
    final double xMinimum = message.getDouble(X_MINIMUM_FIELD);
    final double xMaximum = message.getDouble(X_MAXIMUM_FIELD);
    final int nX = message.getInt(X_SAMPLES_FIELD);
    final String yLabel = message.getString(Y_LABEL_FIELD);
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.surface.VolatilitySurface

      public Double evaluate(final Double... x) {
        return surface.getZValue(x[0] + time, x[1]);
      }

    };
    return new VolatilitySurface(FunctionalDoublesSurface.from(shiftedFunction));
  }
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.surface.VolatilitySurface

      @Override
      public Double evaluate(final BatesGeneralizedJumpDiffusionModelDataBundle data) {
        Validate.notNull(data);
        final double s = data.getSpot();
        final YieldAndDiscountCurve discountCurve = data.getInterestRateCurve();
        final VolatilitySurface volSurface = data.getVolatilitySurface();
        final ZonedDateTime date = data.getDate();
        final double t = definition.getTimeToExpiry(date);
        final double k = definition.getStrike();
        final double sigma = data.getVolatility(t, k);
        double b = data.getCostOfCarry();
        final double lambda = data.getLambda();
        final double expectedJumpSize = data.getExpectedJumpSize();
        final double delta = data.getDelta();
        final double gamma = Math.log(1 + expectedJumpSize);
        final double sigmaSq = sigma * sigma;
        double z;
        final double lambdaT = lambda * t;
        double mult = Math.exp(-lambdaT);
        b -= lambda * expectedJumpSize;
        StandardOptionDataBundle bsmData = new StandardOptionDataBundle(discountCurve, b, volSurface, s, date);
        final Function1D<StandardOptionDataBundle, Double> bsmFunction = BSM.getPricingFunction(definition);
        double price = mult * bsmFunction.evaluate(bsmData);
        for (int i = 1; i < N; i++) {
          z = Math.sqrt(sigmaSq + delta * delta * i / t);
          b += gamma / t;
          bsmData = bsmData.withVolatilitySurface(new VolatilitySurface(ConstantDoublesSurface.from(z))).withCostOfCarry(b);
          mult *= lambdaT / i;
          price += mult * bsmFunction.evaluate(bsmData);
        }
        return price;
      }
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.surface.VolatilitySurface

        final double df = getDF(r, b, t);
        final double sDf = s * df;
        final double d1 = getD(s, k, b, meanVariance, t);
        final double d2 = d1 - Math.sqrt(meanVariance * t);
        final double nD1 = NORMAL.getPDF(d1);
        final double f0 = BSM.getPricingFunction(call).evaluate(bsmData.withVolatilitySurface(new VolatilitySurface(ConstantDoublesSurface.from(Math.sqrt(meanVariance)))));
        final double f1 = getF1(betaIsZero, variance, rho, alpha, t, beta, delta, eDelta, sDf, nD1, d2, meanVariance);
        final double f2 = getF2(betaIsZero, variance, rho, alpha, t, beta, delta, eDelta, sDf, nD1, d1, d2, meanVariance);
        final double callPrice = f0 + f1 * volOfSigma + f2 * volOfSigma * volOfSigma;
        if (!definition.isCall()) {
          return callPrice - s * df + k * Math.exp(-r * t);
 
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.surface.VolatilitySurface

        final double z = Math.sqrt(sigmaSq - lambda * delta * delta);
        final double zSq = z * z;
        double sigmaAdjusted = z;
        final double lambdaT = lambda * t;
        double mult = Math.exp(-lambdaT);
        final StandardOptionDataBundle bsmData = new StandardOptionDataBundle(data.getInterestRateCurve(), data.getCostOfCarry(), new VolatilitySurface(ConstantDoublesSurface.from(sigmaAdjusted)),
            data.getSpot(), date);
        final Function1D<StandardOptionDataBundle, Double> bsmFunction = BSM.getPricingFunction(definition);
        double price = mult * bsmFunction.evaluate(bsmData);
        for (int i = 1; i < N; i++) {
          sigmaAdjusted = Math.sqrt(zSq + delta * delta * i / t);
          mult *= lambdaT / i;
          price += mult * bsmFunction.evaluate(bsmData.withVolatilitySurface(new VolatilitySurface(ConstantDoublesSurface.from(sigmaAdjusted))));
        }
        return price;
      }
    };
    return pricingFunction;
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.surface.VolatilitySurface

  @Override
  public Double visitDVannaDVol() {
    final double s = _data.getSpot();
    final double sUp = s + EPS;
    final double sDown = s - EPS;
    final VolatilitySurface upSurface = _data.getVolatilitySurface().withParallelShift(EPS);
    final VolatilitySurface downSurface = _data.getVolatilitySurface().withParallelShift(-EPS);
    final S dataUp1Up1 = (S) _data.withVolatilitySurface(upSurface).withSpot(sUp);
    final S dataUp2 = (S) _data.withSpot(sUp);
    final S dataDown1Up2 = (S) _data.withVolatilitySurface(downSurface).withSpot(sUp);
    final S dataUp1Down2 = (S) _data.withVolatilitySurface(upSurface).withSpot(sDown);
    final S dataDown2 = (S) _data.withSpot(sDown);
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.surface.VolatilitySurface

    return getSecondDerivative(dataUp, dataDown, _data);
  }

  @Override
  public Double visitVega() {
    final VolatilitySurface upSurface = _data.getVolatilitySurface().withParallelShift(EPS);
    final VolatilitySurface downSurface = _data.getVolatilitySurface().withParallelShift(-EPS);
    final S dataUp = (S) _data.withVolatilitySurface(upSurface);
    final S dataDown = (S) _data.withVolatilitySurface(downSurface);
    return getFirstDerivative(dataUp, dataDown);
  }
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.surface.VolatilitySurface

    return null;
  }

  @Override
  public Double visitUltima() {
    final VolatilitySurface upUpSurface = _data.getVolatilitySurface().withParallelShift(2 * EPS);
    final VolatilitySurface upSurface = _data.getVolatilitySurface().withParallelShift(EPS);
    final VolatilitySurface downSurface = _data.getVolatilitySurface().withParallelShift(-EPS);
    final S dataUpUp = (S) _data.withVolatilitySurface(upUpSurface);
    final S dataUp = (S) _data.withVolatilitySurface(upSurface);
    final S dataDown = (S) _data.withVolatilitySurface(downSurface);
    return getThirdDerivative(dataUpUp, dataUp, _data, dataDown);
  }
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.surface.VolatilitySurface

  @Override
  public Double visitVanna() {
    final double s = _data.getSpot();
    final double sUp = s + EPS;
    final double sDown = s - EPS;
    final VolatilitySurface upSurface = _data.getVolatilitySurface().withParallelShift(EPS);
    final VolatilitySurface downSurface = _data.getVolatilitySurface().withParallelShift(-EPS);
    final S dataUp1Up2 = (S) _data.withSpot(sUp).withVolatilitySurface(upSurface);
    final S dataUp1Down2 = (S) _data.withSpot(sDown).withVolatilitySurface(upSurface);
    final S dataDown1Up2 = (S) _data.withSpot(sUp).withVolatilitySurface(downSurface);
    final S dataDown1Down2 = (S) _data.withSpot(sDown).withVolatilitySurface(downSurface);
    return getMixedSecondDerivative(dataUp1Up2, dataUp1Down2, dataDown1Up2, dataDown1Down2);
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.surface.VolatilitySurface

  @Override
  public Double visitVarianceUltima() {
    final double t = _definition.getTimeToExpiry(_data.getDate());
    final double sigma = _data.getVolatility(t, _definition.getStrike());
    final double variance = sigma * sigma;
    final VolatilitySurface upUpSurface = new VolatilitySurface(ConstantDoublesSurface.from(Math.sqrt(variance + 2 * EPS)));
    final VolatilitySurface upSurface = new VolatilitySurface(ConstantDoublesSurface.from(Math.sqrt(variance + EPS)));
    final VolatilitySurface downSurface = new VolatilitySurface(ConstantDoublesSurface.from(Math.sqrt(variance - EPS)));
    final S dataUpUp = (S) _data.withVolatilitySurface(upUpSurface);
    final S dataUp = (S) _data.withVolatilitySurface(upSurface);
    final S dataDown = (S) _data.withVolatilitySurface(downSurface);
    return getThirdDerivative(dataUpUp, dataUp, _data, dataDown);
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.