quantpylib.hft.replay_orderbook
ReplayOrderBook models owned simulated orders on historical L2
liquidity. Its native OrderBookMap provides the L2 to L3 projection
for FIFO matching, while policies determine the appropriate queue model.
From a high level, impact policies determine how a submitted order in
the simulation affects the empirical depth observed - whether as an additive
or borrowed artefact. On the other hand, queue policies determine whether cancels
arrive ahead or behind us, or in a probabilistic manner.
| Policy | Contract |
|---|---|
BorrowedImpact |
Borrow the overlap between public and private displayed size. |
AdditiveImpact |
Treat private size as additional to historical public size. |
BackCancelQueue |
Apply public decreases from the FIFO tail. |
FrontCancelQueue |
Apply public decreases from the FIFO head. |
Replay order book
quantpylib.hft.replay_orderbook.ReplayOrderBook
Project aggregate public L2 and private orders into synthetic FIFO L3 order state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
impact_policy
|
object
|
Object implementing
|
None
|
queue_policy
|
object
|
Object implementing |
None
|
combined
|
OrderBookMap
|
FIFO book to populate. |
None
|
last_seq0
property
Return the last public event's first sequence field, or zero.
Returns:
| Name | Type | Description |
|---|---|---|
int |
First native sequence value. |
last_seq1
property
Return the last public event's second sequence field, or zero.
Returns:
| Name | Type | Description |
|---|---|---|
int |
Second native sequence value. |
last_seq2
property
Return the last public event's third sequence field, or zero.
Returns:
| Name | Type | Description |
|---|---|---|
int |
Third native sequence value. |
last_seq_type
property
Return the last public event's sequence mode, or zero.
Returns:
| Name | Type | Description |
|---|---|---|
int |
Native sequence mode. |
ts_disp_ns
property
Return the last public event's dispatch timestamp, or zero.
Returns:
| Name | Type | Description |
|---|---|---|
int |
Provider dispatch timestamp in nanoseconds. |
ts_exch_ns
property
Return the last public event's exchange timestamp, or zero.
Returns:
| Name | Type | Description |
|---|---|---|
int |
Exchange timestamp in nanoseconds. |
ts_recv_ns
property
Return the last public event's receive timestamp, or zero.
Returns:
| Name | Type | Description |
|---|---|---|
int |
Client receive timestamp in nanoseconds. |
__getattr__(name)
Delegate unknown attributes to the native combined order book.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Missing attribute name. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
object |
Attribute resolved from |
__init__(impact_policy=None, queue_policy=None, combined=None)
Initialize empty public, private, and borrowed-size indexes.
add_order(oid, side, price, size)
Append an owned resting order and rebalance level attribution.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
oid
|
int
|
Unique owned order ID below the synthetic-ID range. |
required |
side
|
Side
|
Resting side. |
required |
price
|
int
|
Fixed-point limit price. |
required |
size
|
int
|
Fixed-point positive order size. |
required |
apply(update)
Reconcile one native L2 book update.
Snapshot updates set omitted previously known public levels to zero; non-snapshot updates modify only represented levels. Owned orders are retained and rebalanced through the configured policies.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
update
|
BookUpdate
|
Fixed-point native L2 event. |
required |
apply_bba(update)
Sweep crossed levels, then reconcile reported public top sizes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
update
|
BBAUpdate
|
Native fixed-point best bid/ask event. |
required |
Returns:
| Type | Description |
|---|---|
|
list[tuple]: FIFO matches generated by cross repair. |
apply_trade(update)
Match one historical aggressor without resting unmatched size.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
update
|
TradeUpdate
|
Native trade with aggressor side, price, and fixed-point size. |
required |
Returns:
| Type | Description |
|---|---|
|
tuple[list[tuple], int]: FIFO matches and unmatched trade size. |
best_ask()
Return the combined best ask or None when empty.
Returns:
| Type | Description |
|---|---|
|
tuple[int, int] or None: Fixed-point price and aggregate size. |
best_bid()
Return the combined best bid or None when empty.
Returns:
| Type | Description |
|---|---|
|
tuple[int, int] or None: Fixed-point price and aggregate size. |
borrowed_size(side, price)
Return borrowed public attribution at one side and price.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
side
|
Side
|
Level side. |
required |
price
|
int
|
Fixed-point level price. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
int |
Fixed-point borrowed quantity. |
cancel_order(oid)
Remove an owned order while leaving behind borrowed public size.
Borrowed quantity is converted back to anonymous liquidity before the level is rebalanced.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
oid
|
int
|
Owned order ID. |
required |
clear()
Clear combined liquidity, attribution indexes, and event metadata.
get_asks()
Return combined ask levels from the native order book.
Returns:
| Name | Type | Description |
|---|---|---|
list |
Native ask-level snapshots. |
get_bids()
Return combined bid levels from the native order book.
Returns:
| Name | Type | Description |
|---|---|---|
list |
Native bid-level snapshots. |
has_order(oid)
Return whether the combined book contains oid.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
oid
|
int
|
Native order ID. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
bool |
Whether the order exists. |
is_owned_order(oid)
Return whether oid identifies simulated private liquidity.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
oid
|
int
|
Native order ID. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
bool |
Whether the order is owned by the simulated participant. |
level(side, price)
Return the native combined FIFO level at one side and price.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
side
|
Side
|
Level side. |
required |
price
|
int
|
Fixed-point level price. |
required |
Returns:
| Type | Description |
|---|---|
|
dict or None: Native level state. |
order(oid)
Return one native combined-book order by ID.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
oid
|
int
|
Native order ID. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
Native order state. |
private_size(side, price)
Return total owned size at one side and price.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
side
|
Side
|
Level side. |
required |
price
|
int
|
Fixed-point level price. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
int |
Fixed-point private quantity, or zero when absent. |
public_size(side, price)
Return last reported aggregate public size at one side and price.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
side
|
Side
|
Level side. |
required |
price
|
int
|
Fixed-point level price. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
int |
Fixed-point public quantity, or zero when absent. |
submit_order(oid, side, price, size)
Match an aggressive owned order, then rest any remainder.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
oid
|
int
|
Unique owned order ID. |
required |
side
|
Side
|
Aggressor side. |
required |
price
|
int
|
Fixed-point limit price. |
required |
size
|
int
|
Fixed-point positive size. |
required |
Returns:
| Type | Description |
|---|---|
|
tuple[list[tuple], int]: FIFO matches and unfilled size. |
would_cross(side, price)
Return whether a limit order would cross the combined best quote.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
side
|
Side
|
Prospective order side. |
required |
price
|
int
|
Fixed-point limit price. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
bool |
Whether the order is marketable against the opposite best. |
Impact and Queue Policies
For public size L, private size O, borrowed attribution B, anonymous
external size E, and combined physical size T:
quantpylib.hft.replay_orderbook.BorrowedImpact
Treat private size as already represented by public L2 where possible.
This policy targets min(public_size, private_size) borrowed quantity,
so combined physical size becomes max(public_size, private_size).
target_borrowed(public_size, private_size)
Return the public/private overlap to represent as borrowed size.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
public_size
|
int
|
Fixed-point aggregate public size. |
required |
private_size
|
int
|
Fixed-point owned size. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
int |
|
quantpylib.hft.replay_orderbook.AdditiveImpact
Treat private displayed size as additional to historical public L2.
target_borrowed(public_size, private_size)
Return zero so no private size is borrowed from public depth.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
public_size
|
int
|
Fixed-point aggregate public size. |
required |
private_size
|
int
|
Fixed-point owned size. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
int |
Always zero. |
quantpylib.hft.replay_orderbook.BackCancelQueue
Assume public liquidity leaves and arrives at the FIFO tail.
An L2 increase becomes new anonymous liquidity behind every order already at the price. For a decrease, walk the combined level from its tail. Anonymous liquidity is reduced directly; when the walk reaches one of our private orders, only its borrowed public quantity is reduced.
increase(replay_book, side, price, size)
Append newly reported public quantity as anonymous tail liquidity.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
replay_book
|
ReplayOrderBook
|
Book being reconciled. |
required |
side
|
Side
|
Level side. |
required |
price
|
int
|
Fixed-point level price. |
required |
size
|
int
|
Fixed-point public-size increase. |
required |
reduce(replay_book, side, price, size)
Remove a public decrease from the combined FIFO tail.
Anonymous orders are physically reduced. Private orders keep their physical size and lose only borrowed public attribution.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
replay_book
|
ReplayOrderBook
|
Book being reconciled. |
required |
side
|
Side
|
Level side. |
required |
price
|
int
|
Fixed-point level price. |
required |
size
|
int
|
Fixed-point public-size decrease. |
required |
Raises:
| Type | Description |
|---|---|
RuntimeError
|
If represented liquidity cannot absorb the decrease. |
quantpylib.hft.replay_orderbook.FrontCancelQueue
Assume public liquidity leaves at the front and arrives at the tail.
An L2 increase becomes new anonymous liquidity behind every order already at the price. For a decrease, walk the combined level from its head. Anonymous liquidity is reduced directly; when the walk reaches one of our private orders, only its borrowed public quantity is reduced.
increase(replay_book, side, price, size)
Append newly reported public quantity as anonymous tail liquidity.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
replay_book
|
ReplayOrderBook
|
Book being reconciled. |
required |
side
|
Side
|
Level side. |
required |
price
|
int
|
Fixed-point level price. |
required |
size
|
int
|
Fixed-point public-size increase. |
required |
reduce(replay_book, side, price, size)
Remove a public decrease from the combined FIFO head.
Anonymous orders are physically reduced. Private orders keep their physical size and lose only borrowed public attribution.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
replay_book
|
ReplayOrderBook
|
Book being reconciled. |
required |
side
|
Side
|
Level side. |
required |
price
|
int
|
Fixed-point level price. |
required |
size
|
int
|
Fixed-point public-size decrease. |
required |
Raises:
| Type | Description |
|---|---|
RuntimeError
|
If represented liquidity cannot absorb the decrease. |