Skip to content

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 target_borrowed(public_size, private_size). Defaults to BorrowedImpact.

None
queue_policy object

Object implementing increase and reduce for L2 changes. Defaults to BackCancelQueue.

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

__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:

E = L - B
T = E + O = L + O - B
0 <= B <= min(L, O)

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

min(public_size, private_size).

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.