FIXtelligent Blog Do FIX Protocol intelligently

A Trader’s Guide to the FIX Protocol

In collaboration with Global Trading magazine, we have created below FIX protocol guide for buy-side traders which has also been published in the journal and is available on their website.

This first version is geared for buy-side traders who are active in equities and use FIX versions 4.2 and 4.4. In near future after collecting feedback from the community we aim to update this guide to include other asset classes and functionality specific to FIX 5.0.

This guide is grouped by the business function and contains the FIX fields in no particular order.

General / Common

This table lists general / common tags which are used across different types of functionality.

FIX TagName (FIX Name)DescriptionOriginator
35Message Type (MsgType)FIX has numerous messages for different purposes: i.e. for sending an order, requesting order status etc. This field exists in every message and identifies the type of message.Any
1Account (Account)Field used for account mnemonic. Its identification source is mutually agreed between the counterparties."
660Account ID Source (AccountIDSource)Introduced in FIX 4.4, this field is used to identify the source of Account (1) code. Possible values for source can be BIC, OMGEO, DTCC code, TFM or SID code."
581Account Type (AccountType)Used to identify the type of account (e.g. house trader, floor trader, joint back office account)."
58Text (Text)General purpose text tag which exists in most messages. Can be used to pass human readable information between counterparties."

Security Identification

This table lists the FIX fields which are used for security identification.

FIX TagName (FIX Name)DescriptionOriginator
22Security ID Source (SecurityIDSource)Indicates the source database which will be used for identifying securities.
For example: 22=1 means CUSIP, 22=4 means ISIN.
Any
48Security ID (SecurityID)Identification of the security as defined in source database indicated in field 22."
55Symbol (Symbol)In older FIX implementations, source database for security identification is implicitly identified in Rules of Engagement document and identification put in field 55."
107Security Description (SecurityDesc)Human-readable description about the security which can be helpful in manual trader-assisted orders."
207Security Exchange (SecurityExchange)MIC of the market which was used to identify security. Useful when security IDs are not universally unique."
167Security Type (SecurityType)Indicates the type of security (e.g. common or preferred stock, CFI code for futures product)."

Order and Venue

FIX tags in this table are used for identification of orders and execution venues.

FIX TagName (FIX Name)DescriptionOriginator
11Client Order ID (ClOrdID)Order ID assigned by buy-side system is carried as a value of tag 11 in trading messages.Buy-side
37Order ID (OrderID)Order ID assigned by sell-side / broker system is carried as a value of tag 37 in trading messages.Sell-side
41Original Client Order ID (OrigClOrdID)Order modification and cancel requests have new Client Order ID in tag 11 and in these messages existing order is identified by the value provided in tag 41.Buy-side
100Execution Destination (ExDestination)Contains MIC of the execution venue where the order originator wants it to be executed."
30Last Market (LastMkt)Market where the last fill on order executed. Indicates where the order was routed to by the broker.Sell-side
39Order Status (OrdStatus)Identifies the current status of the order (e.g. New, Partially Filled, Filled, Cancelled, Rejected)."
851Last Liquidity Indicator (LastLiquidityInd)Indicator to identify whether current fill was a result of a liquidity provider providing or liquidity taker taking the liquidity. Applicable only for OrdStatus of Partial or Filled.Sell-side

Quantities and Prices

Following FIX fields are used for specifying quantities and prices when carrying out trading activity over FIX protocol.

FIX TagName (FIX Name)DescriptionOriginator
38Order Quantity (OrderQty)In trading messages, value of field 38 indicates the units of security being bought or sold.Buy-side
152Cash Order Quantity (CashOrdQty)Used to specify order quantity in cash instead of units. Value is the amount in underlying currency."
516Percentage Order Quantity (OrderPercent)Introduced in FIX 4.3, this field is used to specify the order quantity in percentage (e.g. for Collective Investment Vehicles)."
32Last Quantity (LastQty)Quantity of shares bought or sold in the last fill.Sell-side
151Leaves Quantity (LeavesQty)Number of shares open for execution in the current order."
14Cumulative Quantity (CumQty)Number of total shares bought or sold in the current order."
424Day Order Quantity (DayOrdQty)For Good Till Date orders, order quantity open for execution on a day. Applicable for days after the first one. It is the OrderQty (38) less all quantity (adjusted for stock splits) that traded on previous days.
DayOrderQty (424) = OrderQty (38) _ [CumQty (14) _ DayCumQty (425)].
"
425Day Cumulative Quantity (DayCumQty)For Good Till Date orders, number of shares traded today."
44Price (Price)Price per unit of quantity. Required for limit orders.Buy-side
31Last Price (LastPx)Price at which quanity in last fill executed.Sell-side
6Average Price (AvgPx)Broker calculated average price of all fills on the current order."
140Previous Close Price (PrevClosePx)Closing price of security on previous day. Useful for identifying security.Buy-side
99Stop Price (StopPx)Indicates the stop price of appropriate order types. Required for order type "Stop" or "Stop Limit"."
426Day Average Price (DayAvgPx)For Good Till Date order, average price of the quantity filled today.Sell-side
15Currency (Currency)Currency in which price information of an order is provided. Usually it is trade currency of the security but can also be different.Any
120Settlement Currency (SettlCurrency)Required if order is to be settled in different currency than trade currency. This is indicated with 121=Y (ForexReqd)"
639Price Improvement (PriceImprovement)Introduced in FIX 4.3. Amount of price improvement achieved by the broker and reported to the buy-side in execution reports.Sell-side

Execution Management

Following FIX tags are used for managing execution of orders.

FIX TagName (FIX Name)DescriptionOriginator
40Order Type (OrdType)Buy-sides use this field to indicate the order type in order messages.
For example: 40=1 is market order, 40=2 is a limit order.
Buy-side
21Handling Instruction (HandlInst)Buy-sides use this field to indicate how the order should be executed by the broker. For example: 21=1 means automatic execution while 21=3 means manual execution."
54Side (Side)Identifies if the order is for buying or selling (long or short).
For example: 54=1 is Buy (Long), and 54=2 is Sell (Short).
"
111Max Floor (MaxFloor)Maximum quantity from total order quantity to be shown on exchange floor at any given time."
210Max Show (MaxShow)Maximum quantity from total order quantity to be shown to other customers (e.g. by sending an IOI)."
18Execution Instruction (ExecInst)Instructions for order handling on exchange floor. Can contain multiple instructions. For example: "No held", "Work", "Go along", "Stay on bidside", "All or none", "Cancel on trading halt" etc."
110Minimum Quantity (MinQty)Minimum quantity of an order to be executed."
114Locate Required (LocateReqd)For short sell orders. Indicates if broker is required to locate the stock."
847Target Strategy (TargetStrategy)If order is for a strategy, the type of stratey (e.g. VWAP)."
848Parameters for Target Strategy (TargetStrategyParameters)Fields for the target strategy. Mutually agreed between the counter-parties."
849Participation Rate (ParticipationRate)Required when TargetStrategy=Participate. Used to indicate the participation rate."
636Working Indicator (WorkingIndicator)Sent by the broker in execution report to indicate if the order is currently being worked on, or not.Sell-side
103Order Reject Reason (OrdRejReason)Indicates the reason of order rejection by broker (e.g. "Unknown symbol", "Order exceeds limit", "Duplicate order", "Stale order" etc.)"
102Cancel Reject Reason (CxlRejReason)Indicates the reason for rejection of an order modification or cancel request (e.g. "Too late to cancel", "Unknown order", "Order in pending state", "Duplicate ClOrderID" etc.)"

Date and Time

Most timestamps in FIX are time-zone agnostic and rely on GMT/UTC time. However some FIX fields use local dates and times.

Following table lists the most important date/time tags.

FIX TagName (FIX Name)DescriptionOriginator
60Transact Time (TransactTime)Time in UTC when the trading instruction (i.e. new order, order cancel etc.) was created in the trading system, or when a fill happened.Any
59Time In Force (TimeInForce)Specified how long an order remains active. Absence of this field in an order implies a day order. TIF can be "Day", "Good Till Cancel", "Immediate Or Cancel", "Fill Or Kill", "Good Till Date" etc.Buy-side
168Effective Time (EffectiveTime)Time in UTC when the instructions provided in the FIX message take effect."
432Expiration Date (ExpireDate)Date when an order expires. Always local date (not UTC)."
126Expire Time (ExpireTime)Time/Date of order expiration in UTC. The meaning of expiration is specific to the context where the field is used. For orders, this is the expiration time of a Good Til Date TimeInForce. For Quotes - this is the expiration of the quote."
75Trade Date (TradeDate)Used when a broker is reporting trades for a day other than the current day trades.Sell-side
64Settlement Date (SettlDate)Date of trade settlement expressed in YYYYMMDD format.Any

Parties in Trade

FIX protocol has comprehensive support for identifying all parties involved in a trade. This table lists the most common fields used for this purpose.

FIX TagName (FIX Name)DescriptionOriginator
29Last Capacity (LastCapacity)Capacity in which broker executed the order (e.g. "Agent", "Cross as agent", "Cross as principal", "Principal").Sell-side
76Executing Broker (ExecBroker)Identified Executing / Give Up broker. Deprecated in FIX 4.3."
528Order Capacity (OrderCapacity)Introduced in FIX 4.3. Indicates the capacity of the firm placing order (e.g. "Agency", "Proprietary", "Individual", "Principal", and an "Agent"). Used in conjunction with 529 (OrderRestrictions).Buy-side
529Order Restrictions (OrderRestrictions)Introduced in FIX 4.3. Indicates the restrictions which are associated with the order (e.g. "Program order", "Foreign entity", "Market maker/specialist" etc.)"
447Party ID Source (PartyIDSource)Introduced in FIX 4.3 and part of "Parties" component. Identifies class or source of Party ID (448) e.g. BIC, ISO country code, investor ID etc.Any
448Party ID (PartyID)Introduced in FIX 4.3 and part of "Parties" component. Indicates Party ID according to source indicated in PartyIDSource (447)."
452Party Role (PartyRole)Introduced in FIX 4.3 and part of "Parties" component. Indentifies the type or role of the party identified with PartyID (448) e.g. "Executing firm", "Broker of credit", "Clearing firm", "Investor ID", " Introducing firm", etc."
523Party Sub ID (PartySubID)Introduced in FIX 4.3 and part of "Parties" component. Sub-identifier (e.g. Clearing Account for PartyRole (452)=Clearing Firm, Locate ID for PartyRole=Locate/Lending Firm, etc)."
803Party Sub ID Type (PartySubIDType)Introduced in FIX 4.3 and part of "Parties" component. Indicates type of PartySubID e.g. "Firm", "Person", "System", Application", "Email address", "Phone number" etc."

Miscellaneous

This table contains miscellaneous FIX fields which are relevant to this guide.

FIX TagName (FIX Name)DescriptionOriginator
468Rounding Direction (RoundingDirection)Specifies how calculated values like AvgPX should be rounded. Can either be "Round to nearest", "Round down", or "Round up".Buy-side

 


If you find this guide useful or have suggestions to improve it, please contact us. We will be happy to hear from you.