FixPortalDocsSimulator
Browse documentation

FIX concepts primer

FIX is a stateful, ordered message protocol. A successful TCP connection is only the transport; the useful conversation begins after Logon and remains valid only while both sides agree about identity and sequence.

Session identity

A FixPortal session is identified as BeginString:SenderCompID->TargetCompID.

From the simulator's point of view, SenderCompID is the simulator and TargetCompID is your initiator. Your QuickFIX configuration reverses those values because it describes the same connection from the initiator's side.

FixPortal supports FIX 4.2, FIX 4.4, and FIXT.1.1 carrying FIX 5.0 SP2 application messages. For FIXT.1.1, set DefaultApplVerID to FIX.5.0SP2.

Sequence and session state

Every administrative or application message carries MsgSeqNum(34). A gap causes recovery traffic; a lower-than-expected number can be rejected unless a reset is intentional. Preserve the initiator's store between ordinary reconnects. Reset both sides only when the test calls for a fresh sequence.

Order identifiers

  • ClOrdID(11) identifies a client instruction and changes for cancel/replace requests.
  • OrigClOrdID(41) links a cancel or replace to the instruction it changes.
  • OrderID(37) is assigned by the simulated venue.
  • ExecID(17) identifies one execution report event.

Do not treat ClOrdID as a permanent order primary key. The chain of client identifiers describes the instruction history; OrderID describes the venue-side order.

Lifecycle fields

ExecType(150) says what this execution report represents now. OrdStatus(39) says the order's resulting state. A fill commonly carries ExecType=F with OrdStatus=1 for partially filled or OrdStatus=2 for filled.

The core path is New Order Single, acknowledgement, zero or more partial fills, then fill. Tests may branch into reject, cancel, replace, bust, correction, or session-level recovery. Use the blotters to inspect the complete message rather than inferring state from one label.

Instrument identity

An order may identify an instrument with Symbol(55), or with SecurityID(48) plus SecurityIDSource(22). Routing rules and instrument overrides use the source-and-ID pair, so the values must match exactly across the order and configuration.

Updated 2026-09-08 · Edit on GitHub