Prodigy is a trading exchange matching engine suitable for many types of instruments. It has been designed to provide the reliability and speed required in a regulated exchange but at a price point that opens many new trading and liquidity opportunities. In addition, it has been built with a plug-in and extensible architecture that allows markets to be customised to exchange owners’ specific needs.
Elements and extensibility
The basic elements of Prodigy are:
However, the actual behaviour of these elements is defined by 2 plug-in types:
- “Data Model” plug-ins define the extended properties of the basic elements
- “Execution Engines” plug-ins define the interaction between the extended elements defined in the “Data Model”.
The plug-ins are per market. This allows one exchange to host markets with different plug-ins; allowing exchanges to have markets with very different behaviour. This also allows Motif Markets to easily develop markets specific to customer’s requirements. An equity trading plug-in is available. More plug-ins are in development.
The exchange comes with a complete suite of API interfaces allowing uses to place orders and receive data. There are 3 interfaces:
- FIX – An industry standard method of placing trades and retrieving data. Useful for connecting to enterprises.
- Web Socket streaming – A streaming API providing access to all features of the exchange. This API is like FIX but uses standard web technologies which many developers are familiar with.
- HTTP Rest – A request/response API using HTTP calls. A simpler API to work for developers not experienced in event driven software development.
All API interfaces allow the placement of new, amend and cancel order requests. In addition, they provide access to the following data streams/responses:
- Order Audit
- Trades (Streaming and Historical)
- Price History (Historical intervalised in range from 1 minute to 2 weeks)
The exchange can be managed by:
- Web front end
- HTTP API – allows an exchange owner to link into their own systems and develop their own management front end.
- MView (when integrated with Motionite)
All methods allow the following aspects of the exchange to be managed:
- Add/Remove/Manage Markets. This includes specifying the plug-ins (Data Model and Execution Engine) for the markets. In addition, you can set up phases and parameters for execution engines (eg. Market Integrity).
- Add/Remove/Manage Symbols. Specify code, name and status.
- Add/Remove/Manage FIX sessions. This includes specifying market and access, whether broker private data is visible, determining what data streams are available (eg, Orders)
- Add/Remove Brokers
- Add/Remove/Manage FIX accounts. Provide authentication for access to sessions.
- Add/Remove/Manage Entities. Entities are businesses or people who are provided with API access to the system. Scalability and Availability
The system has been designed to grow to meet whatever scale is needed. By using worker processes to handle Order Execution and Event Processing, workloads can be spread across as many machines as needed. It can also be scaled to increase throughput. By limiting the number of symbols handled on each computer the throughput for individual symbols can be increased. It would be quite feasible to have 1,000,000 trades per second with sufficient computing resources.
Availability can be specified according to business and cost requirements. For low cost deployments it is possible to configure the system without redundancy. However, the system has been designed so that it can be deployed with redundancy for all components. This includes:
- Computer failure
- Queue failure (queue clusters)
- Database (mirroring)
- Cache (master/slave)
In addition, it is possible to update some components online to allow upgrades without any system downtime.
To ensure infrastructure costs are kept as low as possible and easily maintained, the exchange is used by industry standard platforms – using open source where possible. The main infrastructure components are:
- Operating System: Deploy on Windows or Linux
- Postgres SQL (Database)
- Rabbit (Queuing)
- Redis (Caching)
This infrastructure can easily be set up in your own hosting space or in a cloud environment.
More information about Prodigy is available in our technology section. Or contact one of our consultants to further discuss your exchange needs.