@Override public EtdFuturePosition build() { return new EtdFuturePosition( info, security, longQuantity, shortQuantity); }
@Override public EtdFuturePosition withInfo(PositionInfo info) { return new EtdFuturePosition(info, security, longQuantity, shortQuantity); }
/** * Obtains an instance from position information, security 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 security the underlying security * @param netQuantity the net quantity of the underlying security * @return the position */ public static EtdFuturePosition ofNet(PositionInfo positionInfo, EtdFutureSecurity security, double netQuantity) { double longQuantity = netQuantity >= 0 ? netQuantity : 0; double shortQuantity = netQuantity >= 0 ? 0 : -netQuantity; return new EtdFuturePosition(positionInfo, security, longQuantity, shortQuantity); }
/** * Obtains an instance from position information, security, 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 security the underlying security * @param longQuantity the long quantity of the underlying security * @param shortQuantity the short quantity of the underlying security * @return the position */ public static EtdFuturePosition ofLongShort( PositionInfo positionInfo, EtdFutureSecurity security, double longQuantity, double shortQuantity) { return new EtdFuturePosition(positionInfo, security, longQuantity, shortQuantity); }