The present disclosure generally relates to trading of assets electronically in an auction and, in particular, prior to a time that an auction of assets commences, determining possible order matches of orders at a top of an order book, by price and size and pro rata matching, and atomic matching the order matches at the time that the auction commences.
Various electronic asset trading systems conduct auctions for certain assets, such as government securities, for example, U.S. Treasuries, equities or the like, at, for example, a time that a market opens for trading the assets, or at a specific time period in the day when the market is open. In such auctions, an investor or broker attempts to participate in the auction by transmitting an order for an auction to a computing system, such as an electronic asset trading exchange. One may become a participant in the auction by having the exchange receive an order as of a time that the auction commences, for example, at the time the market opens for trading an asset. Orders that are received before a start of the auction, however, are not accepted for the auction. An entity or individual who submits an order that is received by the computing system as soon as the market open, in other words, one who acts quickly as soon as possible after the market opens to have its order received by the computing system before another order for the auction from another, may obtain a trading advantage. The order of the one would be processed first based on earlier time of receipt, such that in the circumstance that the orders specify the same parameters, such as side, price and size, the order of the one has a greater likelihood of being filled than the another order.
The number of orders for an auction submitted over a communication network, to a computing system operating as a trading exchange and providing an auction functionality, at or slightly after a time that an auction commences, typically can exceed 50,000 orders per second. This very high rate of orders received as data messages at the computing system may cause instability or inoperability of the computing system, and errors in processing or an inability to timely process orders, if the computing system does not have sufficient memory, processing, input/output (TO) interface and bandwidth resources available, or allocatable on demand, to receive and timely process the high influx of orders accurately and at the high speeds of 20-25 microseconds per order typical for fulling orders in an electronic auction. The memory, processing, IO interface and bandwidth resources that need to be available or allocatable on demand to accurately and timely process such large numbers of orders in an auction, however, are very substantial and would greatly increase the cost of a computing system that provides a functionality of electronic trading of assets in an auction.
Accordingly, there exists a need for method, apparatus and system for electronic communication and computing that may provide electronic auction functionalities accurately and timely with reduced memory, processing, IO and bandwidth resource requirements.
In accordance with an aspect of the present disclosure, an electronic trading system may include at least one processor configured to control: electronically timing, by an electronic timer, a first time interval, in which the first time interval ends prior to a time that an auction commences; operating in a PreOpen state while the first time interval being timed by the electronic time lr has not elapsed; when operating in the PreOpen state, receiving, over a communication network, from a plurality of computing devices of respective users, orders for the auction, in which each order indicates price, side and size; determining a time stamp for each of the orders corresponding to a time of receipt; and storing, in a memory, each of the orders as bids and offers arranged by price and size in a book; when the first time interval being timed by the electronic timer has elapsed, switching from operating in the PreOpen state to operating in a LockIn state for a second time interval, and electronically timing the second time interval by the electronic timer, in which the second time interval ends prior to the time that the auction commences, and in which when the LockIn state is switched to from the PreOpen state, each order in the book received in the PreOpen state is fixed; when operating in the LockIn state, determining whether at least one order match is possible at top of the book price level tiers of respective bid orders and offer orders in the book; when at least one order match is determined to be possible for the top of the book price level tiers of the book, determining an aggressing side based on a total size of orders at the top of the book price level tiers including at least one order match determined to be possible, determining each aggressing order at each price level tier of the top of the book price level tiers having a possible order match, in best price level tier to worst price level tier order starting from the top of the book price level tier of the aggressing side, in which at least some portion of an aggressing order at a given price level tier is determined to match pro rata with at least some portion of a resting order on a resting side, until an aggressing order at the given price level tier can no longer be determined to match pro rata with a given resting order on the resting side, and in which a pro rata matching size for a first resting order on the resting side is determined based on a size of the first resting order divided by a total order size of the resting side multiplied by a total order size of the aggressing side at the top of the book price level tier; and at the time that the auction commences, atomic matching each given possible order match determined in the LockIn State.
In accordance with an aspect of the present disclosure, a method may include controlling, by at least one processor: electronically timing, by an electronic timer, a first time interval, in which the first time interval ends prior to a time that an auction commences; operating in a PreOpen state while the first time interval being timed by the electronic timer has not elapsed; when operating in the PreOpen state, receiving, over a communication network, from a plurality of computing devices of respective users, orders for the auction, in which each order indicates price, side and size; determining a time stamp for each of the orders corresponding to a time of receipt; and storing, in a memory, each of the orders as bids and offers arranged by price and size in a book; when the first time interval being timed by the electronic timer has elapsed, switching from operating in the PreOpen state to operating in a LockIn state for a second time interval, and electronically timing the second time interval by the electronic timer, in which the second time interval ends prior to the time that the auction commences, and in which when the LockIn state is switched to from the PreOpen state, each order in the book received in the PreOpen state is fixed; when operating in the LockIn state, determining whether at least one order match is possible at top of the book price level tiers of respective bid orders and offer orders in the book; when at least one order match is determined to be possible for the top of the book price level tiers of the book, determining an aggressing side based on a total size of orders at the top of the book price level tiers including at least one order match determined to be possible, determining each aggressing order at each price level tier of the top of the book price level tiers having a possible order match, in best price level tier to worst price level tier order starting from the top of the book price level tier of the aggressing side, in which at least some portion of an aggressing order at a given price level tier is determined to match pro rata with at least some portion of a resting order on a resting side, until an aggressing order at the given price level tier can no longer be determined to match pro rata with a given resting order on the resting side, and in which a pro rata matching size for a first resting order on the resting side is determined based on a size of the first resting order divided by a total order size of the resting side multiplied by a total order size of the aggressing side at the top of the book price level tier; and at the time that the auction commences, atomic matching each given possible order match determined in the LockIn State.
In accordance with an aspect of the present disclosure, a non-transitory storage medium may be configured to store instructions which, when executed by at least one processor, control: electronically timing, by an electronic timer, a first time interval, in which the first time interval ends prior to a time that an auction commences; operating in a PreOpen state while the first time interval being timed by the electronic timer has not elapsed; when operating in the PreOpen state, receiving, over a communication network, from a plurality of computing devices of respective users, orders for the auction, in which each order indicates price, side and size; determining a time stamp for each of the orders corresponding to a time of receipt; and storing, in a memory, each of the orders as bids and offers arranged by price and size in a book; when the first time interval being timed by the electronic timer has elapsed, switching from operating in the PreOpen state to operating in a LockIn state for a second time interval, and electronically timing the second time interval by the electronic timer, in which the second time interval ends prior to the time that the auction commences, and in which when the LockIn state is switched to from the PreOpen state, each order in the book received in the PreOpen state is fixed; when operating in the LockIn state, determining whether at least one order match is possible at top of the book price level tiers of respective bid orders and offer orders in the book; when at least one order match is determined to be possible for the top of the book price level tiers of the book, determining an aggressing side based on a total size of orders at the top of the book price level tiers including at least one order match determined to be possible, determining each aggressing order at each price level tier of the top of the book price level tiers having a possible order match, in best price level tier to worst price level tier order starting from the top of the book price level tier of the aggressing side, in which at least some portion of an aggressing order at a given price level tier is determined to match pro rata with at least some portion of a resting order on a resting side, until an aggressing order at the given price level tier can no longer be determined to match pro rata with a given resting order on the resting side, and in which a pro rata matching size for a first resting order on the resting side is determined based on a size of the first resting order divided by a total order size of the resting side multiplied by a total order size of the aggressing side at the top of the book price level tier; and at the time that the auction commences, atomic matching each given possible order match determined in the LockIn State.
The technology of the present disclosure relates to, by way of example, a computer and networking architecture that may control determining possible order matches of orders for an auction in an order book received prior to a time that an auction commences, by price and size of the orders and pro rata matching of orders at top of the book price level tiers, in best price level tier to worst price level tier order starting from the top of the book price level tier, and atomic matching of the possible order matches at the time that the auction commences. Advantageously, determining possible order matches before the time that an auction commences (“PreOpen matching”), and atomic matching the orders matched by PreOpen matching at the time that the auction commences according to the present disclosure, reduces computing system and network resources, including memory, processing, IO interface and bandwidth, and costs to obtain or allocate the resources necessary to ensure that timely and accurate processing of orders for auction submitted to a computing system that provides electronic auction functionalities.
In one exemplary embodiment, a computing system as an asset trading platform may include an auction functionality that implements an auction of assets, such as, for example, a bond, an equity or a repurchase agreement (“repo”). A repo is a short-term agreement in which, for example, a dealer sells securities to an investor at a first price and interest rate for a fixed time period, such as overnight, and buys the securities back from the investor at a slightly higher price than the first price in accordance with the interest rate. In one embodiment, the computing system may control receiving orders for an auction before a time that the auction commences, where the orders are for trading an asset; determining possible order matches at top of the book price level tiers of an order book containing the received orders, in best price level tier to worst price level tier order starting from the top of the book price level tiers, where possible order matches are determined by price, size and a pro rata matching process that maximizes spreading fills between or among resting orders on a resting side of the order book; and atomic matching the possible order matches at the time that the auction commences.
It is to be understood that the features in accordance with the present disclosure may be applied to an auction for any type of asset, such as, for example, event ticketing auctions, such as for entertainment events or transport carrier (airline, train, etc.) seat ticketing, or in any auction like setting, to reduce memory, processing, IO interface and bandwidth resource requirements and associated costs for allocating or obtaining the necessary memory, processing, IO interface and bandwidth resources.
The present disclosure may be implemented using a combination of computer hardware and computer software to form a specialized machine capable of performing operations. Embodiments of the present disclosure may be performed utilizing a combination of central processing units (CPUs), physical memory, physical storage, electronic communication ports, electronic communication lines and other computer hardware. The computer software may include at least a computer operating system and specialized computer processes described herein.
In the present disclosure, certain specific details are set forth to provide a thorough understanding of various disclosed embodiments. However, one skilled in the relevant art will recognize that embodiments may be practiced without one or more of these specific details, or with other methods, components, etc. In other instances, well-known structures associated with an electronic trading system have not been shown or described in detail to avoid unnecessarily obscuring descriptions of the embodiments.
The aspects, features and advantages of the present disclosure will be appreciated when considered with reference to the following description of examples and accompanying figures. In describing the exemplary embodiments of the disclosure illustrated in the drawings, specific terminology will be used for the sake of clarity. However, the disclosure is not intended to be limited to the specific terms used.
In some embodiments, advantageously according to the present disclosure, the apparatus 10 may control maximizing spreading fills between or among orders for an auction in a book of orders received prior to a time that the auction is commenced, by determining possible order matches in the book by price, size and a pro rata matching process, to facilitate receiving, processing and matching orders for an auction that minimizes usage of network bandwidth, processing, memory, IO interface and bandwidth resources, as described in detail below.
Referring to
The memory 4 may store information accessible by the one or more processors 2, including instructions 6 that may be executed by the one or more processors 2.
The one or more processors 2 may include an architecture configured to include a programmable hardware device, such as a field programmable field array (“FPGA”), an application specific integrated circuit (“ASIC”) or system on chip (“SoCs”). In one embodiment, the architecture may be hardwired on a substrate. In one embodiment, the one or more processors 2 may be any type of processor, such as a CPUs from Intel, AMD, and Apple.
Memory 4 may also include data 8 that can be stored, manipulated or retrieved by the processor. The data 8 may also be used for executing the instructions 6 and/or for performing other functions. The memory 4 may be any type of non-transitory media readable by the one or more processors, such as a hard-drive, solid state hard-drive, memory card, ROM, RAM, DVD, CD-ROM, write-capable, read-only memories, etc.
The instructions 6 may be any set of instructions capable of being read and executed by the one or more processors 2. The instructions may be stored in a location separate from the computing device, such as in a network attached storage drive, or locally at the computing device. The terms “instructions,” “functions,” “application,” “steps,” and “programs” may be used interchangeably herein. The instructions residing in a non-transitory memory may comprise any set of instructions to be executed directly (such as machine code) or indirectly (such as scripts) by processor 2. In this regard, the terms “instructions,” “scripts,” or “modules” may be used interchangeably herein. The computer executable instructions may be stored in any computer language or format, such as in object code or modules of source code. Furthermore, it is understood that the instructions may be implemented in the form of hardware, software, or a combination of hardware and software and that the examples herein are merely illustrative.
Data 8 may be stored, retrieved and/or modified by the one or more processors 2 in accordance with the instructions 6. Such data may be stored in one or more formats or structures, such as in a relational or non-relational database, in a SQL database, as a table having many different fields and records, XLS, TXT, or XML documents. The data may also be formatted in any computing device-readable format. In some embodiments the data may be encrypted.
The apparatus 10 may include a communication device 9 configured to provide wired or wireless communication capabilities.
The communication network 14 may be a local area network (“LAN”), a wide area network (“WAN”), or the Internet, etc. The communication network 14 and intervening nodes thereof may use various protocols including virtual private networks, local Ethernet networks, private networks using communication protocols proprietary to one or more companies, cellular and wireless networks, HTTP, and various combinations of the foregoing. In addition, the network 14 may utilize a variety of networking protocols now available or later developed including, but not limited to, TCP/IP based networking protocols.
In one embodiment, the computing apparatus 10 may include the communication network 14 and at least a portion of the computing devices 12 or the computing devices 18.
Although only a single computing apparatus 10 (computer) is depicted herein it should be appreciated that a computing apparatus in accordance with the present disclosure may include additional interconnected computers and programmable hardware devices. It should further be appreciated that apparatus 10 may be an individual node in a network containing a larger number of computers.
In one embodiment, the apparatus 10 may include all the components normally used in connection with a computer. For example, the apparatus 10 may have a keyboard and mouse and/or various other types of input devices such as pen-inputs, joysticks, buttons, touch screens, etc., as well as a display, which could include, for instance, a CRT, LCD, plasma screen monitor, TV, projector, etc.
Referring to
Referring to
In one embodiment, the processor 114 may monitor and control time of the electronic clock 120, and the electronic clock 120 may indicate time at increments of nanoseconds.
In one embodiment, the processor 114 may monitor timing by, and control operation of, the electronic timer 124, and the electronic timer124 may indicate time at increments of nanoseconds.
In one embodiment, the memory 116 may be configured to store order data indicating orders received, and a time of the electronic clock 120 when each order is received, at the server 112. In one embodiment, the orders may be stored in a book configuration in the book of orders 122 of the memory 116, where bid orders are on one side and offer orders are opposite the bid orders, and where each order has a size and price and is identified by a user that submitted the order. In one embodiment, the user may be a computing device that implements an algorithm that automatically generates and transmits an order for auction. In one embodiment, the user may be a human that directly or indirectly provides input information of an order to a computing device to cause the computing device to transmit an order for auction.
In one embodiment, each of the components of the system 100 may include a processor and a memory including instructions that implement functions of the respective component, as described below.
Computing devices 130, such as client devices at which orders for an auction may be manually input or automatically generated by a processor thereof, may be configured to transmit orders for an auction, over a communication network 132, to the server 112. In one embodiment, the system 100 may include at least a portion of at least one of the computing devices 130 and at least a portion of the communication network 132. In one embodiment, the computing device 130 may include a TCP circuit that transmits order data in an order message containing one or more data packets forming the order data.
The processor 114 may be configured to extract order data of an order contained in an order message received from a computing device 130, and determine a time stamp for the order as a time of the electronic clock 120 when the order data for the order, such as in a TCP message, is received at the server 112. The processor 114 may be configured to, for each order received, store the order data thereof, which includes identity of a user that entered the order, side (buy or sell) of the order, price of the order and size of the order, associated with the time stamp thereof, in the memory 116, such as in the book of orders 122.
In one embodiment, the orders may be stored in the book of orders 122 arranged by a user that submitted the order, and side, price and size of the order. For example, the orders of users A, B, C, D, E and F may be stored in an arrangement as shown in Table 1 below, where orders are arranged in best price to worst price order, from the top row to a bottom row of a column, and orders having the same price are arranged in descending size order in a column.
In one embodiment, the orders on each side for a same or type of asset, for example, a repo for a U.S. Treasury bond, may be arranged in a book in best price level to worst price level order, where an order at the best price level tier on a side, or the top of the book on the side, is at a first (highest) row of the column.
In addition, the processor 114 may be configured to control the electronic timer 124 to time a first time interval of a PreOpen state. The first time interval of the PreOpen state is a time interval prior to a time that an auction commences. In the PreOpen state, the processor 114 may receive and process orders for an auction, and store the orders in a book form in the book of orders 122 as described above for Table 1. Also, the processor 114 may be configured to control the electronic timer 124 to time a second time interval of a LockIn state. The second time interval of the LockIn state is a time that starts after the first time interval elapses and ends prior to a time that the auction commences. The second time interval of the LockIn state may, for example, be a few milliseconds or not more than about 1 second. In one embodiment, the processor 114 may control switching of operation of the server 112 from operating in the PreOpen state to operating in the LockIn state when the first time interval elapses, where timing of the second time interval begins when the first time interval elapses. Each order in the book at the time the PreOpen state has elapsed becomes a fixed order for which a possible order match with another order in the book may be determined during the LockIn state. In one embodiment, the second time interval may elapse about a few microseconds before a time that the auction commences. For convenience, reference below to during the PreOpen state or during the LockIn state means at a time the server 112 is operating in the PreOpen state or LockIn state, respectively.
The processor 114 may only accept an order for auction received during the PreOpen state, such that an order for auction received during the LockIn state is not accepted and, thus, not considered for determining a possible order match for the auction.
Further, the processor 114 may be configured to control, when operating in the LockIn state, determining a possible order match(es) at price level tiers at the top of the book of orders; and when at least one possible order match is determined, determining (i) an aggressing side at the top of the book price level tiers and (ii) whether an order match is possible for an aggressing order at a price level tier of the aggressing side, in best price level tier to worst price level tier order starting from the top of the book price level tier of the aggressing side. In one embodiment, a size of an order determined for a possible order match may be determined based on a pro rata matching process, in which possible matches of some portion of an aggressing order at a given price level tier with at least some portion of a resting order on a resting side are determined, until some unmatched portion of an aggressing order at the given price level tier can no longer be determined to match pro rata with some unmatched portion of a given resting order on the resting side. In one embodiment, the operations performed by the processor 114 during the Lockin state are only for those orders in the book at the time the PreOpen state has elapsed. In one embodiment, the processor 114 may be configured to control, after the LockIn state ends and at the time that the auction commences, for each possible order match determined in the LockIn state, atomic matching at a trading exchange some portion of a given aggressing order that is a size of a pro rata matching size of a given resting order.
In one embodiment, for each order received during or after the LockIn state, such order is processed after an auction commences and atomic matching has been completed for the possible order matches determined from orders received during the PreOpen state.
In one embodiment, the server 112 may transmit an order matching message including details of all possible order matches determined during the LockIn state over the communication network 132 to one or more computing devices 150 as exchange gateways or trading exchanges, to facilitate execution of all possible order matches in an atomic match.
In one embodiment, the order matching message may be transmitted as a TCP message from a TCP server circuit (not shown) of the computing system 100.
In one embodiment, the processor 114 may be configured to control, after the time that the auction commences and while the auction is ongoing, i.e., when a market is open to process portions of any order for the auction not identified as forming a possible order match during the LockIn state, and following the atomic matching, attempting to match a remaining unmatched or partially filled portion of the order from the book at a trading exchange.
In one embodiment, the processor 114 may control selective communication and display of order information of orders in the book to a computing device 130 during operation in the PreOpen state. In one embodiment, the processor may control display, at a given computing device 130, of only those orders whose source is the given computing device 130 or a user of the given computing device, and prevent display or notification at the given computing device of any order submitted from other than the user of the given computing device or the given computing device.
In one embodiment, the processor 114 may control, during the LockIn state, notifying, such by an alert notification transmitted over the communication network 132, and rendering of an alert, such by a video or audio rendering, at the computing device 130, that a change to an existing order or submission of a new order is not permissible and will not be considered during the LockIn state.
For ease of reference and convenience, the disclosure herein that the server 112 or another component of the system 100 may perform a function or operation, is a disclosure that a processor or circuitry of the server 112 or the another component of the system 100 may perform or control the performance of the function or operation.
In one embodiment, one or more of the computing devices 130 may be a laptop, desktop or mobile computing device, such as a smartphone or tablet. The one or more client devices may execute an “app” to interact with the server 112. The app, for example, may execute on a mobile device operating system, such as Apple Inc.'s iOS®, Google Inc.'s Android®, or Microsoft Inc.'s Windows 10 Mobile®, which provides a platform that allows the app to communicate with particular hardware and software components of the mobile device. For example, the mobile device operating system may provide functionalities for interacting with location services circuitry, wired and wireless network interfaces, user contacts, and other applications, where the functionalities include application programming interfaces (APIs) that enable communication with hardware and software modules executing outside of the app, such as included in the system 100. In one embodiment, the computing device 130 may, via the app executing on the computing device 130, be configured to communicate with the server 112 via the communication interface 118.
In one embodiment, one or more of the computing devices 150 may be, for example, a financial venue, an exchange or a matching engine.
In one embodiment, a network path between the server 112 and a computing device 130 or 150 may be configured to facilitate communication using a Point to Point Financial Information eXchange (FIX) protocol, or any other protocol.
For purposes of illustrating the features of the present disclosure, a high level block diagram of an exemplary process 300, as shown in
For purposes of illustrating features of the process 300 in conjunction with the functions performed by the system 100, an exemplary implementation of determining possible order matches of orders for repos prior to a time that an auction commences therefor, and atomic matching the possible order matches at the time that the auction commences, is described below.
Referring to
In block 304, during the PreOpen state, the processor 114 may receive order messages from computing devices 130 over the communication network 132. The order messages may contain order data of an order(s) for auction including, for example, user identification information, and size, price and side of the order. The processor 114 may determine, for each order received, a time stamp which is a time of the electronic clock 120 when the order message containing the order is received at the server 112. In addition, the processor 114, for each order received, may store in the memory 116 order data of the order with the time stamp corresponding thereto. In one embodiment, the processor 114 may store, in the book of orders 122 portion of the memory 116, the orders received as a book of orders having a format the same as or similar to that described above with reference to Table 1.
In one embodiment, a computing device 130 may transmit a TCP message containing order data of an order.
In block 306, during the PreOpen state, the processor 114 may transmit, over the communication network 132, to a specific computing device 130, display information indicating only orders currently in the book whose source is the specific computing device 130, or a specific user of the computing device 130, to cause display of the display information at the specific computing device. In one embodiment, order data of orders of other users are prevented from being transmitted to a specific computing device 130 that is not a source of the order data.
In addition, during the PreOpen state, a user, via a computing device 130, may submit as many orders as the user desires, and the processor 114 may receive and include each order received from the user in the book.
In one embodiment, a user may transmit order change data to, for example, modify or cancel an order previously submitted during the PreOpen state. As long as the order change data is received by the system 100 during the PreOpen state, the processor 114 may revise or cancel an order in the book based on the order change data. In one embodiment, the time stamp of an order may not be changed when the order is modified based on order change data.
In block 308, when the processor 114 determines from the electronic timer 124 that the first time interval being timed has elapsed, the processor 114 may switch operation of the system 100 from the PreOpen state to operation in the LockIn state. When operation is switched from the PreOpen state to the LockIn state, all orders in the book become fixed and no further orders may be added to the book. All orders in the book when the PreOpen state ends may be considered for possible order matching during the LockIn state, in accordance with present disclosure.
In one embodiment, when operation of the system 100 switches from the PreOpen state to the LockIn state, the processor 114 may transmit, over the communication network 132, an auction open notification to each of the computing devices 130 indicating that order data of a new order or order change data will be processed by the system 100. At the time operation of the system 100 is switched to the LockIn state, the processor 114 may cause the electronic timer 124 to start timing a second time interval, which is a time length that the system 100 may operate in the LockIn state. In one embodiment, the second time interval may be configured and timed following the end of the PreOpen state, to provide that the LockIn state ends prior to the time that the auction commences.
In block 310, during the LockIn state, the processor 114 may determine possible order matches of orders at top of the book price level tiers. In one embodiment, advantageously, the possible order matches may be determined by a PreOpen matching process that maximizes spreading fills between or among orders at the top of a book of orders, such that the number of orders remaining unfilled at the top of the book, following an atomic matching of the possible order matches at the time that the auction commences as discussed in detail below in block 312, is minimized.
The technology of the present disclosure including a PreOpen matching processing, which determines possible order matches prior to a time that an auction commences, and filling the possible order matches by atomic matching at a trading exchange at the time that the auction commences, solves the technical problems of an electronic auction accurately receiving and processing a large number of orders for auction at the time that an auction commences.
In conventional electronic auction implementations in which orders for an auction are received and processed only at or after the time that an auction commences, technical problems exist in accurately and timely receiving and processing the orders, which requires substantial processing, memory, IO interface and bandwidth resources to be available or allocated, which in turn increases electronic auction platform implementation costs. Without having substantial processing, memory, IO interface and bandwidth resources available or allocatable for use to receive and process orders for an auction starting from the time that an auction commences, a computing platform that serves as an electronic auction platform is susceptible to instability and data processing disruptions and errors. In these electronic auction platform implementations, a substantial amount of data of about 10,000 orders in the form order messages from about 65-80 order sources typically is received within a very small time period, for example, in one second. Such high order reception rate, in turn, requires substantial bandwidth capacity, for example, a 10 gigahertz capable network card, and many IO interface ports, for example, about 100-200 ports, to be available or allocatable, to ensure that all orders in the order messages are accurately received and a data bottleneck, which results in some of the orders not being received, is not created at hardware inputs of a computing system providing the electronic auction platform functionality. In the event sufficient resources are not allocatable or available, some order messages, and thus the orders thereof, may not be received, or may be received incompletely, such that an order is not timely processed at the time that the auction commences, or is not processed at all for inclusion in the auction. For example, when the resources are insufficient, the order message may be corrupted such that certain order parameters, such as size, price or side of the order, may not be determinable, or the order message may be received but not saved in memory because temporary buffers that store order messages before processing is performed to extract and store in the memory the order data thereof are overflowing or filled. In addition, when the resources are insufficient, an accurate time of receipt of order messages may not be determined, such that the order of an order message may not be processed for matching in an auction based on an actual time of receipt thereof at a computing system. For example, an order A received prior to order B may be processed for matching after the order B, because an inaccurate time of receipt is determined for the order A which is after the time of receipt determined for the order B.
Advantageously, the technology of the present disclosure reduces bandwidth and IO interface resources requirements for an electronic asset auction. The need to receive and process a large volume of data in a very short time interval is eliminated, in that order messages containing orders may be received over a longer time interval, such as hours, during a PreOpen state before the time that an auction commences. The technology of the present disclosure avoids the creation of an IO bottleneck, which can be caused based on the need to write a large amount of data in memory over a short time interval. Also, the technology of the present disclosure advantageously reduces processing and memory resource requirements, because there is no longer a need to process many order messages quickly and immediately upon receipt in a very short time interval, for example, processing all of about 50,000 orders received as order messages at the time that an auction commences in one second. Further, the technology of the present disclosure reduces the potential for jitter errors that occur at high processing speeds that a processor would need to operate to process all orders received at the start of an auction within a very short time interval. In addition, the technology of the present disclosure provides high availability of a computing system to perform other operations and avoids disconnects, and furthermore guarantees filling portions of orders forming possible order matches determined from a PreOpen matching process at the time that an auction commences.
Thus, the technology of the present disclosure constitutes a technical solution to a technical problem that matches orders for auction in an electronic auction at the time that an auction commences at a desired low latency in processing, with high accuracy and with a reduction of the processing, memory, IO and bandwidth resources that need to be obtained or allocated.
In one embodiment, in block 310, a PreOpen matching process may include, during the Lockln state, the processor 114 determining possible order matches of orders at top of the book price level tiers pro rata by price and size, in best price level tier to worst price level tier order starting from the top of the book price level tier on a side of the book, until possible order matches for a given price level tier can no longer be determined.
Referring to
Referring to
In the event the processor 114 determines an order match is possible at top of the book price level tiers of respective bid orders and offer orders in a book, the processor 114 may determine whether additional order matches are possible at top of the book price level tiers of respective bid orders and offer orders in a book. Referring to
In the event the processor 114 does not determine an order match is possible at top of the book price level tiers of respective bid orders and offer orders in a book, the processor 114 may cease the PreOpen matching process for a subject book of orders.
In block 404, when at least one possible order match is determined in block 402, the processor 114 may determine an aggressing side of the book based on the orders at the top of the book price tier levels for which possible order matchers are determined. In one embodiment, when total order sizes respectively of bid and offer sides of orders determined to be possible to match are the same, the aggressing side may be a side that first received an order that is determined to be possible to match. In one embodiment, when total order sizes respectively of bid and offer sides of orders determined to be possible to match are different, the aggressing side may be a side having the smaller total order size. Referring to
In block 406, the processor 114 may determine each aggressing order on an aggressing side, at each price level tier of the top of the book price level tiers, having a possible order match with a resting order of the resting side of the book, in best price level tier to worst price level tier, starting from the top of the book price level tier of the aggressing side. Referring to
In block 408, for a subject price level tier on the aggressing side determined to have a possible order match in block 406, the processor 114 may determine a pro rata matching size of a resting order for each aggressive order of the subject price level. Referring to
In block 410, the processor 114 may normalize the pro rata matching sizes determined in block 408 by rounding up to a nearest multiple of a minimum trade quantity for an asset. For example, where the minimum trade quantity is 50, and referring to
In block 412, the processor 114 may determine a portion of an aggressing order to be matched with a pro rata matching size of a resting order. Referring to
In block 414, the processor 114 may adjust a remaining unfilled size of a resting order for which a pro rata matching size is determined, and a remaining unfilled size of an aggressing order to which the resting order is determined for a possible order match. Referring to
In block 416, the processor 114 may determine whether a possible order match was determined at a next less favorable price level tier on the aggressing side. If yes, blocks 408, 410, 412 and 414 are performed again. If no, processing resumes from block 312 of the process 300.
In block 312, the processor 114 may determine that the second time interval being timed has elapsed, and await a time that the auction commences.
In one embodiment, the processor 114 may continuously perform the operations of block 310, to determine all possible order matches by the PreOpen matching process before the Lockln state elapses and the time that the auction commences.
When the processor 114 determines that the time that the auction commences is reached, the processor 114 may transmit, over the communication network 132, to a computing device 150 as a trading exchange, an auction match message indicating instructions to atomic match all of the possible order matches determined during the Lockln state, according to the pro rata matching sizes of resting orders determined for a respective matched aggressing order. Advantageously, as discussed above, the atomic matching of all of the possible order matches determined during the PreOpen matching process eliminates the need to obtain and/or allocate computing hardware, software and network resources to process, store, receive and transmit data to match accurately and quickly in an auction orders for an auction that can only be received at a time that the auction commences or thereafter. In one embodiment, the auction match message may be a TCP message.
In one embodiment, the server 112 and the computing device 150 as a trading exchange may be in a same computing system.
In block 314, the processor 114 may attempt to match any remaining unmatched or partially filled orders from the book. In one embodiment, the processor 114 may transmit, over the communication network 132, to a computing device 150 as a trading exchange, an unfilled order message indicating details of orders in the book that are unfilled, following atomic matching. The atomic matching of possible order matches determined during the PreOpen matching process, which determines possible order matches by spreading fills of orders between or among orders at the top of the book price level tiers, advantageously reduces the computing hardware, software and network resources that would need to be obtained or allocated to facilitate filling partially filled orders that remain following atomic matching. More orders are likely to be completely filled after atomic matching based on the pro rata matching of the PreOpen matching process, and building an order book of possible order matches before an auction commences reduces the processing load on a computing system and overall results in a more streamlined matching experience for users while lowering the chances of the computing system experiencing a jitter due to an extremely high processing load in a very short amount of time.
Thus, referring to
Referring to
Referring to
Referring to
Referring to
Referring to
Referring to
Referring to
Thus, the possible order matches determined from the PreOpen matching process result in all of user A's, B's, C's, D's, E's and F's orders being completely filled upon atomic matching when the auction commences.
Referring to
Referring to
Referring to
In one embodiment, where the buy/sell prices for the trade are not the same, the price of the smaller order of the possible order match is utilized for the possible order match.
In the example, where the price of the smaller order of the possible order match is utilized for the possible order match if order and buy prices are different, referring to
Thus, the possible order matches determined from the PreOpen matching process result in all of user A's, B's, C's, D's, E's and F's orders being completely filled upon atomic match when the auction commences.
Referring to
Referring to
Referring to
In one embodiment, where the buy/sell prices for the possible order match are not the same, the price of the smaller order of the possible order match is utilized for the possible order match.
In the example, where the price of the smaller order of the possible order match is utilized for the possible order match if order and buy prices are different, referring to
Thus, the possible order matches determined from the PreOpen matching process results in all of user A's, B's, C's, D's, E's and F's orders being completely filled upon atomic match when the auction commences.
Although the disclosure herein has been described with reference to particular examples, it is to be understood that these examples are merely illustrative of the principles of the disclosure. It is therefore to be understood that numerous modifications may be made to the examples and that other arrangements may be devised without departing from the spirit and scope of the disclosure as defined by the appended claims. Furthermore, while particular processes are shown in a specific order in the appended drawings, such processes are not limited to any particular order unless such order is expressly set forth herein. Rather, various steps can be handled in a different order or simultaneously, and steps may be omitted or added.