FIX Protocol – the future of trading

An Intro to Financial Information eXchange

FIX protocol (Financial Information eXchange) is basically a bundle of messages for electronic communication on financial markets. It was created by the collaboration of banks, brokers, exchangers and industry utilities, and association, and it serves as a language for automated trading of financial instruments. FIX protocol allows firms to transact in a cost-efficient, electronic and timely manner.

But what is FIX? It’s a collection of standardized messages, exchanged between two parties. A FIX session has two elements which allow that exchange to be made: a server, which listens to incoming connections, and a client, which initiates the connection. Every trading program installed usually contains a FIX Client, which connects to a FIX server ran by a broker. It’s important to say that every message contains a series of tags which detail a certain aspect of that action, separated by special -ASCII character ‘\01’ or SOH (which is a non-displaying character). You’ll understand this later as we’ll see a sample order message

Until then let’s see what a FIX message contains. FIX messages are divided into two categories: admin messages (e.g., Logon, Logout, Heartbeat, test request) and application messages (e.g., new order, amend the order, cancel order, execution report). A message has a header, a body, and a trailer. The header contains info about message type, length, sender/receiver name. The body has session specific data, and the trailer contains the message’s checksum.

The good part is that FIX can offer various choices and it can be adjusted to the desired workflow.  

As an example, let’s say the trader wants to place an order on a specific bond. What next? Well, the FIX client sends a new order request. In return, the server responds with an acknowledgment which certifies that the order was received.

Right now, the order is on the market, and if it matches with another order, the trade may be done, and the server sends back a message which notifies that the order has been filled. But let’s see a sample message for an order, so you can have a better understanding of this protocol.

8=FIX.4.4 | 9=284 | 35=8 | 34=61 | 49=TEST | 52=20180822-08:10:35.644 | 56=TESTSESSION | 57=testuser | 6=0 | 11=Order1 | 14=0 | 15=USD | 17=testsession-testuser-0asd-U-0 | 22=1 | 37=sdsda3-sds3-67ju-629d-18caf14bb34a | 38=3000000 | 39=0 | 40=2 | 44=100 | 48=26054abcd | 54=1 | 55=[N/A] | 60=20180822-08:10:35.452 | 150=0 | 151=3000000 | 423=1 | 10=117 |

This type of message is called “Execution Report,” and it’s the message from the server which acknowledges that the order has been placed on the market. For example, tag 54=1 means that the trader has a Buy Order, 38=3000000 means that wants to buy 3 million shares for that bond,  tag 14=0 means that he didn’t trade anything on this bond and tag 48 specifies the ID of the bond. Tag 60 specifies the time when the order request was initiated, and the list continues. Tags may differ depending on the type of message received.

Also, the client can send a request to cancel the order or amend it. If that is possible, the server will accept the operation and acknowledge this request to cancel or modify the order. If not, this request will be rejected.  Below you can see a diagram which describes the communication between client and server for particular actions.

So, it’s fast, cost-effective and secure – plenty of reasons for the brokers and traders on the market to be satisfied with this protocol.

Fix inline screenshot


QC Engineer
Ciprian is a QC engineer who also has a background in journalism. Ciprian's works daily to improve his technical skills and learn new technologies. His personal hobbies are reading, movies and walks in the park.

Latest posts by Ciprian

Share This Article

Post A Comment