// calculate the last fixing date private LocalDate calculateLastFixingDate(LocalDate valuationDate, ReferenceData refData) { SecurityId secId = SecurityId.of(rateId.StandardId); // quote must also be security IborFutureTrade trade = template.createTrade(valuationDate, secId, 1, 1, 1, refData); return(trade.Product.FixingDate); }
// create a trade private static Trade createTrade2(ReferenceData refData) { SecurityId secId = SecurityId.of("OG-Future", "Ibor-USD-LIBOR-3M-Jun15"); IborFutureTrade trade = IborFutureConventions.USD_LIBOR_3M_QUARTERLY_IMM.createTrade(LocalDate.of(2014, 9, 12), secId, Period.ofMonths(1), 3, 10, 1_000_000, 0.9996, refData); return(trade.toBuilder().info(TradeInfo.builder().id(StandardId.of("example", "1")).addAttribute(AttributeType.DESCRIPTION, "Jun15 IMM Ibor Future").counterparty(StandardId.of("example", "A")).tradeDate(LocalDate.of(2014, 9, 12)).settlementDate(LocalDate.of(2014, 9, 14)).build()).quantity(20).price(0.9997).build()); }
private IborFutureTrade createTrade(LocalDate tradeDate, SecurityId securityId, double quantity, double notional, double price, YearMonth yearMonth, LocalDate lastTradeDate, LocalDate referenceDate) { double accrualFactor = index.Tenor.get(ChronoUnit.MONTHS) / 12.0; IborFuture product = IborFuture.builder().securityId(securityId).index(index).accrualFactor(accrualFactor).lastTradeDate(lastTradeDate).notional(notional).build(); TradeInfo info = TradeInfo.of(tradeDate); return(IborFutureTrade.builder().info(info).product(product).quantity(quantity).price(price).build()); }
public virtual void test_trade() { IborFutureCurveNode node = IborFutureCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD); double price = 0.99; MarketData marketData = ImmutableMarketData.builder(VAL_DATE).addValue(QUOTE_ID, price).build(); IborFutureTrade trade = node.trade(1d, marketData, REF_DATA); IborFutureTrade expected = TEMPLATE.createTrade(VAL_DATE, SecurityId.of(STANDARD_ID), 1L, 1.0, price + SPREAD, REF_DATA); assertEquals(trade, expected); }
public virtual void test_metadata_last_fixing() { IborFutureCurveNode node = IborFutureCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD, LABEL).withDate(CurveNodeDate.LAST_FIXING); ImmutableMarketData marketData = ImmutableMarketData.builder(VAL_DATE).addValue(QUOTE_ID, 0.0d).build(); IborFutureTrade trade = node.trade(1d, marketData, REF_DATA); LocalDate fixingDate = trade.Product.FixingDate; DatedParameterMetadata metadata = node.metadata(VAL_DATE, REF_DATA); assertEquals(metadata.Date, fixingDate); LocalDate referenceDate = TEMPLATE.calculateReferenceDateFromTradeDate(VAL_DATE, REF_DATA); assertEquals(((YearMonthDateParameterMetadata)metadata).YearMonth, YearMonth.from(referenceDate)); }
//------------------------------------------------------------------------- public virtual void test_createTrade() { IborFutureTemplate @base = IborFutureTemplate.of(YEAR_MONTH, CONVENTION); LocalDate date = LocalDate.of(2015, 10, 20); double quantity = 3; double price = 0.99; double notional = 100.0; SecurityId secId = SecurityId.of("OG-Future", "GBP-LIBOR-3M-Jun16"); IborFutureTrade trade = @base.createTrade(date, secId, quantity, notional, price, REF_DATA); IborFutureTrade expected = CONVENTION.createTrade(date, secId, YEAR_MONTH, quantity, notional, price, REF_DATA); assertEquals(trade, expected); }
public virtual void test_toTrade() { LocalDate date = LocalDate.of(2015, 10, 20); Period start = Period.ofMonths(2); int number = 2; // Future should be 20 Dec 15 + 2 IMM = effective 15-Jun-2016, fixing 13-Jun-2016 IborFutureConvention convention = ImmutableIborFutureConvention.of(USD_LIBOR_3M, QUARTERLY_IMM); double quantity = 3; double price = 0.99; SecurityId secId = SecurityId.of("OG-Future", "GBP-LIBOR-3M-Jun16"); IborFutureTrade trade = convention.createTrade(date, secId, start, number, quantity, NOTIONAL_1M, price, REF_DATA); assertEquals(trade.Product.FixingDate, LocalDate.of(2016, 6, 13)); assertEquals(trade.Product.Index, USD_LIBOR_3M); assertEquals(trade.Product.Notional, NOTIONAL_1M); assertEquals(trade.Product.AccrualFactor, 0.25); assertEquals(trade.Quantity, quantity); assertEquals(trade.Price, price); }