Skip to main content
Version: latest

Position

class Position

Bases: object

Position(Instrument instrument, OrderFilled fill) -> None Represents a position in a market.

The position ID may be assigned at the trading venue, or can be system generated depending on a strategies OMS (Order Management System) settings.

  • Parameters:
    • instrument (Instrument) – The trading instrument for the position.
    • fill (OrderFilled) – The order fill event which opened the position.
  • Raises:
    • ValueError – If instrument.id is not equal to fill.instrument_id.
    • ValueError – If fill.position_id is None.

account_id

The account ID associated with the position.

  • Returns: AccountId

apply(self, OrderFilled fill) → void

Applies the given order fill event to the position.

If the position is FLAT prior to applying fill, the position state is reset (clearing existing events, commissions, etc.) before processing the new fill.

  • Parameters: fill (OrderFilled) – The order fill event to apply.
  • Raises: KeyError – If fill.trade_id already applied to the position.

avg_px_close

The average close price.

  • Returns: double

avg_px_open

The average open price.

  • Returns: double

base_currency

The position base currency (if applicable).

  • Returns: Currency or None

calculate_pnl(self, double avg_px_open, double avg_px_close, Quantity quantity) → Money

Return a calculated PnL in the instrument’s settlement currency.

  • Parameters:
    • avg_px_open (double) – The average open price.
    • avg_px_close (double) – The average close price.
    • quantity (Quantity) – The quantity for the calculation.
  • Returns: Denominated in settlement currency.
  • Return type: Money

client_order_ids

Return the client order IDs associated with the position.

closing_order_id

The client order ID for the order which closed the position.

  • Returns: ClientOrderId or None

commissions(self) → list

Return the total commissions generated by the position.

  • Return type: list[Money]

duration_ns

The total open duration (nanoseconds).

  • Returns: uint64_t

entry

The position entry order side.

  • Returns: OrderSide

event_count

Return the count of order fill events applied to the position.

  • Return type: int

events

Return the order fill events for the position.

  • Return type: list[Event]

id

The position ID.

  • Returns: PositionId

info(self) → str

Return a summary description of the position.

  • Return type: str

instrument_id

The position instrument ID.

  • Returns: InstrumentId

is_closed

Return whether the position side is FLAT.

  • Return type: bool

is_inverse

If the quantity is expressed in quote currency.

  • Returns: bool

is_long

Return whether the position side is LONG.

  • Return type: bool

is_open

Return whether the position side is not FLAT.

  • Return type: bool

is_opposite_side(self, OrderSide side) → bool

Return a value indicating whether the given order side is opposite to the current position side.

  • Parameters: side (OrderSide {BUY, SELL})
  • Returns: True if side is opposite, else False.
  • Return type: bool

is_short

Return whether the position side is SHORT.

  • Return type: bool

last_event

Return the last order fill event.

last_trade_id

Return the last trade match ID for the position.

multiplier

The multiplier for the positions instrument.

  • Returns: Quantity

notional_value(self, Price price) → Money

Return the current notional value of the position, using a reference price for the calculation (e.g., bid, ask, mid, last, or mark).

  • For a standard (non-inverse) instrument, the notional is returned in the quote currency.
  • For an inverse instrument, the notional is returned in the base currency, with the calculation scaled by 1 / price.
  • Parameters: price (Price) – The reference price for the calculation. This could be the last, mid, bid, ask, a mark-to-market price, or any other suitably representative value.
  • Returns: Denominated in quote currency for standard instruments, or base currency if inverse.
  • Return type: Money

opening_order_id

The client order ID for the order which opened the position.

  • Returns: ClientOrderId

peak_qty

The peak directional quantity reached by the position.

  • Returns: Quantity

price_precision

The price precision for the position.

  • Returns: uint8

quantity

The current open quantity.

  • Returns: Quantity

quote_currency

The position quote currency.

  • Returns: Currency

realized_pnl

The current realized PnL for the position (including commissions).

  • Returns: Money or None

realized_return

The current realized return for the position.

  • Returns: double

settlement_currency

The position settlement currency (for PnL).

  • Returns: Currency

side

The current position side.

  • Returns: PositionSide

static side_from_order_side(OrderSide side)

Return the position side resulting from the given order side (from FLAT).

  • Parameters: side (OrderSide {BUY, SELL}) – The order side
  • Return type: PositionSide

signed_decimal_qty(self)

Return a signed decimal representation of the position quantity.

  • If the position is LONG, the value is positive (e.g. Decimal(‘10.25’))
  • If the position is SHORT, the value is negative (e.g. Decimal(‘-10.25’))
  • If the position is FLAT, the value is zero (e.g. Decimal(‘0’))
  • Return type: Decimal

signed_qty

The current signed quantity (positive for position side LONG, negative for SHORT).

  • Returns: double

size_precision

The size precision for the position.

  • Returns: uint8

strategy_id

The strategy ID associated with the position.

  • Returns: StrategyId

symbol

Return the positions ticker symbol.

to_dict(self) → dict

Return a dictionary representation of this object.

  • Return type: dict[str, object]

total_pnl(self, Price price) → Money

Return the total PnL for the position, using a reference price for the calculation (e.g., bid, ask, mid, last, or mark).

  • Parameters: price (Price) – The reference price for the calculation. This could be the last, mid, bid, ask, a mark-to-market price, or any other suitably representative value.
  • Returns: Denominated in settlement currency.
  • Return type: Money

trade_ids

Return the trade match IDs associated with the position.

trader_id

The trader ID associated with the position.

  • Returns: TraderId

ts_closed

UNIX timestamp (nanoseconds) when the position was closed.

  • Returns: uint64_t

ts_init

UNIX timestamp (nanoseconds) when the object was initialized.

  • Returns: uint64_t

ts_last

UNIX timestamp (nanoseconds) when the last event occurred.

  • Returns: uint64_t

ts_opened

UNIX timestamp (nanoseconds) when the position was opened.

  • Returns: uint64_t

unrealized_pnl(self, Price price) → Money

Return the unrealized PnL for the position, using a reference price for the calculation (e.g., bid, ask, mid, last, or mark).

  • Parameters: price (Price) – The reference price for the calculation. This could be the last, mid, bid, ask, a mark-to-market price, or any other suitably representative value.
  • Returns: Denominated in settlement currency.
  • Return type: Money

venue

Return the positions trading venue.

venue_order_ids

Return the venue order IDs associated with the position.