Package com.opengamma.bbg.util

Source Code of com.opengamma.bbg.util.BloombergSecurityUtils

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

import java.util.HashSet;
import java.util.Set;

import org.threeten.bp.LocalDate;
import org.threeten.bp.LocalDateTime;
import org.threeten.bp.LocalTime;
import org.threeten.bp.Month;
import org.threeten.bp.ZoneOffset;
import org.threeten.bp.ZonedDateTime;

import com.google.common.collect.ImmutableSet;
import com.opengamma.bbg.security.BloombergSecurityProvider;
import com.opengamma.core.id.ExternalSchemes;
import com.opengamma.core.security.Security;
import com.opengamma.financial.security.equity.EquitySecurity;
import com.opengamma.financial.security.equity.GICSCode;
import com.opengamma.financial.security.future.AgricultureFutureSecurity;
import com.opengamma.financial.security.future.BondFutureDeliverable;
import com.opengamma.financial.security.future.BondFutureSecurity;
import com.opengamma.financial.security.future.EnergyFutureSecurity;
import com.opengamma.financial.security.future.EquityFutureSecurity;
import com.opengamma.financial.security.future.FXFutureSecurity;
import com.opengamma.financial.security.future.InterestRateFutureSecurity;
import com.opengamma.financial.security.future.MetalFutureSecurity;
import com.opengamma.financial.security.option.AmericanExerciseType;
import com.opengamma.financial.security.option.CommodityFutureOptionSecurity;
import com.opengamma.financial.security.option.EquityIndexDividendFutureOptionSecurity;
import com.opengamma.financial.security.option.EquityIndexFutureOptionSecurity;
import com.opengamma.financial.security.option.EquityIndexOptionSecurity;
import com.opengamma.financial.security.option.EquityOptionSecurity;
import com.opengamma.financial.security.option.EuropeanExerciseType;
import com.opengamma.financial.security.option.FxFutureOptionSecurity;
import com.opengamma.financial.security.option.IRFutureOptionSecurity;
import com.opengamma.financial.security.option.OptionType;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.util.money.Currency;
import com.opengamma.util.time.DateUtils;
import com.opengamma.util.time.Expiry;
import com.opengamma.util.time.ExpiryAccuracy;

/**
* Bloomberg Security utility class to aid testing
*/
public final class BloombergSecurityUtils {

  /**
   * USD Currency
   */
  public static final Currency USD = Currency.USD;
  /**
   * AUD Currency
   */
  public static final Currency AUD = Currency.AUD;
  /**
   * EUR Currency
   */
  public static final Currency EUR = Currency.EUR;
  /**
   * GBP Currency
   */
  public static final Currency GBP = Currency.GBP;

  /**
   * ATT BUID
   */
  public static final String ATT_BUID = "EQ0010137600001000";
  /**
   * AAPL BUID
   */
  public static final String AAPL_BUID = "EQ0010169500001000";
  /**
   * AAPL OPTION
   */
  public static final String APV_EQUITY_OPTION_TICKER = "APV US 01/16/10 C190 Equity";
  // At times Bloomberg has changed this to SPT as the prefix in the past.
  /**
   * SPX index option
   */
  public static final String SPX_INDEX_OPTION_TICKER = "SPX US 12/18/10 C1100 Index";
  /**
   * AAPL ticker
   */
  public static final String AAPL_EQUITY_TICKER = "AAPL US Equity";
  /**
   * ATT ticker
   */
  public static final String ATT_EQUITY_TICKER = "T US Equity";

  private BloombergSecurityUtils() {
  }

  public static EquityFutureSecurity makeEquityFuture() {
    Expiry expiry = new Expiry(ZonedDateTime.of(LocalDateTime.of(2010, Month.JUNE, 17, 21, 15),
        ZoneOffset.UTC), ExpiryAccuracy.MIN_HOUR_DAY_MONTH_YEAR);
    EquityFutureSecurity sec = new EquityFutureSecurity(expiry, "XCME", "XCME", USD, 250,
        ZonedDateTime.of(LocalDateTime.of(2010, Month.JUNE, 17, 21, 15), ZoneOffset.UTC), ExternalSchemes.bloombergTickerSecurityId("SPX Index"), "Equity");
    sec.setName("S&P 500 FUTURE Jun10");
    sec.setUnderlyingId(ExternalSchemes.bloombergTickerSecurityId("SPX Index"));
    Set<ExternalId> identifiers = new HashSet<>();
    identifiers.add(ExternalSchemes.bloombergBuidSecurityId("IX6835907-0"));
    identifiers.add(ExternalSchemes.cusipSecurityId("SPM10"));
    identifiers.add(ExternalSchemes.bloombergTickerSecurityId("SPM10 Index"));
    sec.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    sec.setUniqueId(BloombergSecurityProvider.createUniqueId("IX6835907-0"));
    return sec;
  }

  public static AgricultureFutureSecurity makeAgricultureFuture() {
    Expiry expiry = new Expiry(ZonedDateTime.of(LocalDateTime.of(2010, Month.JUNE, 23, 21, 30),
        ZoneOffset.UTC), ExpiryAccuracy.MIN_HOUR_DAY_MONTH_YEAR);
    AgricultureFutureSecurity sec = new AgricultureFutureSecurity(expiry, "XMTB", "XMTB", USD, 100, "Wheat");
    sec.setName("WHEAT FUT (ING) Jun10");
    sec.setUnitNumber(100.0);
    sec.setUnitName("tonnes");
    Set<ExternalId> identifiers = new HashSet<>();
    identifiers.add(ExternalSchemes.bloombergBuidSecurityId("IX8114863-0"));
    identifiers.add(ExternalSchemes.cusipSecurityId("VKM10"));
    identifiers.add(ExternalSchemes.bloombergTickerSecurityId("VKM10 Comdty"));
    sec.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    sec.setUniqueId(BloombergSecurityProvider.createUniqueId("IX8114863-0"));
    return sec;
  }

  public static FXFutureSecurity makeAUDUSDCurrencyFuture() {
    Expiry expiry = new Expiry(ZonedDateTime.of(LocalDate.of(2010, Month.JUNE, 1).atTime(LocalTime.MIDNIGHT), ZoneOffset.UTC),
        ExpiryAccuracy.DAY_MONTH_YEAR);
    FXFutureSecurity security = new FXFutureSecurity(expiry, "XCME", "XCME", USD, 1000, AUD, USD, "FX");
    security.setName("AUD/USD");
    return security;
  }

  public static BondFutureSecurity makeEuroBundFuture() {
    Expiry expiry = new Expiry(ZonedDateTime.of(LocalDateTime.of(2010, Month.JUNE, 8, 21, 0), ZoneOffset.UTC),
                               ExpiryAccuracy.MIN_HOUR_DAY_MONTH_YEAR);
    Set<BondFutureDeliverable> basket = new HashSet<>();
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("COEH8262261")), 0.828936d));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("COEI0354262")), 0.80371d));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("COEI2292098")), 0.777869d));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("COEH6142705")), 0.852328d));
   
    BondFutureSecurity sec = new BondFutureSecurity(expiry, "XEUR", "XEUR", EUR, 1000, basket,
                                                    LocalDateTime.of(2010, 6, 10, 0, 0, 0, 0).atZone(ZoneOffset.UTC),
                                                    LocalDateTime.of(2010, 6, 10, 0, 0, 0, 0).atZone(ZoneOffset.UTC),
                                                    "BOND");
    sec.setName("EURO-BUND FUTURE Jun10");
    Set<ExternalId> identifiers = new HashSet<>();
    identifiers.add(ExternalSchemes.bloombergBuidSecurityId("IX9439039-0"));
    identifiers.add(ExternalSchemes.cusipSecurityId("RXM10"));
    identifiers.add(ExternalSchemes.bloombergTickerSecurityId("RXM10 Comdty"));
    sec.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    return sec;
  }
 
  public static BondFutureSecurity makeUSBondFuture() {
    Expiry expiry = new Expiry(ZonedDateTime.of(LocalDateTime.of(2010, Month.JUNE, 21, 20, 0), ZoneOffset.UTC),
                               ExpiryAccuracy.MIN_HOUR_DAY_MONTH_YEAR);
    Set<BondFutureDeliverable> basket = new HashSet<>();
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810EV6")), 1.0858));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810FB9")), 1.0132));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810PX0")), 0.7984));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810FG8")), 0.9169));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810QD3")), 0.7771));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810FF0")), 0.9174));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810PW2")), 0.7825));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810FE3")), 0.9454));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810QH4")), 0.7757));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810PU6")), 0.8675));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810EX2")), 1.0765));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810FT0")), 0.8054));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810FJ2")), 1.0141));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810PT9")), 0.8352));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810QE1")), 0.8109));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810FP8")), 0.9268));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810QA9")), 0.6606));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810FM5")), 1.0286));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810EY0")), 1.0513));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810QB7")), 0.7616));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810QC5")), 0.795));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810EZ7")), 1.0649));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810EW4")), 1.0));
    basket.add(new BondFutureDeliverable(ExternalIdBundle.of(
        ExternalSchemes.bloombergBuidSecurityId("GV912810FA1")), 1.0396));
   
    BondFutureSecurity sec = new BondFutureSecurity(expiry, "XCBT", "XCBT", USD, 100000, basket,
                                                    LocalDateTime.of(2010, 6, 01, 0, 0, 0, 0).atZone(ZoneOffset.UTC),
                                                    LocalDateTime.of(2010, 6, 30, 0, 0, 0, 0).atZone(ZoneOffset.UTC),
                                                    "Bond");
    sec.setName("US LONG BOND(CBT) Jun10");

    Set<ExternalId> identifiers = new HashSet<>();
    identifiers.add(ExternalSchemes.bloombergBuidSecurityId("IX8530684-0"));
    identifiers.add(ExternalSchemes.cusipSecurityId("USM10"));
    identifiers.add(ExternalSchemes.bloombergTickerSecurityId("USM10 Comdty"));
    sec.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    return sec;
  }

  public static MetalFutureSecurity makeSilverFuture() {
    Expiry expiry = new Expiry(ZonedDateTime.of(LocalDateTime.of(2010, Month.JUNE, 28, 18, 25),
        ZoneOffset.UTC), ExpiryAccuracy.MIN_HOUR_DAY_MONTH_YEAR);
    MetalFutureSecurity sec = new MetalFutureSecurity(expiry, "XCEC", "XCEC", USD, 5000, "Precious Metal");
    sec.setName("SILVER FUTURE Jun10");
    sec.setUnitNumber(5000.00);
    sec.setUnitName("troy oz.");
    Set<ExternalId> identifiers = new HashSet<>();
    identifiers.add(ExternalSchemes.bloombergBuidSecurityId("IX10217289-0"));
    identifiers.add(ExternalSchemes.cusipSecurityId("SIM10"));
    identifiers.add(ExternalSchemes.bloombergTickerSecurityId("SIM10 Comdty"));
    sec.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    sec.setUniqueId(BloombergSecurityProvider.createUniqueId("IX10217289-0"));
    return sec;
  }

  public static EnergyFutureSecurity makeEthanolFuture() {
    Expiry expiry = new Expiry(ZonedDateTime.of(LocalDateTime.of(2010, Month.JUNE, 3, 19, 15),
        ZoneOffset.UTC), ExpiryAccuracy.MIN_HOUR_DAY_MONTH_YEAR);
    EnergyFutureSecurity sec = new EnergyFutureSecurity(expiry, "XCBT", "XCBT", USD, 29000, "Refined Products");
    sec.setName("DENATURED ETHANOL Jun10");
    sec.setUnitNumber(29000.00);
    sec.setUnitName("U.S. Gallons");
    Set<ExternalId> identifiers = new HashSet<>();
    identifiers.add(ExternalSchemes.bloombergBuidSecurityId("IX6054783-0"));
    identifiers.add(ExternalSchemes.cusipSecurityId("DLM10"));
    identifiers.add(ExternalSchemes.bloombergTickerSecurityId("DLM10 Comdty"));
    sec.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    sec.setUniqueId(BloombergSecurityProvider.createUniqueId("IX6054783-0"));
    return sec;
  }

  public static InterestRateFutureSecurity makeInterestRateFuture() {
    Expiry expiry = new Expiry(ZonedDateTime.of(LocalDateTime.of(2010, Month.JUNE, 14, 20, 0),
        ZoneOffset.UTC), ExpiryAccuracy.MIN_HOUR_DAY_MONTH_YEAR);
    InterestRateFutureSecurity sec = new InterestRateFutureSecurity(expiry, "XCME", "XCME", USD, 2500.0, ExternalId.of(ExternalSchemes.BLOOMBERG_TICKER, "US0003M Index"), "Interest Rate");
    sec.setName("90DAY EURO$ FUTR Jun10");
    Set<ExternalId> identifiers = new HashSet<>();
    identifiers.add(ExternalSchemes.bloombergBuidSecurityId("IX166549-0"));
    identifiers.add(ExternalSchemes.cusipSecurityId("EDM10"));
    identifiers.add(ExternalSchemes.bloombergTickerSecurityId("EDM10 Comdty"));
    sec.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    sec.setUniqueId(BloombergSecurityProvider.createUniqueId("IX166549-0"));
    return sec;
  }

  public static EquitySecurity makeExpectedATTEquitySecurity() {
    EquitySecurity equitySecurity = new EquitySecurity("NEW YORK STOCK EXCHANGE, INC.", "XNYS", "AT&T INC", USD);
    equitySecurity.addExternalId(ExternalSchemes.bloombergTickerSecurityId(ATT_EQUITY_TICKER));

    equitySecurity.addExternalId(ExternalSchemes.bloombergBuidSecurityId(ATT_BUID));
    equitySecurity.addExternalId(ExternalSchemes.cusipSecurityId("00206R102"));
    equitySecurity.addExternalId(ExternalSchemes.isinSecurityId("US00206R1023"));
    equitySecurity.addExternalId(ExternalSchemes.sedol1SecurityId("2831811"));

    equitySecurity.setUniqueId(BloombergSecurityProvider.createUniqueId(ATT_BUID));
    equitySecurity.setShortName("T");
    equitySecurity.setName("AT&T INC");
    equitySecurity.setGicsCode(GICSCode.of("50101020"));
    equitySecurity.setPreferred(false);
    return equitySecurity;
  }

  //note this will roll over on 2010-12-18 and the expected Buid and Expiry
  // date will change
  public static EquityIndexOptionSecurity makeSPXIndexOptionSecurity() {
    OptionType optionType = OptionType.CALL;
    double strike = 1100.0;
    Expiry expiry = new Expiry(DateUtils.getUTCDate(2010, 12, 18));
    ExternalId underlyingUniqueID = ExternalSchemes.bloombergBuidSecurityId("EI09SPX");
   
    final EquityIndexOptionSecurity security = new EquityIndexOptionSecurity(optionType, strike, USD, underlyingUniqueID, new EuropeanExerciseType(), expiry, 100.0, "US");

    Set<ExternalId> identifiers = new HashSet<>();
    identifiers.add(ExternalSchemes.bloombergBuidSecurityId("IX5801809-0-8980"));
    identifiers.add(ExternalSchemes.bloombergTickerSecurityId(SPX_INDEX_OPTION_TICKER));
    security.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    security.setUniqueId(BloombergSecurityProvider.createUniqueId("IX5801809-0-8980"));
    security.setName("SPX 2010-12-18 C 1100.0");
    return security;
  }


  public static EquityIndexFutureOptionSecurity makeEquityIndexFutureOptionSecurity() {

    OptionType optionType = OptionType.CALL;
    double strike = 1000.0;
    Expiry expiry = new Expiry(DateUtils.getUTCDate(2013, 3, 15));
    ExternalId underlyingUniqueID = ExternalSchemes.bloombergBuidSecurityId("IX14248603-0");

    final EquityIndexFutureOptionSecurity security = new EquityIndexFutureOptionSecurity(
        "CME", expiry, new AmericanExerciseType(), underlyingUniqueID, 50.0, true, USD, strike, optionType);

    Set<ExternalId> identifiers = ImmutableSet.of(
      ExternalSchemes.bloombergBuidSecurityId("IX15354067-0-FD00"),
      ExternalSchemes.bloombergTickerSecurityId("ESH3C 1000 Index"));
    security.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    security.setUniqueId(BloombergSecurityProvider.createUniqueId("IX15354067-0-FD00"));
    security.setName("ESH3C 2013-03-15 C 1000.0");
    return security;
  }


  public static EquityIndexDividendFutureOptionSecurity makeEquityIndexDividendFutureOptionSecurity() {

    OptionType optionType = OptionType.CALL;
    double strike = 100.0;
    Expiry expiry = new Expiry(DateUtils.getUTCDate(2013, 12, 20));
    ExternalId underlyingUniqueID = ExternalSchemes.bloombergBuidSecurityId("IX6817069-0");

    final EquityIndexDividendFutureOptionSecurity security = new EquityIndexDividendFutureOptionSecurity(
        "EUX", expiry, new EuropeanExerciseType(), underlyingUniqueID, 100.0, true, EUR, strike, optionType);

    Set<ExternalId> identifiers = ImmutableSet.of(
        ExternalSchemes.bloombergBuidSecurityId("IX10363934-0-8C80"),
        ExternalSchemes.bloombergTickerSecurityId("DEDZ3C 100.00 Index"));
    security.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    security.setUniqueId(BloombergSecurityProvider.createUniqueId("IX10363934-0-8C80"));
    security.setName("DEDZ3C 2013-12-20 C 100.0");
    return security;
  }

  public static EquityOptionSecurity makeAPVLEquityOptionSecurity() {
    OptionType optionType = OptionType.CALL;
    double strike = 190.0;
    Expiry expiry = new Expiry(DateUtils.getUTCDate(2010, 01, 16));
    ExternalId underlyingIdentifier = ExternalSchemes.bloombergTickerSecurityId(AAPL_EQUITY_TICKER);
    final EquityOptionSecurity security = new EquityOptionSecurity(optionType, strike, USD, underlyingIdentifier, new AmericanExerciseType(), expiry, 100, "US");

    Set<ExternalId> identifiers = new HashSet<>();
    identifiers.add(ExternalSchemes.bloombergTickerSecurityId(APV_EQUITY_OPTION_TICKER));
    identifiers.add(ExternalSchemes.bloombergBuidSecurityId("EO1016952010010397C00001"));
    security.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    security.setUniqueId(BloombergSecurityProvider.createUniqueId("EO1016952010010397C00001"));
    security.setName("APV 2010-01-16 C 190.0");

    return security;
  }

  public static EquitySecurity makeExpectedAAPLEquitySecurity() {
    EquitySecurity equitySecurity = new EquitySecurity("NASDAQ/NGS (GLOBAL SELECT MARKET)", "XNGS", "APPLE INC", USD);
    equitySecurity.addExternalId(ExternalSchemes.bloombergTickerSecurityId(AAPL_EQUITY_TICKER));
    equitySecurity.addExternalId(ExternalSchemes.bloombergBuidSecurityId(AAPL_BUID));
    equitySecurity.addExternalId(ExternalSchemes.cusipSecurityId("037833100"));
    equitySecurity.addExternalId(ExternalSchemes.isinSecurityId("US0378331005"));
    equitySecurity.addExternalId(ExternalSchemes.sedol1SecurityId("2046251"));
    equitySecurity.setUniqueId(BloombergSecurityProvider.createUniqueId(AAPL_BUID));
    equitySecurity.setShortName("AAPL");
    equitySecurity.setName("APPLE INC");
    equitySecurity.setGicsCode(GICSCode.of("45202010"));
    equitySecurity.setPreferred(false);
    return equitySecurity;
  }

  public static EquitySecurity makeExchangeTradedFund() {
    EquitySecurity equitySecurity = new EquitySecurity("NYSE ARCA", "ARCX", "US NATURAL GAS FUND LP", USD);
    equitySecurity.addExternalId(ExternalSchemes.bloombergTickerSecurityId("UNG US Equity"));
    equitySecurity.addExternalId(ExternalSchemes.bloombergBuidSecurityId("EQ0000000003443730"));
    equitySecurity.addExternalId(ExternalSchemes.cusipSecurityId("912318102"));
    equitySecurity.addExternalId(ExternalSchemes.isinSecurityId("US9123181029"));
    equitySecurity.addExternalId(ExternalSchemes.sedol1SecurityId("B1W5XX3"));
    equitySecurity.setUniqueId(BloombergSecurityProvider.createUniqueId("EQ0000000003443730"));
    equitySecurity.setShortName("UNG");
    equitySecurity.setName("US NATURAL GAS FUND LP");
    equitySecurity.setPreferred(false);
    return equitySecurity;
  }

  public static Security makeAmericanGeneralEquity() {
    EquitySecurity equitySecurity = new EquitySecurity("LONDON STOCK EXCHANGE", "XLON", "AMERICAN GENERAL CORP", GBP);
    equitySecurity.setUniqueId(BloombergSecurityProvider.createUniqueId("EQ0010006200001001"));
    equitySecurity.setName("AMERICAN GENERAL CORP");
    equitySecurity.setShortName("EQ0010006200001001");
    equitySecurity.addExternalId(ExternalSchemes.bloombergBuidSecurityId("EQ0010006200001001"));
    equitySecurity.addExternalId(ExternalSchemes.bloombergTickerSecurityId("575258Q LN Equity"));
    equitySecurity.addExternalId(ExternalSchemes.isinSecurityId("US0263511067"));
    equitySecurity.addExternalId(ExternalSchemes.cusipSecurityId("026351106"));
    return equitySecurity;
  }

  public static Security makeTHYSSENKRUPPEquity() {
    EquitySecurity equitySecurity = new EquitySecurity("LONDON STOCK EXCHANGE", "XLON", "THYSSENKRUPP AEROSPACE UK LT",
        GBP);
    equitySecurity.setUniqueId(BloombergSecurityProvider.createUniqueId("EQ0011110200001000"));
    equitySecurity.setName("THYSSENKRUPP AEROSPACE UK LT");
    equitySecurity.setShortName("EQ0011110200001000");
    equitySecurity.addExternalId(ExternalSchemes.bloombergBuidSecurityId("EQ0011110200001000"));
    equitySecurity.addExternalId(ExternalSchemes.bloombergTickerSecurityId("2931300Q LN Equity"));
    equitySecurity.addExternalId(ExternalSchemes.isinSecurityId("GB0000458744"));
    equitySecurity.addExternalId(ExternalSchemes.sedol1SecurityId("0045874"));
    return equitySecurity;
  }

  public static Security makePTSEquity() {
    EquitySecurity equitySecurity = new EquitySecurity("LONDON STOCK EXCHANGE", "XLON", "PTS GROUP PLC", GBP);
    equitySecurity.setUniqueId(BloombergSecurityProvider.createUniqueId("EQ0015697400001000"));
    equitySecurity.setName("PTS GROUP PLC");
    equitySecurity.setShortName("EQ0015697400001000");
    equitySecurity.addExternalId(ExternalSchemes.bloombergBuidSecurityId("EQ0015697400001000"));
    equitySecurity.addExternalId(ExternalSchemes.bloombergTickerSecurityId("365092Q LN Equity"));
    equitySecurity.addExternalId(ExternalSchemes.isinSecurityId("GB0006661457"));
    equitySecurity.addExternalId(ExternalSchemes.sedol1SecurityId("0666145"));
    return equitySecurity;
  }

  public static ExternalIdBundle makeBloombergTickerIdentifier(String secDes) {
    return ExternalIdBundle.of(ExternalSchemes.bloombergTickerSecurityId(secDes));
  }

  public static ExternalIdBundle makeBloombergBuid(String secDes) {
    return ExternalIdBundle.of(ExternalSchemes.bloombergBuidSecurityId(secDes));
  }
 
  public static IRFutureOptionSecurity makeEURODOLLARFutureOptionSecurity() {
    OptionType optionType = OptionType.CALL;
    double strike = 0.995;
    double pointValue = 2500;
    Expiry expiry = new Expiry(DateUtils.getUTCDate(2012, 12, 17));
    ExternalId underlyingID = ExternalSchemes.bloombergTickerSecurityId("EDZ2 Comdty");
    final String exchange = "CME";
    final IRFutureOptionSecurity security = new IRFutureOptionSecurity(exchange, expiry, new AmericanExerciseType(), underlyingID, pointValue, false, USD, strike, optionType);

    Set<ExternalId> identifiers = new HashSet<>();
    identifiers.add(ExternalSchemes.bloombergBuidSecurityId("IX11675985-0-8C70"));
    identifiers.add(ExternalSchemes.bloombergTickerSecurityId("EDZ2C 99.500 Comdty"));
    security.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    security.setUniqueId(BloombergSecurityProvider.createUniqueId("IX11675985-0-8C70"));
    security.setName("EDZ2C 2012-12-17 C 99.5");
    return security;
  }
 
  public static IRFutureOptionSecurity makeLIBORFutureOptionSecurity() {
    OptionType optionType = OptionType.CALL;
    double strike = 0.91;
    double pointValue = 1250.0;
    Expiry expiry = new Expiry(DateUtils.getUTCDate(2011, 9, 21));
    ExternalId underlyingID = ExternalSchemes.bloombergTickerSecurityId("L U11 Comdty");
    final String exchange = "LIF";
    final IRFutureOptionSecurity security = new IRFutureOptionSecurity(exchange, expiry, new AmericanExerciseType(), underlyingID, pointValue, true, GBP, strike, optionType);

    Set<ExternalId> identifiers = new HashSet<>();
    identifiers.add(ExternalSchemes.bloombergBuidSecurityId("IX9494155-0-8B60"));
    identifiers.add(ExternalSchemes.bloombergTickerSecurityId("L U1C 91.000 Comdty"));
    security.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    security.setUniqueId(BloombergSecurityProvider.createUniqueId("IX9494155-0-8B60"));
    security.setName("L U1C 2011-09-21 C 91.0");
    return security;
  }
 
  public static IRFutureOptionSecurity makeEURIBORFutureOptionSecurity() {
    OptionType optionType = OptionType.CALL;
    double strike = 0.92875;
    double pointValue = 2500;
    Expiry expiry = new Expiry(DateUtils.getUTCDate(2011, 9, 19));
    ExternalId underlyingID = ExternalSchemes.bloombergTickerSecurityId("FPU11 Comdty");
    final String exchange = "EUX";
    final IRFutureOptionSecurity security = new IRFutureOptionSecurity(
        exchange, expiry, new AmericanExerciseType(), underlyingID, pointValue, true, EUR, strike, optionType);

    Set<ExternalId> identifiers = new HashSet<>();
    identifiers.add(ExternalSchemes.bloombergBuidSecurityId("IX10090132-0-8B9C"));
    identifiers.add(ExternalSchemes.bloombergTickerSecurityId("FPU1C 92.875 Comdty"));
    security.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    security.setUniqueId(BloombergSecurityProvider.createUniqueId("IX10090132-0-8B9C"));
    security.setName("FPU1C 2011-09-19 C 92.875");
    return security;
  }

  public static CommodityFutureOptionSecurity makeCommodityFutureOptionSecurity() {

    OptionType optionType = OptionType.CALL;
    double strike = 0.2425;
    double pointValue = 1000;
    Expiry expiry = new Expiry(DateUtils.getUTCDate(2013, 2, 19));
    ExternalId underlyingID = ExternalSchemes.bloombergTickerSecurityId("CHH3 Comdty");
    final String exchange = "NYM";
    final CommodityFutureOptionSecurity security = new CommodityFutureOptionSecurity(
        exchange, exchange, expiry, new AmericanExerciseType(), underlyingID, pointValue, USD, strike, optionType);

    Set<ExternalId> identifiers = ImmutableSet.of(
        ExternalSchemes.bloombergBuidSecurityId("IX12576261-0-8308"),
        ExternalSchemes.bloombergTickerSecurityId("CHH3C 24.25 Comdty"));
    security.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    security.setUniqueId(BloombergSecurityProvider.createUniqueId("IX12576261-0-8308"));
    security.setName("CHH3C 2013-02-19 C 24.25");
    return security;
  }

  public static FxFutureOptionSecurity makeFxFutureOptionSecurity() {

    OptionType optionType = OptionType.PUT;
    double strike = 1.05;
    double pointValue = 1250;
    Expiry expiry = new Expiry(DateUtils.getUTCDate(2013, 3, 8));
    ExternalId underlyingID = ExternalSchemes.bloombergTickerSecurityId("JYH3 Curncy");
    final String exchange = "CME";
    final FxFutureOptionSecurity security = new FxFutureOptionSecurity(
        exchange, exchange, expiry, new AmericanExerciseType(), underlyingID, pointValue, USD, strike, optionType);

    Set<ExternalId> identifiers = ImmutableSet.of(
        ExternalSchemes.bloombergBuidSecurityId("IX14844402-0-0D20"),
        ExternalSchemes.bloombergTickerSecurityId("JYH3P 105.0 Curncy"));
    security.setExternalIdBundle(ExternalIdBundle.of(identifiers));
    security.setUniqueId(BloombergSecurityProvider.createUniqueId("IX14844402-0-0D20"));
    security.setName("JYH3P 2013-03-08 P 105.0");
    return security;
  }
}
TOP

Related Classes of com.opengamma.bbg.util.BloombergSecurityUtils

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.