Financial Information Exchange Protocol
Tags and their values
Financial Information Exchange Protocol is an industry driven messaging standard for exchange of Trading related information between financial institutions.
What kind of protocol is FIX
It's an OPEN protocol that brings all players together. Simple and platform independent.
Used to maintain the different aspects of FIX session (connection)
Messages used for transmission of business messages
Admin Message Logon
Client Authentication Message
Admin Message Heartbeat
Used to check communication link between two parties
Admin Message Test Request
Used to test the health of the communication link
Admin Message Resend
Request to retransmit a cetain application message
Admin Message Reject (session level)
Session level validation failure. (Diffrent from application level validation.) Example : invalid version, msg type...reject reason is populated with the error info
Admin Message Sequence Reset/Gap Fill
In case of communication problems, missing messages recovered or sequence is reset to ignore the missing messages.
Application Message - Pre-Trade Messages
IOIs, Quotes, News, Email, Market Data, Security Info
Application Message - Trade Messages
Single Order, Basket/List Orders, Multi-leg orders, Executions, Order Cancel, Cancle/Replace, Status.
Application Message - Post Trade Messages
Allocations, Settlement Instructions, Postions
FIX Message Format
Message contains a Header, Body and Trailer/Footer. Message is a collection of fields. Each field is a tag-value pair. <tag>=<value>. Eg: 55=IBM (symbol=IBM). All fields are terminated by a delimiter character (^). Delimiter cannot be used in the message anywhere else except in DATA field.
FIX Message Format TAG
Tags are given a predefined number. Each TAG represents a specific field. FIX Field dictionary provides the list of Fields and corresponding TAG numbers (Supplied with Spec).
FIX Message Format VALUE
Represents the value of the TAG assigned to. Supported data types are: int, float, char, time, date, data, string.
FIX Message Format always start and end with what?
All messages start with "8=FIX.x.y" - indicates the FIX version of the message being transmitted. Useful to support multiple versions. All messages terminate with "10=nnn<SOH>. nnn represents the Checksum of the data : the sum of all the binary values in the message. Helps to identify transmission problems.
FIX Session (Application)
The session maintains the bi-directional messages between two parties. Can be spread across multiple physical connections. It is maintained by using sequence numbers. Both parties rely on sequence numbers to maintain the orderly communication. Every new sessions starts with sequence number 1. Missing messages are re-transmitted with bi-lateral agreement between both parties.
FIX Message Categories
- Admin/Session Messages : Used for Session maintenance. Eg: Logon, Logout, Heartbeat etc.... - Application Messages : Used for exchange of business. Eg: New Order, Cancel Order etc. - Security : Login and Logout between parties. Eg: Data Security - Options for data encryption (PGP)
Application Messages / Trade Messages
- New Order (Single) - Execution Report - Order Cancel Request - Order cancel/Replace Request - Order Status Request
New Order (Single) Tags - Common Mandatory Fields - (8)
FIX version - 8=4.2
New Order Single Tag 9
Message body length : 9=0235
New Order Single Tag 35
35=(D) Message type: (New Single Order)
New Order Single Tag 34
34= Message Sequence: 10
New Order Single Tag 43
43= Poss Dupe Flag: N (no)
New Order Single Tag 49
49=Sender Comp ID: VENDOR (unique id of the sender firm)
New Order Single Tag 50
50=Sender Sub ID: Vendor Sub Id like a desk, trading floor.
New Order Single Tag 56
56=Target Comp ID: Broker value used to identify receiving firm
New Order Single Tag 52
52= Sending Time: Time of message transmission
New Order Single Tag 1
1= Account: mnemonic as agreeded between broker and institution.
New Order Single Tag 11
11=Cl Ord ID: Client Order ID
New Order Single Tag 21
21=HandIInst: Order Handling Instructions to Broker
New Order Single Tag 55
55=Symbol: Secruity Identifier - Ticker
New Order Single Tag 48
48=Security ID: Cusip or other alternate security
New Order Single Tag 54
54=Side: Side of the order Side values : 1=buy 2=Sell 3=Buy Minus 4=Sell plus 5=Sell short 6=Sell short exempt.
A=Logon B=News C=Email D=Order - Single E=Order -List F=Order Cancel Request G= Order Cancel/Replace Request H=Order Status Request J=Allocation K=List Cancel Request L=List Execute M= List Status Request
Execution Types : Numbers
0=New 1=Partial fill 2=Fill 3=Done for day 4=Canceled 5=Replace 6=Pending Cancel 7=Stopped 8=Rejected 9=Suspended
Execution Types: Letters
A=Pending New B=Calculated C=Expired D=Restated E=Pending Replace
- Trading Need - Requirement identification: Financial Product, Supported Features. - Design the flow: Identify the messages. - Develop/Implement the systems -Perform Internal testing -Perform UAT with other party -Roll out and Pre-Production testing.
Simple File Watcher
Used for Message Recovery. Examples would be Shell or Batch script looking for certain text patterns in FIX Engine Log File.