Table of contents
FAST (FIX Adapted for Streaming) was developed by the FIX Protocol organization to bring the greater benefits of standardization to market data and deliver optimized performance for the exchange of electronic financial information. Built around a data compression algorithm, it significantly reduces bandwidth requirements and latency between sender and receiver. FAST works particularly well at improving performance during periods of peak message rates. While FAST has grown out of market data, it is applicable and can be used with all FIX messages to offer flexibility in the way that FIX data is formatted for transmission.
FAST uses several techniques to reduce bandwidth. This FAST tutorial covers these techniques briefly on this page and in more detail in later sections.
FAST Templates define the field layout of messages so the message itself does not describe individual field names or tags. Instead, fields' identities are inferred from their position within the message as described by the template. This template is shared by both the sender and the receiver (that is, both the encoder and the decoder) and is usually held in an XML file.
Picture 1.1 - "Hello World message transfer"
The Presence Map (or PMap) is a variable length bit field used to indicate whether or not a particular field is present in a message.
This allows the encoder leave out fields from the message in certain cases, such as:
- field value is the same as in the previous message (common in fields like trade date, settlement date, etc) or
- is one greater that last message (common case for sequence number).
The template defines the rules to use when a field is not present in the message.
Fields in FAST do not have a fixed size and do not use a field separator. Instead, there is a notion of a stop bit (the high order bit on each byte of the message acts as a stop bit) signaling the end of the field.
All of the above concepts used together allow the sender to compress a message (sometimes as much as 90%) and the receiver to restore the original message content from the encoded bytes.
The next section looks at a small message example to show encoding and decoding in practice.