6.7 KiB
Market Quote Python Example
User: HJ Normey (hjnormey@gmail.com)
Created: 8/28/2025 17:55
Updated: 8/28/2025 18:16
Exported: 8/29/2025 15:34
Link: https://chatgpt.com/c/68b07bee-306c-8326-9fd6-27b6f18ce7ea
Prompt:
I would like you to visit
the bull nautilus trader source code and figure out where the "quote" object (or equivalent, for storing market tick data is defined and what the format is:
- It is called Market Quote and (a different one) Trade Quote.-
Provide full documentation -and- ... a working Python import example for those objects.-
Response:
Just to clarify before I begin: do you want documentation and usage examples for both the Market Quote and Trade Quote classes from the Nautilus Trader repo, including where they are defined, their format (fields/types), and a working Python import and usage example? Also, are you using this for live market data ingestion or for backtesting purposes?
Prompt:
live, though they should use the same object, iianm ...
Response:
Great. I’ll examine the Nautilus Trader source code at the specified commit to locate the definitions of both the Market Quote and Trade Quote objects used for market tick data. I’ll provide full documentation of each object’s structure, including fields, types, and their roles in live market data handling, as well as a working Python import and usage example.
I’ll let you know once I have everything compiled.
Research completed in 19m · 64 sources · 29 searches
Market and Trade Quote Object Definitions in Nautilus Trader
NautilusTrader Market/Tick Quote Objects
NautilusTrader represents market data ticks with two core classes in its Python API: QuoteTick (for top-of-book quotes) and TradeTick (for individual trade ticks). These are defined in the nautilus_trader.model.data module and backed by Rust/Cython for speed. A QuoteTick holds the best bid and ask and related metadata, while a TradeTick holds a single trade’s details. Both include timestamps (nanosecond UNIX epoch) for the event and when the object was created.
- QuoteTick (Market Quote): Contains fields for an instrument’s best bid and ask at a moment. Key fields include:
instrument_id(InstrumentId) – the symbol or contract identifier.bid_price,ask_price(Price) – the top-of-book bid and ask prices.bid_size,ask_size(Quantity) – the corresponding bid/ask sizes (volumes).ts_event,ts_init(int) – timestamps (nanoseconds) for when the quote occurred and when the object was initialized.
TheQuoteTickdocstring explains it “represents a single quote tick in a market” with bid/ask prices and sizesgitee.com.
- TradeTick (Trade Quote): Contains fields for a single executed trade. Key fields include:
instrument_id(InstrumentId) – the symbol or contract.price(Price) – the executed trade price.size(Quantity) – the traded quantity.aggressor_side(AggressorSide enum) – which side (buy/sell) initiated the trade.trade_id(TradeId) – the venue’s trade identifier.ts_event,ts_init(int) – timestamps for when the trade tick occurred and object creation.
TheTradeTickdocstring notes it “represents a single trade tick” with instrument, price, size, aggressor side, and trade IDgitee.com.
These objects support conversion from raw values or Python dictionaries (e.g. from_raw(...), from_dict(...)) and have methods to_dict() for easy serialization. For example, QuoteTick.from_raw(instrument, bid_raw, ask_raw, price_prec, size_prec, ts_event, ts_init) creates a quote from raw fixed-point values. All numeric fields use precise types (Price, Quantity) to preserve fixed-point precisiongitee.comgitee.com.
Usage in Python
In Python, import these classes from the model as follows:
from nautilus_trader.model.data import QuoteTick, TradeTick, InstrumentId, Price, Quantity, AggressorSide, TradeId
# Example: create a quote tick (using made-up raw values and precisions)
instr = InstrumentId("AAPL") # or appropriate symbol
quote = QuoteTick.from_raw(
instr,
bid_price_raw=1452300, ask_price_raw=1452500, # raw ints
bid_price_prec=4, ask_price_prec=4,
bid_size_raw=1000000, ask_size_raw=800000,
bid_size_prec=0, ask_size_prec=0,
ts_event=1680000000000000000, ts_init=1680000000000000000
)
print(quote) # e.g. QuoteTick(instrument_id=AAPL, bid_price=145.23, ask_price=145.25, ...)
# Example: create a trade tick
trade = TradeTick(
instrument_id=instr,
price=Price(145.25, precision=4),
size=Quantity(500, precision=0),
aggressor_side=AggressorSide.BUY,
trade_id=TradeId("T12345"),
ts_event=1680000000000001000,
ts_init=1680000000000001000
)
print(trade) # e.g. TradeTick(instrument_id=AAPL, price=145.25, size=500, aggressor_side=BUY, ...)
These classes and their methods match the NautilusTrader data model: QuoteTick holds bid/ask fields and TradeTick holds price/size/aggressor fields, as documented in the sourcegitee.comgitee.com.
Sources: NautilusTrader 1.203.0 source code (nautilus_trader/model/data.pyx), showing the definitions and docstrings for QuoteTick and TradeTickgitee.comgitee.com.
Powered by ChatGPT Exporter