Implementation Guide
Contents |
Previous |
Next |
Terms of Use
4. Choosing a FIX engine
A FIX engine is a piece of software that manages a network connection, creates and parses outgoing and incoming messages, respectively, and recovers if something goes wrong. A FIX engine manages the session and application layers and is the single piece of software you need in order to FIX-enable trading or order management systems.
In the context of a trading system your FIX engine is the interface to the outside world, which, together with a network, connects you to outside world and allows you to trade and exchange related information in a standard fashion. Thus, to FIX-enable an application refers to the integration of a FIX engine and connection to a routing network.
FIX engines and their place in FIX implementations
Implementing FIX has different meanings depending if you are using an off-the-shelf OMS or building your own solution. FIX-enabled OMS come in two flavors. Some vendors select a FIX engine and integrate it into their system. If this is the case selecting a FIX engine has little relevance to you. You get what you are given. Other vendors allow clients to select which FIX engine they should use. In this instance, and for those building their own solutions, this chapter is a must-read.
How do FIX engines differ
All FIX engines do essentially the same thing but differ in three main ways:
- Capabilities/throughput
- Technologies used
- Support and services offered
On the softer side, engines differ by how many firms use them. Popular engines will have been more widely tested against than others, in itself an advantage for new entrants selecting the same engine.
The following data represents an overview of the features you should look at and their meaning.
Decision criteria: Capabilities
| Versions supported |
- Does the engine support all current FIX versions
- Does it support all tags of each version
- Can it support more than one version at once
- What is involved in supporting new versions of FIX?
|
| Support for asset classes other than equities |
- Can the engine support fixed income, derivatives, FX etc.
- What is involved in adding support for additional products?
|
| High availability, load balancing, and scalability |
- Does the FIX engine support a software-based high availability option for high-volume, many-connection implementations
|
| Speed and robustness |
- How many messages a second can the engine process
- What fall-back and redundancy options are available
|
| Encryption options |
- Does the engine support common encryption methodologies
- Is SSL supported
|
| Ability to implement per-connection business logic |
- Each FIX connection tends to be slightly different. Can you embed counterparty specific logic within the engine rather than having to implement from outside within your systems?
|
Decision criteria: Technologies used
| Platforms supported |
- Not all FIX engines run on all platforms. Some FIX engines sell themselves on the basis that they will run on all platforms, others take the opposite view and market themselves on the basis that they are optimized to run on one platform only.
|
| Architectural flexibility |
- Does the engine restrict your implementation to a specific architecture
- Are you forced to use a database for persistence or a particular type of middleware for example
|
| Provided as a set of class libraries or a FIX-in-a-box solution |
- FIX engines supplied as class libraries (APIs) offer complete flexibility over your implementation but you have to do the work.
- FIX-in-a-box solutions provide ready-made functionality for many commonly used activities and seamlessly handle network connectivity. They are easier to implement but aren't so flexible.
|
Decision criteria: Support and services offered
| Access to source code |
- Some FIX engine vendors make available the source-code so that you can modify their product. Typically this is only done for a fee and for the largest clients.
|
| Support offered |
- What level of support is offered and at what times.
- Is on-site support available
|
| Upgrades and updates |
- How many updates and upgrades does your license entitle you to
- Does the vendor charge a license fee for an engine in a disaster recovery / stand-by environment
|
| Cost and pricing options |
- Is the cost reasonable? Is the vendor flexible around how you would like to pay?
|
| Monitoring tools |
- Does the engine come with tools that allow monitoring of your FIX sessions. A good error translator can prevent you spending of a great deal of time trying to find an error message.
|
But how do you really select a FIX engine?
A current list of FIX engine vendors can be found on the FIX Protocol website. With over a hundred engines listed any selection process would appear to be non-trivial. FIX engines have become, to some extent, a commodity item and with so many engines available there is an implication that consolidation lies ahead.
Identify your performance requirements
Many FIX engines give prominence to the number of messages they can process a second. Being able to process many messages tells you much about an engine but this is sometimes achieved with extremely high performance configurations that may not match what you are planning to use. You need to ask yourself just what level of performance you need. If you regularly undertake statistical arbitrage or heavy list trading then a very powerful engine might be appropriate. Otherwise it is not so relevant.
Further to this, some engines do not store messages, and this is how they achieve a high-speed appearance. Messages stored in a database by the engine gives the ability to restore in the event of a hardware failure.
Baseline requirements
- Support for all FIX versions (at least all common FIX tags)
- Support for financial messaging protocols other than FIX (i.e., CMS)
- Encryption
- Persistence (the ability to log data to a flat file or database)
- A High Availability (HA) option
- Support for other messaging protocols like IBM MQ Series.
- Monitoring tools
Hardware requirements and considerations
Consideration should be given to the different hardware requirements for the FIX engine chosen. Buyers should have an understanding of the infrastructure currently in place at their firm, the current and anticipated trading volumes, and how the engine selected will perform in that environment. Also, understand that any benchmark performance statistics provided by a vendor are dependent not only on the FIX engine software, but the hardware they are running on.
Platform support and codebase
FIX engines tend to run on most all platforms or be specialized to operate under a Microsoftଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋଋà
|