FIX Overview

The Financial Information eXchange ("FIX") Protocol is a specification of interaction techniques and formats for traders, brokers and other parties to electronic trading. The FIX Protocol website further clarifies:

More precisely, the FIX Protocol is a series of messaging specifications developed through the collaboration of banks, broker-dealers, exchanges, industry utilities and associations, institutional investors, and information technology providers from around the world. These market participants share a vision of a common, global language for automated trading of securities, derivative, and other financial instruments.

The specification entails two important message types. First, the "application messages" represent common requests and updates that travel between between parties - for example a new limit order, a cancel, or a fill. Second, the specification requires parties to exchange messages about the connection itself. These "session messages" ensure that both sides of a conversation are aware of events like the start or end of a session, or the receipt of malformed messages.

In addition, the specification includes a significant amount of semantic information for each of the messages - that is, information about what the messages mean and how they should be interpreted. See the Resources section below for links to FIX reference materials.

The FIX protocol currently exists in 5 variants, versions 4.0 through 4.4. The "first" version of the protocol, 4.0, contains just specifications of the messages required to effect a simple equity transaction between a customer and a broker. With each successive release of the protocol, more functionality has been added, including options, futures and fixed income orders, third party transactions, and security description messages. In practice, at the time of this writing most equity brokers support 4.0, 4.1 or 4.2. Note that the versions are not - in general - backward compatible.

FIX and the Marketcetera Platform

The Marketcetera platform uses the FIX protocol for communication with brokers and other counterparties. For internal communications, the platform uses the FIX application message formats and semantics but does not necessarily implement the session level requirements. Currently the Marketcetera platform supports only oneversion of the FIX protocol per session.

Marketcetera uses the QuickFIX/J Engine (part of the QuickFIX project, see Resources below) to manage FIX connections to counterparties.

Deviations from the FIX Protocol

In communication with counterparties such as brokers, the Marketcetera platform strictly adheres to the FIX Protocol. However for the purposes of internal communication, the platform uses FIX-like semantics. Below is an outline of how these communications differ from the FIX protocol.

Note that at this point the Marketcetera Platform does not support FIXML or FpML.

Use of JMS for transport

Internally the Markecetera platform uses a JMS-based message queue to communicate between components that are likely running on separate machines. The FIX protocol assumes a persistent TCP connection, whereas JMS specifies a higher level abstraction involving sending and receipt of messages. FIX messages are encoded as text strings in the standard FIX format, and passed into JMS TextMessage objects. The component receiving the JMS TextMessage is then responsible for extracting the text representation of the message.

Omission of session-level messages

A further implication of using JMS internally as a message transport is that session-level messages as specified in the FIX protocol are largely redundant. The JMS server becomes responsible for making network connections and negotiating transport level protocols. Thus messages such as Logon and Logout are omitted.

"Internal" Execution reports

The OMS component will publish an extra Execution Report message to the incoming message topics upon receipt of a new outgoing order. Often the first (and subsequent) Execution Report messages coming back from a broker do not contain all information about an order, and therefore cannot present a complete picture of the order to an end user. This extra execution report then is to provide complete information about an order to Photon in situations where the order is submitted by a custom app, the order loader, or the Excel component. These Execution Reports are sent with an ExecID of "ZZ-INTERNAL" to mark them as internal-only messages.

Resources

B2Bits hosts an excellent summary of all of the versions of the FIX protocol, "The FIXopaedia" at http://b2bits.com/fixopaedia/index.html
QuickFIX/J is a 100% Java Open Source FIX Engine.