/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(IborFutureOptionPosition beanToCopy) { this.info = beanToCopy.getInfo(); this.product = beanToCopy.getProduct(); this.longQuantity = beanToCopy.getLongQuantity(); this.shortQuantity = beanToCopy.getShortQuantity(); }
@Override public IborFutureOptionPosition withInfo(PositionInfo info) { return new IborFutureOptionPosition(info, product, longQuantity, shortQuantity); }
public void test_builder_resolved() { IborFutureOptionPosition test = sut(); assertEquals(test.getProduct(), PRODUCT); assertEquals(test.getInfo(), POSITION_INFO); assertEquals(test.getLongQuantity(), QUANTITY, 0d); assertEquals(test.getShortQuantity(), 0d, 0d); assertEquals(test.getQuantity(), QUANTITY, 0d); assertEquals(test.withInfo(POSITION_INFO).getInfo(), POSITION_INFO); assertEquals(test.withQuantity(129).getQuantity(), 129d, 0d); }
@Override public PortfolioItemSummary summarize() { // ID x 200 String description = getSecurityId().getStandardId().getValue() + " x " + SummarizerUtils.value(getQuantity()); return SummarizerUtils.summary(this, ProductType.IBOR_FUTURE_OPTION, description, getCurrency()); }
@Override public IborFutureOptionPosition createPosition( PositionInfo positionInfo, double longQuantity, double shortQuantity, ReferenceData refData) { return IborFutureOptionPosition.ofLongShort(positionInfo, createProduct(refData), longQuantity, shortQuantity); }
@Override public ResolvedIborFutureOptionTrade resolve(ReferenceData refData) { ResolvedIborFutureOption resolved = product.resolve(refData); return new ResolvedIborFutureOptionTrade(info, resolved, getQuantity(), null); }
public void test_withQuantity() { IborFutureOptionPosition base = sut(); double quantity = 75343d; IborFutureOptionPosition computed = base.withQuantity(quantity); IborFutureOptionPosition expected = IborFutureOptionPosition.builder() .info(POSITION_INFO) .product(PRODUCT) .longQuantity(quantity) .build(); assertEquals(computed, expected); }
static IborFutureOptionPosition sut() { return IborFutureOptionPosition.builder() .info(POSITION_INFO) .product(PRODUCT) .longQuantity(QUANTITY) .build(); }
static IborFutureOptionPosition sut2() { return IborFutureOptionPosition.builder() .info(POSITION_INFO2) .product(PRODUCT2) .longQuantity(100) .shortQuantity(50) .build(); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 3237038: // info return ((IborFutureOptionPosition) bean).getInfo(); case -309474065: // product return ((IborFutureOptionPosition) bean).getProduct(); case 611668775: // longQuantity return ((IborFutureOptionPosition) bean).getLongQuantity(); case -2094395097: // shortQuantity return ((IborFutureOptionPosition) bean).getShortQuantity(); case -1285004149: // quantity return ((IborFutureOptionPosition) bean).getQuantity(); } return super.propertyGet(bean, propertyName, quiet); }
@Override public IborFutureOptionPosition build() { return new IborFutureOptionPosition( info, product, longQuantity, shortQuantity); }
public void test_createProduct() { IborFutureOptionSecurity test = sut(); ReferenceData refData = ImmutableReferenceData.of(FUTURE_ID, FUTURE_SECURITY); assertEquals(test.createProduct(refData), OPTION); TradeInfo tradeInfo = TradeInfo.of(date(2016, 6, 30)); IborFutureOptionTrade expectedTrade = IborFutureOptionTrade.builder() .info(tradeInfo) .product(OPTION) .quantity(100) .price(123.50) .build(); assertEquals(test.createTrade(tradeInfo, 100, 123.50, refData), expectedTrade); PositionInfo positionInfo = PositionInfo.empty(); IborFutureOptionPosition expectedPosition1 = IborFutureOptionPosition.builder() .info(positionInfo) .product(OPTION) .longQuantity(100) .build(); TestHelper.assertEqualsBean(test.createPosition(positionInfo, 100, refData), expectedPosition1); IborFutureOptionPosition expectedPosition2 = IborFutureOptionPosition.builder() .info(positionInfo) .product(OPTION) .longQuantity(100) .shortQuantity(50) .build(); assertEquals(test.createPosition(positionInfo, 100, 50, refData), expectedPosition2); }
/** * Obtains an instance from position information, product and net quantity. * <p> * The net quantity is the long quantity minus the short quantity, which may be negative. * If the quantity is positive it is treated as a long quantity. * Otherwise it is treated as a short quantity. * * @param positionInfo the position information * @param product the underlying product * @param netQuantity the net quantity of the underlying security * @return the position */ public static IborFutureOptionPosition ofNet(PositionInfo positionInfo, IborFutureOption product, double netQuantity) { double longQuantity = netQuantity >= 0 ? netQuantity : 0; double shortQuantity = netQuantity >= 0 ? 0 : -netQuantity; return new IborFutureOptionPosition(positionInfo, product, longQuantity, shortQuantity); }
/** * Obtains an instance from position information, product, long quantity and short quantity. * <p> * The long quantity and short quantity must be zero or positive, not negative. * In many cases, only a long quantity or short quantity will be present with the other set to zero. * However it is also possible for both to be non-zero, allowing long and short positions to be treated separately. * * @param positionInfo the position information * @param product the underlying product * @param longQuantity the long quantity of the underlying security * @param shortQuantity the short quantity of the underlying security * @return the position */ public static IborFutureOptionPosition ofLongShort( PositionInfo positionInfo, IborFutureOption product, double longQuantity, double shortQuantity) { return new IborFutureOptionPosition(positionInfo, product, longQuantity, shortQuantity); }