Skip to main content
Version: latest

Model

The model subpackage defines a rich trading domain model.

The domain model is agnostic of any system design, seeking to represent the logic and state transitions of trading in a generic way. Many system implementations could be built around this domain model.

class AccountBalance

Bases: object

AccountBalance(Money total, Money locked, Money free) -> None

Represents an account balance denominated in a particular currency.

  • Parameters:
    • total (Money) – The total account balance.
    • locked (Money) – The account balance locked (assigned to pending orders).
    • free (Money) – The account balance free for trading.
  • Raises:
    • ValueError – If money currencies are not equal.
    • ValueError – If any money is negative (< 0).
    • ValueError – If total - locked != free.

currency

The currency of the account.

  • Returns: Currency

free

The account balance free for trading.

  • Returns: Money

static from_dict(dict values) → AccountBalance

Return an account balance from the given dict values.

  • Parameters: values (dict *[*str , object ]) – The values for initialization.
  • Return type: AccountBalance

locked

The account balance locked (assigned to pending orders).

  • Returns: Money

to_dict(self) → dict

Return a dictionary representation of this object.

  • Return type: dict[str, object]

total

The total account balance.

  • Returns: Money

class AccountId

Bases: Identifier

AccountId(unicode value) -> None

Represents a valid account ID.

Must be correctly formatted with two valid strings either side of a hyphen. It is expected an account ID is the name of the issuer with an account number separated by a hyphen.

Example: “IB-D02851908”.

  • Parameters: value (str) – The account ID value.
  • Raises: ValueError – If value is not a valid string containing a hyphen.

WARNING

The issuer and number ID combination must be unique at the firm level.

get_id(self) → unicode

Return the account ID without issuer name.

  • Return type: str

get_issuer(self) → unicode

Return the account issuer for this ID.

  • Return type: str

class Bar

Bases: Data

Bar(BarType bar_type, Price open, Price high, Price low, Price close, Quantity volume, uint64_t ts_event, uint64_t ts_init, bool is_revision=False) -> None

Represents an aggregated bar.

  • Parameters:
    • bar_type (BarType) – The bar type for this bar.
    • open (Price) – The bars open price.
    • high (Price) – The bars high price.
    • low (Price) – The bars low price.
    • close (Price) – The bars close price.
    • volume (Quantity) – The bars volume.
    • ts_event (uint64_t) – UNIX timestamp (nanoseconds) when the data event occurred.
    • ts_init (uint64_t) – UNIX timestamp (nanoseconds) when the data object was initialized.
    • is_revision (bool , default False) – If this bar is a revision of a previous bar with the same ts_event.
  • Raises:
    • ValueError – If high is not >= low.
    • ValueError – If high is not >= close.
    • ValueError – If low is not <= close.

bar_type

BarType

Return the bar type of bar.

  • Return type: BarType
  • Type: Bar.bar_type

close

Price

Return the close price of the bar.

  • Return type: Price
  • Type: Bar.close

static from_dict(dict values) → Bar

Return a bar parsed from the given values.

  • Parameters: values (dict *[*str , object ]) – The values for initialization.
  • Return type: Bar

static from_pyo3(pyo3_bar) → Bar

Return a legacy Cython bar converted from the given pyo3 Rust object.

  • Parameters: pyo3_bar (nautilus_pyo3.Bar) – The pyo3 Rust bar to convert from.
  • Return type: Bar

static from_pyo3_list(list pyo3_bars) → list[Bar]

Return legacy Cython bars converted from the given pyo3 Rust objects.

  • Parameters: pyo3_bars (list *[*nautilus_pyo3.Bar ]) – The pyo3 Rust bars to convert from.
  • Return type: list[Bar]

static from_raw(BarType bar_type, int64_t open, int64_t high, int64_t low, int64_t close, uint8_t price_prec, uint64_t volume, uint8_t size_prec, uint64_t ts_event, uint64_t ts_init) → Bar

static from_raw_arrays_to_list(BarType bar_type, uint8_t price_prec, uint8_t size_prec, int64_t[:] opens, int64_t[:] highs, int64_t[:] lows, int64_t[:] closes, uint64_t[:] volumes, uint64_t[:] ts_events, uint64_t[:] ts_inits) → list[Bar]

high

Price

Return the high price of the bar.

  • Return type: Price
  • Type: Bar.high

is_revision

If this bar is a revision for a previous bar with the same ts_event.

  • Returns: bool

is_single_price(self) → bool

If the OHLC are all equal to a single price.

  • Return type: bool

low

Price

Return the low price of the bar.

  • Return type: Price
  • Type: Bar.low

open

Price

Return the open price of the bar.

  • Return type: Price
  • Type: Bar.open

static to_dict(Bar obj)

Return a dictionary representation of this object.

  • Return type: dict[str, object]

to_pyo3(self) → nautilus_pyo3.Bar

Return a pyo3 object from this legacy Cython instance.

  • Return type: nautilus_pyo3.Bar

static to_pyo3_list(list bars) → list[nautilus_pyo3.Bar]

Return pyo3 Rust bars converted from the given legacy Cython objects.

  • Parameters: bars (list [Bar ]) – The legacy Cython bars to convert from.
  • Return type: list[nautilus_pyo3.Bar]

ts_event

int

UNIX timestamp (nanoseconds) when the data event occurred.

  • Return type: int
  • Type: Bar.ts_event

ts_init

int

UNIX timestamp (nanoseconds) when the object was initialized.

  • Return type: int
  • Type: Bar.ts_init

volume

Quantity

Return the volume of the bar.

  • Return type: Quantity
  • Type: Bar.volume

class BarSpecification

Bases: object

BarSpecification(int step, BarAggregation aggregation, PriceType price_type) -> None

Represents a bar aggregation specification including a step, aggregation method/rule and price type.

  • Parameters:
    • step (int) – The step for binning samples for bar aggregation (> 0).
    • aggregation (BarAggregation) – The type of bar aggregation.
    • price_type (PriceType) – The price type to use for aggregation.
  • Raises: ValueError – If step is not positive (> 0).

aggregation

BarAggregation

Return the aggregation for the specification.

static check_information_aggregated(BarAggregation aggregation)

Check the given aggregation is a type of information aggregation.

  • Parameters: aggregation (BarAggregation) – The aggregation type to check.
  • Returns: True if information aggregated, else False.
  • Return type: bool

static check_threshold_aggregated(BarAggregation aggregation)

Check the given aggregation is a type of threshold aggregation.

  • Parameters: aggregation (BarAggregation) – The aggregation type to check.
  • Returns: True if threshold aggregated, else False.
  • Return type: bool

static check_time_aggregated(BarAggregation aggregation)

Check the given aggregation is a type of time aggregation.

  • Parameters: aggregation (BarAggregation) – The aggregation type to check.
  • Returns: True if time aggregated, else False.
  • Return type: bool

static from_str(unicode value) → BarSpecification

Return a bar specification parsed from the given string.

  • Parameters: value (str) – The bar specification string to parse.

  • Return type: BarSpecification

  • Raises: ValueError – If value is not a valid string.

static from_timedelta(timedelta duration, PriceType price_type) → BarSpecification

Return a bar specification parsed from the given timedelta and price_type.

  • Parameters:

    • duration (timedelta) – The bar specification timedelta to parse.
    • price_type (PriceType) – The bar specification price_type.
  • Return type: BarSpecification

  • Raises: ValueError – If duration is not rounded step of aggregation.

is_information_aggregated(self) → bool

Return a value indicating whether the aggregation method is information-driven.

  • TICK_RUNS
  • VOLUME_RUNS
  • VALUE_RUNS
  • Return type: bool

is_threshold_aggregated(self) → bool

Return a value indicating whether the bar aggregation method is threshold-driven.

  • TICK
  • TICK_IMBALANCE
  • VOLUME
  • VOLUME_IMBALANCE
  • VALUE
  • VALUE_IMBALANCE
  • Return type: bool

is_time_aggregated(self) → bool

Return a value indicating whether the aggregation method is time-driven.

  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • Return type: bool

price_type

PriceType

Return the price type for the specification.

  • Return type: PriceType
  • Type: BarSpecification.price_type

step

int

Return the step size for the specification.

  • Return type: int
  • Type: BarSpecification.step

timedelta

timedelta

Return the timedelta for the specification.

  • Return type: timedelta
  • Raises: ValueError – If aggregation is not a time aggregation, or is``MONTH`` (which is ambiguous).
  • Type: BarSpecification.timedelta

class BarType

Bases: object

BarType(InstrumentId instrument_id, BarSpecification bar_spec, AggregationSource aggregation_source=AggregationSource.EXTERNAL) -> None

Represents a bar type including the instrument ID, bar specification and aggregation source.

  • Parameters:
    • instrument_id (InstrumentId) – The bar type’s instrument ID.
    • bar_spec (BarSpecification) – The bar type’s specification.
    • aggregation_source (AggregationSource , default EXTERNAL) – The bar type aggregation source. If INTERNAL the DataEngine will subscribe to the necessary ticks and aggregate bars accordingly. Else if EXTERNAL then bars will be subscribed to directly from the venue / data provider.

aggregation_source

AggregationSource

Return the aggregation source for the bar type.

  • Return type: AggregationSource
  • Type: BarType.aggregation_source

composite(self) → BarType

static from_str(unicode value) → BarType

Return a bar type parsed from the given string.

  • Parameters: value (str) – The bar type string to parse.
  • Return type: BarType
  • Raises: ValueError – If value is not a valid string.

instrument_id

InstrumentId

Return the instrument ID for the bar type.

is_composite(self) → bool

Return a value indicating whether the bar type corresponds to BarType::Composite in Rust.

  • Return type: bool

is_externally_aggregated(self) → bool

Return a value indicating whether the bar aggregation source is EXTERNAL.

  • Return type: bool

is_internally_aggregated(self) → bool

Return a value indicating whether the bar aggregation source is INTERNAL.

  • Return type: bool

is_standard(self) → bool

Return a value indicating whether the bar type corresponds to BarType::Standard in Rust.

  • Return type: bool

static new_composite(InstrumentId instrument_id, BarSpecification bar_spec, AggregationSource aggregation_source, int composite_step, BarAggregation composite_aggregation, AggregationSource composite_aggregation_source) → BarType

spec

BarSpecification

Return the specification for the bar type.

standard(self) → BarType

class BookLevel

Bases: object

Represents an order book price level.

A price level on one side of the order book with one or more individual orders.

This class is read-only and cannot be initialized from Python.

  • Parameters:
    • price (Price) – The price for the level.
    • orders (list [BookOrder ]) – The orders for the level.
  • Raises: ValueError – If orders is empty.

exposure(self) → double

Return the exposure at this level (price * volume).

  • Return type: double

orders(self) → list

Return the orders for the level.

price

Price

Return the price for the level.

  • Return type: Price
  • Type: BookLevel.price

size(self) → double

Return the size at this level.

  • Return type: double

class BookOrder

Bases: object

BookOrder(OrderSide side, Price price, Quantity size, uint64_t order_id) -> None

Represents an order in a book.

  • Parameters:
    • side (OrderSide {BUY, SELL}) – The order side.
    • price (Price) – The order price.
    • size (Quantity) – The order size.
    • order_id (uint64_t) – The order ID.

exposure(self) → double

Return the total exposure for this order (price * size).

  • Return type: double

static from_dict(dict values) → BookOrder

Return an order from the given dict values.

  • Parameters: values (dict *[*str , object ]) – The values for initialization.
  • Return type: BookOrder

static from_raw(OrderSide side, int64_t price_raw, uint8_t price_prec, uint64_t size_raw, uint8_t size_prec, uint64_t order_id) → BookOrder

Return an book order from the given raw values.

  • Parameters:
    • side (OrderSide {BUY, SELL}) – The order side.
    • price_raw (int64_t) – The order raw price (as a scaled fixed-point integer).
    • price_prec (uint8_t) – The order price precision.
    • size_raw (uint64_t) – The order raw size (as a scaled fixed-point integer).
    • size_prec (uint8_t) – The order size precision.
    • order_id (uint64_t) – The order ID.
  • Return type: BookOrder

order_id

uint64_t

Return the book orders side.

  • Return type: uint64_t
  • Type: BookOrder.order_id

price

Price

Return the book orders price.

  • Return type: Price
  • Type: BookOrder.price

side

OrderSide

Return the book orders side.

  • Return type: OrderSide
  • Type: BookOrder.side

signed_size(self) → double

Return the signed size of the order (negative for SELL).

  • Return type: double

size

Quantity

Return the book orders size.

  • Return type: Quantity
  • Type: BookOrder.size

static to_dict(BookOrder obj)

Return a dictionary representation of this object.

  • Return type: dict[str, object]

class ClientId

Bases: Identifier

ClientId(unicode value) -> None

Represents a system client ID.

  • Parameters: value (str) – The client ID value.
  • Raises: ValueError – If value is not a valid string.

WARNING

The ID value must be unique at the trader level.

class ClientOrderId

Bases: Identifier

ClientOrderId(unicode value) -> None

Represents a valid client order ID (assigned by the Nautilus system).

  • Parameters: value (str) – The client order ID value.
  • Raises: ValueError – If value is not a valid string.

WARNING

The ID value must be unique at the firm level.

class ComponentId

Bases: Identifier

ComponentId(unicode value) -> None

Represents a valid component ID.

  • Parameters: value (str) – The component ID value.
  • Raises: ValueError – If value is not a valid string.

WARNING

The ID value must be unique at the trader level.

class Currency

Bases: object

Currency(unicode code, uint8_t precision, uint16_t iso4217, unicode name, CurrencyType currency_type) -> None

Represents a medium of exchange in a specified denomination with a fixed decimal precision.

Handles up to 9 decimals of precision.

  • Parameters:
    • code (str) – The currency code.
    • precision (uint8_t) – The currency decimal precision.
    • iso4217 (uint16) – The currency ISO 4217 code.
    • name (str) – The currency name.
    • currency_type (CurrencyType) – The currency type.
  • Raises:
    • ValueError – If code is not a valid string.
    • OverflowError – If precision is negative (< 0).
    • ValueError – If precision greater than 9.
    • ValueError – If name is not a valid string.

code

str

Return the currency code.

  • Return type: str
  • Type: Currency.code

currency_type

CurrencyType

Return the currency type.

  • Return type: CurrencyType
  • Type: Currency.currency_type

static from_internal_map(unicode code)

Return the currency with the given code from the built-in internal map (if found).

  • Parameters: code (str) – The code of the currency.
  • Return type: Currency or None

static from_str(unicode code, bool strict=False)

Parse a currency from the given string (if found).

  • Parameters:
    • code (str) – The code of the currency.
    • strict (bool , default False) – If not strict mode then an unknown currency will very likely be a Cryptocurrency, so for robustness will then return a new Currency object using the given code with a default precision of 8.
  • Return type: Currency or None

static is_crypto(unicode code)

Return whether a currency with the given code is CRYPTO.

  • Parameters: code (str) – The code of the currency.
  • Returns: True if CRYPTO, else False.
  • Return type: bool
  • Raises: ValueError – If code is not a valid string.

static is_fiat(unicode code)

Return whether a currency with the given code is FIAT.

  • Parameters: code (str) – The code of the currency.
  • Returns: True if FIAT, else False.
  • Return type: bool
  • Raises: ValueError – If code is not a valid string.

iso4217

int

Return the currency ISO 4217 code.

  • Return type: str
  • Type: Currency.iso4217

name

str

Return the currency name.

  • Return type: str
  • Type: Currency.name

precision

int

Return the currency decimal precision.

  • Return type: uint8
  • Type: Currency.precision

static register(Currency currency, bool overwrite=False)

Register the given currency.

Will override the internal currency map.

  • Parameters:
    • currency (Currency) – The currency to register
    • overwrite (bool) – If the currency in the internal currency map should be overwritten.

class CustomData

Bases: Data

CustomData(DataType data_type, Data data) -> None

Provides a wrapper for custom data which includes data type information.

  • Parameters:
    • data_type (DataType) – The data type.
    • data (Data) – The data object to wrap.

data

The data.

  • Returns: Data

data_type

The data type.

  • Returns: DataType

ts_event

int

UNIX timestamp (nanoseconds) when the data event occurred.

  • Return type: int
  • Type: CustomData.ts_event

ts_init

int

UNIX timestamp (nanoseconds) when the object was initialized.

  • Return type: int
  • Type: CustomData.ts_init

class DataType

Bases: object

DataType(type type, dict metadata=None) -> None

Represents a data type including metadata.

  • Parameters:
    • type (type) – The Data type of the data.
    • metadata (dict) – The data types metadata.
  • Raises:
    • ValueError – If type is not either a subclass of Data or meets the Data contract.
    • TypeError – If metadata contains a key or value which is not hashable.

WARNING

This class may be used as a key in hash maps throughout the system, thus the key and value contents of metadata must themselves be hashable.

metadata

The data types metadata.

  • Returns: dict[str, object]

topic

The data types topic string.

  • Returns: str

type

The Data type of the data.

  • Returns: type

class ExecAlgorithmId

Bases: Identifier

ExecAlgorithmId(unicode value) -> None

Represents a valid execution algorithm ID.

  • Parameters: value (str) – The execution algorithm ID value.
  • Raises: ValueError – If value is not a valid string.

class InstrumentClose

Bases: Data

InstrumentClose(InstrumentId instrument_id, Price close_price, InstrumentCloseType close_type, uint64_t ts_event, uint64_t ts_init) -> None

Represents an instrument close at a venue.

  • Parameters:
    • instrument_id (InstrumentId) – The instrument ID.
    • close_price (Price) – The closing price for the instrument.
    • close_type (InstrumentCloseType) – The type of closing price.
    • ts_event (uint64_t) – UNIX timestamp (nanoseconds) when the close price event occurred.
    • ts_init (uint64_t) – UNIX timestamp (nanoseconds) when the object was initialized.

close_price

The instrument close price.

  • Returns: Price

close_type

The instrument close type.

  • Returns: InstrumentCloseType

static from_dict(dict values) → InstrumentClose

Return an instrument close price event from the given dict values.

  • Parameters: values (dict *[*str , object ]) – The values for initialization.
  • Return type: InstrumentClose

instrument_id

The event instrument ID.

  • Returns: InstrumentId

static to_dict(InstrumentClose obj)

Return a dictionary representation of this object.

  • Return type: dict[str, object]

ts_event

UNIX timestamp (nanoseconds) when the data event occurred.

  • Returns: uint64_t

ts_init

UNIX timestamp (nanoseconds) when the object was initialized.

  • Returns: uint64_t

class InstrumentId

Bases: Identifier

InstrumentId(Symbol symbol, Venue venue) -> None

Represents a valid instrument ID.

The symbol and venue combination should uniquely identify the instrument.

  • Parameters:
    • symbol (Symbol) – The instruments ticker symbol.
    • venue (Venue) – The instruments trading venue.

static from_str(unicode value: str) → InstrumentId

Return an instrument ID parsed from the given string value. Must be correctly formatted including symbol and venue components either side of a single period.

Examples: ‘AUD/USD.IDEALPRO’, ‘BTCUSDT.BINANCE’

  • Parameters: value (str) – The instrument ID string value to parse.
  • Return type: InstrumentId
  • Raises: ValueError – If value is not a valid instrument ID string.

is_synthetic(self) → bool

Return whether the instrument ID is a synthetic instrument (with venue of ‘SYNTH’).

  • Return type: bool

symbol

Symbol

Returns the instrument ticker symbol.

  • Return type: Symbol
  • Type: InstrumentId.symbol

venue

Venue

Returns the instrument trading venue.

  • Return type: Venue
  • Type: InstrumentId.venue

class InstrumentStatus

Bases: Data

InstrumentStatus(InstrumentId instrument_id, MarketStatusAction action, uint64_t ts_event, uint64_t ts_init, unicode reason=None, unicode trading_event=None, is_trading: bool | None = None, is_quoting: bool | None = None, is_short_sell_restricted: bool | None = None) -> None

Represents an event that indicates a change in an instrument market status.

  • Parameters:
    • instrument_id (InstrumentId) – The instrument ID for the status change.
    • action (MarketStatusAction) – The instrument market status action.
    • ts_event (uint64_t) – UNIX timestamp (nanoseconds) when the status event occurred.
    • ts_init (uint64_t) – UNIX timestamp (nanoseconds) when the object was initialized.
    • reason (str , optional) – Additional details about the cause of the status change.
    • trading_event (str , optional) – Further information about the status change (if provided).
    • is_trading (bool , optional) – The state of trading in the instrument.
    • is_quoting (bool , optional) – The state of quoting in the instrument.
    • is_short_sell_restricted (bool , optional) – The state of short sell restrictions for the instrument (if applicable).

action

The instrument market status action.

  • Returns: MarketStatusAction

static from_dict(dict values) → InstrumentStatus

Return an instrument status update from the given dict values.

  • Parameters: values (dict *[*str , object ]) – The values for initialization.
  • Return type: InstrumentStatus

static from_pyo3(pyo3_status) → InstrumentStatus

Return a legacy Cython quote tick converted from the given pyo3 Rust object.

  • Parameters: pyo3_status (nautilus_pyo3.InstrumentStatus) – The pyo3 Rust instrument status to convert from.
  • Return type: InstrumentStatus

static from_pyo3_list(list pyo3_status_list) → list[QuoteTick]

Return legacy Cython instrument status converted from the given pyo3 Rust objects.

  • Parameters: pyo3_status_list (list *[*nautilus_pyo3.InstrumentStatus ]) – The pyo3 Rust instrument status list to convert from.
  • Return type: list[InstrumentStatus]

instrument_id

The instrument ID.

  • Returns: InstrumentId

is_quoting

bool | None

Return the state of quoting in the instrument (if known).

  • Return type: bool or None
  • Type: InstrumentStatus.is_quoting

is_short_sell_restricted

bool | None

Return the state of short sell restrictions for the instrument (if known and applicable).

  • Return type: bool or None
  • Type: InstrumentStatus.is_short_sell_restricted

is_trading

bool | None

Return the state of trading in the instrument (if known).

  • Return type: bool or None
  • Type: InstrumentStatus.is_trading

reason

Additional details about the cause of the status change.

  • Returns: str or None

static to_dict(InstrumentStatus obj)

Return a dictionary representation of this object.

  • Return type: dict[str, object]

to_pyo3(self) → nautilus_pyo3.InstrumentStatus

Return a pyo3 object from this legacy Cython instance.

  • Return type: nautilus_pyo3.InstrumentStatus

trading_event

Further information about the status change (if provided).

  • Returns: str or None

ts_event

UNIX timestamp (nanoseconds) when the data event occurred.

  • Returns: uint64_t

ts_init

UNIX timestamp (nanoseconds) when the object was initialized.

  • Returns: uint64_t

class MarginBalance

Bases: object

MarginBalance(Money initial, Money maintenance, InstrumentId instrument_id=None) -> None

Represents a margin balance optionally associated with a particular instrument.

  • Parameters:
    • initial (Money) – The initial (order) margin requirement for the instrument.
    • maintenance (Money) – The maintenance (position) margin requirement for the instrument.
    • instrument_id (InstrumentId , optional) – The instrument ID associated with the margin.
  • Raises:
    • ValueError – If margin_init currency does not equal currency.
    • ValueError – If margin_maint currency does not equal currency.
    • ValueError – If any margin is negative (< 0).

currency

The currency of the margin.

  • Returns: Currency

static from_dict(dict values) → MarginBalance

Return a margin balance from the given dict values.

  • Parameters: values (dict *[*str , object ]) – The values for initialization.
  • Return type: MarginAccountBalance

initial

The initial margin requirement.

  • Returns: Money

instrument_id

The instrument ID associated with the margin.

  • Returns: InstrumentId or None

maintenance

The maintenance margin requirement.

  • Returns: Money

to_dict(self) → dict

Return a dictionary representation of this object.

  • Return type: dict[str, object]

class Money

Bases: object

Money(value, Currency currency) -> None

Represents an amount of money in a specified currency denomination.

  • MONEY_MAX = 9_223_372_036
  • MONEY_MIN = -9_223_372_036
  • Parameters:
    • value (integer , float , string or Decimal) – The amount of money in the currency denomination.
    • currency (Currency) – The currency of the money.
  • Raises:
    • ValueError – If value is greater than 9_223_372_036.
    • ValueError – If value is less than -9_223_372_036.

as_decimal(self)

Return the value as a built-in Decimal.

  • Return type: Decimal

as_double(self) → double

Return the value as a double.

  • Return type: double

currency

Currency

Return the currency for the money.

  • Return type: Currency
  • Type: Money.currency

static from_raw(int64_t raw, Currency currency) → Money

Return money from the given raw fixed-point integer and currency.

  • Parameters:
    • raw (int64_t) – The raw fixed-point money amount.
    • currency (Currency) – The currency of the money.
  • Return type: Money

WARNING

Small raw values can produce a zero money amount depending on the precision of the currency.

static from_str(unicode value) → Money

Return money parsed from the given string.

Must be correctly formatted with a value and currency separated by a whitespace delimiter.

Example: “1000000.00 USD”.

  • Parameters: value (str) – The value to parse.
  • Return type: Money
  • Raises:
    • ValueError – If inferred currency precision is greater than 9.
    • OverflowError – If inferred currency precision is negative (< 0).

raw

int64_t

Return the raw memory representation of the money amount.

  • Return type: int64_t
  • Type: Money.raw

to_formatted_str(self) → unicode

Return the formatted string representation of the money.

  • Return type: str

class OrderBook

Bases: Data

OrderBook(InstrumentId instrument_id, BookType book_type) -> None

Provides an order book which can handle L1/L2/L3 granularity data.

add(self, BookOrder order, uint64_t ts_event, uint8_t flags=0, uint64_t sequence=0) → void

Add the given order to the book.

  • Parameters:
    • order (BookOrder) – The order to add.
    • ts_event (uint64_t) – UNIX timestamp (nanoseconds) when the book event occurred.
    • flags (uint8_t , default 0) – The record flags bit field, indicating event end and data information.
    • sequence (uint64_t , default 0) – The unique sequence number for the update. If default 0 then will increment the sequence.
  • Raises: RuntimeError – If the book type is L1_MBP.

apply(self, Data data) → void

Apply the given data to the order book.

apply_delta(self, OrderBookDelta delta) → void

Apply the order book delta.

  • Parameters: delta (OrderBookDelta) – The delta to apply.
  • Raises: ValueError – If delta.book_type is not equal to self.type.

apply_deltas(self, OrderBookDeltas deltas) → void

Apply the bulk deltas to the order book.

apply_depth(self, OrderBookDepth10 depth) → void

Apply the depth update to the order book.

asks(self) → list

Return the bid levels for the order book.

  • Returns: Sorted in ascending order of price.
  • Return type: list[BookLevel]

best_ask_price(self)

Return the best ask price in the book (if no asks then returns None).

  • Return type: double

best_ask_size(self)

Return the best ask size in the book (if no asks then returns None).

  • Return type: double or None

best_bid_price(self)

Return the best bid price in the book (if no bids then returns None).

  • Return type: double

best_bid_size(self)

Return the best bid size in the book (if no bids then returns None).

  • Return type: double

bids(self) → list

Return the bid levels for the order book.

  • Returns: Sorted in descending order of price.
  • Return type: list[BookLevel]

book_type

BookType

Return the order book type.

  • Return type: BookType
  • Type: OrderBook.book_type

check_integrity(self) → void

Check book integrity.

For all order books:

  • The bid side price should not be greater than the ask side price.
  • Raises: RuntimeError – If book integrity check fails.

clear(self, uint64_t ts_event, uint64_t sequence=0) → void

Clear the entire order book.

clear_asks(self, uint64_t ts_event, uint64_t sequence=0) → void

Clear the asks from the order book.

clear_bids(self, uint64_t ts_event, uint64_t sequence=0) → void

Clear the bids from the order book.

count

int

Return the books update count.

  • Return type: int
  • Type: OrderBook.count

delete(self, BookOrder order, uint64_t ts_event, uint8_t flags=0, uint64_t sequence=0) → void

Cancel the given order in the book.

  • Parameters:
    • order (Order) – The order to delete.
    • ts_event (uint64_t) – UNIX timestamp (nanoseconds) when the book event occurred.
    • flags (uint8_t , default 0) – The record flags bit field, indicating event end and data information.
    • sequence (uint64_t , default 0) – The unique sequence number for the update. If default 0 then will increment the sequence.

get_avg_px_for_quantity(self, Quantity quantity, OrderSide order_side) → double

Return the average price expected for the given quantity based on the current state of the order book.

  • Parameters:
    • quantity (Quantity) – The quantity for the calculation.
    • order_side (OrderSide) – The order side for the calculation.
  • Return type: double
  • Raises: ValueError – If order_side is equal to NO_ORDER_SIDE

WARNING

If no average price can be calculated then will return 0.0 (zero).

get_quantity_for_price(self, Price price, OrderSide order_side) → double

Return the current total quantity for the given price based on the current state of the order book.

  • Parameters:
    • price (Price) – The quantity for the calculation.
    • order_side (OrderSide) – The order side for the calculation.
  • Return type: double
  • Raises: ValueError – If order_side is equal to NO_ORDER_SIDE

instrument_id

InstrumentId

Return the books instrument ID.

midpoint(self)

Return the mid point (if no market exists then returns None).

  • Return type: double or None

pprint(self, int num_levels=3) → unicode

Return a string representation of the order book in a human-readable table format.

  • Parameters: num_levels (int) – The number of levels to include.
  • Return type: str

reset(self) → void

Reset the order book (clear all stateful values).

sequence

int

Return the last sequence number for the book.

  • Return type: int
  • Type: OrderBook.sequence

simulate_fills(self, Order order, uint8_t price_prec, bool is_aggressive) → list

Simulate filling the book with the given order.

  • Parameters:
    • order (Order) – The order to simulate fills for.
    • price_prec (uint8_t) – The price precision for the fills.

spread(self)

Return the top-of-book spread (if no bids or asks then returns None).

  • Return type: double or None

ts_event

int

UNIX timestamp (nanoseconds) when the data event occurred.

  • Return type: int
  • Type: OrderBook.ts_event

ts_init

int

UNIX timestamp (nanoseconds) when the object was initialized.

  • Return type: int
  • Type: OrderBook.ts_init

ts_last

int

Return the UNIX timestamp (nanoseconds) when the order book was last updated.

  • Return type: int
  • Type: OrderBook.ts_last

update(self, BookOrder order, uint64_t ts_event, uint8_t flags=0, uint64_t sequence=0) → void

Update the given order in the book.

  • Parameters:
    • order (Order) – The order to update.
    • ts_event (uint64_t) – UNIX timestamp (nanoseconds) when the book event occurred.
    • flags (uint8_t , default 0) – The record flags bit field, indicating event end and data information.
    • sequence (uint64_t , default 0) – The unique sequence number for the update. If default 0 then will increment the sequence.

update_quote_tick(self, QuoteTick tick) → void

Update the order book with the given quote tick.

This operation is only valid for L1_MBP books maintaining a top level.

  • Parameters: tick (QuoteTick) – The quote tick to update with.
  • Raises: RuntimeError – If book_type is not L1_MBP.

update_trade_tick(self, TradeTick tick) → void

Update the order book with the given trade tick.

This operation is only valid for L1_MBP books maintaining a top level.

  • Parameters: tick (TradeTick) – The trade tick to update with.
  • Raises: RuntimeError – If book_type is not L1_MBP.

class OrderBookDelta

Bases: Data

OrderBookDelta(InstrumentId instrument_id, BookAction action, BookOrder order: BookOrder | None, uint8_t flags, uint64_t sequence, uint64_t ts_event, uint64_t ts_init) -> None

Represents a single update/difference on an OrderBook.

  • Parameters:
    • instrument_id (InstrumentId) – The instrument ID for the book.
    • action (BookAction {ADD, UPDATE, DELETE, CLEAR}) – The order book delta action.
    • order (BookOrder or None) – The book order for the delta.
    • flags (uint8_t) – The record flags bit field, indicating event end and data information. A value of zero indicates no flags.
    • sequence (uint64_t) – The unique sequence number for the update. If no sequence number provided in the source data then use a value of zero.
    • ts_event (uint64_t) – UNIX timestamp (nanoseconds) when the data event occurred.
    • ts_init (uint64_t) – UNIX timestamp (nanoseconds) when the data object was initialized.

action

BookAction

Return the deltas book action {ADD, UPDATE, DELETE, CLEAR}

  • Return type: BookAction
  • Type: OrderBookDelta.action

static capsule_from_list(list items)

static clear(InstrumentId instrument_id, uint64_t sequence, uint64_t ts_event, uint64_t ts_init)

Return an order book delta which acts as an initial CLEAR.

flags

uint8_t

Return the flags for the delta.

  • Return type: uint8_t
  • Type: OrderBookDelta.flags

static from_dict(dict values) → OrderBookDelta

Return an order book delta from the given dict values.

  • Parameters: values (dict *[*str , object ]) – The values for initialization.
  • Return type: OrderBookDelta

static from_pyo3(pyo3_delta) → OrderBookDelta

Return a legacy Cython order book delta converted from the given pyo3 Rust object.

  • Parameters: pyo3_delta (nautilus_pyo3.OrderBookDelta) – The pyo3 Rust order book delta to convert from.
  • Return type: OrderBookDelta

static from_pyo3_list(list pyo3_deltas) → list[OrderBookDelta]

Return legacy Cython order book deltas converted from the given pyo3 Rust objects.

  • Parameters: pyo3_deltas (list *[*nautilus_pyo3.OrderBookDelta ]) – The pyo3 Rust order book deltas to convert from.
  • Return type: list[OrderBookDelta]

static from_raw(InstrumentId instrument_id, BookAction action, OrderSide side, int64_t price_raw, uint8_t price_prec, uint64_t size_raw, uint8_t size_prec, uint64_t order_id, uint8_t flags, uint64_t sequence, uint64_t ts_event, uint64_t ts_init) → OrderBookDelta

Return an order book delta from the given raw values.

  • Parameters:
    • instrument_id (InstrumentId) – The trade instrument ID.
    • action (BookAction {ADD, UPDATE, DELETE, CLEAR}) – The order book delta action.
    • side (OrderSide {BUY, SELL}) – The order side.
    • price_raw (int64_t) – The order raw price (as a scaled fixed-point integer).
    • price_prec (uint8_t) – The order price precision.
    • size_raw (uint64_t) – The order raw size (as a scaled fixed-point integer).
    • size_prec (uint8_t) – The order size precision.
    • order_id (uint64_t) – The order ID.
    • flags (uint8_t) – The record flags bit field, indicating event end and data information. A value of zero indicates no flags.
    • sequence (uint64_t) – The unique sequence number for the update. If no sequence number provided in the source data then use a value of zero.
    • ts_event (uint64_t) – UNIX timestamp (nanoseconds) when the tick event occurred.
    • ts_init (uint64_t) – UNIX timestamp (nanoseconds) when the data object was initialized.
  • Return type: OrderBookDelta

instrument_id

InstrumentId

Return the deltas book instrument ID.

  • Return type: InstrumentId
  • Type: OrderBookDelta.instrument_id

is_add

BookAction

If the deltas book action is an ADD.

  • Return type: bool
  • Type: OrderBookDelta.is_add

is_clear

BookAction

If the deltas book action is a CLEAR.

  • Return type: bool
  • Type: OrderBookDelta.is_clear

is_delete

BookAction

If the deltas book action is a DELETE.

  • Return type: bool
  • Type: OrderBookDelta.is_delete

is_update

BookAction

If the deltas book action is an UPDATE.

  • Return type: bool
  • Type: OrderBookDelta.is_update

static list_from_capsule(capsule) → list[OrderBookDelta]

order

BookOrder | None

Return the deltas book order for the action.

  • Return type: BookOrder
  • Type: OrderBookDelta.order

sequence

uint64_t

Return the sequence number for the delta.

  • Return type: uint64_t
  • Type: OrderBookDelta.sequence

static to_dict(OrderBookDelta obj)

Return a dictionary representation of this object.

  • Return type: dict[str, object]

static to_pyo3_list(list deltas) → list[nautilus_pyo3.OrderBookDelta]

Return pyo3 Rust order book deltas converted from the given legacy Cython objects.

  • Parameters: pyo3_deltas (list [OrderBookDelta ]) – The pyo3 Rust order book deltas to convert from.
  • Return type: list[nautilus_pyo3.OrderBookDelta]

ts_event

int

UNIX timestamp (nanoseconds) when the data event occurred.

  • Return type: int
  • Type: OrderBookDelta.ts_event

ts_init

int

UNIX timestamp (nanoseconds) when the object was initialized.

  • Return type: int
  • Type: OrderBookDelta.ts_init

class OrderBookDeltas

Bases: Data

OrderBookDeltas(InstrumentId instrument_id, list deltas) -> None

Represents a batch of OrderBookDelta updates for an OrderBook.

  • Parameters:
    • instrument_id (InstrumentId) – The instrument ID for the book.
    • deltas (list [OrderBookDelta ]) – The batch of order book changes.
  • Raises: ValueError – If deltas is an empty list.

static batch(list data: list[OrderBookDelta]) → list[OrderBookDeltas]

Groups the given list of OrderBookDelta records into batches, creating OrderBookDeltas objects when an F_LAST flag is encountered.

The method iterates through the data list and appends each OrderBookDelta to the current batch. When an F_LAST flag is found, it indicates the end of a batch. The batch is then appended to the list of completed batches and a new batch is started.

  • Return type: list[OrderBookDeltas]
  • Raises:
    • ValueError – If data is empty.
    • TypeError – If data is not a list of OrderBookDelta.

WARNING

UserWarning : If there are remaining deltas in the final batch after the last F_LAST flag.

deltas

list[OrderBookDelta]

Return the contained deltas.

flags

uint8_t

Return the flags for the last delta.

  • Return type: uint8_t
  • Type: OrderBookDeltas.flags

static from_dict(dict values) → OrderBookDeltas

Return order book deltas from the given dict values.

  • Parameters: values (dict *[*str , object ]) – The values for initialization.
  • Return type: OrderBookDeltas

instrument_id

InstrumentId

Return the deltas book instrument ID.

  • Return type: InstrumentId
  • Type: OrderBookDeltas.instrument_id

is_snapshot

bool

If the deltas is a snapshot.

  • Return type: bool
  • Type: OrderBookDeltas.is_snapshot

sequence

uint64_t

Return the sequence number for the last delta.

  • Return type: uint64_t
  • Type: OrderBookDeltas.sequence

to_capsule(self)

static to_dict(OrderBookDeltas obj)

Return a dictionary representation of this object.

  • Return type: dict[str, object]

to_pyo3(self)

Return a pyo3 object from this legacy Cython instance.

  • Return type: nautilus_pyo3.OrderBookDeltas

ts_event

int

UNIX timestamp (nanoseconds) when the data event occurred.

  • Return type: int
  • Type: OrderBookDeltas.ts_event

ts_init

int

UNIX timestamp (nanoseconds) when the object was initialized.

  • Return type: int
  • Type: OrderBookDeltas.ts_init

class OrderBookDepth10

Bases: Data

OrderBookDepth10(InstrumentId instrument_id, list bids, list asks, list bid_counts, list ask_counts, uint8_t flags, uint64_t sequence, uint64_t ts_event, uint64_t ts_init) -> None

Represents a self-contained order book update with a fixed depth of 10 levels per side.

  • Parameters:
    • instrument_id (InstrumentId) – The instrument ID for the book.
    • bids (list [BookOrder ]) – The bid side orders for the update.
    • asks (list [BookOrder ]) – The ask side orders for the update.
    • bid_counts (list *[*uint32_t ]) – The count of bid orders per level for the update. Can be zeros if data not available.
    • ask_counts (list *[*uint32_t ]) – The count of ask orders per level for the update. Can be zeros if data not available.
    • flags (uint8_t) – The record flags bit field, indicating event end and data information. A value of zero indicates no flags.
    • sequence (uint64_t) – The unique sequence number for the update. If no sequence number provided in the source data then use a value of zero.
    • ts_event (uint64_t) – UNIX timestamp (nanoseconds) when the tick event occurred.
    • ts_init (uint64_t) – UNIX timestamp (nanoseconds) when the data object was initialized.
  • Raises:
    • ValueError – If bids, asks, bid_counts, ask_counts lengths are greater than 10.
    • ValueError – If bids, asks, bid_counts, ask_counts lengths are not equal.

ask_counts

list[uint32_t]

Return the count of ask orders level for the update.

  • Return type: list[uint32_t]
  • Type: OrderBookDepth10.ask_counts

asks

list[BookOrder]

Return the ask orders for the update.

  • Return type: list[BookOrder]
  • Type: OrderBookDepth10.asks

bid_counts

list[uint32_t]

Return the count of bid orders per level for the update.

  • Return type: list[uint32_t]
  • Type: OrderBookDepth10.bid_counts

bids

list[BookOrder]

Return the bid orders for the update.

  • Return type: list[BookOrder]
  • Type: OrderBookDepth10.bids

static capsule_from_list(list items)

flags

uint8_t

Return the flags for the depth update.

  • Return type: uint8_t
  • Type: OrderBookDepth10.flags

static from_dict(dict values) → OrderBookDepth10

Return order book depth from the given dict values.

  • Parameters: values (dict *[*str , object ]) – The values for initialization.
  • Return type: OrderBookDepth10

static from_pyo3(pyo3_depth) → OrderBookDepth10

Return a legacy Cython order book depth converted from the given pyo3 Rust object.

  • Parameters: pyo3_depth (nautilus_pyo3.OrderBookDepth10) – The pyo3 Rust order book depth to convert from.
  • Return type: OrderBookDepth10

static from_pyo3_list(pyo3_depths) → list[OrderBookDepth10]

Return legacy Cython order book depths converted from the given pyo3 Rust objects.

  • Parameters: pyo3_depths (nautilus_pyo3.OrderBookDepth10) – The pyo3 Rust order book depths to convert from.
  • Return type: list[OrderBookDepth10]

instrument_id

InstrumentId

Return the depth updates book instrument ID.

  • Return type: InstrumentId
  • Type: OrderBookDepth10.instrument_id

static list_from_capsule(capsule) → list[OrderBookDepth10]

sequence

uint64_t

Return the sequence number for the depth update.

  • Return type: uint64_t
  • Type: OrderBookDepth10.sequence

static to_dict(OrderBookDepth10 obj)

Return a dictionary representation of this object.

  • Return type: dict[str, object]

ts_event

int

UNIX timestamp (nanoseconds) when the data event occurred.

  • Return type: int
  • Type: OrderBookDepth10.ts_event

ts_init

int

UNIX timestamp (nanoseconds) when the object was initialized.

  • Return type: int
  • Type: OrderBookDepth10.ts_init

class OrderListId

Bases: Identifier

OrderListId(unicode value) -> None

Represents a valid order list ID (assigned by the Nautilus system).

  • Parameters: value (str) – The order list ID value.
  • Raises: ValueError – If value is not a valid string.

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 event.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.

  • 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.

Result will be in quote currency for standard instruments, or base currency for inverse instruments.

  • 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: 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) → unicode

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 last) → Money

Return the current notional value of the position.

  • Parameters: last (Price) – The last close price for the position.
  • Returns: In quote currency.
  • 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 last) → Money

Return the total PnL from the given last quote tick.

Result will be in quote currency for standard instruments, or base currency for inverse instruments.

  • Parameters: last (Price) – The last price for the calculation.
  • 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 last) → Money

Return the unrealized PnL from the given last quote tick.

Result will be in quote currency for standard instruments, or base currency for inverse instruments.

  • Parameters: last (Price) – The last price for the calculation.
  • Return type: Money

venue

Return the positions trading venue.

venue_order_ids

Return the venue order IDs associated with the position.

class PositionId

Bases: Identifier

PositionId(unicode value) -> None

Represents a valid position ID.

  • Parameters: value (str) – The position ID value.
  • Raises: ValueError – If value is not a valid string containing a hyphen.

class Price

Bases: object

Price(double value, uint8_t precision) -> None

Represents a price in a market.

The number of decimal places may vary. For certain asset classes, prices may have negative values. For example, prices for options instruments can be negative under certain conditions.

Handles up to 9 decimals of precision.

  • PRICE_MAX = 9_223_372_036
  • PRICE_MIN = -9_223_372_036
  • Parameters:
    • value (integer , float , string or Decimal) – The value of the price.
    • precision (uint8_t) – The precision for the price. Use a precision of 0 for whole numbers (no fractional units).
  • Raises:
    • ValueError – If value is greater than 9_223_372_036.
    • ValueError – If value is less than -9_223_372_036.
    • ValueError – If precision is greater than 9.
    • OverflowError – If precision is negative (< 0).

as_decimal(self)

Return the value as a built-in Decimal.

  • Return type: Decimal

as_double(self) → double

Return the value as a double.

  • Return type: double

static from_int(int value) → Price

Return a price from the given integer value.

A precision of zero will be inferred.

  • Parameters: value (int) – The value for the price.
  • Return type: Price

static from_raw(int64_t raw, uint8_t precision) → Price

Return a price from the given raw fixed-point integer and precision.

Handles up to 9 decimals of precision.

  • Parameters:
    • raw (int64_t) – The raw fixed-point price value.
    • precision (uint8_t) – The precision for the price. Use a precision of 0 for whole numbers (no fractional units).
  • Return type: Price
  • Raises:
    • ValueError – If precision is greater than 9.
    • OverflowError – If precision is negative (< 0).

WARNING

Small raw values can produce a zero price depending on the precision.

static from_str(unicode value) → Price

Return a price parsed from the given string.

Handles up to 9 decimals of precision.

  • Parameters: value (str) – The value to parse.
  • Return type: Price

WARNING

The decimal precision will be inferred from the number of digits following the ‘.’ point (if no point then precision zero).

  • Raises:
    • ValueError – If inferred precision is greater than 9.
    • OverflowError – If inferred precision is negative (< 0).

precision

int

Return the precision for the price.

  • Return type: uint8_t
  • Type: Price.precision

raw

int64_t

Return the raw memory representation of the price value.

  • Return type: int64_t
  • Type: Price.raw

to_formatted_str(self) → unicode

Return the formatted string representation of the price.

  • Return type: str

class Quantity

Bases: object

Quantity(double value, uint8_t precision) -> None

Represents a quantity with a non-negative value.

Capable of storing either a whole number (no decimal places) of ‘contracts’ or ‘shares’ (instruments denominated in whole units) or a decimal value containing decimal places for instruments denominated in fractional units.

Handles up to 9 decimals of precision.

  • QUANTITY_MAX = 18_446_744_073
  • QUANTITY_MIN = 0
  • Parameters:
    • value (integer , float , string , Decimal) – The value of the quantity.
    • precision (uint8_t) – The precision for the quantity. Use a precision of 0 for whole numbers (no fractional units).
  • Raises:
    • ValueError – If value is greater than 18_446_744_073.
    • ValueError – If value is negative (< 0).
    • ValueError – If precision is greater than 9.
    • OverflowError – If precision is negative (< 0).

as_decimal(self)

Return the value as a built-in Decimal.

  • Return type: Decimal

as_double(self) → double

Return the value as a double.

  • Return type: double

static from_int(int value) → Quantity

Return a quantity from the given integer value.

A precision of zero will be inferred.

  • Parameters: value (int) – The value for the quantity.
  • Return type: Quantity

static from_raw(int64_t raw, uint8_t precision) → Quantity

Return a quantity from the given raw fixed-point integer and precision.

Handles up to 9 decimals of precision.

  • Parameters:
    • raw (int64_t) – The raw fixed-point quantity value.
    • precision (uint8_t) – The precision for the quantity. Use a precision of 0 for whole numbers (no fractional units).
  • Return type: Quantity
  • Raises:
    • ValueError – If precision is greater than 9.
    • OverflowError – If precision is negative (< 0).

WARNING

Small raw values can produce a zero quantity depending on the precision.

static from_str(unicode value) → Quantity

Return a quantity parsed from the given string.

Handles up to 9 decimals of precision.

  • Parameters: value (str) – The value to parse.
  • Return type: Quantity
  • Raises:
    • ValueError – If inferred precision is greater than 9.
    • OverflowError – If inferred precision is negative (< 0).

WARNING

The decimal precision will be inferred from the number of digits following the ‘.’ point (if no point then precision zero).

precision

int

Return the precision for the quantity.

  • Return type: uint8_t
  • Type: Quantity.precision

raw

uint64_t

Return the raw memory representation of the quantity value.

  • Return type: uint64_t
  • Type: Quantity.raw

static raw_to_f64(raw) → float

to_formatted_str(self) → unicode

Return the formatted string representation of the quantity.

  • Return type: str

static zero(uint8_t precision=0) → Quantity

Return a quantity with a value of zero.

precision : The precision for the quantity.

  • Return type: Quantity
  • Raises:
    • ValueError – If precision is greater than 9.
    • OverflowError – If precision is negative (< 0).

WARNING

The default precision is zero.

class QuoteTick

Bases: Data

QuoteTick(InstrumentId instrument_id, Price bid_price, Price ask_price, Quantity bid_size, Quantity ask_size, uint64_t ts_event, uint64_t ts_init) -> None

Represents a single quote tick in a market.

Contains information about the best top-of-book bid and ask.

  • Parameters:
    • instrument_id (InstrumentId) – The quotes instrument ID.
    • bid_price (Price) – The top-of-book bid price.
    • ask_price (Price) – The top-of-book ask price.
    • bid_size (Quantity) – The top-of-book bid size.
    • ask_size (Quantity) – The top-of-book ask size.
    • ts_event (uint64_t) – UNIX timestamp (nanoseconds) when the tick event occurred.
    • ts_init (uint64_t) – UNIX timestamp (nanoseconds) when the data object was initialized.
  • Raises:
    • ValueError – If bid.precision != ask.precision.
    • ValueError – If bid_size.precision != ask_size.precision.

ask_price

Price

Return the top-of-book ask price.

  • Return type: Price
  • Type: QuoteTick.ask_price

ask_size

Quantity

Return the top-of-book ask size.

  • Return type: Quantity
  • Type: QuoteTick.ask_size

bid_price

Price

Return the top-of-book bid price.

  • Return type: Price
  • Type: QuoteTick.bid_price

bid_size

Quantity

Return the top-of-book bid size.

  • Return type: Quantity
  • Type: QuoteTick.bid_size

static capsule_from_list(list items)

extract_price(self, PriceType price_type) → Price

Extract the price for the given price type.

  • Parameters: price_type (PriceType) – The price type to extract.
  • Return type: Price

extract_size(self, PriceType price_type) → Quantity

Extract the size for the given price type.

  • Parameters: price_type (PriceType) – The price type to extract.
  • Return type: Quantity

static from_dict(dict values) → QuoteTick

Return a quote tick parsed from the given values.

  • Parameters: values (dict *[*str , object ]) – The values for initialization.
  • Return type: QuoteTick

static from_pyo3(pyo3_quote) → QuoteTick

Return a legacy Cython quote tick converted from the given pyo3 Rust object.

  • Parameters: pyo3_quote (nautilus_pyo3.QuoteTick) – The pyo3 Rust quote tick to convert from.
  • Return type: QuoteTick

static from_pyo3_list(list pyo3_quotes) → list[QuoteTick]

Return legacy Cython quotes converted from the given pyo3 Rust objects.

  • Parameters: pyo3_quotes (list *[*nautilus_pyo3.QuoteTick ]) – The pyo3 Rust quotes to convert from.
  • Return type: list[QuoteTick]

static from_raw(InstrumentId instrument_id, int64_t bid_price_raw, int64_t ask_price_raw, uint8_t bid_price_prec, uint8_t ask_price_prec, uint64_t bid_size_raw, uint64_t ask_size_raw, uint8_t bid_size_prec, uint8_t ask_size_prec, uint64_t ts_event, uint64_t ts_init) → QuoteTick

Return a quote tick from the given raw values.

  • Parameters:
    • instrument_id (InstrumentId) – The quotes instrument ID.
    • bid_price_raw (int64_t) – The raw top-of-book bid price (as a scaled fixed-point integer).
    • ask_price_raw (int64_t) – The raw top-of-book ask price (as a scaled fixed-point integer).
    • bid_price_prec (uint8_t) – The bid price precision.
    • ask_price_prec (uint8_t) – The ask price precision.
    • bid_size_raw (uint64_t) – The raw top-of-book bid size (as a scaled fixed-point integer).
    • ask_size_raw (uint64_t) – The raw top-of-book ask size (as a scaled fixed-point integer).
    • bid_size_prec (uint8_t) – The bid size precision.
    • ask_size_prec (uint8_t) – The ask size precision.
    • ts_event (uint64_t) – UNIX timestamp (nanoseconds) when the tick event occurred.
    • ts_init (uint64_t) – UNIX timestamp (nanoseconds) when the data object was initialized.
  • Return type: QuoteTick
  • Raises:
    • ValueError – If bid_price_prec != ask_price_prec.
    • ValueError – If bid_size_prec != ask_size_prec.

static from_raw_arrays_to_list(InstrumentId instrument_id: InstrumentId, int price_prec: int, int size_prec: int, bid_prices_raw: np.ndarray, ask_prices_raw: np.ndarray, bid_sizes_raw: np.ndarray, ask_sizes_raw: np.ndarray, ts_events: np.ndarray, ts_inits: np.ndarray) → list[QuoteTick]

instrument_id

InstrumentId

Return the tick instrument ID.

static list_from_capsule(capsule) → list[QuoteTick]

static to_dict(QuoteTick obj)

Return a dictionary representation of this object.

  • Return type: dict[str, object]

to_pyo3(self) → nautilus_pyo3.QuoteTick

Return a pyo3 object from this legacy Cython instance.

  • Return type: nautilus_pyo3.QuoteTick

static to_pyo3_list(list quotes) → list[nautilus_pyo3.QuoteTick]

Return pyo3 Rust quotes converted from the given legacy Cython objects.

  • Parameters: quotes (list [QuoteTick ]) – The legacy Cython quotes to convert from.
  • Return type: list[nautilus_pyo3.QuoteTick]

ts_event

int

UNIX timestamp (nanoseconds) when the data event occurred.

  • Return type: int
  • Type: QuoteTick.ts_event

ts_init

int

UNIX timestamp (nanoseconds) when the object was initialized.

  • Return type: int
  • Type: QuoteTick.ts_init

class StrategyId

Bases: Identifier

StrategyId(unicode value) -> None

Represents a valid strategy ID.

Must be correctly formatted with two valid strings either side of a hyphen. It is expected a strategy ID is the class name of the strategy, with an order ID tag number separated by a hyphen.

Example: “EMACross-001”.

The reason for the numerical component of the ID is so that order and position IDs do not collide with those from another strategy within the node instance.

  • Parameters: value (str) – The strategy ID value.
  • Raises: ValueError – If value is not a valid string containing a hyphen.

WARNING

The name and tag combination must be unique at the trader level.

get_tag(self) → unicode

Return the order ID tag value for this ID.

  • Return type: str

is_external(self) → bool

If the strategy ID is the global ‘external’ strategy. This represents the strategy for all orders interacting with this instance of the system which did not originate from any strategy being managed by the system.

  • Return type: bool

class Symbol

Bases: Identifier

Symbol(unicode value) -> None

Represents a valid ticker symbol ID for a tradable instrument.

  • Parameters: value (str) – The ticker symbol ID value.
  • Raises: ValueError – If value is not a valid string.

WARNING

The ID value must be unique for a trading venue.

is_composite(self) → bool

Returns true if the symbol string contains a period (‘.’).

  • Return type: str

root(self) → unicode

Return the symbol root.

The symbol root is the substring that appears before the first period (‘.’) in the full symbol string. It typically represents the underlying asset for futures and options contracts. If no period is found, the entire symbol string is considered the root.

  • Return type: str

topic(self) → unicode

Return the symbol topic.

The symbol topic is the root symbol with a wildcard ‘*’ appended if the symbol has a root, otherwise returns the full symbol string.

  • Return type: str

class TradeId

Bases: Identifier

TradeId(unicode value) -> None

Represents a valid trade match ID (assigned by a trading venue).

Maximum length is 36 characters. Can correspond to the TradeID <1003> field of the FIX protocol.

The unique ID assigned to the trade entity once it is received or matched by the exchange or central counterparty.

  • Parameters: value (str) – The trade match ID value.
  • Raises:
    • ValueError – If value is not a valid string.
    • ValueError – If value length exceeds maximum 36 characters.

class TradeTick

Bases: Data

TradeTick(InstrumentId instrument_id, Price price, Quantity size, AggressorSide aggressor_side, TradeId trade_id, uint64_t ts_event, uint64_t ts_init) -> None

Represents a single trade tick in a market.

Contains information about a single unique trade which matched buyer and seller counterparties.

  • Parameters:
    • instrument_id (InstrumentId) – The trade instrument ID.
    • price (Price) – The traded price.
    • size (Quantity) – The traded size.
    • aggressor_side (AggressorSide) – The trade aggressor side.
    • trade_id (TradeId) – The trade match ID (assigned by the venue).
    • ts_event (uint64_t) – UNIX timestamp (nanoseconds) when the tick event occurred.
    • ts_init (uint64_t) – UNIX timestamp (nanoseconds) when the data object was initialized.
  • Raises: ValueError – If trade_id is not a valid string.

aggressor_side

AggressorSide

Return the ticks aggressor side.

  • Return type: AggressorSide
  • Type: TradeTick.aggressor_side

static capsule_from_list(items)

static from_dict(dict values) → TradeTick

Return a trade tick from the given dict values.

  • Parameters: values (dict *[*str , object ]) – The values for initialization.
  • Return type: TradeTick

static from_pyo3(pyo3_trade) → TradeTick

Return a legacy Cython trade tick converted from the given pyo3 Rust object.

  • Parameters: pyo3_trade (nautilus_pyo3.TradeTick) – The pyo3 Rust trade tick to convert from.
  • Return type: TradeTick

static from_pyo3_list(list pyo3_trades) → list[TradeTick]

Return legacy Cython trades converted from the given pyo3 Rust objects.

  • Parameters: pyo3_trades (list *[*nautilus_pyo3.TradeTick ]) – The pyo3 Rust trades to convert from.
  • Return type: list[TradeTick]

static from_raw(InstrumentId instrument_id, int64_t price_raw, uint8_t price_prec, uint64_t size_raw, uint8_t size_prec, AggressorSide aggressor_side, TradeId trade_id, uint64_t ts_event, uint64_t ts_init) → TradeTick

Return a trade tick from the given raw values.

  • Parameters:
    • instrument_id (InstrumentId) – The trade instrument ID.
    • price_raw (int64_t) – The traded raw price (as a scaled fixed-point integer).
    • price_prec (uint8_t) – The traded price precision.
    • size_raw (uint64_t) – The traded raw size (as a scaled fixed-point integer).
    • size_prec (uint8_t) – The traded size precision.
    • aggressor_side (AggressorSide) – The trade aggressor side.
    • trade_id (TradeId) – The trade match ID (assigned by the venue).
    • ts_event (uint64_t) – UNIX timestamp (nanoseconds) when the tick event occurred.
    • ts_init (uint64_t) – UNIX timestamp (nanoseconds) when the data object was initialized.
  • Return type: TradeTick

static from_raw_arrays_to_list(InstrumentId instrument_id, uint8_t price_prec, uint8_t size_prec, int64_t[:] prices_raw, uint64_t[:] sizes_raw, uint8_t[:] aggressor_sides, list trade_ids, uint64_t[:] ts_events, uint64_t[:] ts_inits) → list[TradeTick]

instrument_id

InstrumentId

Return the ticks instrument ID.

static list_from_capsule(capsule) → list[TradeTick]

price

Price

Return the ticks price.

  • Return type: Price
  • Type: TradeTick.price

size

Quantity

Return the ticks size.

  • Return type: Quantity
  • Type: TradeTick.size

static to_dict(TradeTick obj)

Return a dictionary representation of this object.

  • Return type: dict[str, object]

to_pyo3(self) → nautilus_pyo3.TradeTick

Return a pyo3 object from this legacy Cython instance.

  • Return type: nautilus_pyo3.TradeTick

static to_pyo3_list(list trades) → list[nautilus_pyo3.TradeTick]

Return pyo3 Rust trades converted from the given legacy Cython objects.

  • Parameters: ticks (list [TradeTick ]) – The legacy Cython Rust trades to convert from.
  • Return type: list[nautilus_pyo3.TradeTick]

trade_id

InstrumentId

Return the ticks trade match ID.

  • Return type: Price
  • Type: TradeTick.trade_id

ts_event

int

UNIX timestamp (nanoseconds) when the data event occurred.

  • Return type: int
  • Type: TradeTick.ts_event

ts_init

int

UNIX timestamp (nanoseconds) when the object was initialized.

  • Return type: int
  • Type: TradeTick.ts_init

class TraderId

Bases: Identifier

TraderId(unicode value) -> None

Represents a valid trader ID.

Must be correctly formatted with two valid strings either side of a hyphen. It is expected a trader ID is the abbreviated name of the trader with an order ID tag number separated by a hyphen.

Example: “TESTER-001”.

The reason for the numerical component of the ID is so that order and position IDs do not collide with those from another node instance.

  • Parameters: value (str) – The trader ID value.
  • Raises: ValueError – If value is not a valid string containing a hyphen.

WARNING

The name and tag combination ID value must be unique at the firm level.

get_tag(self) → unicode

Return the order ID tag value for this ID.

  • Return type: str

class Venue

Bases: Identifier

Venue(unicode name) -> None

Represents a valid trading venue ID.

  • Parameters: name (str) – The venue ID value.
  • Raises: ValueError – If name is not a valid string.

static from_code(unicode code)

Return the venue with the given code from the built-in internal map (if found).

Currency only supports CME Globex exchange ISO 10383 MIC codes.

  • Parameters: code (str) – The code of the venue.
  • Return type: Venue or None

is_synthetic(self) → bool

Return whether the venue is synthetic (‘SYNTH’).

  • Return type: bool

class VenueOrderId

Bases: Identifier

VenueOrderId(unicode value) -> None

Represents a valid venue order ID (assigned by a trading venue).

  • Parameters: value (str) – The venue assigned order ID value.
  • Raises: ValueError – If value is not a valid string.