Package com.opengamma.financial.analytics.model.option

Source Code of com.opengamma.financial.analytics.model.option.BlackScholesMertonModelFunction

/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.model.option;

import com.opengamma.OpenGammaRuntimeException;
import com.opengamma.analytics.financial.model.option.definition.AmericanVanillaOptionDefinition;
import com.opengamma.analytics.financial.model.option.definition.EuropeanVanillaOptionDefinition;
import com.opengamma.analytics.financial.model.option.definition.OptionDefinition;
import com.opengamma.analytics.financial.model.option.definition.StandardOptionDataBundle;
import com.opengamma.analytics.financial.model.option.pricing.analytic.AnalyticOptionModel;
import com.opengamma.analytics.financial.model.option.pricing.analytic.BlackScholesMertonModel;
import com.opengamma.engine.target.ComputationTargetType;
import com.opengamma.financial.security.FinancialSecurityTypes;
import com.opengamma.financial.security.option.AmericanExerciseType;
import com.opengamma.financial.security.option.AsianExerciseType;
import com.opengamma.financial.security.option.BermudanExerciseType;
import com.opengamma.financial.security.option.EquityOptionSecurity;
import com.opengamma.financial.security.option.EuropeanExerciseType;
import com.opengamma.financial.security.option.ExerciseTypeVisitor;
import com.opengamma.financial.security.option.OptionType;

/**
*
*
*/
@Deprecated
public class BlackScholesMertonModelFunction extends StandardOptionDataAnalyticOptionModelFunction {
  private final AnalyticOptionModel<OptionDefinition, StandardOptionDataBundle> _model = new BlackScholesMertonModel();

  @Override
  public ComputationTargetType getTargetType() {
    return FinancialSecurityTypes.EQUITY_OPTION_SECURITY;
  }

  @Override
  public String getShortName() {
    return "BlackScholesMertonModel";
  }

  @Override
  protected AnalyticOptionModel<OptionDefinition, StandardOptionDataBundle> getModel() {
    return _model;
  }

  @Override
  protected OptionDefinition getOptionDefinition(final EquityOptionSecurity option) {
    return option.getExerciseType().accept(
      new ExerciseTypeVisitor<OptionDefinition>() {
        @Override
        public OptionDefinition visitAmericanExerciseType(final AmericanExerciseType exerciseType) {
          return new AmericanVanillaOptionDefinition(option.getStrike(), option.getExpiry(), option.getOptionType() == OptionType.CALL);
        }

        @Override
        public OptionDefinition visitAsianExerciseType(final AsianExerciseType exerciseType) {
          throw new OpenGammaRuntimeException("Unsupported option type: Asian");
        }

        @Override
        public OptionDefinition visitBermudanExerciseType(final BermudanExerciseType exerciseType) {
          throw new OpenGammaRuntimeException("Unsupported option type: Bermudan");
        }

        @Override
        public OptionDefinition visitEuropeanExerciseType(final EuropeanExerciseType exerciseType) {
          return new EuropeanVanillaOptionDefinition(option.getStrike(), option.getExpiry(), option.getOptionType() == OptionType.CALL);
        }
      }
    );
  }
}
TOP

Related Classes of com.opengamma.financial.analytics.model.option.BlackScholesMertonModelFunction

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.