Examples of VolatilitySurface


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

  public void testBuilders() {
    final ZonedDateTime newDate = DATE.plusDays(1);
    assertEquals(DATA.withDate(newDate), new GeneralNormalOptionDataBundle(YIELD, DRIFT_SURFACE, VOLATILITY_SURFACE, SPOT, newDate));
    final YieldCurve newCurve = YieldCurve.from(ConstantDoublesCurve.from(0.05));
    assertEquals(DATA.withInterestRateCurve(newCurve), new GeneralNormalOptionDataBundle(newCurve, DRIFT_SURFACE, VOLATILITY_SURFACE, SPOT, DATE));
    final VolatilitySurface newSurface = new VolatilitySurface(ConstantDoublesSurface.from(0.9));
    assertEquals(DATA.withVolatilitySurface(newSurface), new GeneralNormalOptionDataBundle(YIELD, DRIFT_SURFACE, newSurface, SPOT, DATE));
    final DriftSurface newDrift = new DriftSurface(ConstantDoublesSurface.from(0.9));
    assertEquals(DATA.withDriftSurface(newDrift), new GeneralNormalOptionDataBundle(YIELD, newDrift, VOLATILITY_SURFACE, SPOT, DATE));
    final double newSpot = SPOT + 1;
    assertEquals(DATA.withSpot(newSpot), new GeneralNormalOptionDataBundle(YIELD, DRIFT_SURFACE, VOLATILITY_SURFACE, newSpot, DATE));
View Full Code Here

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

    final Currency currency = FinancialSecurityUtils.getCurrency(security);
    final Object volatilitySurfaceObject = inputs.getValue(getVolatilityRequirement(surfaceName, currency));
    if (volatilitySurfaceObject == null) {
      throw new OpenGammaRuntimeException("Could not get volatility surface");
    }
    final VolatilitySurface volatilitySurface = (VolatilitySurface) volatilitySurfaceObject;
    if (!(volatilitySurface.getSurface() instanceof InterpolatedDoublesSurface)) {
      throw new OpenGammaRuntimeException("Expecting an InterpolatedDoublesSurface; got " + volatilitySurface.getSurface().getClass());
    }
    final SecuritySource securitySource = OpenGammaExecutionContext.getSecuritySource(executionContext);
    final Clock snapshotClock = executionContext.getValuationClock();
    final ZonedDateTime now = ZonedDateTime.now(snapshotClock);
    final ConfigSource configSource = OpenGammaExecutionContext.getConfigSource(executionContext);
    final ConfigDBCurveCalculationConfigSource curveCalculationConfigSource = new ConfigDBCurveCalculationConfigSource(configSource);
    final MultiCurveCalculationConfig curveCalculationConfig = curveCalculationConfigSource.getConfig(curveCalculationConfigName);
    if (curveCalculationConfig == null) {
      throw new OpenGammaRuntimeException("Could not find curve calculation configuration named " + curveCalculationConfigName);
    }
    final String[] curveNames = curveCalculationConfig.getYieldCurveNames(); //TODO
    final YieldCurveBundle curves = YieldCurveFunctionUtils.getYieldCurves(inputs, curveCalculationConfig);
    final InstrumentDefinition<?> definition = security.accept(_visitor);
    if (definition == null) {
      throw new OpenGammaRuntimeException("Definition for security " + security + " was null");
    }
    final BlackFlatSwaptionParameters parameters = new BlackFlatSwaptionParameters(volatilitySurface.getSurface(),
        SwaptionUtils.getSwapGenerator(security, definition, securitySource));
    final YieldCurveWithBlackSwaptionBundle blackData = new YieldCurveWithBlackSwaptionBundle(parameters, curves);
    final String daysForward = desiredValue.getConstraint(PROPERTY_DAYS_TO_MOVE_FORWARD);
    final ConstantSpreadHorizonThetaCalculator calculator = ConstantSpreadHorizonThetaCalculator.getInstance();
    if (security.isCashSettled()) {
View Full Code Here

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

  /**
   * Tests the comparison with the other implementation. This test may be removed when only one version remains.
   */
  public void comparison() {
    final AnalyticOptionModel<EuropeanStandardBarrierOptionDefinition, StandardOptionDataBundle> model = new EuropeanStandardBarrierOptionModel();
    final StandardOptionDataBundle data = new StandardOptionDataBundle(YieldCurve.from(ConstantDoublesCurve.from(RATE_DOM)), COST_OF_CARRY, new VolatilitySurface(
        ConstantDoublesSurface.from(VOLATILITY)),
        SPOT, REFERENCE_DATE);
    final Expiry expiry = new Expiry(EXPIRY_DATE);

    final double priceDI1 = BARRIER_FUNCTION.getPrice(VANILLA_CALL_K100, BARRIER_DOWN_IN, REBATE, SPOT, COST_OF_CARRY, RATE_DOM, VOLATILITY);
    final EuropeanStandardBarrierOptionDefinition optionBarrierDI = new EuropeanStandardBarrierOptionDefinition(STRIKE_MID, expiry, IS_CALL, BARRIER_DOWN_IN, REBATE);
    final double priceDI2 = model.getPricingFunction(optionBarrierDI).evaluate(data);
    assertEquals("Comparison Down In", priceDI2, priceDI1, 1.0E-10);

    final double priceDO1 = BARRIER_FUNCTION.getPrice(VANILLA_CALL_K100, BARRIER_DOWN_OUT, REBATE, SPOT, COST_OF_CARRY, RATE_DOM, VOLATILITY);
    final EuropeanStandardBarrierOptionDefinition optionBarrierDO = new EuropeanStandardBarrierOptionDefinition(STRIKE_MID, expiry, IS_CALL, BARRIER_DOWN_OUT, REBATE);
    final double priceDO2 = model.getPricingFunction(optionBarrierDO).evaluate(data);
    assertEquals("Comparison Down Out", priceDO2, priceDO1, 1.0E-10);

    final double priceUI1 = BARRIER_FUNCTION.getPrice(VANILLA_CALL_K100, BARRIER_UP_IN, REBATE, SPOT, COST_OF_CARRY, RATE_DOM, VOLATILITY);
    final EuropeanStandardBarrierOptionDefinition optionBarrierUI = new EuropeanStandardBarrierOptionDefinition(STRIKE_MID, expiry, IS_CALL, BARRIER_UP_IN, REBATE);
    final double priceUI2 = model.getPricingFunction(optionBarrierUI).evaluate(data);
    assertEquals("Comparison Up In", priceUI2, priceUI1, 1.0E-10);

    final double priceUO1 = BARRIER_FUNCTION.getPrice(VANILLA_CALL_K100, BARRIER_UP_OUT, REBATE, SPOT, COST_OF_CARRY, RATE_DOM, VOLATILITY);
    final EuropeanStandardBarrierOptionDefinition optionBarrierUO = new EuropeanStandardBarrierOptionDefinition(STRIKE_MID, expiry, IS_CALL, BARRIER_UP_OUT, REBATE);
    final double priceUO2 = model.getPricingFunction(optionBarrierUO).evaluate(data);
    assertEquals("Comparison Up Out", priceUO2, priceUO1, 1.0E-10);

    final double vol0 = 0.0;
    final double priceVol01 = BARRIER_FUNCTION.getPrice(VANILLA_CALL_K100, BARRIER_DOWN_IN, REBATE, SPOT, COST_OF_CARRY, RATE_DOM, vol0);
    final StandardOptionDataBundle data0 = new StandardOptionDataBundle(YieldCurve.from(ConstantDoublesCurve.from(RATE_DOM)), COST_OF_CARRY, new VolatilitySurface(ConstantDoublesSurface.from(vol0)),
        SPOT,
        REFERENCE_DATE);
    final double priceVol02 = model.getPricingFunction(optionBarrierDI).evaluate(data0);
    assertEquals(priceVol02, priceVol01, 1.0E-10);
  }
View Full Code Here

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

  private static final DecimalFormat LABEL_FORMAT = new DecimalFormat("##.##");

  @Override
  public Object convertForDisplay(ResultConverterCache context, ValueSpecification valueSpec, FunctionalVolatilitySurfaceData value, ConversionMode mode) {
    Map<String, Object> result = new HashMap<String, Object>();
    VolatilitySurface surface = value.getSurface();
    int nX = value.getNXSamples();
    int nY = value.getNYSamples();
    result.put("xCount", nX);
    result.put("yCount", nY);
    if (mode == ConversionMode.FULL) {
      Object[] xs = new Object[nX];
      Object[] ys = new Object[nY];
      double[][] values = new double[nX][nY];
      boolean[][] missingValues = new boolean[nX][nY];
      double xStep = (value.getXMaximum() - value.getXMinimum()) / nX;
      double yStep = (value.getYMaximum() - value.getYMinimum()) / nY;
      double x = value.getXMinimum();
      for (int i = 0; i < nX; i++) {
        xs[i] = LABEL_FORMAT.format(x);
        double y = value.getYMinimum();
        for (int j = 0; j < nY; j++) {
          if (i == 0) {
            ys[j] = LABEL_FORMAT.format(y);
          }
          values[i][j] = 100 * surface.getVolatility(x, y);
          y += yStep;
        }
        x += xStep;
      }
      result.put("xs", xs);
View Full Code Here

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

  @Test
  public void test() {
    double strike = 102;
    DoubleTimeSeries<?> shortTS = ImmutableInstantDoubleTimeSeries.of(new long[] {1}, new double[] {strike});
    StandardOptionWithSpotTimeSeriesDataBundle data = DATA.withSpotTimeSeries(shortTS).withVolatilitySurface(new VolatilitySurface(ConstantDoublesSurface.from(0)));
    OptionDefinition vanilla = new EuropeanVanillaOptionDefinition(strike, EXPIRY, true);
    assertEquals(MODEL.getPricingFunction(CALL).evaluate(data), BSM.getPricingFunction(vanilla).evaluate(data), 1e-9);
    data = data.withCostOfCarry(0);
    assertEquals(MODEL.getPricingFunction(CALL).evaluate(data), BSM.getPricingFunction(vanilla).evaluate(data), 1e-9);
    strike = 95;
    shortTS = ImmutableInstantDoubleTimeSeries.of(new long[] {1}, new double[] {strike});
    data = DATA.withSpotTimeSeries(shortTS).withVolatilitySurface(new VolatilitySurface(ConstantDoublesSurface.from(0)));
    vanilla = new EuropeanVanillaOptionDefinition(strike, EXPIRY, false);
    assertEquals(MODEL.getPricingFunction(PUT).evaluate(data), BSM.getPricingFunction(vanilla).evaluate(data), 1e-9);
    data = data.withCostOfCarry(0);
    assertEquals(MODEL.getPricingFunction(PUT).evaluate(data), BSM.getPricingFunction(vanilla).evaluate(data), 1e-9);
    assertEquals(MODEL.getPricingFunction(CALL).evaluate(DATA), 25.3533, 1e-4);
View Full Code Here

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

    final double t = DateUtils.getDifferenceInYears(DATE, EXPIRY.getExpiry());
    final double spot = Math.pow(data.getSpot(), p);
    double sigma = data.getVolatility(t, STRIKE);
    final double b = p * (data.getCostOfCarry() + (p - 1) * sigma * sigma * 0.5);
    sigma *= p;
    return new StandardOptionDataBundle(CURVE, b, new VolatilitySurface(ConstantDoublesSurface.from(sigma)), spot, DATE);

  }
View Full Code Here

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

  private static final double Z_MAX = 200;

  @Test
  public void testObject() {
    final FunctionalDoublesSurface f = getSurface();
    final VolatilitySurface vol = new VolatilitySurface(f);
    final FunctionalVolatilitySurfaceData data = new FunctionalVolatilitySurfaceData(vol, X_LABEL, X_MIN, X_MAX, NX, Y_LABEL,
        Y_MIN, Y_MAX, NY, Z_MIN, Z_MAX);
    assertEquals(X_LABEL, data.getXLabel());
    assertEquals(X_MIN, data.getXMinimum());
    assertEquals(X_MAX, data.getXMaximum());
    assertEquals(NX, data.getNXSamples());
    assertEquals(Y_LABEL, data.getYLabel());
    assertEquals(Y_MIN, data.getYMinimum());
    assertEquals(Y_MAX, data.getYMaximum());
    assertEquals(NY, data.getNYSamples());
    assertEquals(Z_MIN, data.getZMinimum());
    assertEquals(Z_MAX, data.getZMaximum());
    FunctionalVolatilitySurfaceData other = new FunctionalVolatilitySurfaceData(vol, X_LABEL, X_MIN, X_MAX, NX, Y_LABEL, Y_MIN, Y_MAX, NY, Z_MIN, Z_MAX);
    assertEquals(data, other);
    final FunctionalDoublesSurface otherF = FunctionalDoublesSurface.from(new Function<Double, Double>() {

      @Override
      public Double evaluate(final Double... x) {
        return 3 * x[0] - 5 * x[1];
      }

      @Override
      public int hashCode() {
        return 1;
      }

      @Override
      public boolean equals(final Object o) {
        return true;
      }

      public Object writeReplace() {
        return new InvokedSerializedForm(FunctionalDoublesSurface.class, "getParameterizedFunction");
      }

    }, "NAME2");
    final VolatilitySurface otherVol = new VolatilitySurface(otherF);
    other = new FunctionalVolatilitySurfaceData(otherVol, X_LABEL, X_MIN, X_MAX, NX, Y_LABEL, Y_MIN, Y_MAX, NY, Z_MIN, Z_MAX);
    assertFalse(data.equals(other));
    other = new FunctionalVolatilitySurfaceData(vol, X_LABEL + "a", X_MIN, X_MAX, NX, Y_LABEL, Y_MIN, Y_MAX, NY, Z_MIN, Z_MAX);
    assertFalse(data.equals(other));
    other = new FunctionalVolatilitySurfaceData(vol, X_LABEL, X_MIN + 1, X_MAX, NX, Y_LABEL, Y_MIN, Y_MAX, NY, Z_MIN, Z_MAX);
View Full Code Here

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

  }

  @Test
  public void test() {
    assertEquals(MODEL.getPricingFunction(END).evaluate(DATA), 0, 0);
    assertEquals(MODEL.getPricingFunction(FORWARD).evaluate(DATA.withVolatilitySurface(new VolatilitySurface(ConstantDoublesSurface.from(1e-9)))), 0, 0);
    assertEquals(MODEL.getPricingFunction(NOW).evaluate(DATA), BSM.getPricingFunction(VANILLA).evaluate(DATA), 1e-4);
    assertEquals(MODEL.getPricingFunction(FORWARD).evaluate(DATA), 4.4064, 1e-4);
  }
View Full Code Here

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

  @Test
  public void testAgainstBSM() {
    final double eps = 1e-6;
    FadeInOptionDefinition definition = new FadeInOptionDefinition(SPOT, EXPIRY, false, 20, 180);
    final StandardOptionWithSpotTimeSeriesDataBundle data = DATA.withVolatilitySurface(new VolatilitySurface(ConstantDoublesSurface.from(0)));
    assertEquals(BSM.getPricingFunction(definition).evaluate(data), MODEL.getPricingFunction(definition).evaluate(data), eps);
    definition = new FadeInOptionDefinition(SPOT, EXPIRY, true, 95, 105);
    assertEquals(BSM.getPricingFunction(definition).evaluate(data), MODEL.getPricingFunction(definition).evaluate(data), eps);
    definition = new FadeInOptionDefinition(SPOT, EXPIRY, false, 95, 105);
    assertEquals(BSM.getPricingFunction(definition).evaluate(data), MODEL.getPricingFunction(definition).evaluate(data), eps);
View Full Code Here

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

  @Test
  public void test() {
    StandardOptionWithSpotTimeSeriesDataBundle data = DATA;
    FadeInOptionDefinition definition = new FadeInOptionDefinition(SPOT, EXPIRY, true, 85, 115);
    assertEquals(MODEL.getPricingFunction(definition).evaluate(data), 2.58, 1e-2);
    data = DATA.withVolatilitySurface(new VolatilitySurface(ConstantDoublesSurface.from(0.4)));
    definition = new FadeInOptionDefinition(SPOT, EXPIRY, true, 95, 105);
    assertEquals(MODEL.getPricingFunction(definition).evaluate(data), 2.036, 1e-3);
  }
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.