Skip to main content
Version: testnet (v0.73)


An individual party at any point in time is considered net long or net short. This refers to their Open Volume, calculated using FIFO. This volume is signed as either negative for LONG positions and positive for SHORT positions. A single trade may end up "splitting" with some of its volume matched into closed volume and some of its volume remaining as open volume. This is why we don't refer to positions being comprised of trades, rather of volume.

type PositionUpdate {
marketId: ID!
partyId: ID!
openVolume: String!
realisedPNL: String!
unrealisedPNL: String!
averageEntryPrice: String!
updatedAt: Timestamp
lossSocializationAmount: String!
positionStatus: PositionStatus!


PositionUpdate.marketId ● ID! non-null scalar

Market relating to this position

PositionUpdate.partyId ● ID! non-null scalar

The party holding this position

PositionUpdate.openVolume ● String! non-null scalar

Open volume (int64)

PositionUpdate.realisedPNL ● String! non-null scalar

Realised Profit and Loss (int64)

PositionUpdate.unrealisedPNL ● String! non-null scalar

Unrealised Profit and Loss (int64)

PositionUpdate.averageEntryPrice ● String! non-null scalar

Average entry price for this position

PositionUpdate.updatedAt ● Timestamp scalar

RFC3339Nano time the position was updated

PositionUpdate.lossSocializationAmount ● String! non-null scalar

The total amount of profit and loss that was not transferred due to loss socialisation

PositionUpdate.positionStatus ● PositionStatus! non-null enum

Enum set if the position was closed out or orders were removed because party was distressed

Returned by

positions subscription