Philadelphia

In 1992 software engineers at Fidelity Investments and Salomon Brothers developed a network protocol for facilitating electronic communications between the two companies. Today, over twenty years later, the Financial Information Exchange, or FIX, protocol is the lingua franca of financial technology.

The FIX protocol has witnessed stock price decimalization, the rise of automated trading, alternative trading systems, and dark pools, as well as Regulation NMS, to mention but a few of the changes that have occurred in the past twenty years. It has stood the test of time thanks to the versatility and extensibility of its simple text-based tag-value format.

Support for the FIX protocol in Parity has been on the backlog from the beginning. During the past year I have deliberated how to add the feature to the project.

There are several open source FIX engines, implementations of the FIX protocol, for the JVM. The most popular of these is QuickFIX/J. I have looked at the most promising ones and noted the following issues:

Lax approach to memory management. Most FIX engines allocate memory on message reception and transmission as well as when getting or setting fields, increasing the pressure to trigger garbage collection.

Lax approach to session handling. While all FIX engines implement message parsing and formatting, some FIX engines implement very little—if any—of the session layer.

These in mind, a few months ago I started working on Philadelphia, yet another open source FIX engine for the JVM.

In addition to addressing the issues above, Philadelphia contains other potentially interesting features. It parses fields in incoming messages only on demand, supports templates with pre-formatted fields for outgoing messages, and does not enforce field types, for example.

I hope to get the initial release of Philadelphia out in the coming weeks. It will join Parity, Juncture, and Nassau as a building block for open source trading infrastructure.