The present invention relates to processing securities trading orders. More particularly, the present invention relates to a combination of software and hardware accelerated processing of such orders.
All electronic trading venues, such as the New York Stock Exchange, mandate and regulate the order submission process for buying and selling securities. Each trading venue has its own set of rules, protocols, and processes that a member institution, such as a broker or a dealer, must follow to execute buy/sell orders via that trading venue. Buy/sell orders must be transformed to meet the specific rules, protocols, and processes of a particular trading venue prior to submitting those orders to the trading venue for execution. Conventionally, securities brokers and dealers have developed software processing models operating on one or more software servers for receiving or generating buy/sell orders, processing the orders for submission to a particular trading venue, communicating the orders to that trading venue, and tracking the status of the orders.
Since the price of securities fluctuates over time, it is important to process and submit buy/sell orders to the appropriate trading venue in a timely manner with high speed (low and predictable latency) and high throughput (number of orders per second). Conventional software approaches to processing and submitting buy/sell orders have limited speed and throughput, thereby making such systems less desirable. Most conventional systems were developed many years ago and operate on software platforms that include inherent latency and throughput constraints.
In 2005, the Securities and Exchange Commission approved Regulation NMS (“Reg NMS”), which established certain common rules for the trading venues. The implementation of Reg NMS has caused the number of buy/sell orders to increase dramatically, further straining the processing abilities of conventional software approaches to processing and submitting buy/sell orders.
Accordingly, a need exists in the art for processing and submitting buy/sell orders in a high speed and high throughput environment while complying with the specific requirements of particular trading venues.
The invention relates to a hardware-accelerated exchange order routing appliance. The invention combines hardware and software to facilitate a low latency and high throughput electronic order submission process to any trading venue, such as the New York Stock Exchange (“NYSE”), the National Association of Securities Dealers Automated Quotation System (“NASDAQ”), the Chicago Mercantile Exchange (“CME”), or other suitable “market exchange.” The appliance implements rules, protocols, and processes necessary to submit orders to and to receive execution reports and other related messages from any market exchange. The appliance also functions as a router, so a single appliance can be used for multiple market exchanges and for multiple customers. The appliance logs and stores all communicated messages and reports for future reference. The invention implements certain processing functions via a specialized hardware processor to remove that processing from the host operating system. The processing implementation can improve latency and throughput of order submission to the market exchanges.
According to one aspect of the invention, a client trading application communicates a trading order message to a client line handler of an order routing appliance. The client line handler communicates an acknowledgement receipt to the client trading application, communicates a copy of the message to a database update module of the order routing appliance for future reference, communicates a copy of the message to an order management system for tracking of the order, and communicates the message to a hardware processor of the order routing appliance. In the hardware processor of the order routing appliance, a message router receives the message, determines a particular market exchange to which the message is directed, and communicates the message to an exchange parser associated with the particular market exchange. The exchange parser transforms the message from an input protocol used by the client trading application to an order submission protocol specified by the particular market exchange and communicates the transformed message to an exchange line handler associated with the particular market exchange. The exchange line handler communicates the transformed message from the hardware processor to the particular market exchange for execution of trading order. The particular market exchange communicates an acknowledgement receipt report back to the exchange line handler in the hardware processor. The particular market exchange also executes the order specified in the trading order message and communicates an execution report to the exchange line handler. For each report received by the exchange line handler from the particular market exchange, the exchange line handler communicates the report to its associated exchange parser of the hardware processor. The exchange parser determines the client trading application to which the report is directed and transforms the report into the input protocol used by that client trading application. Then, the exchange parser communicates the transformed report to the message router of the hardware processor. The message router communicates the report to the client line handler associated with that client trading application, and the client line handler communicates the report to the client trading application.
These and other aspects, objects, and features of the invention will become apparent from the following detailed description of exemplary embodiments, read in conjunction with, and reference to, the accompanying drawings.
Referring to the drawings, in which like numerals represent like elements, aspects of the exemplary embodiments will be described.
In exemplary embodiments, the trading order messages can comprise a buy order to purchase a security, a sell order to sell a security, an order status request regarding a previous buy or sell order, a cancel order to cancel a previous buy or sell order, or other suitable trading order message. In exemplary embodiments, the market reports can comprise an execution report regarding the completion of all or part of a buy or sell order, a status report regarding the status of a particular trading order message, or other suitable market report.
The client trading applications 102a-102n are software application programs operating on computer systems of the broker's or dealer's customers. The client trading applications 102a-102n generate and communicate the trading order messages or forward messages from another such system. The market exchanges 106a-106n can comprise the New York Stock Exchange (“NYSE”), the National Association of Securities Dealers Automated Quotation System (“NASDAQ”), the Chicago Mercantile Exchange (“CME”), or other suitable trading venue.
Each of the client trading applications 102a-102n communicates the messages to the order routing appliance 104 using a communication protocol specific to the particular application, and the communication protocol for one application may be different than or the same as the communication protocol for another application. For each message received by the order routing appliance 104 from one of the client trading applications 102a-102n, the order routing appliance 104 transforms the message from the communication protocol used by the respective client trading application 102a-102n into the communication protocol of the appropriate exchange 106a-106n to which the message is directed. For example, if the received message is directed to the NYSE, then the order routing appliance 104 transforms the message into the trading order message submission protocol specified by the NYSE. After transforming the message into the appropriate market exchange protocol, the order routing appliance 104 communicates the message to the appropriate market exchange 106a-106n.
In response to receiving the messages from the order routing appliance 104, the market exchanges 106a-106n execute the instructions in the messages and communicate reports back to the client trading applications 102a-102n via the order routing appliance 104. For each report received by the order routing appliance 104 from one of the market exchanges 106a-106n, the order routing appliance 104 transforms the report from the communication protocol used by the respective market exchange 106a-106n into the communication protocol of the client trading application 102a-102n to which the report is directed. For example, if the received report is directed to the client trading application 102a, then the order routing appliance 104 transforms the message into the communication protocol specified by the client trading application 102a. After transforming the message into the appropriate communication protocol, the order routing appliance 104 communicates the report to the appropriate market exchange 106a-106n.
Also as illustrated in
Thus, as illustrated in
In an exemplary embodiment, the client trading applications 102a-102n establish a connection to the order routing appliance 104 via the Financial Information eXchange (“FIX”) protocol. In an alternative exemplary embodiment, certain applications can connect to the order routing appliance 104 using a proprietary protocol that may offer lower latency than FIX. Currently, most U.S. equity market exchanges 106a-106n support FIX, but those exchanges typically use different versions of FIX. Accordingly, in an exemplary embodiment, the number of protocols implemented on the order routing appliance 104 may be limited to different versions of FIX.
In step 310, the client line handler 202a-202n that received the message forwards the message to a hardware processor 204 for routing of the message to a particular market exchange 106a-106n associated with the message. More specifically, in step 310, the client line handler 202a-202n that received the message forwards the message to a message router of the hardware processor 204 for routing of the message to a particular market exchange 106a-106n associated with the message. The message router 206 is a software module executing on the hardware processor 204 that is responsible for routing outbound (to the market exchanges 106a-106n) messages to the appropriate exchange line handler 210a-210n (described hereinafter) and routing inbound (from the market exchanges 106a-106n) reports to the appropriate client line handler 202a-202n.
In step 315, the message router 206 determines the particular market exchange 106a-106n associated with the message. Step 315 will be described in further detail hereinafter with reference to
In step 320, the message router 206 communicates the message to one of multiple exchange parsers 208a-208n associated with the particular market exchange 106a-106n. For example, if the message is directed to the NYSE 106a, then the message router 206 communicates the message to the appropriate exchange parser 208a associated with the NYSE 106a.
The exchange parsers 208a-208n are software modules executing on the hardware processor 204 that are responsible for protocol transformation. Accordingly, in step 325, the appropriate exchange parser 208a-208n transforms the message from the input protocol used by the client trading application 102a-102n into the order submission protocol specified by the particular market exchange 106a-106n. For example, if the message is directed to the NYSE 106a, then the exchange parser 208a transforms the message from the input protocol into the order submission protocol specified by the NYSE 106a.
Then, in step 330, the appropriate exchange parser 208a-208n communicates the transformed message to one of multiple exchange line handlers 210a-210n associated with the particular market exchange 106a-106n. The exchange line handlers 210a-210n are software modules executing on the hardware device 204 that are responsible for session management and message exchange between the order routing appliance 104 and the market exchanges 106a-106n. In step 333, the associated exchange line handler 210a-210n communicates the transformed message to the particular market exchange 106a-106n.
Upon receiving the message, the particular market exchange 106a-106n communicates an acknowledgement receipt report to the order routing appliance 104. More specifically, in step 335, the exchange line handler 210a-210n associated with the particular market exchange 106a-106n receives an acknowledgement report from the particular market exchange 106a-106n.
Then, in step 340, the order routing appliance 104 communicates the acknowledgment report to the client trading application 102a to which the acknowledgement report is directed. Step 340 will be described in further detail hereinafter with reference to
Upon completing the trade as instructed in the trading order message from the client trading application 102a-102n, the particular market exchange 106a-106n communicates an execution report to the order routing appliance 104. More specifically, in step 345, the appropriate exchange line handler 210a-210n corresponding to the particular market exchange 106a-106n receives the execution report from the particular market exchange 106a-106n.
Then, in step 350, the order routing appliance 104 communicates the execution report to the appropriate client trading application 102a-102n to which the execution report is directed. Step 350 will be described in further detail hereinafter with reference to
From step 350, the method 300 ends.
In step 405, the receiving client line handler 202a-202n acknowledges receipt of the message from the sending client trading application 102a-102n via a return communication from the receiving client line handler 202a-202n to the sending client trading application 102a-102n.
In step 410, the receiving client line handler 202a-202n assigns and stores a unique identifier to the message received from the client trading application 102a-102n. The identifier is associated with the sending client trading application 102a-102n in a table stored in the order routing appliance 104. Subsequent communications between the sending client trading application 102a-102n, the order routing appliance 104, and a particular market exchange 106a-106n can reference the unique identifier. Accordingly, all messages, including the unique identifier, can be associated with each other for future reference and to identify the appropriate party to receive such messages.
In step 415, the receiving client line handler 202a-202n communicates a copy of the message from the sending client trading application 102a-102n to the order management system 108 for order management processing. Additionally, in step 420, the receiving client line handler 202a-202n communicates a copy of the message received from the sending client trading application 102a-102n to a database update module 218 via a message bus 212 for storing in an orders database 220. The database update module 218 is a software module that is responsible for persisting all order information into the orders database 220. Accordingly, the database update module 218 stores a copy of each message received by the order routing appliance 104. Such storing can allow future review of any message received by the order routing appliance 104.
From step 420, the method 305 proceeds to step 310 (
In step 405, the message router 206 performs partial parsing of the message to read information in the message that identifies the particular market exchange 106a-106n to which the message is directed. Then, in step 410, the message router 206 searches a stored table of identification information and corresponding market exchanges for the information identified in the parsing step. In step 415, the message router 206 reads the particular market exchange 106a-106n corresponding to the information identified in the parsing step.
From step 415, the method 315 proceeds to step 320 (
As stated in steps 335 and 345 of
In step 610, the receiving exchange parser 208a-208n transforms the exchange report from the protocol specific to the particular market exchange 106a-106n to the input protocol of the particular client trading application 102a-102n to which the report is directed. In an exemplary embodiment, the receiving exchange parser 208a-208n can determine the identity of the client trading application 102a-102n based on the unique identifier or other information in the report. Based on the identifying information from the report, the receiving exchange parser 208a-208n can determine the appropriate protocol from a table and can subsequently convert the report into the appropriate protocol.
In step 615, the receiving exchange parser 208a-208n communicates the transformed message to the message router 206.
In step 620, the message router 206 determines the particular client trading application 102a-102n to which the message is directed. In an exemplary embodiment, the message router 206 can make that determination by performing a partial parsing of the message to read information identifying the particular client trading application 102a-102n to which the message is directed. In an exemplary embodiment, the identifying information can comprise the unique identifier previously assigned to related messages. Then, the message router 206 can search a table of identification information/client trading applications 102a-102n for the information identified in the parsing step. Finally, the message router 206 can read the particular client trading application 102a-102n corresponding to the information identified in the parsing step.
In step 625, the message router 206 communicates the transformed message to the appropriate client line handler associated with the particular client trading application 102a-102n. For example, if the particular client trading application is the client trading application 102a, then the message router 206 communicates the transformed message to the corresponding client line handler 202a. Then, in step 630, the client line handler 202a-202n communicates the transformed message to the particular client trading application 102a-102n.
Additionally, in step 635, the client line handler 202a-202n also communicates a copy of the transformed message to the order management system 108 for order management processing and to the database update module 218 for storing in the orders database 216.
From step 635, the method 340 proceeds to step 345 (
The order routing appliance 104 can process multiple trading order messages and exchange reports simultaneously and can perform the processing described herein with regard to each message and report. In an exemplary embodiment, the order routing appliance can buffer or queue messages and reports as they are received and can process each item in the order it is received. Additionally or alternatively, the order routing appliance can be multi-threaded to process multiple messages and/or reports at the same time.
In another exemplary embodiment, the order routing appliance 104 can comprise multiple hardware processors 204.
The control module 222 is a software module that is responsible for effecting control directives received from the control line handler 230 and for recording control directives and changes into a control database 224. The control line handler 230 is a software module that is responsible for session management and message exchange between the control module 222 and a management console 232. Support personnel operating the management console 232 may use this connection to control operation of the order routing appliance 104.
The logging module 214 is a software module that is responsible for persisting all log messages into a log database 216 and logs all events occurring in the order routing appliance 104.
The message bus 212 is the order routing appliance's internal publish/subscribe mechanism.
The monitor module 226 is a software module that is responsible for aggregating and forwarding monitoring information to the monitor line handler 234 for subsequent distribution to monitor clients, such as a monitor console 236. Accordingly, the monitor module 226 monitors the operations of the order routing appliance 104, stores monitoring information in a monitor database 228, and communicates the monitoring information to the monitor console 236 via the monitor line handler 234. The monitor line handler 234 is a software module that is responsible for session management and message routing of monitor traffic to the monitor console 236. The monitoring information can comprise performance information of the running appliance 104, such as a number of messages and reports sent/received, connections up/down state, errors, or any other suitable performance information and can be used by operations staff for proactive management of the system 100. In an exemplary embodiment, the components of the general purpose CPU can be implemented in a server configuration.
The special purpose processing unit 204 is the hardware processor 204 depicted in
In an exemplary embodiment, the order routing appliance 104 can be implemented using a Nexten hardware card operating as the hardware processor 204 combined with an BP BladeSystem c-Class Server combination comprising the remaining components of the order routing appliance 104. In an alternative exemplary embodiment, the hardware processor 204 can comprise a field programmable gate array (“FPGA”) or other suitable hardware accelerator.
The order routing appliance 104 depicted in
In an alternative exemplary embodiment of the system 100, the client trading applications 102a-102n can communicate messages to the order management system 108, which then communicates the messages to the order routing appliance 104, without changing the scope of the invention described herein. In this embodiment, reports from the market exchanges 106a-106n are communicated from the order routing appliance 104 to the order management system 108 to the client trading applications 102a-102n.
In an exemplary embodiment, the order routing appliance can be implemented in conjunction with additional components not illustrated in
Although not illustrated in
The present invention comprises a computer program that embodies the functions described herein and illustrated in the appended flow charts. However, it should be apparent that there could be many different ways of implementing the invention in computer programming, and the invention should not be construed as limited to any one set of computer program instructions. Further, a programmer would be able to write such a computer program to implement an embodiment of the disclosed invention based on the block diagrams, flow charts, and associated description in the application text. Therefore, disclosure of a particular set of program code instructions is not considered necessary for an adequate understanding of how to make and use the invention. The inventive functionality of the claimed computer program has been explained in detail in the previous description read in conjunction with the Figures illustrating the program flow.
Although specific embodiments of the present invention have been described herein in detail, the description is merely for purposes of illustration. The exemplary systems and methods described herein are merely illustrative and, in alternative embodiments of the invention, certain steps can be performed in a different order, performed in parallel with one another, or omitted entirely, certain additional steps can be performed without departing from the scope and spirit of the invention, and/or certain components can be added to, removed from, or relocated within the system without departing from the scope and spirit of the invention. Additionally, various modifications of, and equivalent steps or features corresponding to, the disclosed aspects of the exemplary embodiments, in addition to those described herein, can be made by those having ordinary skill in the art without departing from the spirit and scope of the present invention defined in the following claims, the scope of which is to be accorded the broadest interpretation so as to encompass such modifications and equivalent structures.