pub struct OrderBook {
pub instrument_id: InstrumentId,
pub book_type: BookType,
pub sequence: u64,
pub ts_last: UnixNanos,
pub count: u64,
/* private fields */
}
Expand description
Provides a high-performance, versatile order book.
Maintains buy (bid) and sell (ask) orders in price-time priority, supporting multiple market data formats:
- L3 (MBO): Market By Order - tracks individual orders with unique IDs.
- L2 (MBP): Market By Price - aggregates orders at each price level.
- L1 (MBP): Top-of-Book - maintains only the best bid and ask prices.
Fields§
§instrument_id: InstrumentId
The instrument ID for the order book.
book_type: BookType
The order book type (MBP types will aggregate orders).
sequence: u64
The last event sequence number for the order book.
ts_last: UnixNanos
The timestamp of the last event applied to the order book.
count: u64
The current count of events applied to the order book.
Implementations§
Source§impl OrderBook
impl OrderBook
Sourcepub fn new(instrument_id: InstrumentId, book_type: BookType) -> Self
pub fn new(instrument_id: InstrumentId, book_type: BookType) -> Self
Creates a new OrderBook
instance.
Sourcepub fn add(
&mut self,
order: BookOrder,
flags: u8,
sequence: u64,
ts_event: UnixNanos,
)
pub fn add( &mut self, order: BookOrder, flags: u8, sequence: u64, ts_event: UnixNanos, )
Adds an order to the book after preprocessing based on book type.
Sourcepub fn update(
&mut self,
order: BookOrder,
flags: u8,
sequence: u64,
ts_event: UnixNanos,
)
pub fn update( &mut self, order: BookOrder, flags: u8, sequence: u64, ts_event: UnixNanos, )
Updates an existing order in the book after preprocessing based on book type.
Sourcepub fn delete(
&mut self,
order: BookOrder,
flags: u8,
sequence: u64,
ts_event: UnixNanos,
)
pub fn delete( &mut self, order: BookOrder, flags: u8, sequence: u64, ts_event: UnixNanos, )
Deletes an order from the book after preprocessing based on book type.
Sourcepub fn clear(&mut self, sequence: u64, ts_event: UnixNanos)
pub fn clear(&mut self, sequence: u64, ts_event: UnixNanos)
Clears all orders from both sides of the book.
Sourcepub fn clear_bids(&mut self, sequence: u64, ts_event: UnixNanos)
pub fn clear_bids(&mut self, sequence: u64, ts_event: UnixNanos)
Clears all bid orders from the book.
Sourcepub fn clear_asks(&mut self, sequence: u64, ts_event: UnixNanos)
pub fn clear_asks(&mut self, sequence: u64, ts_event: UnixNanos)
Clears all ask orders from the book.
Sourcepub fn apply_delta(&mut self, delta: &OrderBookDelta)
pub fn apply_delta(&mut self, delta: &OrderBookDelta)
Applies a single order book delta operation.
Sourcepub fn apply_deltas(&mut self, deltas: &OrderBookDeltas)
pub fn apply_deltas(&mut self, deltas: &OrderBookDeltas)
Applies multiple order book delta operations.
Sourcepub fn apply_depth(&mut self, depth: &OrderBookDepth10)
pub fn apply_depth(&mut self, depth: &OrderBookDepth10)
Replaces current book state with a depth snapshot.
Sourcepub fn bids(&self, depth: Option<usize>) -> impl Iterator<Item = &BookLevel>
pub fn bids(&self, depth: Option<usize>) -> impl Iterator<Item = &BookLevel>
Returns an iterator over bid price levels.
Sourcepub fn asks(&self, depth: Option<usize>) -> impl Iterator<Item = &BookLevel>
pub fn asks(&self, depth: Option<usize>) -> impl Iterator<Item = &BookLevel>
Returns an iterator over ask price levels.
Sourcepub fn bids_as_map(&self, depth: Option<usize>) -> IndexMap<Decimal, Decimal>
pub fn bids_as_map(&self, depth: Option<usize>) -> IndexMap<Decimal, Decimal>
Returns bid price levels as a map of price to size.
Sourcepub fn asks_as_map(&self, depth: Option<usize>) -> IndexMap<Decimal, Decimal>
pub fn asks_as_map(&self, depth: Option<usize>) -> IndexMap<Decimal, Decimal>
Returns ask price levels as a map of price to size.
Sourcepub fn group_bids(
&self,
group_size: Decimal,
depth: Option<usize>,
) -> IndexMap<Decimal, Decimal>
pub fn group_bids( &self, group_size: Decimal, depth: Option<usize>, ) -> IndexMap<Decimal, Decimal>
Groups bid levels by price, up to specified depth.
Sourcepub fn group_asks(
&self,
group_size: Decimal,
depth: Option<usize>,
) -> IndexMap<Decimal, Decimal>
pub fn group_asks( &self, group_size: Decimal, depth: Option<usize>, ) -> IndexMap<Decimal, Decimal>
Groups ask levels by price, up to specified depth.
Sourcepub fn best_bid_price(&self) -> Option<Price>
pub fn best_bid_price(&self) -> Option<Price>
Returns the best bid price if available.
Sourcepub fn best_ask_price(&self) -> Option<Price>
pub fn best_ask_price(&self) -> Option<Price>
Returns the best ask price if available.
Sourcepub fn best_bid_size(&self) -> Option<Quantity>
pub fn best_bid_size(&self) -> Option<Quantity>
Returns the size at the best bid price if available.
Sourcepub fn best_ask_size(&self) -> Option<Quantity>
pub fn best_ask_size(&self) -> Option<Quantity>
Returns the size at the best ask price if available.
Sourcepub fn spread(&self) -> Option<f64>
pub fn spread(&self) -> Option<f64>
Returns the spread between best ask and bid prices if both exist.
Sourcepub fn midpoint(&self) -> Option<f64>
pub fn midpoint(&self) -> Option<f64>
Returns the midpoint between best ask and bid prices if both exist.
Sourcepub fn get_avg_px_for_quantity(
&self,
qty: Quantity,
order_side: OrderSide,
) -> f64
pub fn get_avg_px_for_quantity( &self, qty: Quantity, order_side: OrderSide, ) -> f64
Calculates the average price to fill the specified quantity.
Sourcepub fn get_avg_px_qty_for_exposure(
&self,
target_exposure: Quantity,
order_side: OrderSide,
) -> (f64, f64, f64)
pub fn get_avg_px_qty_for_exposure( &self, target_exposure: Quantity, order_side: OrderSide, ) -> (f64, f64, f64)
Calculates average price and quantity for target exposure. Returns (price, quantity, executed_exposure).
Sourcepub fn get_quantity_for_price(&self, price: Price, order_side: OrderSide) -> f64
pub fn get_quantity_for_price(&self, price: Price, order_side: OrderSide) -> f64
Returns the total quantity available at specified price level.
Sourcepub fn simulate_fills(&self, order: &BookOrder) -> Vec<(Price, Quantity)>
pub fn simulate_fills(&self, order: &BookOrder) -> Vec<(Price, Quantity)>
Simulates fills for an order, returning list of (price, quantity) tuples.
Sourcepub fn pprint(&self, num_levels: usize) -> String
pub fn pprint(&self, num_levels: usize) -> String
Return a formatted string representation of the order book.
Sourcepub fn update_quote_tick(
&mut self,
quote: &QuoteTick,
) -> Result<(), InvalidBookOperation>
pub fn update_quote_tick( &mut self, quote: &QuoteTick, ) -> Result<(), InvalidBookOperation>
Updates L1 book state from a quote tick. Only valid for L1_MBP book type.
Sourcepub fn update_trade_tick(
&mut self,
trade: &TradeTick,
) -> Result<(), InvalidBookOperation>
pub fn update_trade_tick( &mut self, trade: &TradeTick, ) -> Result<(), InvalidBookOperation>
Updates L1 book state from a trade tick. Only valid for L1_MBP book type.
Trait Implementations§
Source§impl PyClassImpl for OrderBook
impl PyClassImpl for OrderBook
Source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§type ThreadChecker = SendablePyClass<OrderBook>
type ThreadChecker = SendablePyClass<OrderBook>
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny
by default, and when you declare
#[pyclass(extends=PyDict)]
, it’s PyDict
.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
fn dict_offset() -> Option<isize>
fn weaklist_offset() -> Option<isize>
Source§impl PyClassNewTextSignature<OrderBook> for PyClassImplCollector<OrderBook>
impl PyClassNewTextSignature<OrderBook> for PyClassImplCollector<OrderBook>
fn new_text_signature(self) -> Option<&'static str>
Source§impl PyMethods<OrderBook> for PyClassImplCollector<OrderBook>
impl PyMethods<OrderBook> for PyClassImplCollector<OrderBook>
fn py_methods(self) -> &'static PyClassItems
Source§impl PyTypeInfo for OrderBook
impl PyTypeInfo for OrderBook
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>
fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool
fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool
object
is an instance of this type or a subclass of this type.§fn is_exact_type_of_bound(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of_bound(object: &Bound<'_, PyAny>) -> bool
object
is an instance of this type.impl DerefToPyAny for OrderBook
impl Eq for OrderBook
Auto Trait Implementations§
impl Freeze for OrderBook
impl RefUnwindSafe for OrderBook
impl Send for OrderBook
impl Sync for OrderBook
impl Unpin for OrderBook
impl UnwindSafe for OrderBook
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<T> FromPyObject<'_> for Twhere
T: PyClass + Clone,
impl<T> FromPyObject<'_> for Twhere
T: PyClass + Clone,
§fn extract_bound(obj: &Bound<'_, PyAny>) -> Result<T, PyErr>
fn extract_bound(obj: &Bound<'_, PyAny>) -> Result<T, PyErr>
§impl<'py, T> FromPyObjectBound<'_, 'py> for Twhere
T: FromPyObject<'py>,
impl<'py, T> FromPyObjectBound<'_, 'py> for Twhere
T: FromPyObject<'py>,
§fn from_py_object_bound(ob: Borrowed<'_, 'py, PyAny>) -> Result<T, PyErr>
fn from_py_object_bound(ob: Borrowed<'_, 'py, PyAny>) -> Result<T, PyErr>
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
Source§impl<T> Separable for Twhere
T: Display,
impl<T> Separable for Twhere
T: Display,
Source§fn separate_by_policy(&self, policy: SeparatorPolicy<'_>) -> String
fn separate_by_policy(&self, policy: SeparatorPolicy<'_>) -> String
SeparatorPolicy
. Read more