FastMM documentation
FastMM C++ API 0.6.0
Public headers, tier 1 and tier 2
Loading...
Searching...
No Matches
fastmm::OmsUpdate Struct Reference

#include <fastmm/core/oms.hpp>

Public Attributes

Order order {}
 snapshot after the transition; for a recently terminal id only the terminal record's fields (id, instrument, venue, side, state, price, qty, cum_qty); empty if unknown
 
Handle< Order > handle {}
 invalid once terminal (slot freed) or unknown
 
OrderState prev = OrderState::PendingNew
 
OmsAction action = OmsAction::None
 
bool known = false
 the id mapped to an order (open or recently terminal)
 
bool changed = false
 state or quantities changed
 
bool terminal = false
 the order reached a terminal state in this update
 
Qty fill_qty {}
 for fills
 
Price fill_px {}
 
Qty missed_qty {}
 Quantity the venue reports as filled that we never saw a fill message for (a private-stream outage covered by a cancel ack, an expiry or a reconciliation snapshot).
 
ClientOrderId replaced_cl_ord_id {}
 A cancel-replace to a new id completed: the order carries on under order.cl_ord_id and this one is gone.
 
Qty unresolved_qty {}
 Quantity that was still working when a reconciliation snapshot failed to mention the order.
 
Qty corrected_qty {}
 Part of a replayed execution (OrderFillMsg::kReplayed) whose quantity a synthetic fill already put in the position: the execution names what it was, so its price and its fee replace the estimate rather than the quantity being counted twice.
 
Price synthetic_px {}
 
OrderTimes times {}
 The order's times (Oms::times), and the pool slot it had: set on every update of an open order, the terminal one included (handle is invalid then, the slot already free).
 
Handle< Order > slot {}
 

Member Data Documentation

◆ order

Order fastmm::OmsUpdate::order {}

snapshot after the transition; for a recently terminal id only the terminal record's fields (id, instrument, venue, side, state, price, qty, cum_qty); empty if unknown

◆ handle

Handle<Order> fastmm::OmsUpdate::handle {}

invalid once terminal (slot freed) or unknown

◆ prev

OrderState fastmm::OmsUpdate::prev = OrderState::PendingNew

◆ action

OmsAction fastmm::OmsUpdate::action = OmsAction::None

◆ known

bool fastmm::OmsUpdate::known = false

the id mapped to an order (open or recently terminal)

◆ changed

bool fastmm::OmsUpdate::changed = false

state or quantities changed

◆ terminal

bool fastmm::OmsUpdate::terminal = false

the order reached a terminal state in this update

◆ fill_qty

Qty fastmm::OmsUpdate::fill_qty {}

for fills

◆ fill_px

Price fastmm::OmsUpdate::fill_px {}

◆ missed_qty

Qty fastmm::OmsUpdate::missed_qty {}

Quantity the venue reports as filled that we never saw a fill message for (a private-stream outage covered by a cancel ack, an expiry or a reconciliation snapshot).

The engine books it as a synthetic fill at the order's own price; see Engine::book_missed_fill.

◆ replaced_cl_ord_id

ClientOrderId fastmm::OmsUpdate::replaced_cl_ord_id {}

A cancel-replace to a new id completed: the order carries on under order.cl_ord_id and this one is gone.

It never produces an update of its own (the OMS renames the record in place), so anything that tracks orders by id closes it here.

◆ unresolved_qty

Qty fastmm::OmsUpdate::unresolved_qty {}

Quantity that was still working when a reconciliation snapshot failed to mention the order.

The venue does not say whether it was cancelled or filled, so nothing can be booked; it is reported so the engine can say the position may be wrong instead of assuming it is not.

◆ corrected_qty

Qty fastmm::OmsUpdate::corrected_qty {}

Part of a replayed execution (OrderFillMsg::kReplayed) whose quantity a synthetic fill already put in the position: the execution names what it was, so its price and its fee replace the estimate rather than the quantity being counted twice.

synthetic_px is the price the estimate used. See Engine::on_fill and PositionTracker::correct_fill.

◆ synthetic_px

Price fastmm::OmsUpdate::synthetic_px {}

◆ times

OrderTimes fastmm::OmsUpdate::times {}

The order's times (Oms::times), and the pool slot it had: set on every update of an open order, the terminal one included (handle is invalid then, the slot already free).

◆ slot

Handle<Order> fastmm::OmsUpdate::slot {}