Hello guys,
Hope you must be doing well. If you are here, it simply means you are looking for some good and well organized information on FIX Protocol. Well, I’ll try my level best to meet your expectation.
FIX protocol is now a day a very well known messaging standard used in financial sector but you can’t find much information on the same on internet.
So, I thought to publish collect useful information from wiki, FIX Community with some flavor of my knowledge based on experience. Well, before I publish my first blog let me clear one thing – I am not a kind of person who will keep updating this blog on regular basis however I’ll try my best to do it on time.
Let’s start and all the very best to you !!
The Financial Information eXchange (FIX) protocol is an electronic communications protocol initiated in 1992 for international real-time exchange of information related to the securities transactions and markets. With trillions of dollars traded annually on the NASDAQ alone, financial service entities are investing heavily in optimizing electronic trading and employing direct market access (DMA) to increase their speed to financial markets. Managing the delivery of trading applications and keeping latency low increasingly requires an understanding of the FIX protocol.
FIX message format layout
Every FIX messages have basically three parts:- Header, Body and Trailer. The message fields are delimited using the ASCII 01 <start of header or SOH> character. They are composed of a header, a body, and a trailer.
Header:-
Up to FIX.4.4, the header contained three fields: 8 (BeginString), 9 (BodyLength), and 35 (MsgType) tags.
From FIXT.1.1 / FIX.5.0, the header contains five mandatory fields and one optional field: 8 (BeginString), 9 (BodyLength), 35 (MsgType), 49 (SenderCompID), 56 (TargetCompID) and 1128 (ApplVerID - if present must be in 6th position).
Body:-
The body of the message is entirely dependent on the message type defined in the header (TAG 35, MsgType). i.e. Body contains the information of trade / order.
Trailer:-
The last field of the message is TAG 10, FIX Message Checksum. It is always expressed as a three digit number (e.g. 10=002). It usually have Security Check through Signature and CheckSum field.
Header+Body+Trailer : FIX Content
Example of a FIX message: Execution Report (Pipe character is used to represent SOH character)
8=FIX.4.2 | 9=178 | 35=8 | 49=PHLX | 56=PERS | 52=20071123-05:30:00.000 | 11=ATOMNOCCC9990900 | 20=3 | 150=E | 39=E | 55=MSFT | 167=CS | 54=1 | 38=15 | 40=2 | 44=15 | 58=PHLX EQUITY TESTING | 59=0 | 47=C | 32=0 | 31=0 | 151=15 | 14=0 | 6=0 | 10=128 |
(In the above FIX Message Body length 9 is correct and checksum 10 was checked out by using the source available from QuickFIX, an open source FIX implementation)
How to calculate Body Length?
Body length is the character count starting at tag 35 (included) all the way to tag 10 (excluded). SOH delimiters do count in body length.
For Example: (SOH have been replaced by'|')
8=FIX.4.2|9=65|35=A|49=SERVER|56=CLIENT|34=177|52=20090107-18:15:16|98=0|108=30|10=062|
0 + 0 + 5 + 10 + 10 + 7 + 21 + 5 + 7 + 0 = 65
0 + 0 + 5 + 10 + 10 + 7 + 21 + 5 + 7 + 0 = 65
Has a Body length of 65.
The SOH delimiter at the end of a Tag=Value belongs to the Tag.
Checksum
The checksum algorithm of FIX consists of summing up the decimal value of the ASCII representation all the bytes up to the checksum field (which is last) and return the value modulo 256.