Examples of EuropeanVanillaOptionDefinition


Examples of com.opengamma.analytics.financial.model.option.definition.EuropeanVanillaOptionDefinition

      if (i % 2 == 0) {
        impliedTree[i][mid] = spot;
        addUpperNodes(data, impliedTree, arrowDebreu, i, crrModel, df1, df2, expiry, mid + 1);
        addLowerNodes(data, impliedTree, arrowDebreu, i, crrModel, df1, df2, expiry, mid - 1);
      } else {
        final double c = crrModel.getTreeGeneratingFunction(new EuropeanVanillaOptionDefinition(spot, expiry, true)).evaluate(data).getNode(0, 0).second;
        final double sigma = getUpperSigma(impliedTree, arrowDebreu, i - 1, df2, mid + 1);
        impliedTree[i][mid + 1] = spot * (df1 * c + arrowDebreu[mid] * spot - sigma) / (arrowDebreu[mid] * impliedTree[i - 1][mid] * df2 - df1 * c + sigma);
        impliedTree[i][mid] = spot * spot / impliedTree[i][mid + 1];
        addUpperNodes(data, impliedTree, arrowDebreu, i, crrModel, df1, df2, expiry, mid + 2);
        addLowerNodes(data, impliedTree, arrowDebreu, i, crrModel, df1, df2, expiry, mid - 1);
View Full Code Here

Examples of com.opengamma.analytics.financial.model.option.definition.EuropeanVanillaOptionDefinition

  private void addLowerNodes(final StandardOptionDataBundle data, final double[][] impliedTree, final double[] arrowDebreu, final int step,
      final BinomialOptionModel<StandardOptionDataBundle> crrModel, final double df1, final double df2, final Expiry expiry, final int mid) {
    double sigma = getLowerSigma(impliedTree, arrowDebreu, step - 1, df2, mid);
    for (int i = mid; i >= 0; i--) {
      final double p = crrModel.getTreeGeneratingFunction(new EuropeanVanillaOptionDefinition(impliedTree[step - 1][i], expiry, false)).evaluate(data).getNode(0, 0).second;
      final double forward = impliedTree[step - 1][i] * df2;
      impliedTree[step][i] = (impliedTree[step][i + 1] * (df1 * p - sigma) + arrowDebreu[i] * impliedTree[step - 1][i] * (forward - impliedTree[step][i + 1]))
          / (df1 * p - sigma + arrowDebreu[i] * (forward - impliedTree[step][i + 1]));
      if (i > 0) {
        sigma -= arrowDebreu[i - 1] * (impliedTree[step - 1][i] - impliedTree[step - 1][i - 1] * df2);
 
View Full Code Here

Examples of com.opengamma.analytics.financial.model.option.definition.EuropeanVanillaOptionDefinition

  private void addUpperNodes(final StandardOptionDataBundle data, final double[][] impliedTree, final double[] arrowDebreu, final int step,
      final BinomialOptionModel<StandardOptionDataBundle> crrModel, final double df1, final double df2, final Expiry expiry, final int mid) {
    double sigma = getUpperSigma(impliedTree, arrowDebreu, step - 1, df2, mid);
    for (int i = mid; i < RecombiningBinomialTree.NODES.evaluate(step); i++) {
      final double c = crrModel.getTreeGeneratingFunction(new EuropeanVanillaOptionDefinition(impliedTree[step - 1][i - 1], expiry, true)).evaluate(data).getNode(0, 0).second;
      final double forward = impliedTree[step - 1][i - 1] * df2;
      impliedTree[step][i] = (impliedTree[step][i - 1] * (df1 * c - sigma) - arrowDebreu[i - 1] * impliedTree[step - 1][i - 1] * (forward - impliedTree[step][i - 1]))
          / (df1 * c - sigma - arrowDebreu[i - 1] * (forward - impliedTree[step][i - 1]));
      sigma -= arrowDebreu[i] * (impliedTree[step - 1][i] * df2 - impliedTree[step - 1][i - 1]);
    }
View Full Code Here

Examples of com.opengamma.analytics.financial.model.option.definition.EuropeanVanillaOptionDefinition

        final double skew = data.getAnnualizedSkew();
        final double kurtosis = data.getAnnualizedFisherKurtosis();
        final double sigmaT = sigma * Math.sqrt(t);
        OptionDefinition callDefinition = definition;
        if (!definition.isCall()) {
          callDefinition = new EuropeanVanillaOptionDefinition(callDefinition.getStrike(), callDefinition.getExpiry(), true);
        }
        final Function1D<StandardOptionDataBundle, Double> bsm = BSM.getPricingFunction(callDefinition);
        final double bsmCall = bsm.evaluate(data);
        final double w = getW(sigma, t, skew, kurtosis);
        final double d = getD(s, k, sigma, t, b, w, sigmaT);
View Full Code Here

Examples of com.opengamma.analytics.financial.model.option.definition.EuropeanVanillaOptionDefinition

        final ZonedDateTime date = data.getDate();
        final double t1 = definition.getTimeToExpiry(date);
        final double sigma = data.getVolatility(t1, k1);
        final double r = data.getInterestRate(t1);
        final double b = data.getCostOfCarry();
        final OptionDefinition callDefinition = underlying.isCall() ? underlying : new EuropeanVanillaOptionDefinition(k2, underlying.getExpiry(), true);
        final GreekResultCollection result = BSM.getGreeks(callDefinition, data, REQUIRED_GREEKS);
        final double callBSM = result.get(Greek.FAIR_PRICE);
        final double callDelta = result.get(Greek.DELTA);
        final double underlyingSigma = sigma * Math.abs(callDelta) * s / callBSM;
        final double d1 = getD1(callBSM, k1, t1, underlyingSigma, b);
View Full Code Here

Examples of com.opengamma.analytics.financial.model.option.definition.EuropeanVanillaOptionDefinition

        final double t2 = definition.getUnderlyingOption().getTimeToExpiry(date);
        final double deltaT = t2 - t1;
        final double sigma = data.getVolatility(t1, k1); //REVIEW emcleod 20-7-10 This will work with a flat volatility surface but otherwise will give odd results
        final double r = data.getInterestRate(t1);
        final double b = data.getCostOfCarry();
        final double criticalValue = getCriticalValue(new EuropeanVanillaOptionDefinition(k2, new Expiry(DateUtils.getDateOffsetWithYearFraction(date, deltaT)), underlying.isCall()), data, k1);
        final double d1 = getD1(s, criticalValue, t1, sigma, b);
        final double d2 = getD2(d1, sigma, t1);
        final double d3 = getD1(s, k2, t2, sigma, b);
        final double d4 = getD2(d3, sigma, t2);
        if (definition.isCall()) {
View Full Code Here

Examples of com.opengamma.analytics.financial.model.option.definition.EuropeanVanillaOptionDefinition

        final double lambda = data.getHalfLife();
        final double sigmaLR = data.getLongRunVolatility();
        final double volOfSigma = data.getVolatilityOfVolatility();
        final double rho = data.getCorrelation();
        final StandardOptionDataBundle bsmData = new StandardOptionDataBundle(data);
        final OptionDefinition call = definition.isCall() ? definition : new EuropeanVanillaOptionDefinition(k, definition.getExpiry(), true);
        final double beta = -Math.log(2) / lambda;
        final double alpha = -beta * sigmaLR * sigmaLR;
        final double delta = beta * t;
        final double eDelta = Math.exp(delta);
        final boolean betaIsZero = CompareUtils.closeEquals(beta, 0, ZERO);
View Full Code Here

Examples of com.opengamma.analytics.financial.model.option.definition.EuropeanVanillaOptionDefinition

        final double sigma = data.getVolatility(t, k);
        final double r = data.getInterestRate(t);
        final double b = data.getCostOfCarry();
        final double skew = data.getAnnualizedSkew();
        final double kurtosis = data.getAnnualizedPearsonKurtosis();
        final OptionDefinition callDefinition = definition.isCall() ? definition : new EuropeanVanillaOptionDefinition(k, definition.getExpiry(), true);
        final Function1D<StandardOptionDataBundle, Double> bsm = BSM.getPricingFunction(callDefinition);
        final double bsmCall = bsm.evaluate(data);
        final double d2 = getD2(getD1(s, k, t, sigma, b), sigma, t);
        final double sigmaT = sigma * Math.sqrt(t);
        final double a = getA(d2, k, sigmaT);
View Full Code Here

Examples of com.opengamma.analytics.financial.model.option.definition.EuropeanVanillaOptionDefinition

  public void test() {
    assertEquals(MODEL.getSurface(OPTION, DATA).getVolatility(PAIR), 0.3454, EPS);
    SABRDataBundle data1 = DATA.withRho(-0.75).withBeta(0.999);
    SABRDataBundle data2 = DATA.withRho(0).withBeta(0.999);
    SABRDataBundle data3 = DATA.withRho(0.5).withBeta(0.999);
    OptionDefinition option = new EuropeanVanillaOptionDefinition(70, EXPIRY, false);
    data1 = CALIBRATION.calibrate(option, data1);
    data2 = CALIBRATION.calibrate(option, data2);
    data3 = CALIBRATION.calibrate(option, data3);
    assertEquals(MODEL.getSurface(option, data1).getVolatility(PAIR), 0.3668, EPS);
    assertEquals(MODEL.getSurface(option, data2).getVolatility(PAIR), 0.3165, EPS);
    assertEquals(MODEL.getSurface(option, data3).getVolatility(PAIR), 0.2709, EPS);
    option = new EuropeanVanillaOptionDefinition(80, EXPIRY, false);
    data1 = CALIBRATION.calibrate(option, data1);
    data2 = CALIBRATION.calibrate(option, data2);
    data3 = CALIBRATION.calibrate(option, data3);
    assertEquals(MODEL.getSurface(option, data1).getVolatility(PAIR), 0.3418, EPS);
    assertEquals(MODEL.getSurface(option, data2).getVolatility(PAIR), 0.3068, EPS);
    assertEquals(MODEL.getSurface(option, data3).getVolatility(PAIR), 0.2774, EPS);
    option = new EuropeanVanillaOptionDefinition(90, EXPIRY, false);
    data1 = CALIBRATION.calibrate(option, data1);
    data2 = CALIBRATION.calibrate(option, data2);
    data3 = CALIBRATION.calibrate(option, data3);
    assertEquals(MODEL.getSurface(option, data1).getVolatility(PAIR), 0.3197, EPS);
    assertEquals(MODEL.getSurface(option, data2).getVolatility(PAIR), 0.3016, EPS);
    assertEquals(MODEL.getSurface(option, data3).getVolatility(PAIR), 0.2878, EPS);
    option = new EuropeanVanillaOptionDefinition(100, EXPIRY, false);
    data1 = CALIBRATION.calibrate(option, data1);
    data2 = CALIBRATION.calibrate(option, data2);
    data3 = CALIBRATION.calibrate(option, data3);
    assertEquals(MODEL.getSurface(option, data1).getVolatility(PAIR), 0.3000, EPS);
    assertEquals(MODEL.getSurface(option, data2).getVolatility(PAIR), 0.3000, EPS);
    assertEquals(MODEL.getSurface(option, data3).getVolatility(PAIR), 0.3000, EPS);
    option = new EuropeanVanillaOptionDefinition(110, EXPIRY, false);
    data1 = CALIBRATION.calibrate(option, data1);
    data2 = CALIBRATION.calibrate(option, data2);
    data3 = CALIBRATION.calibrate(option, data3);
    assertEquals(MODEL.getSurface(option, data1).getVolatility(PAIR), 0.2826, EPS);
    assertEquals(MODEL.getSurface(option, data2).getVolatility(PAIR), 0.3013, EPS);
    assertEquals(MODEL.getSurface(option, data3).getVolatility(PAIR), 0.3128, EPS);
    option = new EuropeanVanillaOptionDefinition(120, EXPIRY, false);
    data1 = CALIBRATION.calibrate(option, data1);
    data2 = CALIBRATION.calibrate(option, data2);
    data3 = CALIBRATION.calibrate(option, data3);
    assertEquals(MODEL.getSurface(option, data1).getVolatility(PAIR), 0.2674, EPS);
    assertEquals(MODEL.getSurface(option, data2).getVolatility(PAIR), 0.3046, EPS);
    assertEquals(MODEL.getSurface(option, data3).getVolatility(PAIR), 0.3255, EPS);
    option = new EuropeanVanillaOptionDefinition(130, EXPIRY, false);
    data1 = CALIBRATION.calibrate(option, data1);
    data2 = CALIBRATION.calibrate(option, data2);
    data3 = CALIBRATION.calibrate(option, data3);
    assertEquals(MODEL.getSurface(option, data1).getVolatility(PAIR), 0.2546, EPS);
    assertEquals(MODEL.getSurface(option, data2).getVolatility(PAIR), 0.3092, EPS);
View Full Code Here

Examples of com.opengamma.analytics.financial.model.option.definition.EuropeanVanillaOptionDefinition

    MODEL.getSurface(Collections.<OptionDefinition, Double> emptyMap(), DATA);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullData() {
    MODEL.getSurface(Collections.<OptionDefinition, Double> singletonMap(new EuropeanVanillaOptionDefinition(RANDOM.nextDouble(), new Expiry(DATE), true), 2.3), null);
  }
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.