@Override public IborFutureTrade createTrade( TradeInfo info, double quantity, double tradePrice, ReferenceData refData) { return new IborFutureTrade(info, createProduct(refData), quantity, tradePrice); }
@Override public IborFuturePosition createPosition( PositionInfo positionInfo, double longQuantity, double shortQuantity, ReferenceData refData) { return IborFuturePosition.ofLongShort(positionInfo, createProduct(refData), longQuantity, shortQuantity); }
@Override public IborFutureOption createProduct(ReferenceData refData) { Security security = refData.getValue(underlyingFutureId); if (!(security instanceof IborFutureSecurity)) { throw new ClassCastException(Messages.format( "{} underlying future '{}' resolved to '{}' when '{}' was expected", IborFutureOptionSecurity.class.getSimpleName(), underlyingFutureId, security.getClass().getSimpleName(), IborFutureSecurity.class.getSimpleName())); } IborFutureSecurity futureSec = (IborFutureSecurity) security; IborFuture underlying = futureSec.createProduct(refData); return new IborFutureOption( getSecurityId(), putCall, strikePrice, expiryDate, expiryTime, expiryZone, premiumStyle, rounding, underlying); }
public void test_createProduct() { IborFutureSecurity test = sut(); assertEquals(test.createProduct(ReferenceData.empty()), PRODUCT); TradeInfo tradeInfo = TradeInfo.of(date(2016, 6, 30)); IborFutureTrade expectedTrade = IborFutureTrade.builder() .info(tradeInfo) .product(PRODUCT) .quantity(100) .price(0.995) .build(); assertEquals(test.createTrade(tradeInfo, 100, 0.995, ReferenceData.empty()), expectedTrade); PositionInfo positionInfo = PositionInfo.empty(); IborFuturePosition expectedPosition1 = IborFuturePosition.builder() .info(positionInfo) .product(PRODUCT) .longQuantity(100) .build(); TestHelper.assertEqualsBean(test.createPosition(positionInfo, 100, ReferenceData.empty()), expectedPosition1); IborFuturePosition expectedPosition2 = IborFuturePosition.builder() .info(positionInfo) .product(PRODUCT) .longQuantity(100) .shortQuantity(50) .build(); assertEquals(test.createPosition(positionInfo, 100, 50, ReferenceData.empty()), expectedPosition2); }