Trading based on fill rate

By prioritizing orders based on fill rates and response times, the apparatus improves trade execution efficiency by ensuring that orders with higher fill rates and shorter response times are executed first, addressing inefficiencies in existing systems.

JP2025123258APending Publication Date: 2025-08-22CFPH LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025095272
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2014-04-01
Filing Date
2025-06-09
Publication Date
2025-08-22

AI Technical Summary

Technical Problem

Existing systems fail to effectively prioritize orders based on fill rates and response times, leading to inefficient execution of trades.

Method used

An apparatus with a processor that receives orders with associated fill rates and response times, prioritizing orders with higher fill rates and shorter response times for execution, ensuring that orders with lower fill rates or longer response times are executed only after those with better metrics.

Benefits of technology

This approach enhances trade execution efficiency by prioritizing orders that are more likely to be filled quickly, thereby optimizing the trading process.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025123258000001_ABST
    Figure 2025123258000001_ABST
Patent Text Reader

Abstract

To provide an apparatus for trading, a method, and a non-transitory computer-readable medium.SOLUTION: The apparatus causes at least one processor to execute: a step to receive a first order for an item, the first order associated with a first fill rate and a first response time; a step to receive a second order for the item associated with a second fill rate and a second response time; a step to order the second order ahead of the first order; a step to cause an order of the specific trader to be executed against the second order before any executing of any order of the specific trader against the first order; a step to allocate routing of communication on execution of a trading command for an order of the specific trader to a port of an electronic communication network; and a step to generate electronic signals for executing the trading command for the order of the specific trader in order to route communication via the allocated port of the electronic communication network.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application is a continuation-in-part of International Application No. PCT / US / 2014 / 032433, filed March 31, 2014, a national stage application entitled "Foreign Exchange Trading," and U.S. Patent Application No. 14 / 348,919, filed April 1, 2014, which claims the benefit of U.S. Provisional Patent Application No. 61 / 901,438 (Jacob Loveless), filed November 7, 2013, the disclosures of which are incorporated herein by reference in their entireties.

[0002] Some embodiments relate to matching and / or trading items. [Background technology]

[0003] The system may be used for electronic matching of items and / or energy trading between users. Summary of the Invention [Problem to be solved by the invention]

[0004] The present invention is directed to solving the problems of the background art. [Means for solving the problem]

[0005] According to various exemplary embodiments, an apparatus may include at least one processor associated with a workstation of a particular trader and at least one memory having instructions stored thereon, which, when executed by the at least one processor, further direct the at least one processor to perform various steps. The instructions may direct the at least one processor to receive a first order for an item, the first order being associated with a first fill rate and a first response time. The instructions may direct the at least one processor to receive, after receiving the first order, a second order for the item, the second order being associated with a second fill rate and a second response time. The instructions may direct the at least one processor to place the second order in an order book of the particular trader in preference to the first order based at least in part on the first fill rate and first response time associated with the first order and the first fill rate and first response time of the second order. The instructions may direct the at least one processor to, in response to placing the second order in the order book in priority to the first order, cause an order of the particular trader to be executed against the second order before any execution of any order of the particular trader against the first order.

[0006] In some embodiments, receiving the first order may include receiving a first fill rate. In some embodiments, receiving the second order may include receiving a second fill rate.

[0007] In some embodiments, the first fill rate may be determined based on a comparison of the number of times orders routed to the first order provider were filled by the first order provider and the number of times orders routed to the first order provider were not filled by the first order provider.

[0008] In some embodiments, the first fill rate may be determined based on a comparison of the number of times orders for the item routed to the first order provider were fulfilled by the first order provider and the number of times orders for the item routed to the first order provider were not fulfilled by the first order provider.

[0009] In some embodiments, the first fill rate may be determined based on a comparison of a total quantity routed to and fulfilled by the first order provider and a total quantity routed to and not fulfilled by the first order provider.

[0010] In some embodiments, the first fill rate may be determined based on a comparison of a total quantity of items routed to and fulfilled by the first order provider and a total quantity of items routed to and not fulfilled by the first order provider.

[0011] In some embodiments, the first fill rate may be determined based on a comparison of the number of times orders for a particular quantity range for an item routed to the first order provider were fulfilled by the first order provider and the number of times orders for a particular quantity range for an item routed to the first order provider were not fulfilled by the first order provider.

[0012] In some embodiments, the second order may be associated with a first response time, and the instructions may further direct the at least one processor to: receive, by the at least one server, a third order for the item from a third user prior to receiving the second order, wherein the third order has a price equal to the price of the second order, and the third order is associated with a second response time that is greater than the first response time; and placing, by the at least one server, the second order in an order book ahead of the third order based at least in part on the second response time associated with the third order being greater than the first response time associated with the second order, wherein communicating, by the at least one server, the trade command to the second user occurs prior to communicating, by the at least one server, any trade command regarding the item to the third user, and wherein the communicating occurs in response to the second order being placed in the order book ahead of the third order.

[0013] In some embodiments, the instructions, when executed by at least one processor, may further instruct the at least one processor to: receive a third order and a fourth order; determine a probability that at least a portion of the third order is not independent from at least a portion of the first order; and place the third order and the fourth order in the order book based at least in part on the determined probability that at least a portion of the third order is not independent from at least a portion of the first order.

[0014] In some embodiments, the first fill rate may include a probability of responding per unit time, and the second fill rate may include a probability of responding per unit time.

[0015] Corresponding methods and machine-readable media are also contemplated herein for the above-described embodiments.

[0016] According to one 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 and second orders having the same associated price, the first order being received before the second order, the first order having an associated fill rate, and the second order having an associated fill rate; receiving a command to buy or sell the item, the command having an associated threshold; and receiving a command to buy or sell the item, the command having an associated fill rate. The method may include determining that a fill rate associated with the first order is less than a threshold, ignoring the first order and comparing a fill rate associated with the second order to a threshold as a result of determining that the fill rate associated with the first order is less than the threshold, determining that the fill rate associated with the second order is greater than or equal to the threshold, communicating a trade command to a 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 a notification that the second user intends to trade against the trade command in response to communicating the trade command to the second user. Corresponding systems and machine-readable media are also contemplated herein.

[0017] According to various exemplary embodiments, a method may include various steps. At least one server may receive a first order and a second order for an item. The first order may be associated with a first user, and the second order may be associated with a second user. The first and second orders may have the same associated price. The first order may be received before the second order. The first order may be associated with a first fill rate, and the second order may be associated with a second fill rate. The at least one server may receive a command to buy or sell the item. The command may have a threshold associated therewith. The at least one server may determine that the first fill rate associated with the first order is less than the threshold. As a result of determining that the fill rate associated with the first order is less than the threshold, the at least one server may ignore the first order and compare the fill rate associated with the second order to the threshold. The at least one server may determine that a second fill rate associated with the second order is greater than the first fill rate associated with the first order. As a result of determining that the second fill rate associated with the second order is greater than the first fill rate associated with the first order, the at least one server may transmit a trade command to the second user prior to transmitting any trade commands to the first user. In response to transmitting the trade command to the second user, a notification may be received that the second user intends to trade against the trade command. Corresponding systems and machine-readable media are also contemplated herein.

[0018] According to various exemplary embodiments, a method 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 and second orders having the same associated price, the first order being received before the second order, the first order having a first fill rate associated with it, and the second order having a second fill rate associated with it; receiving, by the at least one server, a command to buy or sell the item, the command having a condition associated therewith; determining, by the at least one server, that the first fill rate associated with the first order does not meet a threshold; and determining a condition associated with the first order. The method may include, as a result of determining that the associated first fill rate does not meet a threshold, disregarding the first order and determining whether a second fill rate associated with the second order meets a condition, by the at least one server; determining, by the at least one server, that the second fill rate associated with the second order meets the condition; transmitting, by the at least one server, a trade command associated with the second order to a second user prior to transmitting any trade commands related to the first order, as a result of determining that the second fill rate associated with the second order meets the condition; and receiving, in response to transmitting the trade command to the second user, a notification that the second user intends to trade against the trade command. Corresponding systems and machine-readable media are also contemplated herein.

[0019] According to various embodiments, a non-transitory computer-readable medium may have stored thereon instructions that, when executed by at least one processor, may direct the at least one processor to perform various steps. The instructions may direct the processor to receive a first order for an item, the first order being associated with a first fill rate and a first response time. The instructions may direct the processor to, after receiving the first order, receive a second order for the item, the second order being associated with a second fill rate and a second response time. The instructions may direct the processor to place the second order in a particular trader's order book in preference to the first order based at least in part on the first fill rate and first response time associated with the first order and the first fill rate and first response time of the second order. The instructions may direct the processor, in response to placing the second order in the order book in priority to the first order, to cause, by the at least one processor, an order of the particular trader to be executed against the second order before any execution of any order of the particular trader that is executed against the first order. Corresponding systems and methods are also contemplated herein.

[0020] The above advantages and features are of exemplary embodiments only and are presented solely to aid in understanding the invention. They should not be construed as limitations on the invention, which is defined by the claims. Additional features and advantages of embodiments of the invention will become apparent from the following description, drawings, and claims. [Brief explanation of the drawings]

[0021] [Figure 1] FIG. 1 illustrates an exemplary distributed matching engine according to some embodiments. [Figure 2] 1 is an exemplary graph illustrating the relationship between average spread and estimated fill rate, according to some embodiments. [Figure 3]1 is an exemplary graph illustrating the relationship between average spread and estimated fill rate, according to some embodiments. [Figure 4] 1 is an exemplary flowchart according to some embodiments. DETAILED DESCRIPTION OF THE INVENTION

[0022] Referring to Figure 1, an example system 100 is shown in accordance with one exemplary embodiment. System 100 may include one or more computing systems (e.g., servers) 101-106. Computing systems 101-106 may be referred to as servers herein for purposes of explanation. However, it should be understood that the use of the term server is non-limiting and that other types of computing systems may be used.

[0023] Each server 101-106 may include one or more processors and one or more memories, and 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 over network 110. Network 110 may include public and / or private networks and may be wired and / or wireless networks based on any type of technology. Network 110 may also include bus-based and / or backplane-based architectures. 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 one another. Network 110 may also be configured to allow servers 101-106 to communicate with other computing systems (e.g., computing system 150), which may be on network 110 or on other networks not shown in FIG. 1 but accessible via network 110. As an example, network 110 may be a private network interfaced with one or more other private and / or public networks, e.g., via one or more routers, switches, etc., thereby enabling, for example, any of servers 101-106 to communicate with other computing systems on such other 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 multicast, although other types of multicast may be used. Multicast may be reliable or unreliable multicast.Those skilled in the art will appreciate that the above description of servers 101-106 and network 110 is exemplary only, and 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 include one or more additional network hardware / software / firmware-based interfaces that enable the servers to connect to and communicate over one or more other public and / or private networks not shown in FIG. 1.

[0024] One or more of the servers 101-106 in the system 100 may be identical and / or nearly identical in terms of 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 speed. Similarly, one or more of the servers 101-106 may have the same capability to communicate with any other server via the network 110. One or more of the servers 101-106 may be located in the same rack, in the same room, in the same building, etc. Furthermore, the network elements that make up the network 110 may also be co-located with the servers 101-106. Again, additional and / or other configurations are possible. For example, the servers may have different capabilities.

[0025] 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, e.g., Users A-F. Users A-F may be individuals and / or companies, e.g., banks, investment funds, trading companies, etc. Alternatively and / or additionally, 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 can access the resources of that server. Any user may be associated with, leased to, or own multiple servers within system 100. According to an example, system 100 may be scalable in that additional servers may be added to the system, and those servers may be leased to or owned by users A-F and / or new users. System 100 may be configured such that the addition and / or removal of one or more servers does not affect other users. As another example, any server may be leased / rented to multiple different users who are not associated with each other. The servers may be configured such that use of the server by one of the users does not affect the other users, and use of the server by other users does not affect the one user.

[0026] According to one example, system 100 may operate and / or be configured as a trading system or matching system, particularly a distributed trading / matching system, which allows users, such as users A-F, to trade and / or buy and / or sell one or more items with one another. Items traded on system 100 may be owned by one or more of users A-F of the system. Alternatively and / or additionally, one or more of users A-F may be principals and / or intermediaries and / or agents (e.g., acting on behalf of an entity that may own the items). Traded items may include tangible and / or intangible items. According to one example, system 100 may be configured to trade one or more financial instruments, including, for example, fixed income securities, equity securities, 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. As will be appreciated by those skilled in the art, other types of items may also be traded and / or bought and sold via system 100, such as real estate (e.g., land, homes, and / or buildings), consumer products (e.g., automobiles, electronics), tickets (e.g., airline tickets, concert tickets), etc. As will be appreciated by those skilled in the art, in addition to and / or as an alternative to a trading system or a matching system, system 100 may operate and be configured as other types of systems.

[0027] Additionally, one or more of the servers 101-106 may include one or more applications 120a-f executing thereon (e.g., stored in memory). As an example, the applications 120a-f may be referred to herein as matching engines. However, other and / or additional types of applications are possible. The matching engines 120a-f may enable users A-F to trade 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 engines of each server 101-106 may be identical and / or nearly identical applications, 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 that owns / operates system 100. Such entity may also develop / maintain other and / or additional applications that run on each server.

[0028] Each server may also include (e.g., may be stored in memory) one or more applications 122a-e associated with users, such as users A-E, and executing on each server. As an example, applications 122a-e may be referred to herein as trading applications, although other and / or additional types of applications are possible. According to another example, one or more trading applications (e.g., application 122f) may not execute on a server 101-105. Instead, the application may execute on a computing system (e.g., computing system 130) connected to a server (e.g., 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. As another example, computing system 130 and server 106 may communicate over network 110. According to one example, computing system 130 may be owned and operated by the entity that owns and operates system 100. According to another example, computing system 130 may be owned and operated by a user (here, User F) associated with the server to which the computing system is connected. Those skilled in the art will appreciate that these configurations are exemplary only, and 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.

[0029] According to one example, each trading application 122a-f may be configured to enable users A-F of system 100 to trade items by interacting with a respective matching engine 120a-f. Each trading application 122a-f may be an automated trading algorithm that generates trading orders (e.g., bids, offers, hits, and takes) (e.g., on behalf of a respective user A-F) by executing a trading strategy. Each trading application on any 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 of servers 101-105 / computing system 130. Each trading application may be distinct from the other trading applications and may be developed by a user to whom the respective server is assigned. For example, user A may develop trading application 122a, load or have the application pre-loaded on server 101 (e.g., using a management application), and run the application on server 101. Similarly, user B may develop trading application 122b and load or have this application loaded onto server 102 (e.g., using a management application) and execute this application on server 102. Additionally and / or alternatively, trading applications 122a-f may be general-purpose applications (e.g., APIs) provided by an entity that owns / operates system 100. In each instance, each user A-F may customize their respective application to meet their needs (e.g., using an API that the user interfaces with, such as through a computing system separate from their respective server, through a management application, and / or through a user interface device (keyboard, mouse, etc.) connected to their respective server). Those skilled in the art will appreciate that these configurations are exemplary only, and that other and / or additional configurations are possible.For example, instead of 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 to interface with system 100 and generate orders. For example, each user may be able to manually submit orders to a respective matching engine of a server (e.g., via a remote computing system and / or via a user interface device (keyboard, mouse, etc.) connected to the respective server).

[0030] As described above, on each server, matching engines 120a-f, along with respective trading applications 122a-f, may enable users A-F to trade items with one another. As an example, one instance of the matching engine may be configured to trade a particular item (e.g., 10-year bonds). Thus, if any of users A-F wish to trade different items (e.g., 5-year bonds and 10-year bonds), multiple instances of matching engine 120 may be running on each server, each communicating with one or more instances of a respective trading application 122. As another example, one instance of the matching engine communicating with one or more instances of a respective trading application may be configured to trade multiple items. Those skilled in the art will appreciate that these are merely examples, and other and / or additional configurations are possible. For example, if a server is used by different users, the server may have multiple instances of the matching engine configured to trade the same item with the different users. For purposes of explanation only, matching engine 120 is described as enabling trading of a single item.

[0031] According to one example, for each user A-F who wishes to trade an item, matching engines 120a-f of each server may maintain or be configured to maintain order books 124a-f for that item on that server. As an example, each order book may be maintained in the memory of each server. For example, if each of users A-E wishes to trade an item, each server 101-105 may have an 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, order books for an item may be distributed or decentralized across multiple servers. Similarly, if each of users A-E wishes to trade a second item, matching engines 120a-e of each of servers 101-105 may also maintain a second order book for the second item on that server. Additional and / or other order book configurations are possible, as will be appreciated by those skilled in the art.

[0032] By way of further example, each item that may be traded via system 100 may be assigned a port (e.g., an Internet Protocol (IP) port), channel, or the like 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 detailed herein, some or all of the communications between servers 101-106 via network 110 regarding the first item may occur via port “x,” and similarly, some or all of the communications between servers 101-106 via network 110 regarding the second item may occur via port “y.” By way of further example, if a user, e.g., A, wishes to trade a first item and a second item, server 101 / matching engine 120a may be configured to send and / or receive (and / or listen, monitor, etc.) messages / commands / information / data on port “x” and port “y.” In this manner, User A may send / receive information / data regarding the two items (e.g., using trading application 122a). Similarly, for example, if User A wishes to trade a first item but not a second item, server 101 / matching engine 120a may be configured to send and / or receive (and / or listen, monitor, etc.) messages / commands / information / data on port “x” but not on port “y.” In this manner, for example, server 101 / User A may choose not to receive messages / commands / information / data regarding the second item, which is not of interest. Similarly, if User A wishes to later receive information regarding the second item (e.g., using trading application 122a), server 101 / matching engine 120a may be configured to send and / or receive (and / or listen, monitor, etc.) messages on port “y.”According to one example, trading applications 122a-f (perhaps under user control) may determine which items will be traded and / or which items will not be traded, and thus may control the configuration of each server / matching engine, for example, as to which ports are monitored and for which items order books are maintained. As another example, a user (e.g., via a computing system remote from each server, via a management application, and / or using an API that the user interfaces with, such as via a user interface device (keyboard, mouse, etc.) connected to each server) may control the configuration of each server / matching engine, for example, as to which ports are monitored and for which items order books are maintained.

[0033] According to one example operation of system 100, if a user / trading application, e.g., User A / trading application 122a, is interested in trading an item, e.g., item "w," User A / trading application 122a may generate a bid or offer order for item "w" (which may include a price and / or a size). Trading application 122a may forward this order to matching engine 120a, which may place the order in order book 124a (i.e., the order book for item "w" on server 101). This order is shown in FIG. 1 as order 140 in order book 124a. According to one example operation of system 100, now that User A has generated order 140, matching engine 120a may be responsible for managing the execution of orders counter to order 140 (e.g., matching contra-orders to order 140). According to a further example of the operation of system 100, matching engine 120a may multicast order 140 over network 110 from a port assigned for item "w." The multicast order may include some designation indicating that the order originated from user A / trading application 122a / matching engine 120a and / or server 101. If each of the other users / servers on system 100 is interested in item "w" and therefore configured to listen on the port for that item, then each matching engine may receive order 140 and post the order to its respective order book for that 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 post the order to their respective order books 124b and 124c (shown in FIG. 1 as 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. Respective matching engines 120b and 120c may also forward information about order 140 to their respective trading applications 122b and 122c and / or users B and C. Order 140 may be known to users B-C / trading applications 120b-c, but the origin of the order (i.e., the identity of user A) may or may not be known depending on whether system 100 is an anonymous matching system.

[0034] 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 for item "w" on server 102). 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 responsible for managing the execution of orders against order 142 (e.g., matching a contra order against order 140). Matching engine 120b may multicast order 142 over network 110 from the port assigned for item "w." The multicast order may include some indication that the order originated from user B / trading application 122b / matching engine 120b and / or server 102. If each of the other users / servers on system 100 is interested in item "w" and therefore configured to listen on a port for that item, then each matching engine may receive order 142 and post the order to its respective order book for that item. For example, as mentioned above, 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 post the order to their respective order books 124a and 124c (shown in FIG. 1 as 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. Each matching engine 120a and 120c may also forward information regarding order 142 to their respective trading applications 122a and 122c and / or users A and C.

[0035] According to a further example of the operation of system 100, if user A / trading application 122a later decides to cancel all or part of order 140, he / she may generate a cancel command for the order, which may be forwarded to matching engine 120a. Matching engine 120a may then cancel the order from its order book 124a and may also multicast the cancel command over network 110 from the port assigned to item "w." The cancel command may include some indication that the cancel command originated from user A / trading application 122a / matching engine 120a and / or server 101, so that other servers know which order the cancel command references. Each of the other users / servers may be interested in item "w," and therefore, if configured to listen on the port for that item, each 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 has become void.

[0036] Assuming that bid / offer order 140 from User A has not been cancelled, User B / trading application 122b may generate a trade command / counterorder / counter-order to counter this order, e.g., hit / take (the hit / take command may include a price and size). (As another example, the trade command may be a bid or offer that crosses / matches order 140 (e.g., at a particular price).) Trading application 122b may forward the trade command to matching engine 120b, which may search its order book 124b for matching orders and may recognize / determine that this command matches at least order 140 from User A. (If matching engine 120b recognizes that order 142 originated from User B, it may not attempt to match the trade command against order 142.) In response, matching engine 120b may multicast the trade command over network 110 from the port assigned to item "w." In addition to adding some indication that the trade command originated from, for example, User B / trading application 122b / matching engine 120b / and / or server 102, the trade command may be specifically tagged / designated / directed to User A / trading application 122a / server 101 / and / or matching engine 120a because, as discussed above, matching engine 120a may be responsible for executing against an order originating from User A / server 101. As will be appreciated by those skilled in the art, other means may be used to notify matching engine 120a that the trade command is against an order that matching engine 120a may be responsible for executing against. According to one example operation of system 100, other servers / matching engines (e.g., servers / matching engines listening on the port assigned to item "w") may receive the multicast trade command and may ignore any commands that are recognized as being directed to User A / trading application 122a / server 101 / and / or matching engine 120a.According to another example operation of system 100, such a server / matching engine may receive multicast trade commands and notify respective trading applications and / or users of trade opportunities. According to one example, the actual trade commands may be encrypted.

[0037] By way of further example, if there are additional orders in order book 124b that are not User B's, and the trade command from User B / trading application 122b is greater in size than order 140 and / or therefore conflicts with these other orders, matching engine 120b may multicast the additional trade command (tagged with the server(s) responsible for those additional orders) over network 110 from the port assigned to item "w." As another alternative, matching engine 120b may use the same trade command tagged with User A / trading application 122a / server 101 / and / or matching engine 120a, and further tag this trade command with the server(s) responsible for the additional orders. As will be appreciated by those skilled in the art, other variations are possible.

[0038] Upon receiving the trade command, server 101 / matching engine 120a will recognize that the command is tagged to server 101 / matching engine 120a. Matching engine 120a may then determine whether order 140 is still available (e.g., whether it has not been canceled and / or executed against by another user, whether it is still listed in order book 124a). If order 140 is still available, matching engine 120a may execute the trade command against order 140 by removing order 140 from its order book 124a (or by reducing the available amount of order 140 in the order book if not all of order 140 will be executed against it). Matching engine 120a may also communicate with trading application 122a and / or user A to notify them that order 140 has been executed against them. Additionally, matching engine 120a may multicast a trade confirmation message over network 110 from the port assigned to item "w." The confirmation message may include notification regarding the amount of order 140 that was actually executed against it. The confirmation message may be specifically tagged to User B / trading application 122b / matching engine 120b / and / or server 102. Upon receiving the confirmation message, matching engine 124b may remove order 140 (or a portion thereof) from its order book 124b and 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, which causes their respective matching engines to remove order 140 (or a portion thereof) from their order books. Such matching engines may also notify their respective users and / or trading applications of the matched order. Accordingly, matching engine 120c may remove order 140 from its order book 124c and notify trading application 122c and / or User C.According to another and / or additional example, in addition to multicasting the confirmation message, matching engine 120a may multicast some other command (such as a cancel command) to cause other matching engines (such as engine 120c) to remove order 140 from their order books. As will be appreciated by those skilled in the art, other and / or additional command sequences may be used.

[0039] As another example, if matching engine 120a determines that order 140 is no longer available (e.g., canceled and / or already executed against by another user) upon receiving a trade command from user B, as described above, matching engine 120a may multicast a cancellation message for order 140, and / or a message explicitly indicating the trade not being confirmed, and / or that the trade failed and / or was not completed (which may be explicitly tagged to user B / trading application 122b / matching engine 120b / and / or server 102). In either case, the message may affect 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 no longer available. Trading application 122b and / or user B may be explicitly notified that the trade failed.

[0040] According to another example, matching engine 120a may determine that order 140 is still available, as described above, after which matching engine 120a may first communicate with trading application 122a and / or user A to determine whether there are still requests for execution against order 140. If there are, matching engine 120a may proceed as described above, such as with regard to generating a confirmation message. As another example, trading application 122a and / or user A may indicate that there are still requests for execution against order 140, but that the requests are for a size smaller than the available size of order 140 (i.e., smaller than the size requested by the trade command). Again, matching engine 120a may proceed as described above, such as with regard to generating a confirmation message, which message may indicate, for example, the size of the executed order 140. Alternatively, if User A and / or trading application 122a no longer have a request for execution against order 140, matching engine 120a may remove order 140 from its order book 124a and then proceed as described above with respect to generating a cancel message and / or an unconfirmed message, resulting 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 no longer available. They may also be notified that while order 140 is pending, the respective originator of the order (i.e., User A) no longer requests execution against it. As will be appreciated by those skilled in the art, other and / or additional message flows regarding execution or non-execution against order 140 are possible.

[0041] According to a further aspect of the above-described example operation, if, for example, User C / trading application 122c generates a trade command against order 140 at approximately the same time as User B / trading application 122b 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 against order 140 (one from User B and one from User C), each of which will necessarily be queued ahead of the other, depending on which reaches server 101 first. Again, since matching engine 120a may be responsible for managing execution against orders (e.g., order 140) originating from user A / server 101, matching engine 120a may execute order 140 against only one of user B and user C, depending on which order reaches server 101 first (assuming both user B and user C attempt to execute the full size of order 140). Matching engine 120a may, for example, send an unconfirmed order against the other's trade command. As another example, user B and user C's trade commands may be fully executed and only partially executed if order 140 is not large enough to fill both. Other variations are possible, as will be appreciated by those skilled in the art.

[0042] Those skilled in the art will appreciate that the above-described exemplary operation of system 100 is exemplary, and that other and / or additional exemplary operations are possible. For example, multiple ports, channels, etc. on network 100 may be assigned to an item. For example, for an item, one port may be used to multicast only bids for that item, another port may be used to multicast only offers for that item, another port may be used to multicast only trade commands / counterorders / counterorders (e.g., hits / takes) for that item (or one port may be used for hits and another for takes), and another port may be used to multicast trade confirmation messages for that item (or, for example, one port may be used for trade confirmations against hits and another for trade confirmations against hits). A port may be used for deal confirmations against takes), another port may be used for multicasting deal unconfirmation messages for that item (or, for example, one port may be used for unconfirms against hits and another port for unconfirms against takes), another port may be used for multicasting bid retraction messages for that item, and / or another port may be used for multicasting offer retraction messages for that item, etc., including any other combinations of these, including ports for other messages. Again, other variations are possible.

[0043] According to a further exemplary feature, system 100 may eliminate the need for drop copy generation. For example, in matching engine 120a, which generates a trade confirmation message as described herein, other matching engines 120b-f, for example, may receive this message and update their respective order books 124b-f. In addition, other computing systems (shown as computing system 150) connected to network 110 may also receive these messages. These other computing systems may or may not be associated with the user / customer seeking to trade an item using system 100. For example, computing system 150 may be associated with a clearing house that can clear transactions, such as the example transaction between User A and User B described herein.

[0044] According to a further exemplary feature of system 100, for example, if a trading application (e.g., application 122e) has begun submitting bids and / or offers for an item at off-market prices, and it is necessary to stop trading application 122e and potentially remove those bids and offers from the market, server 105 may be taken offline. Taking server 105 offline may include, for example, taking the entire server offline (e.g., via a command from an administrator), shutting down / stopping / pausing matching engine 120e, causing matching engine 120e / server 105 to no longer listen / receive / send on a port associated with the item, etc. In particular, each action may prevent trading application 122e from submitting orders. Similarly, because matching engine 120e is responsible for managing the execution of trade commands against orders submitted from trading application 122e, each of the above actions may prevent matching engine 120e from doing so. For example, if matching engine 120e / server 105 no longer listens / receives on the port associated with the item, matching engine 120e will no longer receive trade commands. Those skilled in the art will appreciate that these are examples only and that other and / or additional exemplary features of system 100 are possible. Forex Trading

[0045] In foreign exchange ("FX") trading, a market may be considered to be comprised 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"). As will be appreciated by those skilled in the art, a user may be both a provider and a taker. A provider may respond to one or more trades for one or more FX instruments by submitting or streaming one or more orders for the FX instruments, e.g., bids and / or offers for the FX instruments, each order having, for example, a price and size. Each order may be shown or made available to one or more takers. In response, a taker may attempt to execute against an order by submitting a buy trade command or a sell trade command, e.g., taking an offer or hitting a bid (as another example, a taker may attempt to execute against an order by submitting a bid or an offer, etc.). A trade command may include a specified price and size. The size of the trade command may be the same size as the corresponding order against which the execution is to be made, or may be for a smaller size. When a trade command against an order is submitted, the command may be sent / routed to the provider that submitted the order. Hereinafter, a process that may be referred to as a "second look" may be performed. According to the second look, if the order is still available, rather than executing a trade command against the order, the provider that submitted the order may be given a second chance to decide whether to still execute the trade. Upon receiving the trade command, the provider may respond with a "done" command, which means, for example, that the provider still executes the trade that the provider fulfilled according to the submitted order. The "done" command may include a size, which may correspond to the size of the trade command or may be for a smaller size. As a result of the "done" command, a trade command may be executed against the order, thereby executing a trade between the corresponding provider and taker.As another alternative, the provider may respond to the taker's trade command with a "no / not done" command, meaning that the provider will no longer trade against the trade that the provider fulfilled, for example, as specified in the order. In this case, the trade command may not be executed against the order, and a corresponding trade may not be executed between the provider and the taker. As a third alternative, the provider may not respond to the trade command at all, or may take too long to respond to the trade command (with a "done" or "stop" command). The taker may then retract or cancel the trade command. Assuming the trade command is retracted before the provider responds with a "done" command, the trade command may not be executed against the order, and a corresponding trade may not be executed between the provider and the taker. In the last two cases, the taker must resubmit another trade command against another order if he or she still wishes to execute the trade.

[0046] According to one example described herein, system 100 may be used to trade one or more foreign exchange (“FX”) products. For example, according to the methods described herein, a provider on system 100 (e.g., User A and / or trading application 122a executing on behalf of User A) may respond to a trade in an FX product by submitting or streaming one or more orders, e.g., bids and / or offers, for the FX product, each order having, e.g., a price and a size. As discussed herein, for example, each order may be routed from the provider's server (e.g., User A's server 101) to one or more other servers. Assuming a server, e.g., User B's server 102, is configured to receive orders for the FX product, a corresponding matching engine, e.g., engine 120b, of server 102 may receive the order and post it to a respective order book 124b. The matching engine may then forward the information to User B and / or trading application 122b in the order received. Upon receiving the order, User B and / or trading application 122b may attempt to execute against the order (thereby becoming the taker), for example, by submitting a trade command against the order. The trade command may include a specified price and size. As discussed herein, for example, once a trade command against the order / a command being matched against the order is submitted, the command may be sent / routed to server 101 and matching engine 120a. In accordance with a second look, rather than matching engine 120a executing a trade command against the order (assuming the order is still available), matching engine 120a may first communicate with trading application 122a and / or User A to determine whether there is still a request to maintain the trade as specified by the order.Assuming trading application 122a and / or user A still intend to maintain the order, a "Done" command may be communicated from trading application 122a and / or user A to matching engine 120a, which may then execute a trade command against the order (e.g., for the size specified in the "Done" command), followed by generating a confirmation message, etc., as discussed herein. Alternatively, assuming trading application 122a and / or user A no longer intends to maintain the trade as specified by the order, a "No / Abort" command may be communicated from trading application 122a and / or user A to matching engine 120a, which may then communicate, for example, a cancel message for the order, and / or a message clearly indicating the non-confirmation of the trade, and / or that the trade failed and / or was not completed, etc., as discussed herein. As another alternative, assuming trading application 122a and / or User A no longer intend to maintain the trade as specified by the order, trading application 122a and / or User A may not communicate any message to matching engine 120a. As yet another alternative, User B / trading application 122b may withdraw the trade command and communicate such a request to, for example, matching engine 120b, which may then communicate the withdrawal request to, for example, at least server 101 and matching engine 120a, which may ignore further action with respect to the trade command. As will be appreciated by those skilled in the art, the above-described example operation of system 100 for foreign exchange trading is an example, and other and / or additional example operations are possible.

[0047] According to another example discussed herein, assume that three providers, Users A, C, and D, each submit an order for a commodity at the same price, e.g., A's order is a size of 10, C's order is a size of 5, and D's order is a size of 5. Assume further that each order is routed to User B's server 102 and placed in order book 124b, as discussed herein. Assume further that A's order takes priority in time over C's order, which takes priority in time over D's order. Upon receiving the orders, User B and / or trading application 122b may submit a trade command for the commodity at the price of the three orders and for a size of 20. According to one example discussed herein, matching engine 120b may forward a trade command with a size of 5 to server 101 / matching engine 120a (to execute against order A), another trade command with a size of 10 to server 103 / matching engine 120c (to execute against order C), and a third trade command with a size of 5 to server 104 / matching engine 120d (to execute against order D). Matching engine 120b may forward the three trade commands substantially simultaneously. For example, matching engine 120b may forward trade commands to servers 103 and 104 of users C and D, respectively, without waiting for a confirmation or unconfirmation message from server 101 of user A. According to another example, assuming User A responds with a "Done" command with a size of less than 10 or responds with a "Cancel" command, matching engine 120b of server 102, upon receiving notification of such a response from server 101, may attempt to automatically remain compliant with User B's trade command by forwarding another trade command for the unfilled size to either User C or User D. As another alternative, matching engine 120b of server 102 may automatically remain compliant with User B's trade command by forwarding another trade command for each of User C and User D for their respective portions of the unfilled size.As another example, assume that in addition to orders from users A, C, and D, there is another order from user E for size 10. Now, rather than (or in addition to) matching engine 120b attempting to fulfill user B's trade command via user C and / or user D, matching engine 120b may automatically attempt to fulfill user B's trade command by forwarding another trade command for the unfilled size, or a portion thereof, to user E. Again, those skilled in the art will appreciate that the above is one operational example of system 100 and that other variations are possible.

[0048] From the taker's perspective, it is undesirable for the provider to respond to a trade command with a "stop" command, or for the provider to take too long to respond to a trade command, or for the provider to not respond at all. Both of these could lead to the taker retracting the trade command. In these cases, the result is that the taker either does not execute the desired trade, or the trade takes too long because the taker has to find another provider to trade with by executing against other orders.

[0049] According to one example, a provider's fill rate may be calculated by evaluating a provider's responses, and / or lack of responses and / or delayed responses, to "Done" and "Abort" commands. A provider's fill rate may be considered, for example, as the ratio of the number of trade commands sent to the provider that the provider accepted and resulted in executed trades to the total number of trade commands sent to the provider that the provider is capable of accepting. The fill rate may be determined, for example, by measuring the number of trade commands sent to the provider that the provider accepted and resulted in executed trades and dividing this by the total number of trade commands sent to the provider that the provider is capable of accepting. The resulting value may be between 0 and 1, inclusive, and may be expressed as a percentage (i.e., multiplied by 100). For example, if 10 trade commands are sent to a provider and the provider responds with "Done" to all 10 trade commands, each of which results in an executed trade, the provider's fill rate would be 100%. As another example, if 10 trade commands are sent to a provider and the provider responds to 7 trade commands with a "Done" command, each of which results in a trade being executed, and 3 trade commands with a "Abort" command, the provider's fill rate would be 70%.As another example, if 10 trade commands are sent to a provider and the provider responds to 3 trade commands with a "Done" command, each of which results in a trade being executed, 4 trade commands with a "Abort" command, 1 trade command without responding, 1 trade command with a "Done" command but taking too long, and 1 trade command with a "Done" command but after the taker submits a retract command, the provider's fill rate would be 30% (because only 3 of the 10 trade commands result in a trade being executed).As another example, if a trade command is sent to a provider against an order that is canceled by the provider and / or executed against the order prior to receipt of the trade command, such unexecuted trade command would not be considered to adversely affect the provider's determined fill rate. As will be appreciated by those skilled in the art, fill rates may be defined and determined in other ways.

[0050] According to another and / or additional example, the fill rate may be determined and updated for a provider regardless of time, such that the provider's entire history of responses to trade commands is taken into account. According to another and / or additional example, the fill rate may be determined and updated for a provider over a specified duration, e.g., a specified number of hours, a specified number of days, etc. For example, the duration may be the pre-trading day when the market is open. Thus, the fill rate may be determined / updated at the end of each trading day, e.g., taking into account only the provider's responses to trade commands for that day. As another example, the duration may be measured over a running duration, such as the last x hours. Thus, the fill rate may be determined / updated hourly, taking into account trade commands for the last x hours. As will be appreciated by those skilled in the art, the fill rate may be defined and determined in additional and / or different ways than those discussed herein. For example, if a provider responds with "Done" to a trade command for a size smaller than the size specified in the trade command, this incomplete fill may adversely affect the fill rate, which may result in a lower fill rate than if a "Done" response were made for the same size as the size specified in the trade command. In a given market, each provider may determine their fill rate in the same way, or different providers may determine their fill rates differently. Other variations are possible, as will be appreciated by those skilled in the art.

[0051] According to another and / or additional example, a fill rate may be determined based on a comparison of filled and unfilled volumes, e.g., for a trading product, over a period of time. Appropriate periods may include a historical period (e.g., the past two trading weeks) and response times (e.g., the percentage of orders typically filled within milliseconds of an execution request). In some embodiments, the number of various orders filled or unfilled may be irrelevant; instead, a comparison of total filled volume versus total unfilled volume may be appropriate. For example, if a trader filled only half of the total volume of a particular trading product routed to him for execution, the trader may be calculated to have a 50% fill rate for that trading product. In this example, the calculated fill rate may be 50% even if the filled 50% represented 80% of the orders (e.g., this may occur if the number of filled orders tended to be smaller than the number of unfilled orders, or if the trader partially filled various orders).

[0052] According to another and / or additional example, a provider may, in an instance, have one or more fill rates. For example, a provider may have one or more determined fill rates for each FX instrument that the provider fills trades on. For example, for a given FX instrument, the provider may have a single fill rate that is based on how the provider responds to trade commands, regardless of the source (i.e., taker) of the trade commands. As another and / or additional example, for a given FX instrument, the provider may have multiple fill rates, one for each taker, e.g., based on how the provider responds to trade commands from that taker. As another and / or additional example, for a given FX instrument, the provider may have fill rates that are based on how the provider responds to trade commands from multiple takers, not necessarily all takers to which the provider responds. As another and / or additional example, the provider may have fill rates that are determined across multiple FX instruments. As will be appreciated by those skilled in the art, other variations are possible, including different numbers of determined fill rates for different providers. For example, each provider may have a single fill rate based on how the provider responds to trade commands regardless of source (i.e., taker), and one or more providers may have fill rates associated with designated takers.

[0053] According to another and / or additional example, a provider's fill rate may be determined manually and / or electronically. For example, referring to system 100 as an example, a server, e.g., any of servers 101-106, may monitor orders generated by users / trading applications associated with the server and may also monitor trade commands countered by such orders. From such measurements, the server may determine the fill rate. In other words, a server assigned to / associated with a provider may determine the provider's fill rate. As an example, an application running on the server, e.g., matching engine 120, may perform such measurements to determine the fill rate. As another and / or additional example, a server, e.g., any of servers 101-106, may monitor trade commands generated by users / trading applications associated with the server and may also monitor orders issued against such trade commands, and from such measurements, determine the fill rate. In other words, a server assigned to / associated with a taker may determine the provider's fill rate. As one example, an application running on a server, e.g., matching engine 120, may perform such measurements to determine the fill rate. As another and / or additional example, a server of system 100 not associated with a user, e.g., server 150, may monitor orders, trade commands, etc. to determine the fill rate of providers of system 100. As another and / or additional example, any one or more servers of system 100 may monitor orders, trade commands, etc., and then, for example, an administrator may manually determine the fill rate of providers of system 100. As will be appreciated by those skilled in the art, the fill rate may be determined in other and / or additional ways.

[0054] According to another and / or additional example, a provider's fill rate may be made available to other servers in system 100 (i.e., servers other than and / or in addition to those associated with the provider). For example, if an administrator of system 100 determines a fill rate, the administrator may configure such fill rate to be available to one or more servers in system 100. As another and / or additional example, if a server in system 100, such as server 150, determines a fill rate, the server may communicate the fill rate to one or more servers in system 100. As another and / or additional example, if a server associated with a provider determines the provider's fill rate, the server may communicate the fill rate to one or more other servers in system 100. As one example, a provider's fill rate may be included in orders generated by the provider. As will be appreciated by those skilled in the art, the fill rate may be communicated in other and / or additional ways.

[0055] According to another and / or additional example, multiple fill rates for a provider may be determined for different quantities, e.g., for a particular trading product. For example, fill rates may be determined for quantities up to 100, between 101 and 1000 (inclusive), between 1001 and 5000 (inclusive), between 5001 and 10000, etc. This may be particularly useful, for example, if a provider has a high fill rate for small quantities and a low fill rate for large quantities. For example, a provider may have a calculated fill rate of 30% for euro dollar quantities between 1 million and 2 million euros, and an 85% fill rate for euro dollar quantities between 100,000 and 500,000.

[0056] According to another and / or additional example, the fill rate may be determined based on which side of the transaction the provider is, for example, whether the provider is the buyer or seller for a particular item. For example, in a transaction for a particular item, some providers may be more likely to fill orders as buyers than as sellers. Thus, if a provider is a buyer (or seller), the fill rate of the provider may be calculated based on the number (or volume, etc.) of orders filled by the provider when it was a buyer (or seller) versus the number (or volume) of orders not filled by the provider when it was a buyer (or seller).

[0057] According to another and / or additional example, the fill rate may be determined based on a spread, such as the spread between national best bid and offer (NBBO) prices. For example, some traders may be more likely to fill an order if the spread meets a particular threshold or range, such as if the spread is less than $1, or if the spread is less than its average spread, or if the spread is less than one standard deviation below the average spread for the traded instrument from the start of the trading day, or if the spread is greater than (and / or equal to) $0.10 and less than (and / or equal to) $0.20. Thus, the fill rate for a particular provider may depend on the current spread for the item for which the fill rate is calculated.

[0058] In some embodiments, the fill rate may be determined based on various factors described herein, such as the total amount of all trading products filled versus unfilled, the total amount of a particular trading product filled versus unfilled, the total number of orders from all sources filled versus unfilled, the number of orders for a particular trading product filled versus unfilled, the number of orders of the same amount and range as a particular order filled versus unfilled, etc. For example, a fill rate (e.g., net fill rate) may be calculated as a simple or weighted average of two or more fill rate values ​​calculated as discussed herein. For example, the calculated fill rate for a provider that may be used to place a particular trader's orders for a particular trading product in the particular trader's order book may be calculated as the average of (1) the provider's calculated total fill rate considering all trading products for all parties, (2) the provider's calculated fill rate for all trading products against that particular trader, and (3) the provider's calculated fill rate against that particular trader for the particular trading product.

[0059] In some embodiments, the fill rate may be determined based at least in part on response time. For example, a provider may be determined to have different fill rates for different response times. For example, a provider may be calculated to typically fulfill 70% of an average order within 10 milliseconds and 85% of an average order within 20 milliseconds.

[0060] In some embodiments, fill rate may be expressed as the probability of responding per unit time, which reflects both fill rate (as calculated in various examples herein) and response time.

[0061] According to another and / or additional example, when a provider's fill rate is communicated to and made available to a server, the fill rate may be communicated, for example, to the server's matching engine, but not to the server's trading applications and / or users. According to another and / or additional example, the fill rate may be communicated to the server's trading applications and / or users. According to another and / or additional example, when a received order is communicated by the matching engine to a respective trading application / user, the fill rate of the provider that generated the order may also be communicated to the trading application / user.

[0062] Those skilled in the art will also appreciate that the determination of fill rates and their use as defined herein is not limited to distributed architectures such as system 100. For example, the use of fill rates may also apply to centralized order books. Here, for example, a centralized trading system (e.g., a central server that manages the order book and receipt of orders and the execution of trade commands against such orders) may determine the provider's fill rate. Such a server may communicate the fill rate to computer systems used by end users.

[0063] According to another example, assume that three providers, User A, C, and D, each submit an order for a product at the same price, e.g., A's order is a size of 10, C's order is a size of 5, and D's order is a size of 5. Assume further that each order is routed to User B's server 102 and placed in order book 124b as discussed herein. Assume further that A's order takes priority in time over C's order, which takes priority in time over D's order. Assume further that User A's fill rate is 70%, User C's fill rate is 80%, and User D's fill rate is 90%. Upon receiving the orders, User B and / or trading application 122b may submit trade commands for the product at the prices of the three orders and with a size of 10. According to one example, matching engine 120b may prioritize the orders of users A, C, and D in order book 124b based on price and then the time the orders are submitted to the market. Thus, user A's order may take priority over user C's order, which may take priority over user D's order. Here, matching engine 120b may forward a trade command to server 101 / matching engine 120a in response to a trade command from user B with a size of 10 (which may be executed against A's order) because user A's order has the highest priority. According to another example, matching engine 120b may prioritize the orders of users A, C, and D in order book 124b based on price and then the fill rate (i.e., not based on time, unless two or more orders have the same price and associated fill rate). Thus, User D's order may take priority over User C's order, which may take priority over User A's order. Now, matching engine 120b, in response to the trade command from User B, may forward the trade command with a size of 5 to server 104 / matching engine 120d (which may execute against D's order) because User D's order has the highest priority.Additionally, matching engine 120b may attempt to fulfill the remaining size of the trade command with user D, which is 5. Alternatively, matching engine 120b may forward the trade command to server 103 / matching engine 120c with a remaining size of 5 (which may be executed against C's order) since user C's order has the next highest priority (e.g., in the order book). Again, those skilled in the art will appreciate that the above is one example of the operation of system 100 and that other variations are possible.

[0064] According to another example, assume that three providers, users A, C, and D, each submit an order for a product at a different price, where, for example, the price of A's order dominates the price of C's order, which in turn dominates the price of D's order (where dominating means, for example, a higher price in the case of a bid or a lower price in the case of an offer). Further assume that each order is routed to user B's server 102 and placed in order book 124b, as discussed herein. Further assume that, for example, A's order takes priority in time over C's order, which in turn takes priority in time over D's order. Further assume that user A's fill rate is 70%, user C's fill rate is 80%, and user D's fill rate is 90%. According to one example, matching engine 120b may prioritize orders of Users A, C, and D in order book 124b based on fill rate and then price (again, time may be used as an additional factor if two or more orders have the same fill rate). Thus, User D's order may take priority over User C's order, which may take priority over User A's order. According to this example, User B and / or trading application 122b may be more interested in their trade command being filled than the price at which it is filled. Thus, even if User B and / or trading application 122b do not know the fill rates of each of the providers that submitted their orders, knowing that one order is being prioritized over another order at a different price may allow the user to select what they consider to be a favorable fill rate for the price.

[0065] According to another and / or additional example, orders may be ordered according to a weighted average of price and fill rate. For example, in some embodiments, a 5% difference in fill rate may be weighted the same as a $0.10 price difference, such that an order is ordered in preference to an order that is $0.09 less expensive but has a 5% fill rate advantage. Response time may also be considered in a weighted manner. In some embodiments, a particular trader may specify the weighting of various factors, such as fill rate, response time, and price, for a particular trading product, in that particular trader's order book. For example, a user may specify a fill rate percentage equal to a price difference, or a fill rate percentage equal to a response time. For example, for purposes of ordering that particular trader's order book, the particular trader may specify that one price unit (i.e., a price that is one unit more advantageous to the particular trader) is equivalent to a 3% improvement in fill rate and a 2.5 millisecond improvement in response time. In this example, if a first sell order has a price of $12.25, an associated fill rate of 80%, and an associated response time of 13 milliseconds, and a second sell order has a price of $12.26 (one unit lower than $12.25), an associated fill rate of 86%, and an associated response time of 15.5 milliseconds, the first sell order and the second sell order may be considered to be of equal priority, and both of these orders may be placed in preference to a third order having a price of $12.25, an 80% response time, and a 15.5 millisecond response time.

[0066] According to another and / or additional example, one or more users of system 100 may have a specified threshold corresponding to a minimum fill rate they wish to achieve when submitting a trade command. In other words, if a user of system 100 acts as a taker, the user may specify a minimum fill rate they wish to achieve when submitting a trade command. A user may have a single threshold that applies to all financial instruments they wish to trade. As another example, a user may have multiple thresholds, one corresponding to each instrument they wish to trade. Different users may have different specified thresholds and may have a different number of specified thresholds. According to one example, a user / trading application / administrator of system 100 may configure each server associated with that user with the user's threshold, e.g., each matching engine, with the threshold. According to another and / or additional example, when a user / trading application submits a trade command to a respective matching engine, the order may include the threshold. For example, when User B and / or trading application 122b submits a trade command to its matching engine 120b against an order, the trade command may include a threshold value. As will be appreciated by those skilled in the art, other variations are possible.

[0067] In some embodiments, a higher fill rate may be associated with a more subordinate price and a higher spread because counterparties are generally more likely to fill orders at a price more favorable to them. (For example, if the current best bid / offer for a trading product is $5.00 / $5.50, some traders are more likely to fill bids at $5.50 than at $4.75, and some traders are more likely to fill offers at $5.75 than at $5.50.) Thus, by allowing a user to specify a minimum fill rate, various embodiments allow the user to express a trade-off between fill rate and price. For example, a user may specify a high fill rate, but typically at a more subordinate price, or a lower fill rate, typically at a more favorable price.

[0068] Figures 2 and 3 are exemplary graphs illustrating the relationship between average spread and estimated fill rate, according to some embodiments. Figure 2 shows an exemplary graph when the trade order size is equal to 1,000,000. Figure 3 shows an exemplary graph when the trade order size is 5,000,000. As shown in these graphs for both the exemplary Model A and the exemplary shift book, the estimated fill rate tends to increase with the average spread. The exemplary graphs in Figures 2 and 3 also illustrate the non-linear relationship between these variables for the graphed data sets; for example, the estimated fill rate increases more rapidly where the spread is low than where the spread is high.

[0069] According to another and / or additional example, when a taker (e.g., User B and / or trading application 122b) submits a trade command to counter an order in taker's order book 124b submitted by a provider (e.g., User A and / or trading application 122a), matching engine 120b may, for example, compare User B's specified threshold with User A's determined fill rate, and only if User A's fill rate is greater than User B's threshold (or equal to or greater than User B's threshold), transmit the trade command to User A's server 101 for potential execution of the trade command countering the order. Otherwise, matching engine 120b may not attempt to execute the trade command countering the order. According to another and / or additional example, assume that order book 124b contains, for example, two orders, each from a different provider, each at the same price, with the first order taking priority over the second order, for example, based on when they were submitted to the market. Here, upon receiving a trade command from User B and / or trading application 120b, matching engine 120b may first compare User B's specified threshold with the determined fill rate of the provider that submitted the first order, and only if the fill rate is greater than User B's threshold (or equal to or greater than User B's threshold) may transmit the trade command to that provider's server for potential execution of the trade command against that order. Otherwise, matching engine 120b may skip / ignore the first order and compare User B's specified threshold with the determined fill rate of the provider that submitted the second order. Again, matching engine 120b may transmit the trade command to the provider's server that submitted the second order for potential execution only if the fill rate is greater than User B's threshold (or equal to or greater than User B's threshold). More generally, matching engine 120b may skip / ignore orders in order book 124b if, at the time of receiving a trade command from User B and / or trading application 120b, the fill rate of those orders is less than, for example, a specified threshold value for User B. Again, this use of fill rate may also be applied to centralized trading systems.As will be appreciated by those skilled in the art, this use of fill rate may also be applied when the order book is prioritized by price then fill rate, or by fill rate then price.

[0070] According to another and / or additional example, if a provider submits an order to system 100 and that order is communicated to multiple other servers and their respective matching engines, some matching engines may not automatically post the order to their respective order books. For example, assume that User A and / or trading application 122a submit an order to system 100 and that the order is received at User B's server 102. Upon receiving the order, matching engine 120b may compare User B's specified threshold with User A's determined fill rate. If this fill rate is greater than User B's threshold (or equal to or greater than User B's threshold), the matching engine may post the order to order book 124b (and, in some cases, forward information about the order to the user and / or trading application 122b). Alternatively, if the fill rate is less than (or equal to or less than) User B's threshold, the matching engine may not post the order to order book 124b (and may not forward information about the order to User B and / or trading application 122b). In this way, User B / trading application 124b is only presented with (and thereby has the opportunity to trade against) orders that have associated fill rates that meet a certain threshold. Orders with associated fill rates that do not meet the user's specified threshold are hidden from the user (and therefore, the user does not have the opportunity to trade against). Further, according to this example, because different users in system 100 may have different thresholds and / or may use different fill rates for each provider, the order books at each server for a given instrument may be different (i.e., the current representation of the market may be different). As will be appreciated by those skilled in the art, this use of fill rate may also be applied when the order book is prioritized by price then fill rate, or by fill rate then price.

[0071] According to another and / or additional example, order books may be ordered based at least in part on response times. Response times may include the time it takes (e.g., on average) to receive a responsive or unresponsive response. Response times may vary across system components, time of day, users, etc. For example, two nodes in close proximity to each other in the system may have a very low response time, while nodes further apart may have a higher response time. Response times may also be longer during periods of heavy network traffic. In any event, response times for responsive and unresponsive messages may be tracked and measured. Similar to fill rates, response times may be measured for various time periods and situations. Specifically, response times may be calculated for a particular message path (e.g., the response time of provider #2 to respond to trader #3 (e.g., over the past three trading days)) or for a particular trading entity (e.g., the average response time across all responsive and unresponsive messages from provider #2 to all other trading entities).

[0072] In some cases, if the response time is long (e.g., 100 milliseconds), a trader can expect to get a single response from a single provider, while if the response time is short (e.g., 0.1-1 milliseconds), the trader can expect to receive multiple responses from multiple providers. For example, a trader wishing to fill an order for 1,000 units may have the following counterorders in their order book: (1) Provider #1 order. Quantity: 1,000. Response time: 1 millisecond. Fill rate: 40%. (2) Provider #2 order. Quantity: 1,200. Response time: 5 milliseconds. Fill rate: 50%. (3) Provider #3 order. Quantity: 1,200. Response time: 10 milliseconds. Fill rate: 60%. And, (4) Provider #3 order. Quantity: 2,000. Response time: 40 milliseconds. Fill rate: 90%. In particular, a trader can get a compliant or non-compliant response from Provider #1, from Provider #2 (if the order was not fully filled by #1), and from Provider #3 (if the order was not fully filled by #1 and #2), all in turn, in less time (16 milliseconds) than it would take to get a response from Provider #4. While Order #4 may have the best fill rate, a trader is more likely to get the order filled (and more quickly) by sending the order to Providers #1, #2, and / or #3 (as needed).

[0073] In some embodiments, an order may be routed to the same provider multiple times. For example, an order may be routed to Provider #1 multiple times before a response from Provider #4 is received. While the probability of responding after one routing to Provider #1 may be calculated as 40%, the probability of responding after five routings of the order to Provider #1 may be significantly higher than 40%. One calculation of such a probability may be: Probability of responding (after five routings to Provider #1) = 1 - (1 - 0.4)^5 = 92.224%, which is higher than the probability of Provider #4 responding after one routing. However, the probability of responding after multiple routings may not increase in this manner because each routing to the same provider may not be a mathematically independent event. Conversely, the probability of a provider responding may decrease each time such a provider does not fulfill the order. These values ​​may also be tracked and measured. For example, it may be determined that a provider with a 50% fill rate will have a 30% fill rate for orders previously routed to that provider that were not filled, and a 10% fill rate for orders that the provider rejected twice. In either case, it may be determined that the overall fill rate after several routings will be higher than the fill rate for a single routing.

[0074] Thus, in some embodiments, it may be desirable to reduce response time in order to achieve higher fill rates (and / or to achieve some price advantage or some increase in volume).

[0075] According to another and / or additional example, rejection rates (e.g., by liquidity providers) (e.g., the rate at which a provider rejects an order or type of order; in a sense, the inverse of fill rates) may be highly correlated. For example, a single order may be placed behind orders from multiple liquidity providers. For example, if User A wants to buy 1,000 units, liquidity providers #1, #2, and #3 may all place sell orders for 1,000 units to acquire those units and give them to User A. The order book may reflect three separate orders for 1,000 units (which appear to total 3,000 units), but only 1,000 units are actually needed. If one liquidity provider acquires 1,000 units to fill User A's buy order, other sell orders for 1,000 units from other liquidity providers will likely disappear. In this example, trader #1 may want to buy 2000 units, and trader #1's order book may show 1000 unit orders from liquidity providers #1, #2, and #3 with fill rates of 75%, 80%, and 90%. In this scenario, trader #1 may trade 1000 units with provider #3, and then discover that provider #1 and provider #2 will not fill the trader's remaining 1000 units. In this case, the fill rates of providers #1 and #2 will be highly correlated.

[0076] Thus, in some embodiments, the probability that two (or more) orders are independent or non-independent may be determined based on, for example, historical transaction information (e.g., correlation between two parties canceling, e.g., all or some, orders after one corresponding order has been filled (e.g., within a certain period of time)), quantity similarity, and time similarity (e.g., being entered at or near the same time), etc. For example, two similar orders from providers A and B (e.g., orders that are similar because they have the same or near the same price and quantity, e.g., were entered at or near the same time) may be determined to be likely duplicates if, in three of the last four instances that similar orders for the same product were entered from providers A and B, one of the orders was canceled within three milliseconds of the other order being filled.

[0077] In some embodiments, the rejection rate may be a function of the size of the representation. For example, the more providers represent the same order volume, the more likely their rejection rates are correlated. (This may be because, for example, the orders are based on the same potential volume from third parties, reflecting overlapping volumes of the same potential orders.) In some embodiments, the rejection rate may be a function of microstructure. The correlation between fill rate and rejection rate may be tracked and measured.

[0078] In some embodiments, liquidity dependencies between two or more orders may be estimated based on, for example, correlations between fill rates and rejection rates. For example, the server may determine, calculate, or otherwise estimate the likelihood that two (or more) orders are independent of each other or overlap (in whole or in part) with each other. For example, the system may determine that two orders with completely different liquidities are likely independent, and therefore, filling one order does not affect the available quantity of the other, and therefore, both orders can be hit (e.g., at their full volume). The system may determine that three other orders are likely to at least partially overlap with each other, and therefore, it is unlikely that any party can hit all three orders at their full volume. For example, the system may determine that three orders overlap 80% and therefore, after one order is filled, the other two orders will only have 20% of their respective volumes still available for trading. In some embodiments, to estimate liquidity dependencies, the router may detect the link status between each counterparty. In some embodiments, the system may detect Granger causality to estimate flow independence.

[0079] FIG. 4 illustrates an exemplary flowchart according to various embodiments of the present invention.

[0080] In block 405, traders may receive orders for trading instruments, including quantities and prices. These orders may include specific sides of buy / sell transactions, for example, bids (or offers). Each order may include a quantity. Some orders may be received before others.

[0081] In block 410, information about the order and the provider of the order may be determined, such as fill rate, response time, flow independence (or dependence), and other conditions. Of course, the information determined in block 210 may not be determined at any particular time, or relative to other blocks in the flowchart.

[0082] At block 415, the trader may receive information related to the order, for example, the information determined at block 210. This information may include information regarding fill rates, response times, liquidity independence (or dependence), and other information.

[0083] At block 420, the trader may be prompted to submit trader preferences, such as a threshold fill rate, a threshold response time, a minimum volume requirement, and / or other trading conditions. The trader may enter conditions and / or user preferences, such as a target fill rate (e.g., for a particular trading product), a threshold response time, a minimum volume requirement, and / or other trading conditions. For example, a user may specify a minimum volume requirement of 1000 units, a minimum fill rate of 70%, and a maximum expected response time of 20 milliseconds.

[0084] At block 425, a trader may enter a trade command, e.g., to fill a certain quantity of an order for a trading product, e.g., at a specified price (or best price). The trade command may be associated with conditions, such as a target fill rate, a minimum volume requirement, etc. The trade command may be interpreted as an instruction to fill the order according to the order book and conditions, e.g., by filling the order by fulfilling the trader's order specifications against contra orders in the trader's order book that are based on (e.g., meet) the conditions. For example, the command may be interpreted as an instruction to fill the order in the minimum amount of time, at a good (or best) price, and against contra orders that meet various conditions.

[0085] At block 430, one or more order instructions (e.g., execution requests) from a trader may be routed to one or more providers of orders (e.g., according to the trader's order book and terms). For example, instructions to execute one or more orders at the top of the order book may be routed to the providers of those orders. The orders may be selected based on their price, volume, fill rate, response time, liquidity independence, and / or other factors. One or more of the providers may be given a "second look" to determine whether to fill the requested order.

[0086] At block 435, one or more orders in the trader's order book may be executed, e.g., by one or more liquidity providers. Information regarding the execution may be routed to the trader, and the trader's order book (and the orders therein) may be updated to reflect the trade. For example, an unfilled order near the top of the order book may be moved to the back of the order book based on a determination (e.g., at block 430) that filled liquidity is likely to be duplicated by the amount of the unfilled order, meaning that the unfilled order will be less likely to be executed against it.

[0087] At block 440, if a portion of the trader's desired quantity remains unfilled, one or more order instructions (e.g., execution requests) may be routed to one or more providers of those orders according to the trader's updated order book and terms, and one or more of the orders listed in the updated order book may be executed in response thereto.

[0088] Information regarding compliance, non-compliance, and response times may be tracked in block 445. Such information may be used to determine and update estimates of fill rates, response times, and other information related to order books and routing.

[0089] While the present disclosure has been described in terms of particular embodiments and generally associated methods, modifications and permutations of these embodiments and methods will be apparent to those skilled in the art. For example, it should be understood that while various features are described in relation to FX products, such features may also apply to other commodities and trading products (e.g., stocks, bonds, retail products, and other products and services). Accordingly, the foregoing description of exemplary embodiments does not limit the present disclosure. Other modifications, substitutions, and alterations are possible without departing from the spirit and scope of the present disclosure.

[0090] The following sections provide guidance in interpreting this specification.

[0091] I. Terminology The term "product" means a machine, manufacture, and / or composition of matter, unless expressly stated otherwise.

[0092] The term "process" means a process, algorithm, method, etc., unless expressly stated otherwise.

[0093] 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.

[0094] "Invention" and like terms mean "one or more inventions disclosed herein" unless expressly stated otherwise.

[0095] 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.

[0096] The term "variants" of the present invention means embodiments of the present invention, unless expressly stated otherwise.

[0097] 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.

[0098] 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.

[0099] 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.)

[0100] 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.

[0101] 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.

[0102] 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.

[0103] 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.

[0104] 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.

[0105] 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.

[0106] 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).

[0107] 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).

[0108] The term "plurality" means "two or more" unless expressly stated otherwise.

[0109] The term "herein" means "herein, including any matter which may be incorporated by reference," unless expressly stated otherwise.

[0110] 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."

[0111] 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.

[0112] 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.

[0113] 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."

[0114] 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.

[0115] 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."

[0116] 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.

[0117] 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.

[0118] 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.

[0119] 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."

[0120] 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.

[0121] The term "determining" does not imply certainty or absolute accuracy; thus, "determining" can include estimating, inferring, predicting, guessing, averaging, and the like.

[0122] 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.

[0123] 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.

[0124] 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.

[0125] 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.

[0126] 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.

[0127] 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).

[0128] 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.

[0129] 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).

[0130] 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.

[0131] 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.

[0132] 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).

[0133] The section headings provided herein are for convenience only and should not be construed as limiting the disclosure in any way.

[0134] 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.

[0135] 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.

[0136] 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.

[0137] 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.

[0138] 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.

[0139] 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.

[0140] 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.

[0141] 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.

[0142] 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.

[0143] 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.

[0144] 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.

[0145] 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.

[0146] 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.

[0147] 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.

[0148] All embodiments are illustrative and do not imply that the invention or any embodiment has been made or performed, in any case.

[0149] 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.

[0150] The term "computing" is intended to mean determining using a processor in relation to a software algorithm.

[0151] "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).

[0152] "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).

[0153] 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.

[0154] 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.

[0155] 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.

[0156] 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.

[0157] The term "tangible computer-readable medium" refers to a "computer-readable medium" that comprises a hardware component such as an optical or magnetic disk.

[0158] 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.

[0159] The term "database" refers to any electronically stored collection of data stored in a searchable format.

[0160] The term "data structure" refers to a database within a hardware machine such as a computer.

[0161] 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.

[0162] 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.

[0163] 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.

[0164] 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.

[0165] 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.

[0166] 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.

[0167] 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.

[0168] 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.

[0169] 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.

[0170] 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.

[0171] 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).

[0172] 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.

[0173] 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.

[0174] 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.

[0175] The applicant intends to file additional applications to claim patents for subject matter disclosed and enabled but not claimed in this application.

[0176] 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.

[0177] 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).

[0178] 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.

[0179] 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.

[0180] 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.

[0181] 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.

[0182] 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 that would be understood by one of ordinary skill in the art.

[0183] 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."

[0184] 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).

[0185] 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.

[0186] 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.

[0187] [Appendix 1] At least one processor associated with a particular trader's workstation; at least one memory having instructions stored thereon, the instructions, when executed by the at least one processor, causing the at least one processor to: receiving a first order associated with a first fill rate and a first response time for an item; receiving, after receiving the first order, a second order for the item, the second order being associated with a second fill rate and a second response time; placing the second order in the order book of the particular trader in preference to the first order based at least in part on the first fill rate and the first response time associated with the first order and the first fill rate and the first response time of the second order; in response to placing the second order in the order book in priority to the first order, causing an order of the particular trader to be executed against the second order before any execution of any order of the particular trader against the first order. Device. [Appendix 2] 10. The apparatus of claim 1, wherein the step of receiving the first order includes receiving the first fill rate, and the step of receiving the second order includes receiving the second fill rate. [Appendix 3] 10. The apparatus of claim 1, wherein the first fill rate is determined based on a comparison of a number of times orders routed to a provider of the first order were filled by the provider of the first order and a number of times orders routed to the provider of the first order were not filled by the provider of the first order. [Appendix 4] 10. The apparatus of claim 1, wherein the first fill rate is determined based on a comparison of a number of times orders for the item routed to a provider of the first order were fulfilled by the provider of the first order and a number of times orders for the item routed to the provider of the first order were not fulfilled by the provider of the first order. [Appendix 5] 10. The apparatus of claim 1, wherein the first fill rate is determined based on a comparison of a total quantity of the first order routed to and fulfilled by a provider of the first order and a total quantity of the first order routed to and not fulfilled by the provider of the first order. [Appendix 6] 10. The apparatus of claim 1, wherein the first fill rate is determined based on a comparison of a total quantity of the items routed to and fulfilled by the provider of the first order and a total quantity of the items routed to and not fulfilled by the provider of the first order. [Appendix 7] 10. The apparatus of claim 1, wherein the first fill rate is determined based on a comparison of a number of times orders for the item in a particular quantity range that were routed to the first order provider were fulfilled by the first order provider and a number of times orders for the item in the particular quantity range that were routed to the first order provider were not fulfilled by the first order provider. [Appendix 8] The second order is associated with a first response time, and the instructions, when executed by at least one processor, cause the at least one processor to: receiving, by the at least one server, a third order for the item from a third user prior to receiving the second order, the third order having a price equal to a price of the second order, the third order being associated with a second response time that is longer than the first response time; and further instructing, by at least one server, placing the second order in the order book in priority over the third order based at least in part on the second response time associated with the third order being greater than the first response time associated with the second order; the step of transmitting the trade command by at least one server to the second user occurs prior to the step of transmitting any trade command relating to the item to the third user by the at least one server, the transmitting step occurring in response to the second order being placed in the order book in preference to the third order; 10. The apparatus described in Appendix 1. [Appendix 9] The instructions, when executed by the at least one processor, cause the at least one processor to: receiving a third order and a fourth order; determining a probability that at least a portion of the third order is not independent from at least a portion of the first order; placing the third order and the fourth order in the order book based at least in part on the determined probability that at least a portion of the third order is not independent from at least a portion of the first order. 10. The apparatus described in Appendix 1. [Appendix 10] 2. The device of claim 1, wherein the first fulfillment rate includes a probability of responding per unit time, and the second fulfillment rate includes a probability of responding per unit time. [Appendix 11] receiving, by at least one server, a first order and a second order for the items; the first order is associated with a first user and the second order is associated with a second user; the first and second orders have the same associated price; the first order is received before the second order; a first fill rate associated with the first order; the second order is associated with a second fill rate; receiving, by at least one server, a command to buy or sell the item, the command having a condition associated therewith; determining, by at least one server, that the first fill rate associated with the first order does not meet the threshold; as a result of determining that the first fill rate associated with the first order does not satisfy the threshold, ignoring the first order and determining, by at least one server, whether the second fill rate associated with the second order satisfies the condition; determining, by at least one server, that the second fill rate associated with the second order satisfies the condition; transmitting, by at least one server, a trade command associated with the second order to the second user prior to transmitting any trade command related to the first order as a result of determining that the second fill rate associated with the second order satisfies the condition; receiving, in response to communicating the trade command to the second user, a notification that the second user intends to trade against the trade command; A method comprising: [Appendix 12] the step of receiving the first order includes receiving the first fill rate; the step of receiving the second order includes receiving the second fill rate; the first fulfillment rate includes a probability of fulfillment per unit time, the second fulfillment rate includes a probability of fulfillment per unit time, The condition includes a fill rate threshold; the step of determining that the second fulfillment rate satisfies the condition includes determining that the second fulfillment rate is greater than the threshold value. The method described in Appendix 11. [Appendix 13] the first fill rate is determined based on a comparison of a number of times orders routed to the first user were filled by the first user and a number of times orders routed to the first user were not filled by the first user; The condition includes a fill rate threshold; the step of determining that the first fulfillment rate does not satisfy the condition includes determining that the first fulfillment rate is smaller than the threshold value. The method described in Appendix 11. [Appendix 14] 12. The method of claim 11, wherein the first fill rate is determined based on a comparison of the number of times orders for the item routed to the first user were fulfilled by the first user and the number of times orders for the item routed to the first user were not fulfilled by the first user. [Appendix 15] 12. The method of claim 11, wherein the first fulfillment rate is determined based on a comparison of a total amount routed to the first user and fulfilled by the first user and a total amount routed to the first user and not fulfilled by the first user. [Appendix 16] 12. The method of claim 11, wherein the first fulfillment rate is determined based on a comparison of a total quantity of the items routed to the first user and fulfilled by the first user and a total quantity of the items routed to the first user and not fulfilled by the first user. [Appendix 17] 12. The method of claim 11, wherein the first fill rate is determined based on a comparison of the number of times orders for the item within a particular quantity range routed to the first user were fulfilled by the first user and the number of times orders for the item within the particular quantity range routed to the first user were not fulfilled by the first user. [Appendix 18] the second order is associated with a first response time; receiving, by the at least one server, a third order for the item from a third user prior to receiving the second order, the third order having a price equal to a price of the second order, the third order being associated with a second response time that is longer than the first response time; and placing, by at least one server, the second order in the order book in priority over the third order based at least in part on the second response time associated with the third order being greater than the first response time associated with the second order; the step of transmitting the trade command by at least one server to the second user occurs prior to the step of transmitting any trade command relating to the item to the third user by the at least one server, the transmitting step occurring in response to the second order being placed in the order book in preference to the third order; The method described in Appendix 11. [Appendix 19] receiving a third order and a fourth order; determining a probability that at least a portion of the third order is not independent from at least a portion of the first order; ordering the third order and the fourth order in the order book based at least in part on the determined probability that at least a portion of the third order is not independent from at least a portion of the first order; 12. The method of claim 11, further comprising: [Appendix 20] A non-transitory computer-readable medium having stored thereon instructions that, when executed by at least one processor of a particular trader's workstation, cause the at least one processor to: receiving a first order associated with a first fill rate and a first response time for an item; receiving, after receiving the first order, a second order for the item, the second order being associated with a second fill rate and a second response time; placing the second order in the order book of the particular trader in preference to the first order based at least in part on the first fill rate and the first response time associated with the first order and the first fill rate and the first response time of the second order; in response to placing the second order in the order book in priority to the first order, causing an order of the particular trader to be executed against the second order before any execution of any order of the particular trader against the first order; Non-Transient Computer-Readable Medium

Claims

1. at least one processor associated with a particular trader's workstation, said at least one processor in electronic communication with a plurality of computers via an electronic communication network; at least one memory having instructions stored therein, The instructions, when executed by the at least one processor, cause the at least one processor to: receiving a first order from a first computer for an item, the first order being associated with a first fill rate and a first response time; receiving, after receiving the first order, a second order for the item from a second computer, the second order being associated with a second fill rate and a second response time; placing the second order in preference to the first order in the particular trader's electronic database of order books based at least in part on the first fill rate and the first response time associated with the first order and the second fill rate and the second response time associated with the second order; in response to placing the second order in the order book in priority to the first order, causing an order of the particular trader to be executed against the second order before any execution of any order of the particular trader against the first order; assigning ports of said electronic communications network for routing communications related to the execution of trade commands for particular trader orders; generating electronic signals for execution of trade commands for specific trader orders for routing communications through assigned ports of said electronic communications network; Execute Device.

2. receiving the first order includes receiving the first fill rate, and receiving the second order includes receiving the second fill rate; the first response time comprises a first value representing an amount of time it takes for a quantity to be at least partially filled by a first trader that submitted the first order; the second response time comprises a second value representing an amount of time it takes for at least a portion of the quantity to be filled by a second trader who placed the second order; 10. The apparatus of claim 1.

3. 2. The apparatus of claim 1, wherein the first fill rate is determined based on a comparison of a number of times orders routed to a provider of the first order were filled by the provider of the first order and a number of times orders routed to the provider of the first order were not filled by the provider of the first order.

4. 2. The apparatus of claim 1, wherein the first fill rate is determined based on a comparison of a number of times orders for the item routed to a provider of the first order were fulfilled by the provider of the first order and a number of times orders for the item routed to the provider of the first order were not fulfilled by the provider of the first order.

5. 2. The apparatus of claim 1, wherein the first fill rate is determined based on a comparison of a total quantity of the first order routed to and fulfilled by a provider of the first order and a total quantity of the first order routed to and not fulfilled by the provider of the first order.

6. 2. The apparatus of claim 1, wherein the first fill rate is determined based on a comparison of a total quantity of the items routed to and fulfilled by a provider of the first order and a total quantity of the items routed to and not fulfilled by the provider of the first order.

7. 2. The apparatus of claim 1, wherein the first fill rate is determined based on a comparison of a number of times orders for the item in a particular quantity range that were routed to a provider of the first order were fulfilled by the provider of the first order and a number of times orders for the item in the particular quantity range that were routed to the provider of the first order were not fulfilled by the provider of the first order.

8. The second order is associated with a first response time, and the instructions, when executed by at least one processor, cause the at least one processor to: receiving, by the at least one server, a third order for the item from a third user prior to receiving the second order, the third order being associated with a second response time that is longer than the first response time; and further causing at least one server to place the second order in the order book in priority over the third order based at least in part on the second response time associated with the third order being greater than the first response time associated with the second order; the step of transmitting the transaction command by at least one server to the second user occurs before the step of transmitting any transaction command relating to the item to the third user by the at least one server; the communicating step is performed in response to the second order being placed in the order book in priority over the third order; the price of the second order is the same as the price of the third order; 10. The apparatus of claim 1.

9. The instructions, when executed by the at least one processor, cause the at least one processor to: receiving a third order and a fourth order; determining a probability that at least a portion of the third order is not independent from at least a portion of the first order; placing the third order and the fourth order in the order book based at least in part on the determined probability that at least a portion of the third order is not independent from at least a portion of the first order.

10. The apparatus of claim 1.

10. The apparatus of claim 1 , wherein the first fill rate comprises a probability of responding per unit time, and the second fill rate comprises a probability of responding per unit time.

11. receiving, by at least one server, a first order for an item from a first computer at a first time, the at least one server being in electronic communication with a plurality of computers via an electronic communication network; receiving, by the at least one server, a second order for the item from a second computer at a second time after the first time; the first order is associated with a first user and the second order is associated with a second user; the first and second orders have the same associated price; a first fill rate is associated with the first order at the first time the first order is received; the second order is associated with a second fill rate at the second time the second order is received; receiving, by at least one server, a command to buy or sell the item, the command having a condition associated therewith; determining, by at least one server, that the first fill rate associated with the first order does not meet the threshold; as a result of determining that the first fill rate associated with the first order at a first time when the first order is received does not meet the threshold, ignoring the first order by at least one server and determining whether the second fill rate associated with the second order at a second time when the second order is received meets the condition; determining, by at least one server, that the second fill rate associated with the second order at a second time when the second order is received satisfies the condition; transmitting, by at least one server, a trade command associated with the second order to the second user prior to transmitting any trade command related to the first order as a result of determining that the second fill rate associated with the second order satisfies the condition at a second time when the second order is received; receiving, in response to communicating the trade command to the second user, a notification that the second user intends to trade against the trade command; assigning ports of said electronic communications network for routing communications related to the execution of trade commands for particular trader orders; generating electronic signals for execution of trade commands for specific trader orders for routing communications through assigned ports of said electronic communications network; A method comprising:

12. the step of receiving the first order includes receiving the first fill rate; the step of receiving the second order includes receiving the second fill rate; the first fulfillment rate includes a probability of fulfillment per unit time, the second fulfillment rate includes a probability of fulfillment per unit time, The condition includes a fill rate threshold; the step of determining that the second fulfillment rate satisfies the condition includes determining that the second fulfillment rate is greater than the fulfillment rate threshold value. The method of claim 11.

13. the first fill rate is determined based on a comparison of a number of times orders routed to the first user were filled by the first user and a number of times orders routed to the first user were not filled by the first user; The condition includes a fill rate threshold; the step of determining that the first fulfillment rate does not satisfy the condition includes determining that the first fulfillment rate is smaller than the threshold value. The method of claim 11.

14. 12. The method of claim 11, wherein the first fill rate is determined based on a comparison of the number of times orders for the item routed to the first user were fulfilled by the first user and the number of times orders for the item routed to the first user were not fulfilled by the first user.

15. 12. The method of claim 11, wherein the first fill rate is determined based on a comparison of a total amount of traffic routed to the first user that was satisfied by the first user and a total amount of traffic routed to the first user that was not satisfied by the first user.

16. 12. The method of claim 11, wherein the first fill rate is determined based on a comparison of a total quantity of the items routed to the first user and fulfilled by the first user and a total quantity of the items routed to the first user and not fulfilled by the first user.

17. 12. The method of claim 11, wherein the first fill rate is determined based on a comparison of the number of times orders for the item in a particular quantity range that were routed to the first user were fulfilled by the first user and the number of times orders for the item in the particular quantity range that were routed to the first user were not fulfilled by the first user.

18. the second order is associated with a first response time; receiving, by the at least one server, a third order for the item from a third user prior to receiving the second order, the third order having a price equal to a price of the second order, the third order being associated with a second response time that is greater than the first response time; and ordering, by at least one server, the second order in the order book in priority over the third order based at least in part on the second response time associated with the third order being greater than the first response time associated with the second order; the step of transmitting the trade command by at least one server to the second user occurs prior to the step of transmitting any trade command relating to the item to the third user by the at least one server, the transmitting step occurring in response to the second order being placed in the order book in preference to the third order; The method of claim 11.

19. receiving a third order and a fourth order; determining a probability that at least a portion of the third order is not independent from at least a portion of the first order; ordering the third order and the fourth order in the order book based at least in part on the determined probability that at least a portion of the third order is not independent from at least a portion of the first order; The method of claim 11 further comprising:

20. A non-transitory computer-readable medium having stored thereon instructions that, when executed by at least one processor of a particular trader's workstation, the at least one processor being in electronic communication with a plurality of computers over an electronic communications network, cause the at least one processor to: receiving a first order from a first computer for an item, the first order being associated with a first fill rate and a first response time; receiving, after receiving the first order, a second order for the item from a second computer, the second order being associated with a second fill rate and a second response time; placing the second order in preference to the first order in the particular trader's electronic database of order books based at least in part on the first fill rate and the first response time associated with the first order and the second fill rate and the second response time associated with the second order; in response to placing the second order in the order book in priority to the first order, causing an order of the particular trader to be executed against the second order before any execution of any order of the particular trader against the first order; assigning ports of said electronic communications network for routing communications related to the execution of trade commands for particular trader orders; generating electronic signals for execution of trade commands for specific trader orders for routing communications through assigned ports of said electronic communications network; Execute Non-transitory computer-readable medium.