Financial Information eXchange
From Wikipedia, the free encyclopedia
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 [1].
Contents |
[edit] FIX Protocol Limited
FIX Protocol, Ltd. is the company established for the purpose of ownership and maintenance of the specification. It maintains the specification, while keeping it in the public domain.
[edit] FIX message format layout
The message fields are delimited using the ASCII 01 <start of header> character. They are composed of a header, a body, and a trailer.
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).
The body of the message is entirely dependent on the message type defined in the header (TAG 35, MsgType).
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).
Header+Body+Trailer : FIX Content
Example of a FIX message : Execution Report
8=FIX.4.2 | 9=67 | 35=8 | 49=PHLX | 56=PERS | 11=ATOMNOCCC9990900 | 52=20071123-05:30:00.000 | 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=102 |
(In the above FIXMessage Body length 9 is incorrect and checksum 10 may be incorrect)
- Body
- Order / Trade Details Info
- Trailer
- Security Check thru Signature and CheckSum.
[edit] Users
FIX is widely used by both the buy side (institutions) as well as the sell side (brokers/dealers) of the financial markets. Among its users are mutual funds, investment banks, brokers, stock exchanges and ECNs. See FIX Protocol Organization for an extensive list of major FIX users.
FIX has become the standard electronic protocol for pre-trade communications and trade execution. Although it is mainly used for equity transactions in the front office area, bond, derivatives and FX-transactions are also possible. One could say that whereas SWIFT is the standard for back office messaging, FIX is the standard for front office messaging. However, today, the membership of FIX Protocol Ltd. is extending FIX into block-trade allocation and other phases of the trading process, in every market, for virtually every asset class.
[edit] Technical specification
The FIX protocol is a technical specification for electronic communication of trade-related messages. It is a self-describing protocol in many ways similar to other self-describing protocols such as the newer XML; XML representation of Business content of FIX messages is known as FIXML.
FIX Session is layered on TCP (Transmission Control Protocol). FIX is more popular than FIXML in Securities Trading because FIXML messages are much larger in size due to XML tags.
FIX messages are formed from a number of fields, each field is a tag value pairing that is separated from the next field by a delimiter SOH (0x01). The TAG is a string representation of an integer that indicates the meaning of the field. The value is an array of bytes that hold a specific meaning for the particular TAG (e.g. TAG 48 is securityID, a string that identifies the security; TAG 22 is IDSource, an integer that indicates the identifier class being used). The values may be in plain text or encrypted as pure binary (in which case the value is preceded by a length field). The FIX protocol defines meanings for most TAGs, but leaves a range of TAGs reserved for private use between consenting parties.
The FIX protocol also defines sets of fields that make a particular message, within the set of fields some will be mandatory and others optional. The ordering of fields within the message is generally unimportant, however repeating groups are preceded by a count and encrypted fields are preceded by their length. The message is broken into three distinct sections: the head, body and tail. Fields must remain within the correct section and within each section the position may be important as fields can act as delimiters that stop one message from running into the next - the final field in any FIX message is TAG 10 (checksum).
There are two main groups of messages - admin and application. The admin messages handle the basics of a FIX session. They allow for a session to be started and terminated and for recovery of missed messages. The application messages deal with the sending and receiving of trade-related information such as an order request or information on the current state and subsequent execution of that order.
[edit] Body length
The Body length is the byte count starting at tag 35 (included) all the way to tag 10 (excluded). SOH separators do count in the body length.
For Example:
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|
Has a Body length of 65 with the following breakdown, length(tag#)
5(35) + 10(49) + 10(56) + 7(34) + 21(52) + 5(98) + 7(108)
The SOH delimiter at the end of a Tag=Value belongs to the Tag
[edit] Checksum
The checksum algorithm of FIX consists of summing up all the bytes up to the checksum field (which is last) and return the value modulo 256.
[edit] Latest developments in FIX protocol
The latest version of FIX Protocol implements "Transport Independence" by permitting multiple versions of application messages to be carried over a single version of Transport Independent FIX Session (FIXT.1.1 and higher).
Transport Independence also paves the way for different transport protocols like Message Queues, Web Services etc. to be used for FIX message transport other than traditional FIX over TCP.
FIX now supports Algorithmic Trading by use of FIX Algorithmic Trading Definition Language FIXatdl
FIX Protocol Limited has released FAST protocol which stands for FIX Adapted for Streaming. FAST is used for sending Multicast Market Data
[edit] Diagrammatic representation of FIX system
[edit] Notes
[edit] See also
- Algorithmic trading platform
- Electronic trading
- QuickFIX, an open source FIX implementation
- SWIFT:Message Types
- ULLINK
[edit] External links
- FIX Protocol Organization - this official FIX website also includes a comprehensive list of closed-source and open-source FIX implementations.
- FIXimate FIX Dictionary 4.0 4.1 4.2 4.3 4.4
- FIXwiki - a Wiki dedicated to FIX. Contains much of the FIX specification.
- FIXopaedia FIX Dictionary 4.0 4.1 4.2 4.3 4.4 5.0 FIXT 1.1
- QuickFIX - an open-source FIX engine implemented in C++
- QuickFIX/J - a 100% Java implementation of the C++ QuickFIX engine
- NYFIX FIXionary (Note: this page takes up to 90 seconds to load)
- Transact Tools Data Dictionary
- FIXForge FIX Dictionary: 4.0 4.1 4.2 4.3 4.4 5.0
- Mini-FIX - a small free FIX windows client/server
- UL FIX - a free FIX engine with conditional free support from
- Rapid Addition - FAST and FIX engine specs, tools and news.
