FixPortalDocsSimulator
Browse documentation

Multi-broker routing

Routing chooses a broker allocation for an inbound order. Wire mode then determines whether the client sees one parent report or broker-level child reports.

OrderRoute policydefault or ruleBrokerslicesWire modereportsparkedPending cardRoutes: Pending tabApplyApply AutoCancelRoute policyedited or captured slicesCancel: no route sent
Automatic routing runs a matching rule or the default route straight through to broker slices and wire mode. Manual routing parks the same decision as a pending card for you to apply, apply unchanged, or cancel.

Brokers

Library contains built-in and tenant-defined brokers. A broker code is the stable identifier used in routes; its display name is presentation. Do not rename a code in prose or configuration as though it were cosmetic.

Default route and rules

The default route applies when no instrument rule matches. Each route contains one or more broker slices, and their percentages must total exactly 100.

Instrument rules are keyed by SecurityIDSource and SecurityID. The incoming order must carry the same pair for the rule to match. If it does not, the default route wins.

Wire mode

Aggregated sends one execution report with the parent OrderID; broker allocation remains internal. Separate sends one execution report per route, each with its own OrderID. Choose the mode for the FIX conversation the initiator must prove.

Broker overrides

A broker override layers optional probability, timing, and behaviour values over the session baseline for slices assigned to that broker. Empty fields inherit the session value.

When the same field is set by an instrument override and a broker override, Global Settings → Override precedence selects the winner. The default is Instrument; Broker makes the broker-set field win. Rules are applied after those two layers for a matching order.

Manual routing in Routes

Turn off Auto-acknowledge new orders in Sim Config → Default behaviour to park inbound orders for a manual decision. Open the session's Routes page and use the Pending tab. Each card shows the captured auto decision, the broker slices, wire mode, and a countdown.

  • Apply sends the edited broker slices and wire mode. Every slice must name an existing broker, contain no duplicate code, and total exactly 100 percent.
  • Apply Auto applies the captured auto decision without modification.
  • Cancel discards the parked order. It is not routed and results in a cancelled execution report.

The countdown length comes from the simulator's own configuration; the Global Settings → Pending-route timeout (seconds) value is stored but not read by live routing yet (see Global Settings). If the countdown expires without a decision, the engine applies the captured auto decision. Your Apply, Apply Auto, or Cancel and the timeout can race; the pending entry is claimed exactly once, so whichever resolves it first wins and the other is left with nothing to act on.

Pending entrycountdown runningApply / Apply Auto / Cancelcountdown expiresClaim attemptClaim attemptFirst claimresolves route
Your Apply, Apply Auto, or Cancel and the countdown's own timeout race to claim the same pending entry; only the first to claim it resolves the route.

Use Recent actions to review Operator applied, Timed out, and Operator cancelled routing decisions (here "operator" means whoever acted on the card, which needs only session write access) alongside venue actions. The venue history includes Amend, Cancel, Force fill, Bust, Correct, DFD, Reject, Expire, Reactivate, Cancel all, and Cancel by symbol when those actions occur for the session.

Viewing pending routes and recent actions requires session read access. Applying or cancelling a pending route requires session write access.

A repeatable routing test

  1. Create or confirm the required broker codes.
  2. Set a simple default route and save.
  3. Send one order with a unique ClOrdID.
  4. Verify slice quantities and outbound reports.
  5. Add one instrument rule and send a matching order.
  6. Send a non-matching control order to prove fallback.
  7. Repeat under the other wire mode if the client supports both.

Rounding matters when quantity does not divide cleanly across percentages. Assert total allocated quantity as well as each slice.

Updated 2026-09-25 · Edit on GitHub