/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.conversion; import org.threeten.bp.LocalTime; import org.threeten.bp.ZoneOffset; import org.threeten.bp.ZonedDateTime; import com.opengamma.analytics.financial.instrument.InstrumentDefinition; import com.opengamma.analytics.financial.instrument.future.InterestRateFutureOptionMarginSecurityDefinition; import com.opengamma.analytics.financial.instrument.future.InterestRateFutureOptionMarginTransactionDefinition; import com.opengamma.analytics.financial.instrument.future.InterestRateFutureOptionPremiumSecurityDefinition; import com.opengamma.analytics.financial.instrument.future.InterestRateFutureOptionPremiumTransactionDefinition; import com.opengamma.core.position.Trade; import com.opengamma.financial.convention.ConventionBundleSource; import com.opengamma.financial.security.option.IRFutureOptionSecurity; import com.opengamma.util.ArgumentChecker; /** * Converts interest rate future option trades into the form used by the analytics library * @deprecated Use {@link InterestRateFutureOptionTradeConverter}. {@link ConventionBundleSource} should not be used, * as the conventions are not typed. */ @Deprecated public class InterestRateFutureOptionTradeConverterDeprecated { /** Converter for the interest rate future option security */ private final InterestRateFutureOptionSecurityConverterDeprecated _securityConverter; /** * @param securityConverter The interest rate future option security, not null */ public InterestRateFutureOptionTradeConverterDeprecated(final InterestRateFutureOptionSecurityConverterDeprecated securityConverter) { ArgumentChecker.notNull(securityConverter, "security converter"); _securityConverter = securityConverter; } /** * @param trade An interest rate future option trade, not null * @return The instrument definition */ public InstrumentDefinition<?> convert(final Trade trade) { ArgumentChecker.notNull(trade, "trade"); ArgumentChecker.isTrue(trade.getSecurity() instanceof IRFutureOptionSecurity, "Can only handle trades with security type IRFutureOptionSecurity"); final InstrumentDefinition<?> securityDefinition = ((IRFutureOptionSecurity) trade.getSecurity()).accept(_securityConverter); final int quantity = trade.getQuantity().intValue(); final LocalTime tradeTime = trade.getTradeTime() == null ? LocalTime.of(0, 0) : trade.getTradeTime().toLocalTime(); final ZonedDateTime tradeDate = trade.getTradeDate().atTime(tradeTime).atZone(ZoneOffset.UTC); //TODO get the real time zone final Double tradePrice = trade.getPremium(); ArgumentChecker.notNull(tradePrice, "IRFutureOption trade must have a premium set. The interpretation of premium is the market price, without unit, i.e. not %"); // TODO: The premium is not the right place to store the trade price... if (securityDefinition instanceof InterestRateFutureOptionMarginSecurityDefinition) { final InterestRateFutureOptionMarginSecurityDefinition underlyingOption = (InterestRateFutureOptionMarginSecurityDefinition) securityDefinition; return new InterestRateFutureOptionMarginTransactionDefinition(underlyingOption, quantity, tradeDate, tradePrice); } final InterestRateFutureOptionPremiumSecurityDefinition underlyingOption = (InterestRateFutureOptionPremiumSecurityDefinition) securityDefinition; return new InterestRateFutureOptionPremiumTransactionDefinition(underlyingOption, quantity, tradeDate, tradePrice); } }