private LocalDate calculateLastFixingDate(LocalDate valuationDate, ReferenceData refData) { SecurityId secId = SecurityId.of(rateId.getStandardId()); // quote must also be security IborFutureTrade trade = template.createTrade(valuationDate, secId, 1, 1, 1, refData); return trade.getProduct().getFixingDate(); }
public void test_builder() { IborFuture test = sut(); assertEquals(test.getSecurityId(), SECURITY_ID); assertEquals(test.getCurrency(), USD); assertEquals(test.getNotional(), NOTIONAL); assertEquals(test.getAccrualFactor(), ACCRUAL_FACTOR); assertEquals(test.getLastTradeDate(), LAST_TRADE_DATE); assertEquals(test.getIndex(), USD_LIBOR_3M); assertEquals(test.getRounding(), ROUNDING); assertEquals(test.getFixingDate(), LAST_TRADE_DATE); }
public 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.getProduct().getFixingDate(), LocalDate.of(2016, 6, 13)); assertEquals(trade.getProduct().getIndex(), USD_LIBOR_3M); assertEquals(trade.getProduct().getNotional(), NOTIONAL_1M); assertEquals(trade.getProduct().getAccrualFactor(), 0.25); assertEquals(trade.getQuantity(), quantity); assertEquals(trade.getPrice(), price); }
public void test_builder_defaults() { IborFuture test = IborFuture.builder() .securityId(SECURITY_ID) .currency(GBP) .notional(NOTIONAL) .lastTradeDate(LAST_TRADE_DATE) .index(GBP_LIBOR_2M) .build(); assertEquals(test.getSecurityId(), SECURITY_ID); assertEquals(test.getCurrency(), GBP); assertEquals(test.getNotional(), NOTIONAL); assertEquals(test.getAccrualFactor(), ACCRUAL_FACTOR2); assertEquals(test.getLastTradeDate(), LAST_TRADE_DATE); assertEquals(test.getIndex(), GBP_LIBOR_2M); assertEquals(test.getRounding(), Rounding.none()); assertEquals(test.getFixingDate(), LAST_TRADE_DATE); }
public 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.getProduct().getFixingDate(); DatedParameterMetadata metadata = node.metadata(VAL_DATE, REF_DATA); assertEquals(metadata.getDate(), fixingDate); LocalDate referenceDate = TEMPLATE.calculateReferenceDateFromTradeDate(VAL_DATE, REF_DATA); assertEquals(((YearMonthDateParameterMetadata) metadata).getYearMonth(), YearMonth.from(referenceDate)); }