FIX protocol has evolved over time; it’s now more than a decade it’s started by Fidelity and Solomon Brothers. FIX connectivity is the most popular connectivity solution exists for trading whether its equities, futures, options or fixed income or even foreign exchange (FX). FIX protocol has dominated the market and become as standard solution for any market or broker which is trying to develop connectivity with market within a short period of time because of complexity of native exchange api and lack of support FIX protocol come as handy.

To develop fix connectivity you need to agree upon which FIX protocol version are you going to follow , since many fix protocol version exists e.g. FIX4.0, FIX4.1, FIX4.2 and FIX4.4 even more newer version are available but most firm use FIX 4.2 as there preferred FIX connectivity solution or you can say still most widely used version is FIX 4.2 , many firms , clients , hedge funds , pension funds still use it for online trading but even after launch of more advance version it still remains the popular one. On advance side FIX 4.4 is getting popularity.

In this short discussion I am highlighting some of the difference between FIX 4.2 and FIX 4.4. Two most popular FIX protocol versions you can check FIX specification for more detail and some other difference which exits. FIX specification are available on http://www.fixprotocol.org you can download pdf version of these specification and can look before developing your FIX connectivity.

There are many differences between these two versions of fix protocol, some of them I am highlighting here.

1) There was tag called ExecTransType (tag 20) which was there in FIX 4.2 and now merged to ExecType tag 150 into FIX4.4, this tag used to define the nature of execution received from the exchange or broker.

2) Replaced the use of the QuantityType (tag 465) field with new QtyType (tag 854) which contains a re-organized/consolidated set of values.

3) Removed various Settlement Instructions-related fields.

4) Added "Quote Response" to list of messages for which Quote Status Report message is the appropriate response.

Establishing FIX connectivity is challenging if it involves custom fix tags, these are the tags which are not defined by FIX protocol but used by many firm or between client and broker for carrying some extra information which is agreed upon that. FIX protocol allows you to define custom FIX tags for your FIX connectivity until and unless they are not conflicting with any other FIX tags. Generally firms use tag above 10000 or 5000 to define this custom FIX tags.

There are many other changes which are available in the release notes of fix 4.4 http://www.fixprotocol.org, I will add some more as I come to know which is used in day trading more often.

Hi Anonymous here are your answers , though you could ask that into one comment instead of three :)

1. Generally custom tag in FIX Protocol is something every investment bank or equity broker or any other FIRM use to carry firm specific tags which is useful to cater different FIX clients and also to carry booking , settlement and some other specific information. finance domain is so huge and every client is different which trades with broker are different. normally after 10000 tags are used for custom tag but some time 6000-9000 tag number is also used for same.

2. yes if a FIX engine supports FIX4.2 version than it can support FIX4.0 but that is not hard and fast rule it depends upon how FIX engine is implemented. some professional FIX Engine e.g Cameron FIX Engine, NYFIX Appia etc supports multiple version of FIX Protocol.

3. For Downloading FIX Protocol Specification you can visit fixportocol.org site , the link is in this post itself if you have read it. every FIX protocol version has different specification e.g FIX4.0 or FIX4.2 so make sure you download correct version also its worth looking at release notes and errata of different FIX versions.

Thanks for this blog dude Its really useful for a FIX Protocol beginner like me . I am working on a broker fix connectivity using FIX4.2 protocol. I have a challenge where I need to generate ClOrdID for orders coming to my broker connectivity System and have to send orders to broker using that ClOrdID, Could you please suggest on that front.

FIX Tag 54 (Side) Can be used to denote different types of order e.g. Buy order, Sell Order , Short Sell Order or Short Sell Exempt order. you can check Fixionary or FIX protocol specification for such kind of details.

I heard that in FIX4.0 protocol OrdStatus is actually ExecType of FIX4.2 , also is there any section in FIX Protocol Specification which explains about difference between two FIX protocol version e.g. FIX4.0 and FIX4.2 ?

bit curious about which FIX version should I start learning , I am thinking of FIX4.0 but someone suggested me fix 4.2 and checking fix specification available on fixprotocol.org site. what do you say ?

Hi Javin, I am working on connecting a broker using FIX protocol version FIX4.2 , I have already setup FIX connectivity and MY FIX Session is able to login and heart beating . what I would like to do is perform some testing on FIX connection . do you have any test script which you could share with us for testing any FIX broker connection.Thanks in advance.

Hi Reena,FIX protocol learning is best by working in FIX messaging layer and using FIX specification since specification is in very detail and very exhaustive you can also refer fixprotocol.org site and there discussion forum and blogs like mine will give you some basic idea.

Hi Anonymous,Sorry but i don't have any FIX protocol testing script with me but I can suggest you to test New , Mod and Cancel for different OrdType (tag 40) and TimeInForce (tag 59) combination. you can also test various modification scenario mentioned in FIX protocol specification document. Brokers normally don't support all the OrdType , its better to look there ROE Document (Rules for Engagement) to actually understand what they support and what they not. you can also make FIX testing scenario in xls for your future reference.

You can start with FIX4.0 because its the oldest popular version and many clients and systems are still using this in FIX messaging layer. then you can move ahead with FIX4.2 and FIX4.4 which is more feature rich as compared to FIX4.0 and gained popularity with advanced trading systems.Please refer FIX protocol specification for details.

you are right in FIX4.0 OrdStatus (fix tag 39) is used to denote execution type also which is later segregated into tag 150 (ExecType) form FIX4.2 so any FIX engine logic written based on OrdStatus will not work in FIX4.2 and you need to write it again to represent correct status of order in FIX messaging.

I have a question since FIX has two separate tags Symbol (tag 55) and SecurityID(tag 48) and SecurityIDSource tag 22 for specifying instrument or symbol for which order is , which tag will get preference , I didn't find related in FIX protocol documentation / specification , can you please help ?

buddy, yesterday I went though one interview with one of the FIX broker in Europe. interview is mostly on java but they did ask my experience about FIX , as I said I have some experience they asked me "What is difference between tag 11 (ClOrdID) and tag 38 (OrderID) ? dude do you know?

Raj, Tag 55 is the exchange symbol typically. Tag 48 and 22 are used for the various security numbering schemes such as CUSIP, ISIN SEDOL etc.

Richard, Tag 11 is the order ID that is sent you from the client or the one you send out to the other counterpary. Tag 37 OrderID is the internal orderID you assign in your system, this is sent back to the client as your own unique internal order id.

If you want to play with FIX take a look at QuickfixJ for Java and quickfix c++.Fix is actually on 5.0 SP2 now and this provides many advanced trading functions for exoctic trading products.

Hi Anonymous, My suggestion is to start with some of my post under FIX Protocol Tutorial of and then refer FIX specification documentation on case by case basis. you can also visit fixprotocol.org forum for an active participation in FIX protocol and benefit from them.

Hi Anonymous, Thanks for answering Raj's question. Symbology lookup is an important point of order processing cycle because many exchanges needs the symbol in form or Exchange ticker and most of clients prefer to send either RIC or BET (Bloomberg ticker) , Symbology or Product lookup does this translation based upon exchange requirement.

@Stock Market, yes in FIX 4.2 ExecType was introduced with values represented by OrdStatus so any code which is working on FIX 4.0 may not exactly on FIX 4.2. I don't think there is any particular section on FIX protocol Specification but Release notes of FIX protocol release is goo pointer.