Financial Information eXchange

The FIX protocol ( Financial Information eXchange ) is an open standard for the exchange of information, which of banks, brokers, exchanges and other service providers was created.

By the use of a common standard, the exchange of information between the applications of different manufacturers is considerably simplified.

The FIX interface was created in 1990 through the collaboration of banks, brokers, exchanges and service providers and has established itself quickly as an open interface.

Standardization

Some companies and organizations have in 1998 in a non-profit organization, the FIX Protocol Limited together to jointly promote the development of the FIX protocol standards. Today, this organization comprises more than 170 companies.

The latest specification is currently version 5.0, but older versions are in practice quite still in use.

Implementation

The FIX protocol comprises an interface, it can be implemented by software manufacturers without licensing costs.

The FIX Dictionary contains the vocabulary used. All FIX messages are structured according to certain rules and structures that are set there.

In general, only a part of the language bank is implemented, the scope of implementation will be agreed between the communication partners ( trading partners ) and, when in-house software developers in order. If necessary, the vocabulary may ( FIX Dictionary) be extended without much effort, in the rule, however, rely on the standardized vocabulary.

By standardizing the interface can later, by agreement between the trading partners, changes and additions have been done with little effort.

The use of standard software is possible, this can then be adjusted with little effort if necessary to meet the requirements of the trading partner.

FIX data format

FIX messages are defined on the basis of an ASCII byte stream. Each message consists of a number of key number - value pairs, each value pairs are separated by one byte with value 1 (ASCII SOH). The key numbers ( tags) are encoded in ASCII - decimal notation, separated by an equal sign ( ASCII 61) followed by the value. Numerical values ​​are also encoded in ASCII decimal, while ASCII strings are used directly. For each basic data type, there is a prescribed ASCII encoding for the value representation that takes the usual representations for the terminal formatting ( sprintf / sscanf ).

Depending on the version of the FIX protocol, a number of value pairs required: Each telegram begins with a header block, in which the first value pair specifies the version number ( " 8 = 4.2" ) and a value pair of the message type codes ( " 35 = 8"). From the Message Type infer in accordance with the FIX version below mandatory or optional value pairs that follow the message in the middle block to the head block. The message is terminated with a final block (Trailer) with required value pairs, the last value pair contains a checksum ( " 10 = 64").

A total telegram for a " Execution Report " ( eg confirmation of transactions of share purchase) looks like this:

  • 8 = FIX.4.2 | 9 = 178 | 35 = 8 | 49 = PHLX | 56 = PERS | 52 = 20071123-05:30:00.000 | 11 = ATOMNOCCC9990900 | 20 = 3 | 150 = E | E = 39 | 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 = 64 |

Provisionally was here "|" used for the delimiter SOH. In FIX4 the head block requires three value pairs - Begin String ( 8), BodyLength (9) and MsgType (35). In FIX5, the head block of five compelling value pairs plus an optional value pair - Begin String ( 8), BodyLength (9) MsgType (35) SenderCompID (49) TargetCompID (56) and optional ApplVerID ( 1128 ). The BodyLength calculated from the number of bytes of including MsgType (35 ) up to but excluding checksum (10) where count the SOH separators. The checksum of the whole message (excluding the checksum field itself ) is formed by summing the bytes and the byte remainder ( modulo 256 ), is made.

When the client sends FIX messages via UDP, the header block must begin at the start of packet, telegrams must not be split over multiple UDP packets.

FAST data format

The data representation by ASCII with the award of each value with a key number is very costly for a high-bandwidth data stream, such as the representation of all market data on a liquid trading venue. Therefore, an alternative byte-oriented binary encoding short FAST ( Apronym to english nearly so "fast" ) was defined as "FIX Adapted for Streaming ".

With FAST for the interpretation of the data stream at the receiver side a template ( template description) is next to the FIX directory also necessary, which is published by the transmitter side ( the commercial center ). The main optimization is that a lot of the key numbers with a base value (default) is assigned in the template, so that they no longer have to be sent with each message ( eg FIX version) and place name values ​​only index values ​​of a list ( Enum) will be sent. The numerical values ​​(including index values) are binary coded. The template then defines a compelling array of fields, so the key numbers ( tags) need not be sent with, and eventually can be specified for the data coding that only the difference to the value of the previous key pair is encoded.

By law has the right to publish the FAST template as XML text, using the XML schema ( FIXML ) is defined by the standards body FIX. FIXML goes back to an initiative of the CME of June 2002, the final version of FIX 4.4 was released in January 2004.

336064
de