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

Source Code of com.opengamma.financial.analytics.model.riskfactor.option.UnderlyingTypeToValueRequirementMapper

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

import org.apache.commons.lang.NotImplementedException;

import com.opengamma.analytics.financial.pnl.UnderlyingType;
import com.opengamma.core.security.Security;
import com.opengamma.core.value.MarketDataRequirementNames;
import com.opengamma.engine.target.ComputationTargetType;
import com.opengamma.engine.value.ValueRequirement;
import com.opengamma.engine.value.ValueRequirementNames;
import com.opengamma.financial.security.equity.EquitySecurity;
import com.opengamma.financial.security.option.EquityOptionSecurity;

/**
* Maps an underlying type.
*/
public class UnderlyingTypeToValueRequirementMapper {

  public static ValueRequirement getValueRequirement(final UnderlyingType underlying, final Security security) {
    if (security instanceof EquityOptionSecurity) {
      final EquityOptionSecurity option = (EquityOptionSecurity) security;
      switch (underlying) {
        case SPOT_PRICE:
          return new ValueRequirement(MarketDataRequirementNames.MARKET_VALUE, ComputationTargetType.SECURITY, option.getUnderlyingId());
        case SPOT_VOLATILITY:
          throw new NotImplementedException("Don't know how to get spot volatility for " + option.getUniqueId());
        case IMPLIED_VOLATILITY:
          throw new NotImplementedException("Don't know how to get implied volatility for " + option.getUniqueId());
        case INTEREST_RATE:
          return new ValueRequirement(ValueRequirementNames.YIELD_CURVE, ComputationTargetType.SECURITY, option.getUniqueId());
        case COST_OF_CARRY:
          throw new NotImplementedException("Don't know how to get cost of carry for " + option.getUniqueId());
        default:
          throw new NotImplementedException("Don't know how to get ValueRequirement for " + underlying);
      }
    } else if (security instanceof EquitySecurity) {
      final EquitySecurity equity = (EquitySecurity) security;
      if (underlying == UnderlyingType.SPOT_PRICE) {
        return new ValueRequirement(MarketDataRequirementNames.MARKET_VALUE, ComputationTargetType.SECURITY, equity.getUniqueId());
      } else {
        throw new NotImplementedException("Don't know how to get ValueRequirement for " + underlying);
      }
    } else {
      throw new NotImplementedException("Can only get ValueRequirements for EquityOptionSecurity and EquitySecurity. Was " + security + ")");
    }
  }

}
TOP

Related Classes of com.opengamma.financial.analytics.model.riskfactor.option.UnderlyingTypeToValueRequirementMapper

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.