Order transaction method and system
Patent Information
- Application Number
- JP2023208366
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2013-11-07
- Filing Date
- 2023-12-11
- Publication Date
- 2025-03-13
- Estimated Expiration
- 2034-03-31
Smart Images

Figure 0007645347000001
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of U.S. Provisional Application No. 61 / 865,557, filed August 13, 2013, to Jacob Loveless, and U.S. Provisional Application No. 61 / 901,438, filed November 7, 2013, to Jacob Loveless, both of which are incorporated herein by reference in their entirety.
[0002] Some embodiments relate to matching and / or trading items. [Background technology]
[0003] The system may be used for electronic matching and / or trading of items between users. Summary of the Invention
[0004] According to an exemplary embodiment, a method includes receiving a first order and a second order for an item, the first order associated with a first user and the second order associated with a second user, the first order and the second order having the same associated price, the first order received at an earlier time than the second order, a fill level associated with the first order and a fill level associated with the second order, receiving commands to buy or sell the item, the commands having an associated threshold value, and the fill level associated with the first order being less than the threshold value. determining, as a result of determining that the fill rate associated with the first order is less than the threshold, comparing the fill rate associated with the second order to the threshold, disregarding the first order; determining that the fill rate associated with the second order is greater than or equal to the threshold; communicating the trade command to the second user as a result of determining that the fill rate associated with the second order is greater than or equal to the threshold; and receiving, in response to communicating the trade command to the second user, an indication that the second user wishes to trade against the trade command.
[0005] According to an exemplary embodiment, a method includes receiving a first order and a second order for an item, wherein the first order is associated with a first user and the second order is associated with a second user, the first order and the second order have the same associated price, the first order is received at an earlier time than the second order, a fill level is associated with the first order, a fill level is associated with the second order, the fill level associated with the second order is higher than the fill level associated with the first order, and the first ordering the second order over the first order in an order book based at least in part on the fill rate associated with the second order being higher than the fill rate associated with the first order; receiving commands to buy and sell the item; communicating the trade command to the second user based at least in part on ordering the second order over the first order in the order book; and receiving an indication that the second user wishes to trade against the trade command in response to communicating the trade command to the second user.
[0006] The above advantages and features are of representative examples only and are presented solely to aid in understanding the invention. They are not to be considered limitations of the invention as defined in the claims. Additional advantages and features of embodiments of the invention will be apparent from the following description, drawings, and claims. [Brief explanation of the drawings]
[0007] [Figure 1] 1 illustrates an exemplary distributed matching engine, according to some embodiments. DETAILED DESCRIPTION OF THE INVENTION
[0008] 1, an exemplary system 100 according to an exemplary embodiment is shown. System 100 may include one or more computing systems (e.g., servers) 101-106. Computing systems 101-106 may be referred to herein as servers for purposes of explanation. However, it should be understood that use of the term server is non-limiting and that other types of computing systems may be used.
[0009] Each server 101-106 may include one or more processors and one or more memories, which may include one or more databases. Each server may include one or more network hardware / software / firmware-based interfaces that allow the server to connect to and communicate through network 110. Network 110 may include public and / or private network(s) and may be a wired and / or wireless network based on any type of technology. Network 110 may also include a bus and / or backplane-type architecture. Network 110 may include one or more elements, including routers, switches, etc. Network 110 may be configured to allow at least each of servers 101-106 to communicate with the others. Network 110 may also be configured to allow servers 101-106 to communicate with other computing systems (e.g., computing system 150) that may be on network 110 or on other networks not shown in FIG. 1 but accessible via network 110. As one example, network 110 may be a private network that interfaces with, for example, one or more other private and / or public networks via one or more routers / switches / etc., thereby allowing, for example, any one of servers 101-106 to communicate with other computing systems on such networks. One or more of servers 101-106 and network 110 may be configured to support unicast, broadcast, and / or multicast communications. Multicast communications may include IP multicasting, although other types of multicasting may also be used. Multicasting may be reliable or unreliable multicasting. Those skilled in the art will appreciate that the above description of servers 101-106 and network 110 is merely exemplary and that additional and / or other server / network configurations and functionality may be used.For example, in addition to network 110, one or more of servers 101-106 may also include one or more additional network hardware / software / firmware-based interfaces that enable the server to connect to or communicate through one or more other public and / or private networks not shown in FIG. 1.
[0010] One or more of the servers 101-106 in the system 100 may be similarly and / or substantially similarly configured with respect to hardware (e.g., processor configuration, number of processors, processor speed, memory size, memory speed, etc.) and / or system software (e.g., operating system) and / or network interface(s) speed. Similarly, the ability of one or more of the servers 101-106 to communicate with any other servers over the network 110 may be the same. One or more of the servers 101-106 may be co-located in the same rack, room, building, etc. Additionally, the network elements that make up the network 110 may also be co-located with the servers 101-106. Again, further and / or other configurations are possible. For example, each server may have different performance capabilities.
[0011] System 100 may be referred to as a cloud computing system. System 100 may be owned and / or partially owned and / or maintained / operated by one or more entities that lease or rent resources of system 100 to one or more other users / customers, such as users A-F. Users A-F may be individuals and / or companies, such as banks, investment funds, trading companies, etc. Alternatively and / or in addition, one or more of users A-F may own the resources of system 100. As an example, server 101 may be leased to or owned by user A, server 102 may be leased to or owned by user B, server 103 may be leased to or owned by user C, server 104 may be leased to or owned by user D, server 105 may be leased to or owned by user E, and / or server 106 may be leased to or owned by user F. Generally, each server 101-106 may be assigned to a particular user who has access to that server's resources. A given user may be associated with / lease / own multiple servers in system 100. According to one embodiment, system 100 may be scalable, with additional servers being added to the system, which may be leased or owned by users A-F and / or new users. System 100 may be configured so that the addition and / or removal of one or more servers does not affect other users. As another example, a given server may be leased / rented to multiple different users who have no association with each other. The servers may be configured so that use of the server by one of the users does not affect other users, and vice versa.
[0012] According to one embodiment, system 100 may operate and / or be configured as a trading or matching system, and in particular a decentralized trading / matching system, that enables users, such as users A-F, to trade and / or buy and sell one or more items with one another. The item(s) traded on system 100 may be owned by one or more of users A-F of the system. Alternatively and / or in addition, one or more of users A-F may be principals and / or brokers and / or agents, e.g., acting on behalf of entity(ies) that may own the item(s). The traded items may include tangible and / or intangible items. According to one embodiment, system 100 may be configured to trade one or more financial instruments, including, for example, fixed-income securities, stocks, foreign exchange, etc. Thus, each of users A-F may use system 100 to trade one or more financial instruments with one or more other users of the system. Those skilled in the art will appreciate that other types of items may be traded and / or bought / sold via system 100, such as, for example, real estate (e.g., land, homes, and / or buildings), consumer goods (e.g., automobiles, electronics), tickets (e.g., airplanes, concerts), etc. Those skilled in the art will appreciate that system 100 may operate as / be configured as other type(s) of system(s) in addition to and / or as an alternative to a trading or matching system.
[0013] One or more of the servers 101-106 may also include one or more applications 120a-f executing thereon (e.g., stored in memory). As one example, the applications 120a-f may be referred to herein as matching engines, although other and / or additional types of applications are possible. The matching engines 120a-f may enable users A-F to buy / sell items between each other. The matching engines 120a-f may be software- and / or firmware- and / or hardware-based applications executing on the servers 101-106. Each server may include one and / or more matching engines. Each server may include additional and / or other applications. The matching engine(s) of each server 101-106 may be the same and / or substantially the same application, or may be different applications. For example, each matching engine may implement a similar matching algorithm. As another example, different matching engines may implement different matching algorithms. Matching engines 120a-f may be developed / maintained by the entity(ies) that own / operate system 100. Such entities may also develop / maintain other and / or additional applications that run on each server.
[0014] Each server may also include (e.g., stored in memory) one or more applications 122a-e executing thereon that are associated with users, such as users A-E. Applications 122a-e may be referred to herein as trading applications, although other and / or additional types of applications are possible. According to another embodiment, one or more trading application(s) (e.g., application 122f) may not execute on servers 101-105. Rather, the applications may execute on a computing system, such as computing system 130, that is connected to a server, such as server 106. Computing system 130 may or may not be co-located with server 106 and / or other elements of system 100. Computing system 130 and server 106 may communicate over one or more private and / or public networks 131. According to another embodiment, computing system 130 and server 106 may communicate over network 110. According to one embodiment, computing system 130 may be owned and operated by the entity that owns and operates system 100. According to another embodiment, computing system 130 may be owned and operated by a user (here, User F) associated with the server to which the computing system connects. Those skilled in the art will appreciate that these configurations are merely exemplary and that other and / or additional configurations are possible. For example, each server 101-105 / computing system 130 may include one and / or more trading applications. Each server 101-105 / computing system 130 may also include additional and / or other applications associated with users, such as Users A-F.
[0015] According to one embodiment, each trading application 122a-f may be configured to interact with matching engines 120a-f, respectively, to enable users A-F of system 100 to trade items. Each trading application 122a-f may be an automated trading algorithm that executes a trading strategy, e.g., generating trading orders (e.g., bids, offers, hits, sales amounts) on behalf of a respective user A-F. Each trading application(ies) on a given server may be configured to trade one or more items. Each trading application 122a-f may be a software- and / or firmware- and / or hardware-based application that executes on each respective server 101-105 / computing system 130. Each trading application may be different from the other trading applications and may be developed by the user to whom the respective server is assigned. For example, user A may develop trading application 122a and have that application loaded (e.g., via an administrative application) on server 101 where the application executes. Similarly, user B may develop trading application 122b and have that application loaded / have that application (e.g., via an administrative application) onto server 102 where the applications execute. Additionally and / or alternatively, trading applications 122a-f may be general applications (e.g., APIs) provided by the entity(ies) that own / operate system 100. In each instance, each respective user A-F may customize their respective application to meet their respective needs (e.g., the user connects through an API that interfaces with their respective server, etc., either through a computing system remote from their respective server, through an administrative application, and / or through a user interface device (keyboard / mouse / etc.)). Those skilled in the art will recognize that these configurations are merely examples and that other and / or further configurations are possible.For example, rather than trading applications 122a-f being automated trading algorithms that execute trading strategies, one or more of trading applications 122a-f may enable a respective user(s) to interface with system 100 and generate orders. For example, a respective user (connected to a respective server, etc., through a remote computing system and / or through a user interface device (keyboard / mouse / etc.)) may be able to manually submit orders to a respective matching engine of a server.
[0016] As discussed, matching engines 120a-f along with respective trading applications 122a-f on each server may enable users A-F to trade items among one another. As one example, a single instance of a matching engine may be configured to trade one particular item (e.g., a 10-year record). Thus, if a given user A-F wishes to trade multiple different items (e.g., a 5-year and a 10-year record), each server may have multiple instances of matching engine 120 running, each communicating with one or more instances of a respective trading application 122. As another example, a single instance of a matching engine may be configured to trade multiple items, and the matching engine may communicate with one or more instances of a respective trading application. Those skilled in the art will appreciate that these are merely examples, and that other and / or further configurations are possible. For example, if a given server is used by multiple different users, the server may have multiple instances of a matching engine configured to trade the same item but for different users. For purposes of discussion only, matching engine 120 will be described as enabling the trading of one item.
[0017] According to one embodiment, for a given user A-F who wishes to trade a given item, matching engine 120a-f of each server may maintain / be configured to maintain order book 124a-f for that item on the server. In one example, each order book may be maintained in the memory of the respective server. For example, if users A-E each wish to trade a given item, each server 101-105 may have order book 124a-e for that item. If user F does not wish to trade that item, server 106 may not have an order book for that item. In this manner, the order book for a given item may be distributed or decentralized across multiple servers. Similarly, if each of users A-E also wishes to trade a second item, matching engine(s) 120a-e of each server 101-105 may also maintain a second order book for the second item on the server. Those skilled in the art will appreciate that additional and / or other order book configurations are possible.
[0018] According to a further embodiment, for each item that may be traded through system 100, that item may be assigned a port (e.g., an Internet Protocol (IP) port) or channel on network 100. For example, a first item may be assigned port “x,” a second item may be assigned port “y,” and so on. As discussed further herein, some or all of the communication between servers 101-106 through network 110 regarding the first item may occur via port “x,” and similarly, some or all of the communication between servers 101-106 through network 110 regarding the second item may occur via port “y.” According to a further embodiment, when a given user (here, say A) desires to trade a first item and a second item, server 101 / matching engine(s) 120a may be configured to send and / or receive (and / or listen, monitor, etc.) messages / commands / information / data on ports “x” and “y.” In this manner, User A may send / receive information / data regarding two items (e.g., through trading application 122a). Similarly, for example, if User A desires to trade a first item but not a second item, server 101 / matching engine(s) 120a may be configured to send and / or receive (and / or listen, monitor, etc.) messages / commands / information / data on port “x” but not on “y.” In this manner, for example, server 101 / User A can choose not to receive messages / commands / information / data on the second item, to which it has no interest. Similarly, if User A later desires to receive information on the second item (e.g., through trading application 122a), server 101 / matching engine(s) 120a may be configured to send and / or receive (and / or listen, monitor, etc.) messages on port “y.”According to one embodiment, trading application 122a-f (possibly through user control) may determine which items will be traded and / or not traded, and in this manner may control the configuration of each server / matching engine(s) with respect to, for example, which port(s) are monitored and for which items order books are maintained. As another example, a user (e.g., through an API that the user interfaces with either through a computing system remote from each server, connected to each server, etc., through a management application, and / or through a user interface device (keyboard / mouse / etc.)) may control the configuration of each server / matching engine(s) with respect to, for example, which port(s) are monitored and for which items order books are maintained.
[0019] According to an exemplary operation of system 100, if a user / trading application, such as user A / trading application 122a, is interested in trading a given item (here, item “w”), user A / trading application 122a may generate a bid or offer order for item “w” (the order including a price and / or size). Trading application 122a may forward the order to matching engine 120a, which may place the order in order book 124a (i.e., the order book at server 101 for item “w”). This order is shown in FIG. 1 as order 140 in order book 124a. According to an exemplary operation of system 100, because user A generated order 140, matching engine 120a may be involved in controlling the execution of the order for order 140 (e.g., matching a contra order to order 140). According to further exemplary operation of system 100, matching engine 120a may also multicast order 140 over network 110 via a port assigned to item "w." The multicasted order may include some indication that it originated from user A / trading application 122a / matching engine 120a and / or server 101. For each other user / server on system 100 that may be interested in item "w" and therefore configured to receive on the port for that item, the respective matching engine may receive order 140 and place the order in its respective order book for the item. For example, user B / trading application 122b and user C / trading application 122c may be interested in item "w," and therefore matching engines 120b and 120c may be configured to receive order 140 and place the order in respective order books 124b and 124c (as shown in FIG. 1 by 140' and 140"). Similarly, matching engines 120b and 120c may record some indication that the order originated from user A / trading application 122a / matching engine 120a / and / or server 101.Matching engines 120b and 120c may also forward information about order 140 to trading applications 122b and 122c and / or users B and C, respectively. Order 140 may be made known to users B-C / trading applications 120b-c, but the origin of the order (i.e., user A's identity) may or may not be made known depending on whether system 100 is an anonymous matching system.
[0020] Similarly, if user B / trading application 122b generates an order for item "w," trading application 122b may forward the order to matching engine 120b, which may place the order in order book 124b (i.e., the order book at server 102 for item "w"). This order is shown in FIG. 1 as order 142 in order book 124b. Because user B generated order 142, matching engine 120b may be involved in controlling order execution for order 142 (e.g., matching a contra order to order 140). Matching engine 120b may also multicast order 142 over network 110 via a port assigned to item "w." The multicasted order may include some indication that it originated from user B / trading application 122b / matching engine 120b / and / or server 102. For each other user / server on system 100 that may be interested in item "w" and thus configured to receive on a port for that item, the respective matching engine may receive order 142 and place the order in its respective order book for the item. For example, as discussed, because user A / trading application 122a and user C / trading application 122c are interested in item "w," matching engines 120a and 120c may receive order 142 and place the order in their respective order books 124a and 124c (as shown in FIG. 1 by 142' and 142"). Similarly, matching engines 120a and 120c may record some indication that the order originated from user B / trading application 122b / matching engine 120b and / or server 102. Matching engines 120a and 120c may also forward information about order 142 to trading applications 122a and 122c and / or users A and C, respectively.
[0021] According to further exemplary operation of system 100, if user A / trading application 122a later cancels all or part of order 140, it may generate a cancel command for the order, which may be forwarded to matching engine 120a. Matching engine 120a may in turn cancel the order from its order book 124a and multicast the cancel command over network 110 via a port assigned to item "w." The cancel command may include some indication that it originated from user A / trading application 122a / matching engine 120a and / or server 101 so that other servers know which order the cancel command refers to. For each other user / server that may be interested in item "w" and therefore configured to receive on the port for that item, the respective matching engine may receive the cancel command and cancel the respective order from its respective order book. For example, matching engines 120b-c may receive the cancel command and cancel order 140 from order books 124b-c. Matching engines 120b-c may also notify trading applications 122b-c and / or users B and C that order 140 is unavailable.
[0022] Assuming that the bid / offer order 140 from User A has not been cancelled, User B / trading application 122b may generate a trade command / counterorder / counterorder, such as a match / sales order for the order (where the match / sales order may include a price and size) (as another example, the trade command may be a bid or ask that intersects / matches order 140 at a particular price, etc.). Trading application 122b may forward the trade command to matching engine 120b, which may search its order book 124b for matching orders, which may recognize / determine that the command matches at least order 140 from User A (matching engine 120b, recognizing that order 142 originated from User B, may not attempt to match the trade command against order 142). In response, matching engine 120b may multicast the trade command over network 110 via the port assigned to item "w." In addition to adding some indication that the trade command originates from, for example, User B / trading application 122b / matching engine 120b / and / or server 102, as described, the trade command may be tagged / designated / directed specifically to User A / trading application 122a / server 101 / and / or matching engine 120a because matching engine 120a may be interested in executing against orders originating from User A / server 101. Those skilled in the art will appreciate that other media may be used to inform matching engine 120a that the trade command is for an order that matching engine 120a may be interested in executing against. In accordance with one exemplary operation of system 100, other servers / matching engines may receive the multicast trade command (e.g., those listening on the port assigned to item "w") and may ignore the command that they recognize as being designated for User A / trading application 122a / server 101 / and / or matching engine 120a.According to another exemplary operation of system 100, such servers / matching engines may receive multicast trade commands and provide notifications of potential trades to their respective trading applications and / or users. According to one embodiment, the actual trade commands may be encrypted.
[0023] According to a further embodiment, if additional orders exist in an order book 124b that is not User B's, and the trade command from User B / trading application 122b is of a size greater than order 140 and / or is thereby directed to these other order(s), matching engine 120b may also multicast the additional trade command(s) (tagged to the servers, etc., involved in the additional order(s)) over network 110 via the port assigned to item "w." As another alternative, matching engine 120b may use the same trade command tagged to User A / trading application 122a / server 101 / and / or matching engine 120a, and may also tag it to the servers, etc., involved in the additional order(s). Those skilled in the art will appreciate that other variations are possible.
[0024] Upon receiving the trade command, server 101 / matching engine 120a may recognize that the command is tagged. Matching engine 120a may then determine whether order 140 is still available (e.g., whether it has not been canceled and / or acted on by another user, whether it is still in the order book 124a, etc.). If it is still available, matching engine 120a may execute the trade command on order 140 by removing order 140 from its order book 124a (or, if not all of it has been acted on, reducing the available quantity of order 140 in the order book). Matching engine 120a may also communicate with trading application 122a and / or user A to indicate that order 140 has been acted on. Furthermore, matching engine 120a may multicast a trade confirmation message over network 110 via the port assigned to item "w." The structured message may include an indication of the amount of order 140 that was actually executed. The confirmation message may be specifically tagged to User B / trading application 122b / matching engine 120b / and / or server 102. Upon receipt of the confirmation message, matching engine 124b can remove order 140 (or portion thereof) from its order book 124b and can also notify User B and / or trading application 122b of the matched order. In addition to User B, all other users / servers / matching engines interested in item "w" may receive the confirmation message and may cause their respective matching engines to remove order 140 (or portion thereof) from their order books. Such matching engines can also notify their respective users and / or trading applications of the matched order. That is, matching engine 120c can remove order 140 from its order book 124c and can also notify trading application 122c and / or User C.According to another and / or further embodiment, in addition to matching engine 120a multicasting a confirmation message, it may also multicast some other command (such as a cancel command) that causes other matching engines (such as engine 120c) to remove order 140 from their order books. Those skilled in the art will appreciate that other and / or further command sequences may be used.
[0025] As another example, if, upon receiving a trade command from User B as discussed above, matching engine 120a determines that order 140 is not yet available (e.g., it has been canceled and / or another user has already executed on the order, etc.), it may multicast a cancellation message regarding order 140 and / or a message (which may be specifically tagged to User B / trading application 122b / matching engine 120b / and / or server 102) specifically specifying that the trade is unconfirmed and / or that the trade failed and / or the trade was not executed, etc. Regardless, the effect of the message(s) may be for all applicable matching engines to remove order 140 from their respective order books. Again, each trading application and / or user may be notified by their respective matching engine that command 140 is unavailable. Trading application 122b and / or User B may be specifically notified that the trade failed.
[0026] According to another embodiment, after matching engine 120a may determine that order 140 is still available, as discussed above, matching engine 120a may first communicate with trading application 122a and / or user A to determine whether there is still desire to execute on order 140. If so, matching engine 120a may proceed as discussed above with respect to generating a confirmation message, etc. As another example, trading application 122a and / or user A may indicate that there is desire to execute on order 140, but that the desire is of a size less than the available size of order 140 (i.e., less than the size requested by the trade command). That is, again, matching engine 120a may proceed as discussed above with respect to generating a confirmation message, such as a message indicating the size of order 140 that has been executed thereon. As another example, if there is no desire by User A and / or trading application 122a to execute on order 140, matching engine 120a may remove order 140 from order book 124a and then proceed as discussed above with respect to generating a canceled and / or unconfirmed message, which may result in order 140 being removed from other order books. Again, respective trading applications / users on other servers may be notified by their respective matching engines that command 140 is unavailable. They may also be notified that order 140 is pending, but that the respective originator of the order (i.e., User A) no longer wishes to execute on the order. Those skilled in the art will appreciate that other and / or further message flows are possible, regardless of execution on order 140 or non-execution on order 140.
[0027] In accordance with further aspects of the exemplary operation discussed above, for example, if user C / trading application 122c generates a trade command for order 140 at a time substantially similar to user B / trading application 122b as discussed herein, matching engine 120c may multicast the trade command over network 110 in a manner similar to matching engine 120b. In such an event, matching engine 120a may receive two trade commands for order 140 (one from user B and one from user C), and each may necessarily queue one in front of the other, depending on which arrives at server 101 first. Again, because matching engine 120a may be responsible for controlling execution for orders originating from user A / server 101 (here, e.g., order 140), matching engine 120a may execute order 140 for only one of user B and user C, depending on which arrives at server 101 first (assuming both users attempt to execute full-size order 140). Matching engine 120a may, for example, send a non-confirmation to the other's trading command. As another example, the trading command of one of User B and User C may be fully executed, while the other may only be partially executed if order 140 is not large enough to fill both. Those skilled in the art will appreciate that other variations are possible.
[0028] Those skilled in the art will appreciate that the above-described exemplary operations of system 100 are examples and that other and / or additional exemplary operations are possible. For example, an item may be associated with multiple ports, channels, etc. on network 100. For example, for a given item, one port may be used to multicast only bids for that item, another port may be used to multicast only wins for that item, another port may be used to multicast only trade commands / reverse orders / counter orders (e.g., wins / sales orders) for that item (or one port may be used for wins and the other for sales orders), another port may be used to multicast trade confirmation messages for that item (or, e.g., one port may be used for trade confirmations for wins and the other for trade confirmations for sales orders), another port may be used to multicast unconfirmed trade messages for that item (or, e.g., one port may be used for unconfirmed trades for wins and the other for unconfirmed trades for sales orders), another port may be used to multicast cancel bid messages for that item, and / or another port may be used to multicast cancel win cancellation messages for that item, including, e.g., other combinations of these, and ports for other messages. Again, other variations are possible.
[0029] According to a further exemplary feature, system 100 can eliminate the need to create drop copies. For example, with matching engine 120a generating a trade confirmation message as described herein, other computing system(s) (represented by computing system 150) connected to network 110 can receive these messages, in addition to other matching engines 120b-f potentially receiving the message and updating their respective order books 124b-f. These other computing systems may or may not be associated with the user / customer seeking to use system 100 for trading items. For example, computing system 150 may be associated with a clearing house that can clear transactions, such as the exemplary transaction between users A and B discussed herein.
[0030] According to further exemplary features of system 100, for example, if a trading application (e.g., application 122e) begins submitting bids and / or offers for items, e.g., at prices outside the market, and there is a need to stop trading application 122e and potentially remove these bids and offers from the market, server 105 may be considered offline. Considering server 105 offline may include, for example, considering the entire server offline (e.g., by command from an administrator), shutting down / stopping / pausing matching engine 120e, or causing matching engine 120e / server 105 to no longer listen on / receive on / transmit through ports associated with items. Among other actions, each may cause trading application 122e to be unable to submit any more orders. Similarly, because matching engine 120e may be involved in controlling the execution of trade commands for orders submitted by trading application 122e, each of the above actions will no longer cause matching engine 120e to do so. For example, by having matching engine 120e / server 105 no longer listen / receive on the port associated with the item, matching engine 120e will not receive trade commands. Those skilled in the art will appreciate that these are merely examples and that other and / or further exemplary features of system 100 are possible.
[0031] Forex Trading In foreign exchange ("FX") trading, a market may be considered to consist of multiple users, one or more of which may be considered liquidity providers ("Providers") and one or more of which may be considered liquidity takers ("Takers"). Those skilled in the art will appreciate that a user may be both a Provider and a Taker. A Provider may create one or more markets for one or more FX instruments by submitting or streaming one or more orders, e.g., bids and / or offers for the FX instruments, each having a price and a size. Each order may be made available / shown to one or more Takers. In response, a Taker may attempt to execute on the order by submitting a buy / sell trade command, e.g., a sell order or an offer (as another example, a Taker may attempt to execute on the order by submitting a bid or offer). A trade command may include a specific price and size. The size of a trade command may be consistent with similar orders being executed against it, or it may be smaller. In response to submitting a trade command for an order, the command may be sent / forwarded to the provider that submitted the order. A process that may hereinafter be referred to as a "second look" may occur. A second look may submit an order to give the provider a second opportunity to decide whether or not it still wants to trade, rather than a trade command to execute the order if the order is still available. In response to receiving a trade command, the provider may respond with an "execute" command, for example, meaning that the provider wants to trade in a market created by the provider according to the submitted order. The execution command may include a size that may match the size of the submitted order, or a smaller size. The execution command may result in a trade command being executed for the order and a corresponding trade being executed between the provider and the taker.As another alternative, the provider may respond to the taker's trade command with a "no execute / not execute" command, meaning, for example, that the provider does not want to trade in the market made by the provider identified by the order. In this case, the trade command cannot be executed for the order, and a trade cannot be executed between the corresponding provider and the taker. As a third example, the provider may not respond to the trade command at all (with an execute or not execute command), or may take a long time to respond to the trade command. The taker may then retract or cancel the trade command. Assuming the trade command is retracted before the provider responds with an execute command, the trade command cannot be executed for the order, and a trade cannot be executed between the corresponding provider and the taker. In the last two cases, if the taker wishes to execute the trade, they may need to resubmit another trade command for another order.
[0032] According to embodiments discussed herein, system 100 may be used to trade one or more foreign exchange (“FX”) products. For example, using the methods discussed herein, a provider of system 100 (e.g., User A and / or trading application 122a acting on behalf of User A) may create a market for an FX product by submitting or streaming one or more orders, e.g., bids and / or offers for the FX product, each having a price and a size. As discussed above, for example, each order may be forwarded from the provider's server (e.g., User A's server 101) to one or more other servers. Assuming a server, such as User B's server 102, is configured to receive orders for the FX product, a corresponding matching engine of server 102, such as engine 120b, may receive the order and record it in a respective order book 124b. The matching engine may then forward the received order information to User B and / or trading application 122b. In response to receiving the order, User B and / or trading application 122b may attempt to execute on the order (thereby becoming a taker), for example, by submitting a trade command for the order. The trade command may include a specific price and size. As discussed herein, for example, in response to submitting a trade command for an order and / or command matched to the order, the command may be sent / forwarded to server 101 or matching engine 120a. According to a second look, rather than matching engine 120a executing a trade command for the order (assuming the order is available), matching engine 120a may first communicate with trading application 122a and / or User A to determine whether there is a desire to hold the market identified by the order. Assuming trading application 122a and / or User A desire to hold the order, an execution command may be communicated from trading application 122a and / or User A to matching engine 120a.It may execute a trade command for the order (e.g., for the size specified by the execute command) and then generate a confirmation message, etc., as discussed above. As another example, assuming trading application 122a and / or User A desires to maintain the market specified by the order, a no-execute / no-execute command may be communicated from trading application 122a and / or User A to matching engine 120a. Then, according to an embodiment as discussed herein, matching engine 120a may communicate a cancel message for the order and / or an unconfirmed trade and / or an order and / or message that specifically specifies that the trade failed and / or the trade was not executed, etc. As another alternative, assuming trading application 122a and / or User A do not desire to maintain the market specified by the order, trading application 122a and / or User A may not communicate any message to matching engine 120a. As yet another example, User B and / or trading application 122b may retract the trade command, for example, communicating a request to matching engine 120b. This may in turn communicate the retraction request to, for example, at least server 101 and matching engine 120a, which may in turn ignore further action with respect to the trade command. Those skilled in the art will appreciate that the exemplary operation of system 100 with respect to foreign exchange trading as discussed above is merely exemplary and that other and / or additional exemplary operations are possible.
[0033] According to an embodiment as discussed herein, assume that three providers, e.g., users A, C, and D, each submit orders for instruments at the same price, e.g., with A's order having a size of 10, C's order having a size of 5, and D's order having a size of 5. Further assume that each order is forwarded to user B's server 102 and stored in order book 124b as discussed above. Further, assume that A's order has time priority over C's order, which has time priority over D's order. In response to receiving the orders, user B and / or trading application 122b may submit trade commands for instruments at the prices of the three orders and in sizes of 20. According to an embodiment as discussed herein, matching engine 120b may forward a trade command to server 101 / matching engine 120a of size 5 (thereby executing against order A), may forward a trade command to server 103 / matching engine 120c of size 10 (thereby executing against order C), and may forward a trade command to server 104 / matching engine 120d of size 5 (thereby executing against order D). Matching engine 120b may forward three trade commands substantially simultaneously. For example, matching engine 120b may not wait for a confirmation or unconfirmed message from user A's server 101 before forwarding the trade command to each of users C's and D's servers 103 and 104. As another example, assuming that User A does not respond to execution commands or unexecuted commands except for sizes less than 10, matching engine 120b of server 102 may automatically attempt to fulfill User B's trading commands by forwarding other trading commands to User C or User D, who are part of the insufficient size. As another alternative, assuming that User A does not respond to execution commands or unexecuted commands except for sizes less than 10, matching engine 120b of server 102 may automatically attempt to fulfill User B's trading commands by forwarding other trading commands to User C or User D, who are part of the insufficient size.As another example, assume that in addition to orders from users A, C, and D, there is another order from user E with a size of 10. Now, rather than matching engine 120b attempting to fulfill user B's trading command through user C and / or user D, matching engine 120b may automatically attempt to fulfill user B's trading command by forwarding the other trading command to user E for which it has insufficient size or a portion of each. Again, those skilled in the art will understand that the above is an exemplary operation of system 100 and that other variations are possible.
[0034] From the taker's perspective, it is undesirable to have the provider respond with a trade command that has an unexecuted order, or to have the provider take time to respond to the trade command, or not respond at all, although this may result in the taker retracting the trade command. In these cases, the result is the taker not executing the desired trade, or the taker executing the trade, which takes time, by seeking out another provider to trade by executing against other orders.
[0035] As another example, a given provider's response and / or non-response and / or delayed response to executed and unexecuted commands may be measured to determine the provider's sufficiency. A provider's sufficiency may be viewed, for example, as the number of trade commands the provider has informed the provider that it has the ability to accept, relative to the total number of trade commands the provider has informed the provider that it has the ability to accept. Sufficiency may be determined, for example, by measuring the number of trade commands the provider has informed the provider that it has the ability to accept, divided by the total number of trade commands the provider has informed the provider that it has the ability to accept. The resulting value may be between 0 and 1, inclusive, and may be expressed as a percentage value (i.e., multiplied by 100). For example, if 10 trade commands are sent to a provider and the provider responds to all 10 trade commands with execution commands that result in executed trades, the provider may have a 100% sufficiency. As another example, if 10 trade commands are sent to a provider and the provider responds to seven of them with execute commands that result in executed trades, the provider may have a 70% fill rate. As another example, if 10 trade commands are sent to a provider and the provider responds to three of them with execute commands that result in executed trades, four with unexecuted commands, does not respond to the other trade commands, and responds to the other trade commands with execute commands but takes time and responds after the taker submits a retract command, the provider may have a 30% fill rate (because three of the 10 trade commands result in executed trades). As another example, if trade commands for an order are sent to a provider and the order is canceled and / or executed by the provider prior to receipt of the trade commands, the unexecuted trade commands may not adversely affect the provider's determined fill rate. Those skilled in the art will understand that fill rate may be defined and determined in other ways.
[0036] According to another and / or further embodiment, sufficiency may be determined and updated for a provider so that the provider's entire history of responding to trade commands is taken into account, regardless of time. According to another and / or further embodiment, sufficiency may be determined and updated for a provider over a particular duration, such as a particular hour, a particular day, etc. For example, the duration may be a trading day in advance rather than a market open day. Here, sufficiency may be determined / updated at the end of each trading day, for example, by considering only the provider's responses to trade commands during that trading day. As another example, the duration may be measured over a running duration, such as the last x hours. Here, sufficiency may be determined / updated hourly by considering trade commands over the last x hours. Those skilled in the art will appreciate that sufficiency may be defined and determined in other manners, as discussed herein. For example, if a provider responds to a trade command with an execution command but in a size less than the size specified by the trade command, this partial fulfillment may be inversely affected by the fulfillment level; in other words, if the execution command is in the same size as the size specified by the trade command, this partial fulfillment may be less than the fulfillment level. In a given market, each provider may have their fulfillment level determined in the same way, or different providers may have their respective fulfillment levels determined in different ways. Those skilled in the art will understand that other variations in fulfillment level are possible.
[0037] According to another and / or further embodiment, a given provider may have one or more sufficiencies in a given instance. For example, a provider may have one or more determined sufficiencies for each FX in which the provider makes a market. For example, for a given FX product, the provider may have one sufficiency based on how the provider responds to trade commands, regardless of the source (i.e., taker) of the trade command. According to another and / or further embodiment, for a given FX product, the provider may have multiple sufficiencies, e.g., one per taker, based on how the provider responds to trade commands from that taker. According to another and / or further embodiment, for a given FX product, the provider may have sufficiencies based on how the provider responds to trade commands from multiple takers, but not all takers to which the provider responds. According to another and / or further embodiment, the provider may have sufficiencies determined across multiple FX products. Those skilled in the art will understand that other variations are possible, including different providers having different numbers at different sufficiencies. For example, each provider may have one fulfillment level based on how the provider responds to trade commands regardless of the source (i.e., the taker), and one or more providers may have fulfillment levels related to identified takers.
[0038] According to another and / or further embodiment, the fill rate of a given provider may be determined manually and / or electronically. For example, with reference to system 100, a server, such as servers 101-106, may monitor orders generated by users and / or trading applications associated with the server and may monitor trade commands against such orders. From such measurements, the server may determine fill rate. In other words, a server associated with a given provider may determine the provider's fill rate. As one example, an application running on a server, such as matching engine 120, may perform measurements to determine fill rate. As another and / or further embodiment, a server, such as servers 101-106, may monitor trade commands generated by users and / or trading applications associated with the server and may monitor orders against trade commands resulting from such measurements and determine fill rate. In other words, a server assigned / associated with a given taker may determine the provider's fill rate. As one example, an application running on a server, such as matching engine 120, may perform measurements to determine fill levels. As another and / or further example, a system server not associated with a user, such as server 150, may monitor orders, trade commands, etc., and determine the fill levels of providers of system 100. As another and / or further example, one or more servers of system 100 may monitor orders, trade commands, etc. Thus, for example, an administrator may manually determine the fill levels of providers of system 100. Those skilled in the art will appreciate that fill levels may be determined in other and / or additional ways.
[0039] According to another and / or further embodiment, the sufficiency of a given provider may be made available to other servers in system 100, i.e., other servers and / or additional servers associated with the given provider. For example, if an administrator of system 100 determines the sufficiency, the administrator may configure / make such sufficiency available to one or more servers in system 100. As another and / or further embodiment, if a server in system 100, such as server 150, determines the sufficiency, the server may communicate the sufficiency to one or more servers in system 100. As another and / or further embodiment, if a server associated with a given provider determines its sufficiency, the server may communicate the sufficiency to one or more other servers in system 100. As one example, the sufficiency of a provider may be included in orders generated by that provider. Those skilled in the art will understand that the sufficiency may be communicated in other and / or additional ways.
[0040] According to another and / or further embodiment, if the provider's fillability is communicated / made available to a server, for example, the fillability may be signaled by the server's matching engine, but not by the server's trading application and / or user. According to another and / or further embodiment, the fillability may be signaled by the trading application and / or user. According to another and / or further embodiment, if a received order is communicated to a respective trading application and / or user by a matching engine, the provider's fillability resulting from the order may also be communicated by the trading application and / or user.
[0041] Those skilled in the art will appreciate that the determination and use of fill levels discussed herein is not limited to distributed structures such as system 100. For example, the use of fill levels may also be applied to centralized order books. Here, for example, a centralized trading system (e.g., a central server that maintains order books and order receipts and controls the execution of trade commands for such orders) may determine provider fill levels, and such a server may communicate the fill levels to computer systems used by end users.
[0042] According to another embodiment, assume that three providers, e.g., users A, C, and D, each submit orders for instruments at the same price, e.g., with order A having a size of 10, order C having a size of 5, and order D having a size of 5. Further assume that each order is forwarded to user B's server 102 and placed in order book 124b as discussed above. Further assume that order A has time priority over order C, which has time priority over order D. Further assume that user A has 70% fillability, user C has 80% fillability, and user D has 90% fillability. In response to receiving the orders, user B and / or trading application 122b may submit trade commands for instruments at the prices of the three orders and a size of 10. According to one embodiment, matching engine 120b may prioritize orders of users A, C, and D in order book 124b based on the price and the time at which the orders were submitted to the market. Here, User A's order may take priority over User C's order, which may take priority over User D's order. Here, in response to a trade command from User B, because User A's order has the highest priority, matching engine 120b may forward the trade command to server 101 / matching engine 120a of size 10 (thereby executing against A's order). According to another embodiment, matching engine 120b may prioritize orders of Users A, C, and D in order book 124b based on price and current fillability (i.e., not time, regardless of whether one or more orders have the same price or associated fillability). Here, User D's order may take priority over User C's order, which may take priority over User A's order. Here, in response to a trade command from User B, because User D's order has the highest priority, matching engine 120b may forward the trade command to server 104 / matching engine 120d of size 5 (thereby executing against D's order). Furthermore, matching engine 120b may attempt to fulfill the remaining magnitude of 5 in the trade command for User D.Furthermore, matching engine 120b may forward the trade command to server 103 / matching engine 120c for the remainder of the size of 5 (thereby executing against order C) because order C has the next highest priority. Again, those skilled in the art will appreciate that the above is an exemplary operation of system 100 and that other variations are possible.
[0043] According to another example, assume that three providers, e.g., users A, C, and D, each submit orders for a product at different prices, e.g., with A's order having a better price than C's order and C's order having a better price than D's order (better meaning, e.g., a higher price in the case of a bid and a lower price in the case of a win). Further assume that each order is forwarded to user B's server 102 and placed in order book 124b as discussed above. Further assume, e.g., A's order has a time priority over C's order, which in turn has a time priority over D's order. And further assume that user A has a 70% fill rate, user C has an 80% fill rate, and user D has a 90% fill rate. According to one embodiment, matching engine 120b may prioritize orders of Users A, C, and D in order book 124b based on fillability and current price (again, time may be used as an additional factor if more than one order has the same fillability). Here, User D's order may be prioritized over User C's order, which may be prioritized over User A's order. According to one embodiment, User B and / or trading application 122b may be more interested in having their trade command filled at the price at which it is filled. Here, even if User B and / or trading application 122b do not know the respective fillability of the providers from which their orders originate, knowing which orders have priority over other orders at various prices may allow the user to select what they believe will result in better fillability than price.
[0044] According to another and / or further embodiment, one or more servers of system 100 may have thresholds corresponding to minimum fulfillment levels a user desires to achieve when submitting a trade command. In other words, for users of system 100 acting as takers, the users may define the initial fulfillment levels the users desire to achieve when submitting a trade command. A given user may have one threshold that applies to all financial instruments the user wishes to trade. As another example, a given user may have multiple thresholds, one for each instrument the user wishes to trade. Different users may have different defined thresholds or may have different defined thresholds. As one example, a user / trading application / administrator of system 100 may configure each server associated with the user with its own threshold, such as configuring each matching engine with a threshold. According to another and / or further embodiment, when a user and / or trading application submits a trade command to a respective matching engine, the order may include a threshold. For example, if User B and / or trading application 122b submits a trade command to a respective matching engine 120b for an order, the trade command may include a threshold. Those skilled in the art will recognize that other variations are possible.
[0045] According to another and / or further embodiment, when a taker (e.g., User B and / or trading application 122b) submits a trade command against an order in order book 124b submitted by a provider (e.g., User A and / or trading application 122a), matching engine 120b may, for example, compare User A's determined fill level against User B's defined threshold, and may communicate the trade command to User A's server 101 for possible execution of the trade command against the order only if User A's fill level is greater than User B's threshold (or equal to or greater than User B's threshold). Otherwise, matching engine 120b may not attempt to execute the trade command against the order. According to another and / or further embodiment, assume, for example, that order book 124b has two orders, each from different providers and each at the same price, with the first order taking priority over the second order based on timely submission to the market. Here, matching engine 120b, receiving a trade command from User B and / or trading application 120b, may first compare User B's defined threshold against the determined fill level of the provider that submitted the first order, and only if the fill level is greater than User B's threshold (or equal to or greater than User B's threshold), may communicate the trade command to that provider's server for potential execution of the trade command against the order. Otherwise, matching engine 120b may skip / ignore the first order and compare User B's defined threshold against the defined fill level of the provider that submitted the second order. Again, matching engine 120b may only communicate the trade command to the provider's server that submitted the second order for potential execution only if the fill level is greater than User B's threshold (or equal to or greater than User B's threshold). More generally, if the fill level of the order is below a defined threshold, for example, for User B, matching engine 120b receiving a trade command from User B and / or trading application 120b may skip / ignore the order in order book 124.Again, using fill levels in this manner may also be applied to centralized trading systems. Those skilled in the art will appreciate that such use of fill levels may also be applied where order books are prioritized by price and current fill levels, or by fill levels and current price.
[0046] According to another and / or further embodiment, when a provider submits an order to system 100 and the order is communicated to other servers and their respective matching engines, a given matching engine may not automatically place the order in its respective order book. For example, assume that User A and / or trading application 122a submit an order to system 100, the order is received by User B's server 102. As matching engine 120b receives the order, the matching engine may compare User A's determined fill level against User B's defined threshold. If the fill level is greater than User B's threshold (or equal to or greater than User B's threshold), the matching engine may place the order in order book 124b (thereby forwarding the order information to User B and / or trading application 122b). As another example, if the fill level is less than User B's threshold (or equal to or less than User B's threshold), the matching engine may not place the order in order book 124b (i.e., not forward the order information to User B and / or trading application 122b). In this manner, User B and / or trading application 124b will be presented with (and thereby have the opportunity to trade against) orders that have associated fill levels that meet a particular threshold. The user will not see (and thereby not have the opportunity to trade against) orders that have associated fill levels that do not meet the user's defined threshold. Additionally, for this example, different users of system 100 may have different thresholds and / or different fill levels for their respective providers, so that each server's order book for a given instrument may be different (i.e., have a different current representation of the market). Those skilled in the art will appreciate that this use of fill levels may also apply when order books are prioritized by price, current fill level, or by fill level and current price.
[0047] While the present disclosure has been described with respect to certain embodiments, generally, related methods, substitutions, and rearrangements of the embodiments and methods will be apparent to those skilled in the art. Accordingly, the above description of exemplary embodiments does not constrain the present disclosure. Other changes, substitutions, and alterations are also possible without departing from the spirit and scope of the present disclosure.
[0048] The following sections provide guidance in interpreting this specification.
[0049] I. Terminology The term "product" means a machine, manufacture, and / or composition of matter, unless expressly stated otherwise.
[0050] The term "process" means a process, algorithm, method, etc., unless expressly stated otherwise.
[0051] Each process (whether called a method, algorithm, or otherwise) inherently includes one or more steps, and thus any reference to a "step" or "steps" of a process has substantial antecedent basis in the mere description of the process or mere recitation of terms such as "process." Accordingly, any reference in a claim to a "step" or "steps" of a process has sufficient antecedent basis.
[0052] "Invention" and like terms mean "one or more inventions disclosed herein" unless expressly stated otherwise.
[0053] The terms "an embodiment," "embodiment," "embodiments," "the embodiment," "the embodiments," "one or more embodiments," "some embodiments," "certain embodiments," "one embodiment," "another embodiment," and the like mean "one or more (but not all) embodiments of the invention," unless expressly stated otherwise.
[0054] The term "variants" of the present invention means embodiments of the present invention, unless expressly stated otherwise.
[0055] The term "indicator" is used in a very broad sense: it should be understood that an "indicator" of something includes anything that can be used to determine the thing.
[0056] An indicator of a thing may include an electronic message that identifies the thing (e.g., identifying a widget by a serial number attached to the widget, identifying a widget by one or more characteristics of the widget). An indicator of a thing may include information that can be used to calculate and / or reference the thing (e.g., information identifying a machine of which the widget is a part that can be used to determine the widget). An indicator of a thing may specify a thing related to the thing (e.g., a characteristic of the thing, a name of the thing, a name of a thing related to the thing). An indicator of a thing may not specify a thing related to the thing (e.g., the character "a" may be an indicator of a widget of a computer system configured to interpret the character "a" to identify the widget). An indicator of a thing may include a sign, indicia, and / or token of the thing. An indicator may include, for example, a code, a reference, an example, a link, a signal, and / or an identifier. An indicator of a thing may include information that represents, describes, and / or otherwise specifically associated with the thing.
[0057] A translation of an indicator of an thing can be an indicator of the thing (e.g., an encrypted indicator of an thing can be an indicator of the thing). An indicator of an thing can include the thing itself, a copy of the thing, and / or a portion of the thing. An indicator of an thing can be meaningless to a thing that is not configured to understand the indicator (e.g., a person may not understand that the letter "a" indicates a widget, but that it can still be an indicator of a widget because a computer system can determine a widget from the letter "a"). It should be appreciated that an indicator of an thing can be used to determine an thing does not mean that the thing or anything is determined. An indicator of an thing can include any number of indicators of things, unless otherwise specified. An indicator of an thing may include indicators of other things (e.g., an electronic message indicating many things). (Indicator can be used as a very broad term in claim language; for example, receiving an indicator of a financial instrument.)
[0058] The term "represent" means (1) to represent, designate, represent, or serve to show, as does a word, symbol, or the like; (2) to represent or designate by some term, letter, symbol, or the like; (3) to depict, picture, or present, as does a photograph; or (4) to serve as a sign or symbol itself.
[0059] A reference to "another embodiment" in describing an embodiment does not imply that the referenced embodiment is mutually exclusive with another embodiment (e.g., an embodiment described before the referenced embodiment), unless expressly stated otherwise. Similarly, the mere fact that two (or more) embodiments are referenced does not imply that those embodiments are mutually exclusive.
[0060] One embodiment of the present invention may include, encompass, or subsume two or more other embodiments of the present invention. For example, a first embodiment including elements a, b, and c may encompass a second embodiment including elements a, b, c, and d, and a third embodiment including elements a, b, c, and e. Similarly, each of the first, second, and third embodiments may encompass a fourth embodiment including elements a, b, c, d, and e.
[0061] The terms "include" and "comprise" and variations thereof mean "including, but not necessarily limited to," unless expressly stated otherwise. Thus, for example, the sentence "a machine includes a red widget and a blue widget" means that the machine includes a red widget and a blue widget, but may possibly include one or more other items as well.
[0062] The term "consisting of" and variations thereof mean "including and limited to," unless expressly stated otherwise. So, for example, the sentence "a machine consists of a red widget and a blue widget" means that the machine includes a red widget and a blue widget, but nothing else.
[0063] The term "comprise" and variations thereof, unless expressly stated otherwise, means "to make up a component, constituent part, or element thereof." Thus, for example, the sentence "The red widget and the blue widget comprise a machine" means that the machine includes the red widget and the blue widget.
[0064] The term "consist exclusively of" and variations thereof, unless expressly stated otherwise, means "to exclusively make up, be only a constituent part of, or be only an element of." Thus, for example, the statement "The red widget and the blue widget exclusively constitute the machine" means that the machine consists of only the red widget and the blue widget (i.e., nothing else).
[0065] The terms "a," "an," and "the" refer to "one or more" unless expressly stated otherwise. Thus, for example, the phrase "widget" means "one or more widgets" unless expressly stated otherwise. Similarly, the phrase "widget" followed by the consecutive phrase "widget" means "one or more widgets." Therefore, it should be understood that the word "the" can also refer to a specific term that has an antecedent basis. For example, if a paragraph states "a particular single feature" and then refers to "the feature," then it should be understood that the phrase "the feature" refers to the previously stated "particular single feature" (it should be understood that the term "a" in "a particular single feature" refers to "one" particular single feature, not "one or more" particular single features).
[0066] The term "plurality" means "two or more" unless expressly stated otherwise.
[0067] The term "herein" means "herein, including any matter which may be incorporated by reference," unless expressly stated otherwise.
[0068] The phrase "at least one of," when such phrase modifies more than one item (an enumerated list of items), means any combination of one or more of those items, unless expressly stated otherwise. For example, the phrase "at least one of a widget, a car, and a steering wheel" means either (i) a widget, (ii) a car, (iii) a steering wheel, (iv) a widget and a car, (v) a widget and a steering wheel, (vi) a car and a steering wheel, or (vii) a widget, a car, and a steering wheel. The phrase "at least one of," when such phrase modifies more than one item, does not mean "one of each of" the multiple items. For example, the phrase "at least one of a widget, a car, and a steering wheel" does not mean "one widget, one car, and one steering wheel."
[0069] Numerical terms such as "one," "two," etc., when used as a cardinality to denote some quantity (e.g., one widget, two widgets), mean the quantity denoted by the numerical term, but not at least the quantity denoted by the numerical term. For example, the phrase "one widget" does not mean "at least one widget," and thus the phrase "one widget" does not encompass, for example, two widgets.
[0070] The phrase "based on" does not mean "based only on," unless expressly stated otherwise. That is, the phrase "based on" encompasses both "based only on" and "based at least on." The phrase "based at least on" is equivalent to the phrase "based at least in part on." For example, the phrase "element A is calculated based on element B and element C" encompasses embodiments in which element A is calculated as the product of B times C (i.e., A=B×C), embodiments in which A is calculated as the sum of B and C (i.e., A=B+C), embodiments in which A is calculated as the product of B times C times D, embodiments in which A is calculated as the sum of B plus C plus D times the square root of E, etc.
[0071] Terms such as "represent" are not exclusive unless expressly stated otherwise. For example, the term "represents" does not mean "represents only" unless expressly stated otherwise. For example, the phrase "data represents a credit card number" encompasses both "data represents only a credit card number" and "data represents a credit card number and data represents something else as well."
[0072] The term "whereby" is used herein only to precede a clause or other set of words that express only the intended result, purpose, or consequence of something expressly set forth before the term "whereby." Thus, when the term "whereby" is used in a claim, the clause or other words that it modifies do not establish any specific further limitations on the claim or limit the scope or meaning of the claim.
[0073] The terms "for example," "etc." and similar terms mean "for example," and thus do not limit the terms or phrases they describe. For example, in the sentence "a computer sends data (e.g., instructions, data structures) over the Internet," the term "for example" explains that "instructions" are an example of "data" that a computer can send over the Internet, and also explains that a "data structure" is an example of "data" that a computer can send over the Internet. However, both "instructions" and "data structures" are merely examples of "data," and things other than "instructions" and "data structures" can also be "data."
[0074] The term "respectively" and similar terms mean "individually." Thus, when two or more things "respectively" have a property, each such thing has its own property, and these properties may, but need not, differ from one another. For example, the phrase "two machines each have a respective function" means that the first of the two machines has a function, and the second of the two machines has a function as well. The function of the first machine may or may not be the same as the function of the second machine.
[0075] The term "ie" and similar terms mean "that is," and thus limit the term or phrase it describes. For example, in the sentence "a computer sends data (i.e., instructions) over the Internet," the term "ie" explains that the "instructions" are the "data" that a computer sends over the Internet.
[0076] Numerical ranges include integers and non-integer numbers within the range unless expressly stated otherwise. For example, the range "1 to 10" includes integers (e.g., 1, 2, 3, 4, ..., 9, 10) and non-integer numbers (e.g., 1.0031415926, 1.1, 1.2, ..., 1.9) between 1 and 10.
[0077] Where two or more terms or phrases are synonyms (e.g., because of an express statement that the terms or phrases are synonyms), the instance of one such term or phrase does not mean that another such term or phrase must have a different meaning. For example, if a statement indicates that the meaning of "including" is synonymous with "including but not limited to," the mere use of the phrase "including but not limited to" does not mean that the term "including" means anything other than "including but not limited to."
[0078] II. Decide The term "determining" and grammatical variations thereof (e.g., determining a price, determining a value, determining objects that meet certain criteria) are used in an extremely broad sense. The term "determining" encompasses a wide range of actions, such that "determining" can include calculating, computing, processing, deriving, examining, referencing (e.g., referencing a table, database, or another data structure), rendering in an electronic format or digital representation, identifying, and the like. "Determining" can also include receiving (e.g., receiving information), accessing (e.g., accessing data in a memory), and the like. "Determining" can also include resolving, selecting, choosing, establishing, and the like.
[0079] The term "determining" does not imply certainty or absolute accuracy; thus, "determining" can include estimating, inferring, predicting, guessing, averaging, and the like.
[0080] The term "determining" does not imply that mathematical operations must be performed, that numerical methods must be used, and that an algorithm must be used.
[0081] The term "determining" does not imply that any particular device must be used, for example, the determining does not necessarily have to be performed by a computer.
[0082] The term "determining" may include "calculating." The term "calculating" should be understood to include performing one or more calculations. Calculating may include calculating, processing, and / or deriving. Calculating may be performed by a computing device. For example, calculating a matter may include applying an algorithm to data by a computer processor and generating the matter as an output of the processor.
[0083] The term "determining" may include "referencing." The term "referencing" should be understood to include making one or more references, for example, to an entity. Referencing may include inquiring, accessing, selecting, choosing, retrieving, and / or searching. The act of referencing may be performed by a computing device. For example, referencing an entity may include reading a memory location where the entity is stored by a processor.
[0084] The term "determining" may include "receiving." For example, receiving a matter may include capturing the matter. In some embodiments, receiving may include an operation performed to capture the matter, such as operating a network interface through which the matter is captured. In some embodiments, receiving may be performed without an operation performed to capture the matter, such as in a direct memory write or hardwired circuit. Receiving a matter may include receiving the matter from a remote source that may have calculated the matter.
[0085] III. Sentence Form If a limitation of a first claim includes one of the features as well as more than one of the features (e.g., a limitation such as "at least one widget" includes one widget as well as more than one widget), and in a second claim that depends from the first claim, the second claim uses the definite article "the" to refer to that limitation (e.g., "the widget"), this mere use does not imply that the first claim includes only one of the features, nor does it imply that the second claim includes only one of the features (e.g., "the widget" can include both one widget and more than one widget).
[0086] When an ordinal number (such as "first," "second," or "third") is used as an adjective before a term, the ordinal number (unless otherwise expressly stated) is used merely to indicate a particular feature, such as to distinguish that feature from another feature described by the same or similar term, but the ordinal number is merely a convenient designation without any other meaning or limiting effect. For example, a "first widget" may be so designated simply to distinguish it from, e.g., a "second widget." Thus, the use of the ordinal numbers "first" and "second" before the term "widget" does not indicate any other relationship between the two widgets, nor does it indicate any other characteristics of either or both widgets. For example, the mere use of the ordinal numbers "first" and "second" before the term "widget" (1) does not indicate that the order or location of either widget comes before or after any other widget, (2) does not indicate that either widget occurs or operates temporally before or after any other widget, and (3) does not indicate that either widget is ranked higher or lower in importance or quality than any other widget. The mere use of ordinal numbers does not define numerical limits on the features identified using the ordinal numbers. For example, the mere use of the ordinal numbers "first" and "second" before the term "widget" does not indicate that there are exactly two widgets.
[0087] Where a single device, article, or other product is described herein, in another embodiment, two or more devices or articles (whether or not cooperating) may alternatively be used in place of the single device or article described. Thus, in another embodiment, a function described as being handled by a device may alternatively be possessed by two or more devices or articles (whether or not cooperating).
[0088] Similarly, where two or more devices, articles, or other products are described herein (whether in cooperation or not), in another embodiment, a single device or article may alternatively be used in place of the two or more described devices or articles. For example, multiple computer-based devices may be replaced with a single computer-based device. In some embodiments, such multiple computer-based devices may operate together to perform a step of a process, such as is common in grid computing systems. In some embodiments, such multiple computer-based devices may operate and provide additional functionality to one another, such as may operate to perform a step of a process, such as is common in cloud computing systems. (Conversely, a single computer-based device may be replaced with multiple computer-based devices operating in cooperation with one another. For example, a single computing device may be replaced with a server and workstations communicating with one another via the Internet.) Thus, various functions described as being performed by two or more devices or articles may alternatively be possessed by a single device or article.
[0089] The functionality and / or features of a single device described may, in other embodiments, be alternatively implemented in one or more other devices that are described but not explicitly described as having such functionality or features. Thus, other embodiments need not include the described device itself, but rather may include one or more other devices that, in these other embodiments, have such functionality or features.
[0090] IV. Disclosed Examples and Terminology are Non-Limiting Neither the Title (at the top of the first page of this specification) nor the Abstract (at the end of this specification) shall be construed in any way as limiting the scope of the disclosed invention, nor shall they be used in interpreting the meaning of any claim, nor shall they be used in limiting the scope of any claim. The Abstract is included herein only as required under 37 CFR 1.72(b).
[0091] The section headings provided herein are for convenience only and should not be construed as limiting the disclosure in any way.
[0092] Many embodiments are described herein and are presented for illustrative purposes only. The described embodiments are not, and are not intended to be, limiting in any way. The disclosed invention is broadly applicable to many embodiments, as will be readily apparent from this disclosure. Those skilled in the art will appreciate that the disclosed invention may be implemented with various modifications and variations, including structural, logical, software, and electrical modifications. While certain features of the disclosed invention may be described with reference to one or more specific embodiments and / or drawings, it will be understood that such features are not limited to use in the one or more specific embodiments or drawings described with reference thereto, unless expressly stated otherwise.
[0093] While one embodiment may be disclosed as including several features, other embodiments of the invention may include fewer than all such features. Thus, for example, a claim may recite fewer than the entire set of features in the disclosed embodiment, and such claim should not be construed as requiring any other features than those features expressly recited in the claim.
[0094] No method step or product element embodiment described in this application constitutes, is essential to, or is not coextensive with the invention claimed herein, unless expressly so recited herein or (with respect to the invention defined by a claim and such claim) expressly recited within that claim.
[0095] Any preamble of a claim reciting anything other than a statutory classification shall be construed to recite objects, advantages, and possible uses of the claimed invention, and such preamble shall not be construed to limit the claimed invention.
[0096] This disclosure is not a literal description of all embodiments of the invention, nor is it a listing of features of the invention that must be present in all embodiments.
[0097] Not all disclosed embodiments are necessarily covered by the claims (even if including all pending, modified, published, and canceled claims). In addition, disclosed embodiments may be covered (but are not necessarily covered) by several claims. Thus, if one claim (whether pending, modified, published, or canceled) relates to a particular embodiment, this is not evidence that the scope of other claims does not also relate to that embodiment.
[0098] Devices described as communicating with each other need not be in continuous communication with each other unless otherwise expressly stated. Conversely, such devices need only transmit to each other as necessary or desired and may not actually exchange data most of the time. For example, a machine that communicates with another machine over the Internet may not transmit data to the other machine for extended periods of time (e.g., weeks at a time). In addition, devices that communicate with each other may communicate directly or indirectly through one or more intermediaries. Devices are communicating with each other if they are in at least one-way communication with each other. For example, a first device is communicating with a second device if the first device can transmit information to the second device. Similarly, a second device is communicating with the first device if the second device can receive information from the first device.
[0099] A description of an embodiment having several components or features does not imply that all or any of such components or features are required. Conversely, a variety of optional components are described to illustrate the wide range of possible embodiments of the present invention. Unless expressly specified otherwise, no component or feature is essential or required.
[0100] Although process steps, algorithms, or the like may be described or claimed in a particular sequential order, such processes may be configured to work in different orders. In other words, any order or sequence of steps that may be explicitly described or claimed does not necessarily indicate a requirement that the steps be performed in that order. Steps of processes described herein may be performed in any order possible. Furthermore, some steps may be performed simultaneously even though they are not described or implied as occurring simultaneously (e.g., because one step is described after another step). Furthermore, the illustration of a process by illustration in a drawing does not imply that the illustrated process is exclusive of other variations and modifications, does not imply that the illustrated process or any of its steps are required for the invention, and does not imply that the illustrated process is preferred.
[0101] Although a process may be described as including multiple steps, this does not imply that all or any of the steps are preferred, essential, or required. Various other embodiments within the scope of the present invention include other processes that omit some or all of the described steps. Otherwise, unless expressly stated otherwise, no step is essential or required.
[0102] Although a process may be described in isolation, i.e., without reference to other products or methods, in one embodiment, the process may interact with other products or methods. For example, such interactions may include linking one business model to another. Such interactions may be provided to increase the flexibility or desirability of the process.
[0103] Although a product may be described as including multiple components, aspects, quantities, properties, and / or characteristics, this does not indicate that some or all of these multiple components are preferred, essential, or required. Various other embodiments within the scope of the invention(s) described include other products that omit some or all of the multiple components described.
[0104] An enumerated list of items (some numbered and some unnumbered) does not imply that any or all of the items are mutually exclusive unless expressly stated otherwise. Similarly, an enumerated list of items (some numbered and some unnumbered) does not imply that any or all of the items are inclusive of any category unless expressly stated otherwise. For example, the enumerated list "computers, laptops, and PDAs" does not imply that any or all of the three items in the list are mutually exclusive, nor does it imply that any or all of the three items in the list are inclusive of any category.
[0105] An enumerated list of items (some numbered and some unnumbered) does not imply that any or all of the items are equivalent to or readily substituted for one another.
[0106] All embodiments are illustrative and do not imply that the invention or any embodiment has been made or performed, in any case.
[0107] V. Computing Those skilled in the art will readily appreciate that the various processes described herein may be implemented, for example, by appropriately programmed general-purpose computers, special-purpose computers, and computing devices. Typically, a processor (e.g., one or more microprocessors, one or more microcontrollers, one or more digital signal processors) receives instructions (e.g., from a memory or similar device) and executes those instructions, thereby performing one or more processes defined by the instructions. The instructions may be embodied, for example, in one or more computer programs, one or more scripts.
[0108] The term "computing" is intended to mean determining using a processor in relation to a software algorithm.
[0109] "Processor" means one or more microprocessors, central processing units (CPUs), computing devices, microcontrollers, digital signal processors, graphics processing units (GPUs), similar devices, or any combination thereof, regardless of architecture (e.g., chip-level multiprocessing or multicore, RISC, CISC, microprocessor without interlocked pipeline stages, pipelined, simultaneous multithreading, microprocessor with integrated graphics processing unit, GPGPU).
[0110] "Computing device" means one or more microprocessors, central processing units (CPUs), computing devices, microcontrollers, digital signal processors, graphics cards, mobile gaming devices, similar devices, or any combination thereof, regardless of architecture (e.g., chip-level multiprocessing or multicore, RISC, CISC, microprocessors with no interlocked pipeline stages, pipelined, simultaneous multithreading).
[0111] Thus, a description of a process is also a description of an apparatus for performing the process. An apparatus for performing a process may include, for example, a processor and input / output devices suitable for performing the process. For example, a description of a process is a description of an apparatus that includes a processor and a memory that stores a program including instructions that, when executed by the processor, direct the processor to perform the method.
[0112] An apparatus that performs a process may include multiple computing devices working together to perform the process. Some of the computing devices may work together to perform each step of the process, or may operate on separate steps of the process and provide underlying services to other computing devices that may facilitate the performance of the process. Such computing devices may operate under the direction of a central authority. In another embodiment, such computing devices may operate without the direction of a central authority. Some examples of apparatuses that may operate in some or all of these ways may include grid computing systems, cloud computing systems, peer-to-peer computing systems, computer systems configured to provide software as a service, and the like. For example, an apparatus may include a computer system that performs the bulk of its processing load on a remote server, such as a computer system running VMware software, but outputs display information to and receives user input information from a local user computer.
[0113] Furthermore, programs (as well as other types of data) implementing such methods may be stored and transmitted in several ways using various media (e.g., computer-readable media). In some embodiments, hardwired circuitry or custom hardware may be used in place of, or in combination with, some or all of the software instructions that can implement the processes of various embodiments. Thus, various combinations of hardware and software may be used in place of software alone.
[0114] The term "computer-readable medium" refers to any non-transitory medium, combination of the same media, or different media, that participates in providing data (e.g., instructions, data structures) that can be read by a computer, a processor, or a similar device. Such media may take many forms, including, but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media include, for example, optical disks, magnetic disks, and other permanent memory. Volatile media include dynamic random access memory (DRAM), which typically constitutes main memory. Transmission media include coaxial cables, copper wire, and fiber optics, including the wires that constitute a system bus coupled to the processor. Transmission media can include or convey acoustic waves, light waves, and electromagnetic emissions, such as those generated during radio frequency (RF) and infrared (IR) data communications. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, a hard disk, magnetic tape, any other magnetic medium, a CD-ROM, a DVD, any other optical medium, punch cards, paper tape, any other physical medium with a pattern of holes, RAM, PROM, EPROM, Flash EEPROM, any other memory chip or cartridge, a carrier wave as described below, or any other medium from which a computer can read.
[0115] The term "tangible computer-readable medium" refers to a "computer-readable medium" that comprises a hardware component such as an optical or magnetic disk.
[0116] Various forms of computer-readable media may be involved in carrying data (e.g., sequences of instructions) to the processor. For example, data may (i) be sent from RAM to the processor, (ii) be carried over a wireless transmission medium, (iii) be formatted and / or transmitted in accordance with a number of formats, standards, or protocols, such as Ethernet (or IEEE 802.3), wireless local area network communications as defined by the IEEE 802.11 specifications whether or not they have been approved by the WiFi Alliance, SAP, ATP, Bluetooth, and TCP / IP, TDMA, CDMA, and 3G, and / or (iv) be encrypted in any of a variety of ways known in the art to ensure privacy and prevent fraud.
[0117] The term "database" refers to any electronically stored collection of data stored in a searchable format.
[0118] The term "data structure" refers to a database within a hardware machine such as a computer.
[0119] The term "network" means a set of points or nodes interconnected by communication paths. For example, a network may include multiple computers or communication devices interconnected by one or more wired and / or wireless communication paths. A network may interconnect with other networks and may include subnetworks.
[0120] The term "predetermined" means predetermined, e.g., prior to the current time or current operation. For example, the phrase "displaying a predetermined value" means displaying a value that was determined prior to operation of the display.
[0121] The term "condition" means (1) a premise upon which the performance of an agreement is based, or (2) something essential to the occurrence or happening of something.
[0122] The term "transaction" means (1) the exchange or transfer of goods, services, or funds, or (2) any communication action or activity involving two entities or things that affect or have an effect on one another.
[0123] Thus, a description of a process is also a description of a computer-readable medium that stores a program for implementing the process. The computer-readable medium can store (in any suitable format) program elements suitable for implementing a method. For example, a description of a process is a description of a computer-readable medium that stores a program including instructions that, when executed by a processor, direct the processor to implement the method.
[0124] Just as the description of various steps in a process does not indicate that all steps described are required, apparatus embodiments include computers or computing devices operable to perform some (but not necessarily all) of the described processes.
[0125] Similarly, just as the description of various steps in a process does not indicate that all steps described are required, embodiments of a computer-readable medium storing a program or data structure include computer-readable media storing a program that, when executed, can cause a processor to perform some (but not necessarily all) of the described processes.
[0126] Where a database is described, those skilled in the art will understand that (i) alternative database structures to the described structure can be readily utilized, and (ii) other memory structures besides a database can also be readily utilized. Any illustrations or descriptions of any sample databases presented herein are exemplary configurations of stored information representation. For example, any number of other configurations other than those suggested by tables shown in drawings or elsewhere may be utilized. Similarly, those skilled in the art will understand that any illustrated entries in a database represent only exemplary information, and that the number and content of entries may differ from those described herein. Furthermore, despite any description of a database as a table, other formats (including relational databases, object-based models, and / or distributed databases) may be used to store and manipulate the data types described herein. Similarly, the methods or behavior of objects in a database can be used to implement various processes as described herein. Additionally, databases can be stored in known manners, locally or remotely to or from devices that access data in such databases.
[0127] Various embodiments can be configured to operate in a network environment including a computer in communication with one or more devices (e.g., via a communications network). The computer can communicate with the devices directly or indirectly via a wired or wireless medium (e.g., the Internet, a LAN, a WAN, or Ethernet, token ring, telephone lines, cable lines, radio channels, optical communications lines, commercial online service providers, bulletin board systems, satellite communications links, or any combination of the above). Each device can itself comprise a computer or other computing device, such as one based on an Intel®, Pentium®, or Centrino™, Atom™, or Core™ processor, configured to communicate with the computer. Any number and type of devices may be in communication with the computer.
[0128] In one embodiment, a server computer or central authority may not be necessary or desirable. For example, the present invention may, in one embodiment, be implemented on one or more devices without a central authority. In such an embodiment, any functionality described herein as being implemented by a server computer or data described as being stored on a server computer may be implemented on or stored on one or more such devices instead of the server computer.
[0129] Where a process is described, in one embodiment the process may operate without any user intervention, while in another embodiment the process includes some human intervention (e.g., the steps are performed by or with the assistance of a human).
[0130] As used herein, the term "encryption" refers to a process for hiding or concealing information so that it is not readily understandable without special knowledge. The process of encryption can convert raw information, called plaintext, into encrypted information. Encrypted information may be called ciphertext, and an algorithm for converting plaintext to ciphertext may be referred to as an encryption method. Encryption methods may also be used to perform the inverse operation of converting ciphertext back to plaintext. Examples of encryption methods include substitution encryption, transposition encryption, and encryption implemented using a rotor machine.
[0131] In various encryption methods, the encryption method may require an additional piece of information called a key. A key may consist, for example, of a string of bits. A key may be used in conjunction with an encryption method to encrypt plaintext. A key may also be used in conjunction with an encryption method to decrypt ciphertext. In a class of encryption methods called symmetric key algorithms (e.g., secret key cryptography), the same key is used for both encryption and decryption. The inviolability of the encrypted information may therefore vary depending on the key not revealing the secret. Examples of symmetric key algorithms are DES and AES. In a class of encryption methods called asymmetric key algorithms (e.g., public key cryptography), different keys are used for encryption and decryption. In an asymmetric key algorithm, any member of the public may use a first key (e.g., a public key) to encrypt plaintext into ciphertext. However, only the holder of the second key (e.g., a private key) will be able to decrypt the ciphertext back into plaintext. An example of an asymmetric key algorithm is the RSA algorithm.
[0132] VI. Continuing Applications This disclosure provides one of ordinary skill in the art with an enabling description of several embodiments and / or inventions, some of which may not be claimed in the present application, but may nevertheless be claimed in one or more continuing applications claiming benefit of priority to the present application.
[0133] The applicant intends to file additional applications to claim patents for subject matter disclosed and enabled but not claimed in this application.
[0134] VII. 35 U.S.C. § 112, paragraph 6 In a claim, a claim limitation containing the phrase "means for" or "step for" means that 35 USC 112, sixth paragraph, applies to that limitation.
[0135] In a claim, a claim limitation that does not include the phrase "means for" or "step for" means that 35 U.S.C. 112, paragraph 6 does not apply to that limitation, whether or not the limitation recites a function without including a recitation of structure, materials, or acts for performing that function. For example, the mere use in a claim of the phrase "step(s) of" when referring to one or more steps in that claim or another claim does not mean that 35 U.S.C. 112, paragraph 6 applies to that step(s).
[0136] With respect to means or steps for performing a specified function pursuant to 35 U.S.C. 112, paragraph 6, the corresponding structure, material, or acts described in this specification, and its equivalents, may perform additional functions, as well as the specified functions.
[0137] Computers, processors, computing devices, and similar products are structures capable of performing a wide range of functions. Such products may be operable to perform specified functions by executing one or more programs, such as programs stored in the product's memory device or in a memory device accessed by the product. Unless expressly stated otherwise, such programs need not be based on any particular program, such as any particular algorithm, that might be disclosed herein. Those skilled in the art will recognize that specified functions may be implemented via different algorithms, and that any of several different algorithms is merely a design choice for performing the specified function.
[0138] Thus, in accordance with 35 U.S.C. 112, paragraph 6, with respect to means or steps for performing a particular function, a structure corresponding to the specified function includes any product programmed to perform the specified function. Such structure includes a programmed product that performs the function, regardless of whether such product is programmed with (i) the disclosed algorithm to perform the function, (ii) an algorithm similar to the disclosed algorithm, or (iii) a different algorithm to perform the function.
[0139] Where a method recites a means for performing a function, the structure for performing the method includes a computing device (e.g., a general-purpose computer) that is programmed and / or configured with appropriate hardware to perform the function.
[0140] Also included are computing devices (eg, general-purpose computers) that are programmed and / or configured with appropriate hardware to perform their functions via other algorithms as would be understood by one of ordinary skill in the art.
[0141] VIII. Waiver Many references to particular embodiments do not imply a disclaimer or denial of additional, different embodiments, and similarly, references to descriptions of embodiments that all include particular features do not imply a disclaimer or denial of embodiments that do not include the particular features. Any explicit disclaimer or denial in this application will be preceded by the phrase "does not include" or the phrase "cannot be implemented."
[0142] IX. INCORPORATION BY REFERENCE Any patents, patent applications, or other documents referenced herein are incorporated by reference into this patent application as part of this disclosure, but are solely for the purposes of written description under 35 U.S.C. §112(1) and enablement under 35 U.S.C. §112(1), and should in no way be used to limit, define, or interpret any term herein, unless the ordinary meaning would not have been ascertained by one of ordinary skill in the art without such incorporation by reference. Thus, one of ordinary skill in the art need not be limited in any way by any embodiment provided by reference. Conversely, the definitions provided herein should not be used to limit, define, or otherwise interpret any term in any document incorporated by reference herein. The definitions explicitly set forth herein control, regardless of any description of a specific embodiment that may contradict the definition(s).
[0143] Any incorporation by reference does not, in itself, imply any endorsement, approval, or acquiescence of any statements, opinions, arguments, or features contained in any patent, patent application, or other document incorporated, unless expressly stated otherwise in this patent application.
[0144] X. Review Process In interpreting this application (including the claims), one of ordinary skill in the art will refer to the prosecution history of this application and not to the prosecution history of any other patent or patent application, regardless of whether there are other patent applications that may be considered related to this application or that share a claim of priority with this application. (Addendum) The method of claim 1 includes receiving, by at least one server, a first order and a second order for an item, the first order associated with a first user and the second order associated with a second user, the first order and the second order having the same associated price, the first order received at an earlier time than the second order, a fill level associated with the first order and a fill level associated with the second order, receiving, by the at least one server, commands to buy or sell the item, the commands having an associated threshold value; determining, by the at least one server, that the fill level associated with the first order is less than the threshold value; as a result of determining that the fill rate associated with a first order is less than the threshold, disregarding the first order, by at least one server, comparing the fill rate associated with the second order to the threshold; determining, by at least one server, that the fill rate associated with the second order is greater than or equal to the threshold; communicating, by at least one server, the trade command to the second user as a result of determining that the fill rate associated with the second order is greater than or equal to the threshold; and receiving, by at least one server, an indication that the second user wishes to trade against the trade command in response to communicating the trade command to the second user. The method of claim 2 includes receiving, by at least one server, a first order and a second order for an item, wherein the first order is associated with a first user and the second order is associated with a second user, the first order and the second order have the same associated price, the first order was received at an earlier time than the second order, a fill level is associated with the first order, a fill level is associated with the second order, the fill level associated with the second order is greater than the fill level associated with the first order, and the second order is greater than the fill level associated with the first order. ordering, by at least one server, the second order over the first order in an order book based at least in part on the fill factor associated with a statement; receiving, by at least one server, commands to buy or sell the item; communicating, by at least one server, the trade command to the second user based at least in part on ordering the second order over the first order in the order book; and receiving, by at least one server, an indication that the second user wishes to trade against the trade command in response to communicating the trade command to the second user.
Claims
1. receiving a first order and a second order for an item, the first order being associated with a first user and the second order being associated with a second user, the first order being received at a time prior to the second order; determining a fill level associated with the first order at the end of each successive first time interval, wherein at a given end of a given first time interval of the successive first time intervals, the fill level associated with the first order is updated to take into account a given first trade command during a given number of minutes, hours, days, or months immediately preceding the given end of the given first time interval, where the length of the first time interval is minutes, hours, days, or months, respectively; determining a fill level associated with the second order at the end of each successive second time interval, wherein at a given end of a given one of the successive second time intervals, the fill level associated with the second order is updated to take into account given second trade commands during a given number of minutes, hours, days, or months immediately preceding the given end of the given second time interval, where the length of the second time interval is minutes, hours, days, or months, respectively; receiving a trade command for the item; determining whether the fill level associated with the first order is less than a threshold; if determining that the fill level associated with the first order is less than the threshold, disregarding the first order and determining whether the fill level associated with the second order is greater than or equal to the threshold; communicating the trade command to a computer of the second user if the fill level associated with the second order is determined to be equal to or greater than the threshold; at least one computer configured to execute A system comprising:
2. receiving a first order and a second order for an item, the first order being associated with a first user and the second order being associated with a second user, the first order being received at a time prior to the second order; determining a fill level associated with the first order at the end of each successive first time interval, wherein at a given end of a given first time interval of the successive first time intervals, the fill level associated with the first order is updated to take into account a given first trade command during a given number of minutes, hours, days, or months immediately preceding the given end of the given first time interval, where the length of the first time interval is minutes, hours, days, or months, respectively; determining a fill level associated with the second order at the end of each successive second time interval, wherein at a given end of a given one of the successive second time intervals, the fill level associated with the second order is updated to take into account given second trade commands during a given number of minutes, hours, days, or months immediately preceding the given end of the given second time interval, where the length of the second time interval is minutes, hours, days, or months, respectively; determining whether the fill factor associated with the second order is greater than the fill factor associated with the first order; placing the second order in an order book in priority to the first order based, at least in part, on the fill factor associated with the second order being greater than the fill factor associated with the first order; receiving a trade command to buy or sell the item; communicating the trade command to a computer of the second user; at least one computer configured to execute A system comprising:
3. receiving a first order and a second order for an item, the first order being associated with a first user and the second order being associated with a second user, the first order being received at a time prior to the second order; determining a fill level associated with the first order at the end of each successive first time interval, wherein at a given end of a given first time interval of the successive first time intervals, the fill level associated with the first order is updated to take into account a given first trade command during a given number of minutes, hours, days, or months immediately preceding the given end of the given first time interval, where the length of the first time interval is minutes, hours, days, or months, respectively; determining a fill level associated with the second order at the end of each successive second time interval, wherein at a given end of a given one of the successive second time intervals, the fill level associated with the second order is updated to take into account given second trade commands during a given number of minutes, hours, days, or months immediately preceding the given end of the given second time interval, where the length of the second time interval is minutes, hours, days, or months, respectively; determining whether the fill factor associated with the second order is greater than the fill factor associated with the first order; placing the second order in an order book in priority to the first order based, at least in part, on the fill factor associated with the second order being greater than the fill factor associated with the first order; receiving a trade command to buy or sell the item; communicating the trade command to a computer of the second user; by at least one processor; The method includes:
Citation Information
Patent Citations
System for optimizing execution of trading order
JP2007280394A
Exchange transaction support device
JP2009217295A
Decentralized ranking and message matching
JP2011510373A
Optimized order routing for electronic trading
US20070174176A1