Examples of SABRFormulaData


Examples of com.opengamma.analytics.financial.model.volatility.smile.function.SABRFormulaData

      final DoublesPair expiryMaturity = new DoublesPair(cap.getFixingTime(), maturity);
      final double alpha = sabrData.getSABRParameter().getAlpha(expiryMaturity);
      final double beta = sabrData.getSABRParameter().getBeta(expiryMaturity);
      final double rho = sabrData.getSABRParameter().getRho(expiryMaturity);
      final double nu = sabrData.getSABRParameter().getNu(expiryMaturity);
      final SABRFormulaData sabrParam = new SABRFormulaData(alpha, beta, rho, nu);
      sabrExtrapolation = new SABRExtrapolationRightFunction(forward, sabrParam, _cutOffStrike, cap.getFixingTime(), _mu);
      price = df * sabrExtrapolation.price(option) * cap.getNotional() * cap.getPaymentYearFraction();
    }
    return CurrencyAmount.of(cap.getCurrency(), price);
  }
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.smile.function.SABRFormulaData

      final DoublesPair expiryMaturity = new DoublesPair(cap.getFixingTime(), maturity);
      final double alpha = sabrData.getSABRParameter().getAlpha(expiryMaturity);
      final double beta = sabrData.getSABRParameter().getBeta(expiryMaturity);
      final double rho = sabrData.getSABRParameter().getRho(expiryMaturity);
      final double nu = sabrData.getSABRParameter().getNu(expiryMaturity);
      final SABRFormulaData sabrParam = new SABRFormulaData(alpha, beta, rho, nu);
      final SABRExtrapolationRightFunction sabrExtrapolation = new SABRExtrapolationRightFunction(forward, sabrParam, _cutOffStrike, cap.getFixingTime(), _mu);
      bsPrice = sabrExtrapolation.price(option);
      bsDforward = sabrExtrapolation.priceDerivativeForward(option);
    }
    result = result.multipliedBy(bsPrice);
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.smile.function.SABRFormulaData

      final DoublesPair expiryMaturity = new DoublesPair(cap.getFixingTime(), maturity);
      final double alpha = sabrData.getSABRParameter().getAlpha(expiryMaturity);
      final double beta = sabrData.getSABRParameter().getBeta(expiryMaturity);
      final double rho = sabrData.getSABRParameter().getRho(expiryMaturity);
      final double nu = sabrData.getSABRParameter().getNu(expiryMaturity);
      final SABRFormulaData sabrParam = new SABRFormulaData(alpha, beta, rho, nu);
      final SABRExtrapolationRightFunction sabrExtrapolation = new SABRExtrapolationRightFunction(forward, sabrParam, _cutOffStrike, cap.getFixingTime(), _mu);
      sabrExtrapolation.priceAdjointSABR(option, bsDsabr);
    }
    final PresentValueSABRSensitivityDataBundle sensi = new PresentValueSABRSensitivityDataBundle();
    final DoublesPair expiryMaturity = new DoublesPair(cap.getFixingTime(), maturity);
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.smile.function.SABRFormulaData

    super(forwards, strikes, expiries, impliedVols, errors, model, knotPoints, interpolators);
  }

  @Override
  protected SABRFormulaData toSmileModelData(final double[] modelParameters) {
    return new SABRFormulaData(modelParameters);
  }
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.smile.function.SABRFormulaData

    if (n == 3) {
      if (gRes.getChiSq() / n > 1.0) {
        s_logger.warn("chi^2 on SABR fit to ", +n + " points is " + gRes.getChiSq());
      }
      modelParams[0] = new SABRFormulaData(gRes.getModelParameters().getData());
    } else {
      //impose a global beta on the remaining 3 point fits
      final double[] gFitParms = gRes.getModelParameters().getData();
      final double beta = gFitParms[1];
      start = new DoubleMatrix1D(gFitParms[0], gFitParms[2], gFitParms[3]);
      final BroydenVectorRootFinder rootFinder = new BroydenVectorRootFinder();

      double[] tStrikes = new double[3];
      double[] tVols = new double[3];

      for (int i = 0; i < n - 2; i++) {
        tStrikes = Arrays.copyOfRange(strikes, i, i + 3);
        tVols = Arrays.copyOfRange(impliedVols, i, i + 3);
        final Function1D<DoubleMatrix1D, DoubleMatrix1D> func = getVolDiffFunc(forward, tStrikes, expiry, tVols);
        final Function1D<DoubleMatrix1D, DoubleMatrix2D> jac = getVolJacFunc(forward, tStrikes, expiry, beta);
        final NonLinearTransformFunction tf = new NonLinearTransformFunction(func, jac, TRANSFORM);
        final DoubleMatrix1D res = rootFinder.getRoot(tf.getFittingFunction(), tf.getFittingJacobian(), start);
        final double[] root = TRANSFORM.inverseTransform(res).getData();
        modelParams[i] = new SABRFormulaData(new double[] {root[0], beta, root[1], root[2] });
      }
    }

    return modelParams;
  }
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.smile.function.SABRFormulaData

      public DoubleMatrix1D evaluate(final DoubleMatrix1D x) {
        final double sigma = x.getEntry(0);
        final double theta = x.getEntry(1);
        final double phi = x.getEntry(2);
        final double[] params = new double[] {sigma, 0.0, theta, phi };
        final SABRFormulaData data = new SABRFormulaData(params);
        final double[] vols = func.evaluate(data);
        final double[] res = new double[n];
        for (int i = 0; i < n; i++) {
          res[i] = vols[i] - impliedVols[i];
        }
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.smile.function.SABRFormulaData

      public DoubleMatrix2D evaluate(final DoubleMatrix1D x) {
        final double alpha = x.getEntry(0);
        final double rho = x.getEntry(1);
        final double nu = x.getEntry(2);
        final double[] params = new double[] {alpha, beta, rho, nu };
        final SABRFormulaData data = new SABRFormulaData(params);

        final double[][] temp = adjointFunc.evaluate(data);
        //remove the delta sigma sense
        final double[][] res = new double[3][3];
        for (int i = 0; i < 3; i++) {
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.smile.function.SABRFormulaData

      public Double evaluate(final Double strike) {
        final EuropeanVanillaOption option = new EuropeanVanillaOption(strike, expiry, true);
        final Function1D<SABRFormulaData, Double> vFunc = MODEL.getVolatilityFunction(option, forward);
        final int index = SurfaceArrayUtils.getLowerBoundIndex(strikes, strike);
        if (index == 0) {
          final SABRFormulaData p = modelParams[0];

          return vFunc.evaluate(p);
        }
        if (index >= n - 2) {
          final SABRFormulaData p = modelParams[n - 3];
          return vFunc.evaluate(p);
        }
        final double w = _weightingFunction.getWeight(strikes, index, strike);
        if (w == 1) {
          final SABRFormulaData p1 = modelParams[index - 1];
          return vFunc.evaluate(p1);
        } else if (w == 0) {
          final SABRFormulaData p2 = modelParams[index];
          return vFunc.evaluate(p2);
        } else {
          final SABRFormulaData p1 = modelParams[index - 1];
          final SABRFormulaData p2 = modelParams[index];
          return w * vFunc.evaluate(p1) + (1 - w) * vFunc.evaluate(p2);
        }
      }
    };
  }
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.smile.function.SABRFormulaData

      final double[][] bsD2 = new double[3][3];
      BLACK_FUNCTION.getPriceAdjoint2(option, dataBlack, bsD, bsD2);
      pDSABR[loopparam][0] = bsD[1] * vD[paramIndex];
      final double[] vDpP = new double[6];
      final double[][] vD2pP = new double[2][2];
      SABRFormulaData sabrDatapP;
      double param;
      double paramShift;
      switch (loopparam) {
        case 0:
          param = _sabrData.getAlpha();
View Full Code Here

Examples of com.opengamma.analytics.financial.model.volatility.smile.function.SABRFormulaData

    final double beta = data.getBeta();
    final double rho = data.getRho();
    final double ksi = data.getVolOfVol();
    final double b = data.getCostOfCarry();
    final double f = data.getSpot() * Math.exp(b * t);
    return new VolatilitySurface(ConstantDoublesSurface.from(SABR_FUNCTION.getVolatilityFunction(new EuropeanVanillaOption(k, t, true), f).evaluate(new SABRFormulaData(alpha, beta, rho, ksi))));
  }
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.