🏷️ FIX Log Parser
Paste a FIX log: each order climbs its state ladder from NewOrderSingle through Pending, New, partial fills to Filled or Canceled with the latency of every step, and each 49→56 session is checked for sequence gaps, PossDup and heartbeat rhythm.
Auto-detects the delimiter or rebuilds fields when SOH is missing. An order is every message linked through ClOrdID (11), OrigClOrdID (41) and OrderID (37), plus session rejects (35=3, RefSeqNum 45) and business rejects (35=j, 45 or 379) pointing at one of them. Each Execution Report is read by ExecType (150; FIX 4.2 adds ExecTransType 20) first and OrdStatus (39) second: only F/G (4.2: 1/2 with 20=0/2) are fills, so 150=F with 39=6 is a fill during a pending cancel while 150=5 with 39=1 is a replace ack. Latency comes from SendingTime (52, or OrigSendingTime 122 on resends). A resend (43=Y) carrying a known ExecID is not a new step; Pending New after New, any state after a terminal one (Filled, Canceled, Rejected, Expired), or Rejected after a fill is drawn in red, while transitional states (Pending Cancel, Pending Replace, Replaced, Stopped, Suspended) are not flagged while the order is live. A broker log usually holds two legs (client ⇄ broker and broker ⇄ venue) and every fill appears once per leg with its own ExecID, so positions, open orders and lifecycles are built per leg (chips to switch; the default is the venue leg that carries orders, and several venue connections add a merged chip), each ExecID counted once per 49→56, busted trades reversed (150=H via ExecRefID 19), buy and sell averages kept apart per account and symbol, each fill's LastPx checked against the limit in force, and Σ LastQty checked against CumQty and OrderQty. Session health runs per 49→56 pair: MsgSeqNum gaps (GapFill covers up to NewSeqNo) and duplicates, PossDup, and the longest silence between two consecutive messages against HeartBtInt (108). Everything is replayed in SendingTime order, so the log can be pasted in either direction. HOSE and HNX connect members over FIX 4.4 as defined by each exchange's connectivity specification, so 4.4 is the default reading; 4.2 when tag 8 says so.