FIX Trading Community

 

 Remember me

Register  |   Lost password?

 Interested in advertising?

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:

  1. Capabilities/throughput
  2. Technologies used
  3. 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� environment. Finding an engine that runs on your platform is rarely an issue. Better to focus on whether you want an engine that runs as a Java or C++ codebase, implying a consideration between flexibility and performance.

Support for other messaging protocols

Desirable because of any legacy messaging protocols you have, multi-protocol support can be very useful, and this could include support for such messaging protocols as IBM MQ Series, TIBCO Rendezvous or Smart Sockets, interfaces into middle and back office protocols like OASYS or SWIFT, or even lightweight protocols to connect directly to ECNs.

Consideration should also be given to support for other financial messaging protocols (for example, CMS), and what is required in order for the engine to support them.

Pre-built ECN interfaces

Connectivity to ECNs and ATSs has become more important as firms look to other sources of liquidity and lower commissions. Most ECNs and ATSs now have FIX interfaces, but historically these have tended to be flavors of FIX, implying additional development and testing requirements. Some FIX engines have pre-built interfaces to such liquidity sources, saving you time and money. However, these interfaces can change as the ECN/ATS introduces new technologies and trading tools. Careful consideration should be given to how the FIX engine supports these destination specific configurations, and how easily they can be modified.

Pre-built counterparty interfaces

Taking this idea further some FIX engines, recognizing that it is not uncommon for firms to implement slightly different interpretations of FIX, have engaged with many leading counterparties and tested against them. They then provide their FIX engine with pre-built interfaces to these counterparties, the idea being to reduce the time, effort and cost required to go live. Again, understanding the complexities surrounding how the FIX engine builds these interface-specific configurations is important.

Business logic

Less common in FIX engines is business logic within the engine itself. The idea is that you put business logic in the engine rather the application that sits on top of it - and provide a cleaner interface to the application. Uses would include logic to deal with different counterparties, message validation, protocol translation, and version mapping. This is quickly gaining popularity and it is likely more vendors will implement it.

Alerting, monitoring, and automated testing

With an increasing amount of business being transacted using FIX, alerting and monitoring are becoming vital. Increasingly FIX engines are starting to provide tools to monitor FIX connections and alerting functionality beyond that. Some are provided as applications, others as web front-ends, and others as frameworks easily integrated into other monitoring functionality you have in place.

Some vendors also offer testing tools, certification harnesses, and FIX simulators. Some are provided as simple stand alone tools allowing you to test the validity of your FIX implementation. Others allow you to host what you have at their site and permit your counterparties to test against this in an automated fashion.

Sound, automated testing tools significantly reduce your need for initial testing and the associated cost, getting you "to market" far faster. With further testing implied when one party upgrades to a new version or implementation of FIX, these tools can be used many times saving further time and resource.

Cost

Historically FIX engines were very expensive and as FIX has become more mainstream so the price has fallen. Most FIX engines charge on a licensing basis and, although some do not, you are generally charged in a different way, such as through support fees. Although freeware FIX engines exist they are best used for educational purposes or perhaps as a base on which to build your own engine. Unless the FIX engine seems really expensive (and some do still exist) price shouldn't be a major issue. More important is the ability of the vendor to be flexible around your needs, such as offering the engine on a rental basis or perhaps pay-as-you go support.

Selection checklist

Taking into account the functionality to look for in a FIX engine and some of the more important aspects to examine, the following lists a suggested selection checklist.

  • Performance is important but only in so far as the engine does what you need it to do now and in the near future
  • Eliminate those engines without the baseline options
  • Give bias to those that have proven themselves in the market
  • If appropriate, select those with interfaces to liquidity venues you need or might need
  • Give bias to those offering business logic in the engine
  • 24x7 support is a must if you operate in more than one time-zone
  • Alerting, testing and monitoring save you time and money. Identify engines with some or all of these features
  • Prices have fallen but make sure you are comfortable with the price of any engine relative to its peers and that the cost model suits your needs
  • With future consolidation almost certain make sure that any vendor looks committed to the space

Document Status: FPL's Global Steering Committee has approved this document for release on an online basis to FPL members only. This is the first edition of the Implementation Guide. The Global Fixed Income Committee, as sponsor of this Guide, advises members that the Guide may undergo frequent revision in format, content, or style in the coming months. Among these revisions may the system for assigning edition or version identifiers to the Guide. Whenever the Guide is revised the Global Fixed Income Committee will endeavor to notify all members through the FPL Program Office.