Read maker / taker on a fill¶
Every fill event carries a flag indicating whether the order acted as a maker (rested in the book and was consumed by an aggressive opposite trade) or a taker (arrived marketable and crossed the book).
What's exposed¶
For PARTIALLY_FILLED and FILLED events:
- Python / Codon:
ev.is_maker(bool),ev.fill_role("maker"|"taker") - Node / QuickJS:
ev.isMaker(boolean),ev.fillRole("maker"|"taker"|nullfor non-fill events) - C ABI:
FloxOrderEventData.is_maker(uint8, 0 = taker, 1 = maker)
Non-fill statuses always report is_maker = false / fillRole = null.
How the simulator classifies¶
- A resting limit order whose queue position gets consumed by an aggressive trade in the opposite direction is maker.
- A market order, or a limit order that arrived marketable and crossed the book on submission, is taker.
- A marketable limit that partially crosses then rests will record the crossed fill as taker and any subsequent queue-consumption fills as maker.
Use in a fee model¶
Notes¶
- The classification is exposed as data; the simulator does not
apply a fee model based on it. Strategies that need realistic fee
bookkeeping should multiply through their own
MAKER_BPS/TAKER_BPSvalues per venue tier. - For live executors that forward exchange-side maker/taker flags, the field reflects whatever the venue reports.