Package com.opengamma.financial.security.future

Examples of com.opengamma.financial.security.future.CommodityFutureSecurity$Meta


  @Override
  public CommodityFutureOptionDefinition<?, ?> visitCommodityFutureOptionSecurity(final CommodityFutureOptionSecurity commodityOption) {
    ArgumentChecker.notNull(commodityOption, "security");
    final ExternalIdBundle underlyingBundle = ExternalIdBundle.of(commodityOption.getUnderlyingId());
    final CommodityFutureSecurity underlyingSecurity = (CommodityFutureSecurity) _securitySource.getSingle(underlyingBundle);
    if (underlyingSecurity == null) {
      throw new OpenGammaRuntimeException("No underlying future found with identifier " + commodityOption.getUnderlyingId());
    }

    final ZonedDateTime expiry = underlyingSecurity.getExpiry().getExpiry();
    final boolean isCall = (commodityOption.getOptionType().equals(OptionType.CALL));
    final ExerciseDecisionType exerciseType = commodityOption.getExerciseType().accept(ExerciseTypeAnalyticsVisitorAdapter.getInstance());
    if (underlyingSecurity instanceof AgricultureFutureSecurity) {
      final AgricultureFutureDefinition underlyingDefinition = (AgricultureFutureDefinition) underlyingSecurity.accept(_futureSecurityConverter);
      return new AgricultureFutureOptionDefinition(expiry,
          underlyingDefinition,
          commodityOption.getStrike() * 100.0, // TODO: Remove when security stops scaling price
          exerciseType,
          isCall);
    } else if (underlyingSecurity instanceof EnergyFutureSecurity) {
      final EnergyFutureDefinition underlyingDefinition = (EnergyFutureDefinition) underlyingSecurity.accept(_futureSecurityConverter);
      return new EnergyFutureOptionDefinition(expiry,
          underlyingDefinition,
          commodityOption.getStrike() * 100.0, // TODO: Remove when security stops scaling price
          exerciseType,
          isCall);
    } else if (underlyingSecurity instanceof MetalFutureSecurity) {
      final MetalFutureDefinition underlyingDefinition = (MetalFutureDefinition) underlyingSecurity.accept(_futureSecurityConverter);
      return new MetalFutureOptionDefinition(expiry,
          underlyingDefinition,
          commodityOption.getStrike() * 100.0, // TODO: Remove when security stops scaling price
          exerciseType,
          isCall);
    } else {
      throw new OpenGammaRuntimeException("Unknown commodity option underlying type " + underlyingSecurity.getClass().getName());
    }
  }
View Full Code Here

TOP

Related Classes of com.opengamma.financial.security.future.CommodityFutureSecurity$Meta

Copyright © 2018 www.massapicom. 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.