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); }
static ResolvedIborFuture sut2() { return PRODUCT2.resolve(REF_DATA); }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(IborFuture beanToCopy) { this.securityId = beanToCopy.getSecurityId(); this.currency = beanToCopy.getCurrency(); this.notional = beanToCopy.getNotional(); this.accrualFactor = beanToCopy.getAccrualFactor(); this.lastTradeDate = beanToCopy.getLastTradeDate(); this.index = beanToCopy.getIndex(); this.rounding = beanToCopy.getRounding(); }
static IborFutureSecurity sut() { return IborFutureSecurity.builder() .info(INFO) .notional(PRODUCT.getNotional()) .index(PRODUCT.getIndex()) .lastTradeDate(PRODUCT.getLastTradeDate()) .rounding(PRODUCT.getRounding()) .build(); }
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); }
@Override public IborFuture createProduct(ReferenceData refData) { return IborFuture.builder() .securityId(getSecurityId()) .notional(notional) .index(index) .lastTradeDate(lastTradeDate) .rounding(rounding) .build(); }
public void test_builder() { IborFutureSecurity test = sut(); assertEquals(test.getInfo(), INFO); assertEquals(test.getSecurityId(), PRODUCT.getSecurityId()); assertEquals(test.getCurrency(), PRODUCT.getCurrency()); assertEquals(test.getUnderlyingIds(), ImmutableSet.of()); }
public void test_builder_noCurrency() { IborFuture test = IborFuture.builder() .securityId(SECURITY_ID) .notional(NOTIONAL) .index(GBP_LIBOR_2M) .lastTradeDate(LAST_TRADE_DATE) .rounding(ROUNDING) .build(); assertEquals(GBP, test.getCurrency()); }
public void test_builder() { IborFutureOption test = sut(); assertEquals(test.getPutCall(), CALL); assertEquals(test.getStrikePrice(), STRIKE_PRICE); assertEquals(test.getExpiryDate(), EXPIRY_DATE); assertEquals(test.getExpiryTime(), EXPIRY_TIME); assertEquals(test.getExpiryZone(), EXPIRY_ZONE); assertEquals(test.getExpiry(), ZonedDateTime.of(EXPIRY_DATE, EXPIRY_TIME, EXPIRY_ZONE)); assertEquals(test.getRounding(), Rounding.none()); assertEquals(test.getUnderlyingFuture(), FUTURE); assertEquals(test.getCurrency(), FUTURE.getCurrency()); assertEquals(test.getIndex(), FUTURE.getIndex()); assertEquals(test.isCrossCurrency(), false); assertEquals(test.allPaymentCurrencies(), ImmutableSet.of(USD)); assertEquals(test.allCurrencies(), ImmutableSet.of(USD)); }
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() { ResolvedIborFutureOption test = sut(); assertEquals(test.getSecurityId(), PRODUCT.getSecurityId()); assertEquals(test.getPutCall(), PRODUCT.getPutCall()); assertEquals(test.getStrikePrice(), PRODUCT.getStrikePrice()); assertEquals(test.getPremiumStyle(), PRODUCT.getPremiumStyle()); assertEquals(test.getExpiry(), PRODUCT.getExpiry()); assertEquals(test.getExpiryDate(), PRODUCT.getExpiryDate()); assertEquals(test.getRounding(), PRODUCT.getRounding()); assertEquals(test.getUnderlyingFuture(), PRODUCT.getUnderlyingFuture().resolve(REF_DATA)); assertEquals(test.getIndex(), PRODUCT.getUnderlyingFuture().getIndex()); }
public void test_builder_expiryNotAfterTradeDate() { assertThrowsIllegalArg(() -> ResolvedIborFutureOption.builder() .securityId(PRODUCT.getSecurityId()) .putCall(CALL) .expiry(PRODUCT.getUnderlyingFuture().getLastTradeDate().plusDays(1).atStartOfDay(ZoneOffset.UTC)) .strikePrice(PRODUCT.getStrikePrice()) .underlyingFuture(PRODUCT.getUnderlyingFuture().resolve(REF_DATA)) .build()); }
@Override public SecurityId getSecurityId() { return product.getSecurityId(); }
@Override public Currency getCurrency() { return product.getCurrency(); }
/** * Gets the Ibor index that the option is based on. * * @return the Ibor index */ public IborIndex getIndex() { return underlyingFuture.getIndex(); }
@ImmutableValidator private void validate() { ArgChecker.inOrderOrEqual(expiryDate, underlyingFuture.getLastTradeDate(), "expiryDate", "lastTradeDate"); ArgChecker.isTrue( strikePrice < 2, "Strike price must be in decimal form, such as 0.993 for a 0.7% rate, but was: {}", strikePrice); }
static IborFutureSecurity sut2() { return IborFutureSecurity.builder() .info(INFO2) .notional(PRODUCT2.getNotional()) .index(PRODUCT2.getIndex()) .lastTradeDate(PRODUCT2.getLastTradeDate()) .rounding(PRODUCT2.getRounding()) .build(); }
static IborFuture sut2() { return IborFuture.builder() .securityId(SECURITY_ID2) .currency(GBP) .notional(NOTIONAL2) .accrualFactor(ACCRUAL_FACTOR2) .lastTradeDate(LAST_TRADE_DATE2) .index(GBP_LIBOR_2M) .build(); }
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)); }
public void test_createProduct_wrongType() { IborFutureOptionSecurity test = sut(); IborFuture future = OPTION.getUnderlyingFuture(); SecurityId secId = future.getSecurityId(); GenericSecurity sec = GenericSecurity.of(INFO); ReferenceData refData = ImmutableReferenceData.of(secId, sec); assertThrows(() -> test.createProduct(refData), ClassCastException.class); }