/** * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.pricer.index; import static com.opengamma.strata.basics.currency.Currency.GBP; import static com.opengamma.strata.basics.date.Tenor.TENOR_2M; import static com.opengamma.strata.basics.index.IborIndices.GBP_LIBOR_2M; import static com.opengamma.strata.collect.TestHelper.date; import java.time.LocalDate; import java.time.LocalTime; import java.time.ZoneId; import com.opengamma.strata.basics.value.Rounding; import com.opengamma.strata.product.SecurityId; import com.opengamma.strata.product.TradeInfo; import com.opengamma.strata.product.common.PutCall; import com.opengamma.strata.product.index.IborFuture; import com.opengamma.strata.product.index.IborFutureOption; import com.opengamma.strata.product.index.IborFutureOptionTrade; import com.opengamma.strata.product.index.IborFutureTrade; import com.opengamma.strata.product.option.FutureOptionPremiumStyle; /** * Ibor future data. */ public class IborFutureDummyData { private static final double NOTIONAL = 100_000d; private static final double ACCRUAL_FACTOR_2M = TENOR_2M.getPeriod().toTotalMonths() / 12.0; private static final LocalDate LAST_TRADE_DATE = date(2015, 6, 17); private static final int ROUNDING = 4; private static final LocalDate TRADE_DATE = date(2015, 2, 17); private static final long FUTURE_QUANTITY = 35; private static final double FUTURE_INITIAL_PRICE = 1.015; private static final SecurityId FUTURE_ID = SecurityId.of("OG-Ticker", "Future"); private static final LocalDate EXPIRY_DATE = date(2015, 5, 20); private static final double STRIKE_PRICE = 1.075; private static final double STRIKE_PRICE_2 = 0.99; private static final long OPTION_QUANTITY = 65L; private static final double OPTION_INITIAL_PRICE = 0.065; private static final SecurityId OPTION_ID = SecurityId.of("OG-Ticker", "Option"); private static final SecurityId OPTION_ID2 = SecurityId.of("OG-Ticker", "Option2"); /** * An IborFuture. */ public static final IborFuture IBOR_FUTURE = IborFuture.builder() .securityId(FUTURE_ID) .currency(GBP) .notional(NOTIONAL) .lastTradeDate(LAST_TRADE_DATE) .index(GBP_LIBOR_2M) .accrualFactor(ACCRUAL_FACTOR_2M) .rounding(Rounding.ofDecimalPlaces(ROUNDING)) .build(); /** * An IborFutureTrade. */ public static final IborFutureTrade IBOR_FUTURE_TRADE = IborFutureTrade.builder() .info(TradeInfo.builder().tradeDate(TRADE_DATE).build()) .product(IBOR_FUTURE) .quantity(FUTURE_QUANTITY) .price(FUTURE_INITIAL_PRICE) .build(); /** * An IborFutureOption. */ public static final IborFutureOption IBOR_FUTURE_OPTION = IborFutureOption.builder() .securityId(OPTION_ID) .putCall(PutCall.CALL) .strikePrice(STRIKE_PRICE) .expiryDate(EXPIRY_DATE) .expiryTime(LocalTime.of(11, 0)) .expiryZone(ZoneId.of("Europe/London")) .premiumStyle(FutureOptionPremiumStyle.DAILY_MARGIN) .underlyingFuture(IBOR_FUTURE) .build(); /** * An IborFutureOption. */ public static final IborFutureOption IBOR_FUTURE_OPTION_2 = IborFutureOption.builder() .securityId(OPTION_ID2) .putCall(PutCall.CALL) .strikePrice(STRIKE_PRICE_2) .expiryDate(EXPIRY_DATE) .expiryTime(LocalTime.of(11, 0)) .expiryZone(ZoneId.of("Europe/London")) .premiumStyle(FutureOptionPremiumStyle.DAILY_MARGIN) .underlyingFuture(IBOR_FUTURE) .build(); /** * An IborFutureOptionTrade. */ public static final IborFutureOptionTrade IBOR_FUTURE_OPTION_TRADE = IborFutureOptionTrade.builder() .info(TradeInfo.builder().tradeDate(TRADE_DATE).build()) .product(IBOR_FUTURE_OPTION) .quantity(OPTION_QUANTITY) .price(OPTION_INITIAL_PRICE) .build(); }