Choosing Chronicle FIX Engine

Overview

The FIX Trading Community web site has posted a list of common questions about FIX Engines. This page brings together our answers for these questions.

For more details on Chronicle FIX

Capabilities/throughput

Chronicle FIX supports;

  • 200,000 messages per second per core (NewOrderSingle / ExecutionReport sized messages)
  • FIX Services which need to have a 20 micro-seconds (max) tick to trade.
  • FIX 4.0, 4.1, 4.2, 4.3, 4.4, 4.X, 5.0, 5.0 sp 1, 5.0 sp2, 5.0 spX/FIXT 1.1. All Versions of FIX/FIXT.
  • failover of a FIX server to a hot spare via replication.
  • encryption of all message logged and replicated.
  • zero-copy between the FIX message and your data model. An intermediate data model is provided for convenience but is not required.
  • designed for ultra-low GC systems (minor GC less than once a day.

Technologies used

  • Core Java 8.
  • Build on some of Chronicle’s hugely popular, battle tested, Open Source libraries.
  • YAML for configuration.
  • QuickFIX style XML Schema files (also Orchestra).
  • Source on GitHub.

Support and services offered

Chronicle Software offers Silver support (long London day, 5 days a week) and Gold support (24/7)

Versions supported

Q: Does the engine support all current FIX versions
A: FIX 4.0, 4.1, 4.2, 4.3, 4.4, 4.X, 5.0, 5.0 sp 1, 5.0 sp2, 5.0 spX/FIXT 1.1.

Q: Does it support all tags of each version
A: All tags for these versions are supported.

Q: Can it support more than one version at once
A: An Engine supports being an acceptor and an initiator and each session can have a different FIX version and/or custom FIX schema.

Q: What is involved in supporting new versions of FIX?
A: You start with an XML Schema to generate the code for that schema. You can customise the behaviour further in plugin code. You could add a version of FIX which we don’t have on our supported list.

Support for asset classes other than equities

Q: Can the engine support fixed income, derivatives, FX etc.
A: We support all the standard messages/field/components, for any asset class.

Q: What is involved in adding support for additional products?
A: The level of support you need is orthogonal to the products you want. If you have Gold SUpport that covers the open source products and any licensed products. You can have Gold Support for the open source products alone.

High availability, load balancing, and scalability

Q: Does the FIX engine support a software-based high availability option for high-volume, many-connection implementations
A: We support failover to a hot spare using replication. When a message is published we can choose to wait for the message to be replicated/acknowledge before sending it to ensure it isn’t lost. We don’t offer a load balancing facility at the moment, however, one dual socket server can comfortably handle one million messages per second.

Speed and robustness

Q: How many messages a second can the engine process
A: Chronicle FIX can comfortably handle 100,000 messages per second per core and one million messages per second per server.

Q: What fall-back and redundancy options are available
A: You can set a hot spare using Chronicle Queue Enterprise to provide replication of the logs.

Encryption options

Q: Does the engine support common encryption methodologies, Is SSL supported
A: Not currently, but this could be added if you need it.

Ability to implement per-connection business logic

Q: 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?
A: You can have per session

  • data model for storing messages
  • custom parser
  • message validation
  • message handling

You can also share this logic to minimise the overhead of managing different providers. e.g. You can combine the custom schema of 20 providers into a single Uber schema even if they use different versions of FIX. This allows you to code to one aggregate data model.

It is assumed each session will have at most one connection.

Platforms supported

Q: 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.
A: Chronicle FIX runs on OpenJDK, Oracle and Azul Zing (Prime) JVMs. We support Chronicle FIX in production on Linux running on x64 and ARM, and in development, also on Windows and MacOS.

Architectural flexibility

Q: Does the engine restrict your implementation to a specific architecture
A: Realistically it has to be in Java.

Q: Are you forced to use a database for persistence or a particular type of middleware for example
A: Your must data store must be accessible from Java.

Provided as a set of class libraries or a FIX-in-a-box solution

While we offer a set of class libraries you could customise heavily (we use the same libraries to implement our non FIX Engine) most clients use it as FIX-in-a-box. We feel the like the fact they could take it apart and build it however they need covers potential technical risks.

Q: FIX engines supplied as class libraries (APIs) offer complete flexibility over your implementation but you have to do the work.
A: We want to offer complete flexibility even if you don’t use a fraction of the flexibility. As the product matures we want to reduce the amount of work you need to do, but there will always be some customisation you will need to do to suit your solution.

Q: 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.
A: We attempt to handle all the session messages and details automatically from configuration. You should only have to worry about the application messages most of the time. We support custom session messages as well.

Access to source code

Q: 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.
A: Our FIX engine is in a closed source repository on GitHub. Once you have a license and have access you can fork the code, issue Pull Request and add issue just as you can on GitHub. Out support agreements include some days a month for bespoke development so you can get us to make the changes if you prefer.

Support offered

Q: What level of support is offered and at what times.
A: Silver support is a long London day, 5 days a week. Gold is 24/7 and …

Q: Is on-site support available
A: Platinum support includes three months a year on site on days of your choice.

Upgrades and updates

Q: How many updates and upgrades does your license entitle you to
A: The perpetual license alone entitles you to updates/upgrades for 120 days. If you get support it includes updates for the period under support.

Q: Does the vendor charge a license fee for an engine in a disaster recovery/standby environment
A: How you use the product doesn’t affect the price.

Cost and pricing options

Q: Is the cost reasonable? Is the vendor flexible around how you would like to pay?
A: We can be flexible for smaller clients. To date, we have only had real interest and sales for business unit license covering a development team.

Monitoring tools

Q: 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.
A: We have a HTML5 GUI for monitoring sessions and querying logs of messages.

Chronicle Software

Tens of billions of dollars per day are handled via Chronicle's technology platform. We are trusted to deliver exceptional performance, minimal time to market, and optimal developer efficiency.

Subscribe to Our Newsletter

Featured Products

Trading

Chronicle
FIX

The fastest Java FIX Engine on the market with microseconds latency. Trusted by top-tier banks and funds with thousands of deployed sessions globally.

Read more >>

Data Processing

Chronicle Queue Enterprise

Persisted messaging framework that handles massive throughput. Delivers superior control of outliers, and replicates easily across hosts.

Read more >>