FIX Simple Binary Encoding
A FIX standard for binary message encoding
A high performance message encoding
FIX Simple Binary Encoding (SBE) targets high performance trading systems, but may be suitable for other high performance applications as well. It is optimized for low latency of encoding and decoding while keeping bandwidth utilization reasonably small.
This encoding specification describes the wire protocol for messages (presentation layer). Thus, it provides a standard for interoperability between communicating parties. Users are free to implement the standard in a way that best suits their needs. The encoding standard is complimentary to other FIX standards for session protocol and application level behavior. SBE is intended to represent all FIX semantics.
Binary type system
In order to support traditional FIX semantics, all the documented field types are supported. However, instead of printable character representations of FIX tag=value encoding, the type system binds to native binary data types, and defines derived types as needed.
The binary type system has been enhanced in these ways:
- Provides a means to specify precision of decimal numbers and timestamps, as well as valid ranges of numbers.
- Differentiates fixed-length character arrays from variable-length strings.
- Provides a consistent system of enumerations and multiple-choice fields.
Design principals
SBE design strives for direct data access without complex transformations or conditional logic. This is achieved by:
- Usage of native binary data types and simple types derived from native binaries, such as prices and timestamps.
- Preference for fixed positions and fixed length fields, supporting direct access to data and avoiding the need for management of heaps of variable-length elements which must be sequentially processed.
Message schema
This standard describes how fields are encoded and the general structure of messages. The content of a message type is specified by a message schema. A message schema tells which fields belong to a message and their location within a message. Additionally, the metadata describes valid value ranges and information that need not be sent on the wire, such as constant values.
Message schemas may be based on standard FIX message specifications, or may be customized as needed by agreement between counterparties.
Explicit versioning
It is not always practical to update all message publishers and consumers simultaneously. Within certain constraints, message schemas and wire formats can be extended in a controlled way. Consumers using an older version of a schema should be compatible if interpretation of added fields or messages is not required for business processing.
Authors and Contributors
The Simple Binary Encoding standard was developed by the High Performance Working Group of FIX Trading Community™, the non-profit, industry-driven standards body at the heart of global trading.
Implementations
We will post links to open source implementations of SBE. Implementors, contact one of the owners of the FIXTradingCommunity/fix-simple-binary-encoding repository.