// 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());
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }