Parity

Few weeks ago I published the initial release of Parity, an open source project for running a trading venue, such as a stock exchange. Apart from actually running a trading venue, Parity can be used for any task that benefits from access to one, such as testing algorithmic trading agents or running market simulations.

I started the project last spring after having worked multiple years on financial technologies. A substantial portion of that time I had spent on test environments for algorithmic trading agents.

From a technical standpoint, Parity is heavily influenced by NASDAQ. Parity’s native market data and order entry protocols, PMD and POE, are similar to NASDAQ’s counterparts, ITCH and OUCH. Furthermore, Parity uses the NASDAQ transport protocols MoldUDP64 and SoupBinTCP. The former implements ordered, reliable IP multicast on top of UDP and the latter reliable, sequenced message delivery on top of TCP.

Parity runs on the JVM and is written in Java. This is a pragmatic choice that, for now, represents a good combination of runtime performance and developer productivity. If it makes more sense, parts of the project might get written in some other language, such as C++ or JavaScript, in the future.

This being the initial release, a lot of work remains ahead. Firstly, Parity has to become more efficient, robust and scalable for production use. Secondly, the ecosystem around the project needs to grow to handle use cases beyond the bare essentials. Alternative connectivity options, such as FIX and WebSocket, and market simulators are some examples of the latter.

What I find exciting about the project is that there is nothing quite like it in the market. Other open source projects implementing trading systems tend to be either fully academic in nature or at least built on foundations that are quite different from those underpinning NASDAQ, NYSE and other leading trading venues around the world.

If you got interested in Parity, head over to the project page to learn more.