public final class SecurityPosition extends Object implements ResolvableSecurityPosition, org.joda.beans.ImmutableBean, Serializable
This represents a position in a security, defined by long and short quantity.
The security is referenced using SecurityId.
The identifier may be looked up in ReferenceData.
The net quantity of the position is stored using two fields - longQuantity and shortQuantity.
These two fields must not be 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.
The net quantity is available via getQuantity().
| Modifier and Type | Class and Description |
|---|---|
static class |
SecurityPosition.Builder
The bean-builder for
SecurityPosition. |
static class |
SecurityPosition.Meta
The meta-bean for
SecurityPosition. |
| Modifier and Type | Method and Description |
|---|---|
static SecurityPosition.Builder |
builder()
Returns a builder used to create an instance of the bean.
|
boolean |
equals(Object obj) |
PositionInfo |
getInfo()
Gets the additional position information, defaulted to an empty instance.
|
double |
getLongQuantity()
Gets the long quantity of the security.
|
double |
getQuantity()
Gets the net quantity of the security.
|
SecurityId |
getSecurityId()
Gets the identifier of the underlying security.
|
double |
getShortQuantity()
Gets the quantity that was traded.
|
int |
hashCode() |
static SecurityPosition.Meta |
meta()
The meta-bean for
SecurityPosition. |
SecurityPosition.Meta |
metaBean() |
static SecurityPosition |
ofLongShort(PositionInfo positionInfo,
SecurityId securityId,
double longQuantity,
double shortQuantity)
Obtains an instance from position information, security identifier, long quantity and short quantity.
|
static SecurityPosition |
ofLongShort(SecurityId securityId,
double longQuantity,
double shortQuantity)
Obtains an instance from the security identifier, long quantity and short quantity.
|
static SecurityPosition |
ofNet(PositionInfo positionInfo,
SecurityId securityId,
double netQuantity)
Obtains an instance from position information, security identifier and net quantity.
|
static SecurityPosition |
ofNet(SecurityId securityId,
double netQuantity)
Obtains an instance from the security identifier and net quantity.
|
SecuritizedProductPosition<?> |
resolveTarget(ReferenceData refData)
Resolves the security identifier using the specified reference data.
|
SecurityPosition.Builder |
toBuilder()
Returns a builder that allows this bean to be mutated.
|
String |
toString() |
SecurityPosition |
withInfo(PortfolioItemInfo info)
Returns an instance with the specified info.
|
SecurityPosition |
withQuantity(double quantity)
Returns an instance with the specified quantity.
|
clone, finalize, getClass, notify, notifyAll, wait, wait, waitgetIdpublic static SecurityPosition ofNet(SecurityId securityId, double netQuantity)
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.
securityId - the identifier of the underlying securitynetQuantity - the net quantity of the underlying securitypublic static SecurityPosition ofNet(PositionInfo positionInfo, SecurityId securityId, double netQuantity)
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.
positionInfo - the position informationsecurityId - the identifier of the underlying securitynetQuantity - the net quantity of the underlying securitypublic static SecurityPosition ofLongShort(SecurityId securityId, double longQuantity, double shortQuantity)
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.
securityId - the identifier of the underlying securitylongQuantity - the long quantity of the underlying securityshortQuantity - the short quantity of the underlying securitypublic static SecurityPosition ofLongShort(PositionInfo positionInfo, SecurityId securityId, double longQuantity, double shortQuantity)
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.
positionInfo - the position informationsecurityId - the identifier of the underlying securitylongQuantity - the long quantity of the underlying securityshortQuantity - the short quantity of the underlying securitypublic double getQuantity()
This returns the net quantity of the underlying security. The result is positive if the net position is long and negative if the net position is short.
This is calculated by subtracting the short quantity from the long quantity.
getQuantity in interface PositiongetQuantity in interface SecurityQuantitypublic SecurityPosition withInfo(PortfolioItemInfo info)
ResolvableSecurityPositionwithInfo in interface PortfolioItemwithInfo in interface PositionwithInfo in interface ResolvableSecurityPositioninfo - the new infopublic SecurityPosition withQuantity(double quantity)
ResolvableSecurityPositionwithQuantity in interface PositionwithQuantity in interface ResolvableSecurityPositionquantity - the new quantitypublic SecuritizedProductPosition<?> resolveTarget(ReferenceData refData)
ResolvableSecurityPositionThis takes the security identifier of this position, looks it up in reference data, and returns the equivalent position with full security information. If the security has underlying securities, they will also have been resolved in the result.
The resulting position is bound to data from reference data. If the data changes, the resulting position form will not be updated. Care must be taken when placing the resolved form in a cache or persistence layer.
resolveTarget in interface ResolvableCalculationTargetresolveTarget in interface ResolvableSecurityPositionrefData - the reference data to use when resolvingpublic static SecurityPosition.Meta meta()
SecurityPosition.public static SecurityPosition.Builder builder()
public SecurityPosition.Meta metaBean()
metaBean in interface org.joda.beans.Beanpublic PositionInfo getInfo()
This allows additional information to be attached to the position.
getInfo in interface PortfolioItemgetInfo in interface Positionpublic SecurityId getSecurityId()
This identifier uniquely identifies the security within the system.
getSecurityId in interface PositiongetSecurityId in interface SecurityQuantitypublic double getLongQuantity()
This is the quantity of the underlying security that is held. The quantity cannot be negative, as that would imply short selling.
public double getShortQuantity()
This is the quantity of the underlying security that has been short sold. The quantity cannot be negative, as that would imply the position is long.
public SecurityPosition.Builder toBuilder()
Copyright 2009-Present by OpenGamma Inc. and individual contributors
Apache v2 licensed
Additional documentation can be found at strata.opengamma.io.