FixPortalDocsSimulator
Browse documentation

Simulation recipes

Good simulator tests change one dimension and include a control. Record the session ID, configuration, runtime overrides, and unique client identifiers before each run.

Acknowledge without filling

Enable new-order acknowledgement, disable automatic fills, and disable Reject all inbound orders. Send one order. Expect a venue OrderID and an acknowledged working state with full LeavesQty. This isolates connectivity and acknowledgement from execution logic.

Produce staged fills

Set a fill count greater than one and a visible stagger. Send a quantity that divides cleanly first. Verify monotonic CumQty, decreasing LeavesQty, weighted AvgPx, and a final filled state. Repeat with a non-divisible quantity to exercise rounding.

Reject one order

Use a deterministic reject configuration or the live reject control. Send a unique order and verify ExecType, OrdStatus, OrdRejReason, and Text. Then disable the reject condition and send a control order to prove the session recovered.

Cancel and replace

Create a working order with no automatic fill. Cancel it using its current ClOrdID and verify the cancel acknowledgement and terminal state. In a separate run, replace price or quantity using a new ClOrdID and OrigClOrdID. Confirm the order chain rather than treating each client identifier as a new order.

Bust or correct a fill

Fill an order, record its ExecID, then apply the supported bust or correction action. Verify the trade reference, quantity totals, and resulting order state. A compensating report should reconcile the chain; deleting the original fill from history would not.

Route across brokers

Create a two-slice default route totalling 100. Test it in aggregated mode, then separate mode. Add one instrument-specific rule and send both a matching order and a non-matching control. Verify slice totals and broker overrides.

Sequence recovery

Use a dedicated session or disposable sequence store. Create a deliberate gap or reset and capture both administrative directions. Do not mix a sequence-recovery test with fill or routing changes; otherwise the first failure hides the second.

Resetting sequence state affects the protocol conversation, not just the current order. Coordinate both sides and avoid doing it on a session another test owns.

Updated 2026-09-08 · Edit on GitHub