Managing the delivery of trading applications and keeping latency low increasingly requires an understanding of the FIX protocol.
The FIX protocol specification was originally authored in 1992 by Robert "Bob" Lamoureux and Chris Morstatt to enable electronic communication of equity trading data between Fidelity Investments and Salomon Brothers.
Fidelity realized that information from their broker-dealers could be routed to the wrong trader, or simply lost when the parties hung up their phones.
It wanted such communications to be replaced with machine-readable data which could then be shared among traders, analyzed, acted on and stored.
For example, broker-dealers call with an indication of interest (IOI) to buy or sell a block of stock.
[1] The FIX Trading Community is a non-profit, industry-driven standards body with a mission to address the business and regulatory issues impacting multi-asset trading across the global financial markets through the increased use of standards, including the FIX Protocol messaging language, delivering operational efficiency, increased transparency, and reduced costs and risk for all market participants.
[3] Thereafter, message encodings and session layer specifications began to be split into separate documents, and ultimately, FIX evolved into a family of related technical standards.
From FIXT.1.1 / FIX.5.0, the header contains five or six fields: 8 (BeginString), 9 (BodyLength), 35 (MsgType), 49 (SenderCompID), 56 (TargetCompID) and the optional 1128 (ApplVerID).
It is semantically equivalent to tagvalue encoded messages but takes advantage of XML parser technology.
Simple Binary Encoding[8] defines a wire format using primitive data types that are native to computing systems.
Message encoding and decoding is therefore much lower latency than character-based protocols since no translation is needed to put data into a format that computers can use.
Aside from latency advantages, performance is more deterministic because SBE messages are constrained by templates and fixed-length data elements are preferred.
Tagvalue encoding was deemed no longer fit-for-purpose since it is character based rather than binary and its variable-length fields and messages result in non-deterministic performance.
Additionally, a schema provides a listing of simple and composite data types that may be reused by any number of fields.
The original FIX session protocol did not have its own name since it was part of a monolithic specification covering application layer semantics and message encoding as well.
However, starting with FIX version 5.0, the session layer was split off as an independent specification with the introduction of FIXT.
To implement session establishment and guaranteed delivery, FIXT and classic FIX 4.x define these session message types: FIXP[10] was developed by the FIX High Performance Working Group[11] to meet the needs of high performance trading.
The actual wire format is abstracted in the FIXP specification, so users may select a FIX encoding of their choice, so long as peers agree on a protocol to use.
In fast moving markets, the delay inherent in retransmission is often undesirable, resulting in missed opportunities or bad trades.
FAST is a binary protocol and is used mostly for sending Multicast market data via UDP connections.