CROSS-REFERENCE TO RELATED APPLICATIONSThis application claims priority from and claims the benefit of U.S. Provisional Application No. 60/834,327, filed Jul. 28, 2006, entitled “Electronic Equity Options Order Execution and Routing System,” which is hereby incorporated by reference.
BACKGROUNDIn the past, when all options trades were transacted on the floor, order processing and quote processing were completely separate manual processes. Individual quotes were manually maintained in an automated system which displayed one quotation for the entire pit, representing the best price but without an associated size. Orders, on the other hand, were maintained on one or more separate order books. A best bid and offer was calculated for quotations and professional orders, while a separate best bid and offer was calculated for the limit order book.
With the widespread adoption of multiple listings, exchanges began to increasingly integrate their systems and to execute orders and quotes completely electronically. As a result, some market centers now consolidate all active nonmarketable orders and nonmarketable quotes and maintain them together in the same book memory. For electronic systems that algorithmically allocate trades among orders and quotes, there are advantages to storing both in the same book.
In addition to storing orders and quotes in the same book, some systems also allow orders and quotes to be submitted to a market center using the same data pipeline, requiring a “thicker” telecom link to handle both, as an order message generally requires more data elements than a quote message does. While the ability to use one pipeline for both orders and quotes has some operational advantages, and having both orders and quotes already integrated on a single book makes it easier to execute and allocate trades, such business strategies may be less than optimal from a performance standpoint due to the high volume of options quotations compared to the much lower volume of options orders.
The options marketplace has historically been a quote-driven market, in contrast to the equities marketplace, which is generally perceived to be more of an order-driven market. On the options marketplace, a single stock can be the underlying for a hundred or more different strike prices and expiration dates. When the underlying stock is very active, market makers may need to update their quotations in dozens of options series simultaneously in response to the fluctuations of the underlying stock price.
The popularity of options trading has increased dramatically over the past few years. As a result, the quote traffic has required ever-increasing bandwidth. In recent years, the quotation rates have become so excessive that the SEC has requested that the options market centers propose quote mitigation strategies to reduce quote traffic. This issue is only being exacerbated further with the roll out of penny pricing in options. While penny increments can tighten the spread, especially in the most actively traded products, the downside is that quotes move around more in a penny environment, due to more pricing levels.
Accordingly, there is a need for a system and method that minimizes the impact of market maker quote traffic on the other components of the system, especially in regard to the ability to display and execute orders and quotes with maximum speed and efficiency.
SUMMARYAccording to one aspect of the present invention, a method for enhancing quote and order integration includes providing a market center which lists a plurality of options series, wherein the market center has an order book for each option series and a quote book for each option series, wherein the order book for a series is separate from the quote book for a series. The method further includes receiving a quote for a specified option series on the market center, analyzing the received quote to determine if the quote is marketable and, wherein if the quote is marketable, generating a system alert. Further, according to this aspect, wherein, in response to the system alert, the method retrieves the order book and the quote book for the specified option series, and simultaneously, reviews the retrieved order book and quote book to determine if at least one quote or order on the retrieved quote or order book can execute against the received quote. If a retrieved order can execute against the received quote, the method generates a pseudo-order to represent the received quote and executes the generated pseudo-order against the retrieved marketable order. According to another aspect of the present invention, if a retrieved quote can execute against the received quote, the method generates a pseudo-order to represent the received quote and generates a pseudo-order to represent the retrieved quote and executes the generated pseudo-orders against each other.
DESCRIPTION OF THE DRAWINGSThese and other features, aspects and advantages of the present invention will become better understood with regard to the following description, appended claims and accompanying drawings where:
FIG. 1 is a block diagram illustrating the trading environment in which an embodiment of the present invention operates;
FIG. 2 is a block diagram illustrating an overview of the architecture involved in the enhanced quote and order integration process;
FIGS. 3A-3B are flow diagrams illustrating processes for receiving market maker bids and offers in an embodiment of the present invention;
FIG. 4A is a flow diagram illustrating a process in an embodiment of the present invention, wherein an order matching engine reacts to a received “wake up” alert message;
FIG. 4B is an exemplary depiction of the generation of a virtual consolidated order and quote list of the present invention; and
FIG. 5 is a flow diagram illustrating a process in an embodiment of the present invention, wherein a market maker quote engine receives an executed quote message.
DETAILED DESCRIPTIONReferring toFIG. 1, a trading environment in which an embodiment of the system and method of the present invention operates is depicted. The examples discussed herein describe the use and application of the present invention in an equity options market center environment, but it should be understood that the present invention could be used in any type of financial instrument market center environment (e.g., equities, futures, bonds, etc.). This embodiment of the invention describes the use of multiply listed single-leg equity options in the invention environment, wherein contracts for a specified underlying security can be bought (if the option type is a call) or sold (if the option type is a put) at a specific strike price prior to a specific exercise date. The functionality described herein is generally applicable to all standard options products (including near-term options and LEAPs) in all underlying securities, including but not limited to exchange-listed stocks, Exchange-Traded Funds (ETFs), Holding Company Depositary Receipts (HOLDRs), American Depositary Receipts (ADRs), and commonly traded indices.
The trading environment of this embodiment includes amarket center20 which interacts with a number of other market centers24 (i.e., away markets) and traders atorder sending firms26 andmarket makers31. The trading environment of this invention supports amarket maker interface32 and market makerquotes data structure33. It should also be understood that themarket center20 referred to herein refers to a computing system having sufficient processing and memory capabilities and does not refer to a specific physical location. In fact, in certain embodiments, the computing system may be distributed over several physical locations. It should also be understood that any number oftraders26 ormarket makers31 or away market centers24 can interact with themarket center20. Themarket center20 is the market center on which aspecific trader26 posts a specific order, and on which aspecific market maker31 posts a specific quote. Themarket center20 includes anorder matching engine21, which validates, maintains, ranks, executes and/or routes all orders on themarket center20, and which executes marketable quotes on themarket center20. In this embodiment, the code for theorder matching engine21 is stored in the market center's memory.
Themarket center20 may also include a quote andlast sale interface23 that interacts with the away market centers24 to capture quote and last sale information. This information is stored to a best bids and offers and lastsales data structure25. Thisdata structure25 is where the market best bid and offer information is stored. Thisdata structure25 is also where the market trade reports (prints) are stored. Some issues may be traded exclusively on themarket center20, and accordingly away market quotes may not exist. Themarket center20 may also include an order and tradeparameters data structure27. The order and tradeparameters data structure27 stores pre-defined trading parameters and rules that are used by theorder matching engine21 in matching orders and executing trades. Themarket center20 may also include an order andexecution interface28 which interacts with thetraders26, themarket makers31, the away market centers24 and theorder matching engine21 in the order execution process.
Themarket center20 may also include an orderinformation data structure29 where order information is stored and a tradeinformation data structure30 where completed trade information is stored. Themarket center20 may also include amarket maker interface32 that interacts withmarket makers31 to capture market maker bids and offers in assigned issues. These bids and offers are logically and physically depicted in a marketmaker quotes structure33 in this illustration.
Throughout the discussion herein, it should be understood that the details regarding the operating environment, data structures, and other technological elements surrounding themarket center20 are by way of example and that the present invention may be implemented in various differing forms. For example, the data structures referred to herein may be implemented using any appropriate structure, data storage, or retrieval methodology (e.g., local or remote data storage in data bases, tables, internal arrays, etc.). Furthermore, a market center of the type described herein may support any type of suitable interface on any suitable computer system.
Referring toFIG. 2, a trading environment in which order sendingfirms26 andmarket makers31 send orders and quotes is depicted. As shown inFIG. 2, in this embodiment,order sending firms26 send only orders, whilemarket maker firms31 send both orders and quotes. Orders sent byorder sending firms26 are transmitted to the order andexecution interface28 using what is referred to herein as a “thick” pipeline that is able to accommodate all the data that must generally be specified on an incoming order using one or more established third-party message protocols, such as FIX, which generally requires a significant amount of housekeeping information to be included in its order messages. The order andexecution interface28 includes acustomer gateway routine28a, which, when executed, invokes a process that determines whether and by what means a specificorder sending firm26 is eligible to send orders to themarket center20, and also includes anorder validation routine28bwhich, when executed, invokes a process that determines whether the specific order meets all the business requirements of themarket center20. If an order is determined to be valid, then the order andexecution interface28 releases the order to theorder matching engine21 for further processing. Marketable orders are executed immediately, whereas nonmarketable orders that can execute later are posted to anorder book29aon theorder data structure29. Theorder book29aincludes all active nonmarketable orders resident on themarket center20, including fully displayed orders, partially displayed orders and nondisplayed orders.
As illustrated inFIG. 2, orders sent bymarket makers31 use a pipeline that is referred to herein as a somewhat “thinner” pipeline than the one used byorder sending firms26. Market marker orders can be sent on this somewhat thinner pipeline because orders sent bymarket maker firms31 are transmitted using a direct connection, so some information such as the identity of the sender is available directly from the TCP/IP connection. If a market maker order is determined to be valid, as with an order sending firm order, then the order andexecution interface28 releases the order to theorder matching engine21 for further processing. Marketable orders are executed immediately, whereas nonmarketable orders frommarket makers31 are posted to thesame order book29aas are orders fromorder sending firms26.
In contrast to orders, in this embodiment, market maker quotes are transmitted to themarket maker interface32 using what is referred to herein as a very “thin” pipeline. This is possible due to the fact that, generally speaking, a quote transmitted via a validated direct TCP/IP connection is extremely lean and does not require as much overhead as an order sent using a third-party message protocol. With a TCP/IP connection, themarket center20 already knows the identity of the firm sending the quote and the message type being transmitted. With one TCP/IP Write message, a market maker can send quotes in up to 200 different series, and with one TCP/IP Read message, themarket center20 can unload the quotes into a large array in the market maker quotesdata structure33. Also, as market makers are only allowed to send one bid and one offer per option series according to the business rules of themarket center20 in this embodiment, there is no need to transmit information for the purpose of distinguishing between multiple quotes for any given market maker in a given option series. As each incoming quote automatically overwrites a prior quote, there is no need for the identification required by a cancel/replace message, reducing quote traffic and functional complexity. It should also be noted that in this embodiment, auto-quoting is not supported. All market maker quotes are generated by the market makers, and all depleted quotes are replenished by the market makers.
Themarket maker interface32 includes a market maker direct connect routine32a, and also includes a marketmaker quote engine32b, which, when executed, initiates a process that receives and analyzes market maker quotes. Specifically, when the process receives a new market maker quote, it stores the quote in a marketmaker quote book33a. It also checks the price of the new market maker quote against resting contra-side market maker quotes, resting contra-side market center orders and optionally the contra-side away market center quotes. If the process determines that the new market maker quote may be marketable, i.e., the new market maker quote touches (i.e., equals or overlaps with) the price of any prior order or market maker quote, then the process generates a “wake up” alert message and sends it to theorder matching engine21, identifying the potentially marketable series. Theorder matching engine21, in response, as discussed in detail below, retrieves and combines the quote and order books as avirtual list42 and reads the combined books simultaneously, i.e. “walks” the list, to determine matching opportunities.
Orders and quotes in this embodiment of the invention are transmitted using separate pipelines, are stored and maintained in separate data structures and are kept separate until they need to be commingled and integrated for analysis and potential execution purposes. This results in optimized throughput because the quote pipeline is much “thinner” than the order pipeline, and the quote activity level is much higher than the order activity level. By isolating the market maker quote book, which needs to be updated much more often than the order book, theorder matching engine21 does not need to thrash unnecessarily to constantly update a combined book of quotes and orders. In this embodiment, away market best bid and offer (“BBO”) quotes25aare maintained in anotherdata structure25, further optimizing performance.
Receiving an Incoming Market Maker BidReferring toFIG. 3A, atstep100, the marketmaker quote engine32breceives an incoming market maker bid, and the market maker quote engine process is initiated. Atstep102, the process retrieves the marketmaker quote book33afor this option series from the market makerquote data structure33. Atstep104, the process checks whether the market maker that sent the bid already has a bid in this option series. If the market maker does not already have a bid in this series, then the process continues to step106, where it adds the incoming bid to the marketmaker quote book33ain price/time priority and proceeds to step109. If, however, atstep104, the process determines that the market maker does already have a bid in this series, then the process continues to step108, where it replaces the prior bid with the incoming bid, and re-ranks the quote according to its new price/time priority. By way of explanation, according to the business rules of the market center in this embodiment, a market maker is only allowed to publish one bid per option series.
The process continues to step109, where it checks if the new market maker bid locks or crosses the best market maker offer. If it does, then the process proceeds to step114, where the process generates a “wake up” message for theorder matching engine21. It should be noted that the locked/crossed best bid and offer (BBO) is not disseminated publicly. The “wake up” message in this embodiment includes a pointer to the option series so that theorder matching engine21 immediately knows which series to evaluate. The process then terminates instep116 as indicated.
Returning to step109, if, however, the new market maker bid does not overlap with the best market maker offer, then the process continues to step110, where it retrieves theorder book29afor this option series from the orderbook data structure29. Then, atstep112, the process checks if the price of the new market maker bid is greater than or equal to the best sell order. If the price of the new bid is inferior, then the process terminates as indicated atstep116.
If, however, the price of the new market maker bid is greater than or equal to the best sell order, then the process continues to step114, where, as before, it generates a “wake up” message with a pointer to the option series so that theorder matching engine21 immediately knows which series to evaluate. The locked/crossed BBO is not disseminated publicly. The process then terminates as indicated atstep116.
Receiving an Incoming Market Maker OfferReferring toFIG. 3B, similar to the process for receiving an incoming market maker bid, atstep200, the marketmaker quote engine32breceives an incoming market maker offer, and the market maker quote engine process is initiated. Atstep202, the process retrieves the marketmaker quote book33afor this option series from the market makerquote data structure33. Atstep204, the process checks whether the market maker that sent the offer already has an offer in this option series. If the market maker does not already have an offer in this series, then the process continues to step206, where it adds the incoming offer to the marketmaker quote book33ain price/time priority and proceeds to step209. If, however, atstep204, the process determines that the market maker does already have an offer in this series, then the process continues to step208, where it replaces the prior offer with the incoming offer, and re-ranks the quote according to its new price/time priority. By way of explanation, according to the business rules of the market center in this embodiment, a market maker is only allowed to publish one offer per option series.
The process continues to step209, where it checks if the new market maker offer locks or crosses the best market maker bid. If it does, then the process proceeds to step214, where the process generates a “wake up” message for theorder matching engine21. As described above, it should be noted that the locked/crossed best bid and offer (BBO) is not disseminated publicly. The “wake up” message in this embodiment includes a pointer to the option series so that theorder matching engine21 immediately knows which series to evaluate. The process then terminates as indicated atstep216.
Returning to step209, if, however, the new market maker offer does not overlap with the best market maker bid, then the process continues to step210, where it retrieves theorder book29afor this option series from the orderbook data structure29. Then, atstep212, the process checks if the price of the new market maker offer is less than or equal to the best buy order. If the price of the new offer is inferior, then the process terminates as indicated atstep216.
If, however, the price of the new market maker offer is less than or equal to the best buy order, then the process continues to step214, where, as before, it generates a “wake up” message with a pointer to the option series so that theorder matching engine21 immediately knows which series to evaluate. The locked/crossed BBO is not disseminated publicly. The process then terminates as indicated atstep216.
Order Matching Engine Receives “Wake Up” MessageReferring toFIGS. 4A and 4B, theorder matching engine21 receives a “wake up” message from the marketmaker quote engine32b, as described above, alerting it to a possible execution opportunity in a specific option series, as indicated atstep300. Theorder matching engine21 in response, and as described below, evaluates the orders and quotes, executes them if a match is possible, and notifies the marketmaker quote engine32bif any quotes need to be decremented or canceled due to the executions.
Atstep304 inFIG. 4A and as depicted inFIG. 4B, the process retrieves theorder book29afor the designated option series. Atstep306 inFIG. 4A and as depicted inFIG. 4B, the process retrieves a snapshot of the marketmaker quote book33afor the designated option series, and a snapshot of the awaymarket BBO book25afor the designated option series. Atstep307, the process combines the retrievedorder book29a, the retrieved marketmaker quote book33aand the retrieved awaymarket BBO book25ato create a virtual consolidated order andquote list42. The virtual consolidated order andquote list42 is a temporary, virtual list and is not maintained as a separate, standing order and quote book in this embodiment. The underlying orders and quotes are maintained in their separate data structures. The virtual consolidated order andquote list42 is assembled so that theorder matching engine21 can “walk” thelist42 as described below.
Specifically, atstep308, after the virtual consolidated order andquote list42 is generated, the process then “walks” both sides of the virtual consolidated order andquote list42 simultaneously, starting with the highest-ranked bid and the highest-ranked offer to determine if there is an overlap between the best bid prices and the best offer prices. The process then proceeds to step310 to determine if the new market maker quote can execute. If the new market maker quote can execute, then, atstep312, the process checks the active marketmaker quote book33aagain to determine if it is still executable, specifically to ensure that the new market maker quote has not been changed to an inferior price during the brief interval in which theorder matching engine21 was “walking” thelist42, i.e. the quote price in the snapshot is not stale. If, atstep312, the process determines that the market maker quote is no longer marketable, then the process terminates as indicated atstep314.
If, however, the current market maker quote is still marketable, then the process continues to step318, where it generates an immediate-or-cancel (“IOC”) pseudo-order on behalf of the underlying executable market maker quote. Atstep320, the process then executes the generated pseudo-order against any resting orders and/or resting market maker quotes whose prices overlap with the pseudo-order, in the sequence of their ranking. It should be noted that in this embodiment, market makers are responsible for transmitting their own linkage orders to other market centers if a market maker quote locks or crosses an away market quote. As such, pseudo-orders are not routed to away market quotes. In this embodiment, the resting orders and/or quotes are executed according to price/time priority, but with a preference for displayed interest over nondisplayed (“working”) order types. Accordingly, if any non-displayed, order types are executable against the pseudo-order, then the non-displayed order types are executed only after all displayed orders and quotes at the same price execute first.
If any resting market maker quotes are executable against the pseudo-order created on behalf of the new market maker quote, then the process also generates an IOC pseudo-order on behalf of each resting market maker quote that can execute. As indicated atstep322, the process decrements or removes the executed quotes from local memory. It should be noted that in this embodiment, at this point in the process, the quotes are depleted or decremented in the order matching engine's local memory only and do not affect the published quotes yet.
Atstep324, for each market maker quote that executed, the process sends an “executed quote” message to the marketmaker quote engine32binforming it of the quantity of contracts executed and the quantity remaining, if any. The process, as indicated atstep325, also sends the resulting trade information to the order andexecution interface28, which in turn sends the fills to theorder sending firms26 and the market maker firms31. The process then terminates instep326 as indicated.
Market Maker Quote Engine Receives an Executed Quote Message from the Order Matching Engine
Referring toFIG. 5, atstep400, the marketmaker quote engine32breceives an executed quote message from theorder matching engine21, and the process is initiated. Atstep404, the process retrieves the marketmaker quote book33afor the option series. Atstep408, the process checks if the price of the executed quote is the same as the price of the current quote. If the prices are different, then the process terminates as indicated atstep414. If, however, the prices are equal, then the process continues to step410, where it checks if the remaining quote size reported on the message is less than the current quote size. If the remaining quote size is indeed lower, then the process continues to step412, where it decrements the current quote size to the remaining quote size specified on the executed quote message. The process then terminates as indicated atstep414.
Returning to step410, if, however, the remaining quote size reported on the message is greater than or equal to the current quote size, then the process does not replace the current quote, and terminates as indicated atstep414. Accordingly, the process automatically decreases (but does not automatically increase) the size of a current quote.
DETAILED EXAMPLESExamples of how quotes and orders are processed in a preferred embodiment of the invention are provided below. It should be understood that the order and quote prices and sizes discussed in these examples are by way of example only to illustrate how the process of an embodiment of the invention operates. Quote and order processing is not limited to these examples.
In the examples below, the option series has three appointed market makers: LMM, MM2, and MM3. In the first example, market maker MM2 sends a new nonmarketable bid, which simply replaces its current bid. In the second example, market maker MM3 sends a new offer, whose price is marketable against a posted buy order and is also marketable against the bid from market maker MM2. As illustrated in these examples, theorder matching engine21 is not notified of the nonmarketable quote update, and is only notified of the marketable quote update.
At the start of these examples, the various books appear as shown below.
→The NBBO is 2.00 to 2.05 (50×240)For ease of illustration, the quotes from only two away market centers24 are shown. The awaymarket BBO book25alooks like this:
|
| Away Market Bids | Away Market Offers |
|
| Away Market A:Bid 30 @ 2.00 (10:00:03) | Away Market B: |
| Offer 40 @ 2.05 (10:01:02) |
| Away Market B: Bid 60 @ 1.95 (09:59:57) | Away Market A: |
| Offer 50 @ 2.10 (10:00:30) |
|
The marketmaker quote book33alooks like this:
|
| Market Maker Bids | Market Maker Offers |
|
| LMM:Bid 40 @ 1.95 (10:03:09) | LMM:Offer 70 @ 2.05 (10:00:27) |
| MM2:Bid 50 @ 1.95 (10:03:15) | MM3: Offer 60 @ 2.05 (10:02:05) |
| MM3:Bid 80 @ 1.95 (10:03:50) | MM2:Offer 50 @ 2.10 (10:00:36) |
|
Theorder book29alooks like this:
| |
| Buy Orders | Sell Orders |
| |
| Order A: Buy 20 @ 2.00 (10:02:07) | Order E: Sell 30 @ 2.05 |
| | (10:01:20) |
| Order G: Buy 10 @ 1.95 (10:02:45) | Order B: Sell 40 @ 2.05 |
| | (10:02:37) |
| Order F: Buy 30 @ 1.90 (09:57:10) | Order H: Sell 60 @ 2.10 |
| | (10:03:43) |
| Order D: Buy 50 @ 1.90 (10:04:03) | Order C: Sell 40 @ 2.15 |
| | (09:58:04) |
| |
→The market center BBO is 2.00 to 2.05 (20×200)
The public order book looks like this:
| |
| Bids | Offers |
| |
| 20 @ 2.00 | 200 @ 2.05 |
| 180 @ 1.95 | 110 @ 2.10 |
| 80 @ 1.90 | 40 @ 2.15 |
| |
Market Maker MM2 Sends a Nonmarketable BidReferring toFIG. 3A, atstep100 in this example, the marketmaker quote engine32breceives the following bid from market maker MM2:
Bid50@2.00
Atstep102, the initiated process retrieves the marketmaker quote book33afor this series. Atstep104, the process checks if MM2 already has a bid in this series. As shown below, a bid for MM2 does already exist:
|
| Market Maker Bids | Market Maker Offers |
|
| LMM:Bid 40 @ 1.95 (10:03:09) | LMM:Offer 70 @ 2.05 (10:00:27) |
| → MM2:Bid 50 @ 1.95 (10:03:15) | MM3: Offer 60 @ 2.05 (10:02:05) |
| MM3:Bid 80 @ 1.95 (10:03:50) | MM2:Offer 50 @ 2.10 (10:00:36) |
|
As a bid for MM2 already exists, the process continues to step108, where it replaces the current bid with the incoming bid and updates its timestamp. Atstep109, the process checks if the new MM2 bid (2.00) locks or crosses the best market maker offer (2.05). As it does not, the process continues to step110.
The marketmaker quote book33anow looks like this:
|
| Market Maker Bids | Market Maker Offers |
|
| → MM2:Bid 50 @ 2.00 (10:04:15) | LMM:Offer 70 @ 2.05 (10:00:27) |
| LMM:Bid 40 @ 1.95 (10:03:09) | MM3: Offer 60 @ 2.05 (10:02:05) |
| MM3:Bid 80 @ 1.95 (10:03:50) | MM2:Offer 50 @ 2.10 (10:00:36) |
|
Atstep110, the process retrieves the order book for this option series. Theorder book29alooks like this:
| |
| Buy Orders | Sell Orders |
| |
| Order A: Buy 20 @ 2.00 (10:02:07) | Order E: Sell 30 @ 2.05 |
| | (10:01:20) |
| Order G: Buy 10 @ 1.95 (10:02:45) | Order B: Sell 40 @ 2.05 |
| | (10:02:37) |
| Order F: Buy 30 @ 1.90 (09:57:10) | Order H: Sell 60 @ 2.10 |
| | (10:03:43) |
| Order D: Buy 50 @ 1.90 (10:04:03) | Order C: Sell 40 @ 2.15 |
| | (09:58:04) |
| |
Instep112, the process checks if the new MM2 bid price (2.00) is greater than or equal to the best sell order (2.05). As the new MM2 bid price is inferior to the best sell order, the process terminates instep116 as indicated.
→The market center BBO is now 2.00 to 2.05 (70×200)
The public order book looks like this:
| |
| Bids | Offers |
| |
| → 70 @ 2.00 | 200 @ 2.05 |
| → 130 @ 1.95 | 110 @ 2.10 |
| 80 @ 1.90 | 40 @ 2.15 |
| |
Market Maker MM3 Sends a Marketable Offer
Referring toFIG. 3B, atstep200 in this example, the marketmaker quote engine32breceives the following offer from market maker MM3:
Offer60@2.00
Atstep202, the process retrieves the marketmaker quote book33afor this series. Atstep204, the process checks if MM3 already has an offer in this series. As shown below, an offer for MM3 does already exist:
|
| Market Maker Bids | Market Maker Offers |
|
| MM2:Bid 50 @ 2.00 (10:04:15) | LMM:Offer 70 @ 2.05 (10:00:27) |
| LMM:Bid 40 @ 1.95 (10:03:09) | → MM3: Offer 60 @ 2.05 |
| (10:02:05) |
| MM3:Bid 80 @ 1.95 (10:03:50) | MM2:Offer 50 @ 2.10 (10:00:36) |
|
As an offer for MM3 already exists, the process continues to step208, where it replaces the current offer with the incoming offer and updates its timestamp. It should be noted that although the MM3 offer has now caused the marketmaker quote book33ato become locked, the marketmaker quote engine32bdoes not disseminate the MM3 offer to the marketplace, as that would result in themarket center20 generating a locked BBO quotation.
The marketmaker quote book33amomentarily looks like this:
|
| Market Maker Bids | Market Maker Offers |
|
| MM2:Bid 50 @ 2.00 (10:04:15) | → MM3: Offer 60 @ 2.00 |
| (10:05:05) |
| LMM:Bid 40 @ 1.95 (10:03:09) | LMM:Offer 70 @ 2.05 (10:00:27) |
| MM3:Bid 80 @ 1.95 (10:03:50) | MM2:Offer 50 @ 2.10 (10:00:36) |
|
Atstep209, the process checks if the new market maker offer locks or crosses the best market maker bid. As the MM3 offer (2.00) is the same price as the MM2 bid (2.00), the process continues to step214, where it sends a “wake up” message to theorder matching engine21, alerting it that this series must be evaluated for an execution. The process then terminates instep216 as indicated.
Order Matching Engine Retrieves the Order Book and Quote Books and Combines them into Ranked Lists
Referring toFIG. 4A, atstep300, the process receives the “wake up” message from the marketmaker quote engine32b, alerting it to the execution opportunity in this series. Atstep304, the process retrieves theorder book29afor the series.
Theorder book29aremains the same and still looks like this:
| |
| Buy Orders | Sell Orders |
| |
| Order A: Buy 20 @ 2.00 (10:02:07) | Order E: Sell 30 @ 2.05 |
| | (10:01:20) |
| Order G: Buy 10 @ 1.95 (10:02:45) | Order B: Sell 40 @ 2.05 |
| | (10:02:37) |
| Order F: Buy 30 @ 1.90 (09:57:10) | Order H: Sell 60 @ 2.10 |
| | (10:03:43) |
| Order D: Buy 50 @ 1.90 (10:04:03) | Order C: Sell 40 @ 2.15 |
| | (09:58:04) |
| |
Atstep306, the process takes a snapshot of the marketmaker quote book33afor this series and a snapshot of the awaymarket BBO book25afor this series and retrieves the snapshots. By way of explanation, as the quote books are too volatile to freeze for the duration of the evaluation and execution, a snapshot is taken and read into a local buffer for processing by theorder matching engine21.
The awaymarket BBO book25aremains unchanged and still looks like this:
|
| Away Market Bids | Away Market Offers |
|
| Away Market A:Bid 30 @ 2.00 (10:00:03) | Away Market B: |
| Offer 40 @ 2.05 (10:01:02) |
| Away Market B: Bid 60 @ 1.95 (09:59:57) | Away Market A: |
| Offer 50 @ 2.10 (10:00:30) |
|
The marketmaker quote book33ais momentarily locked and looks like this:
|
| Market Maker Bids | Market Maker Offers |
|
| MM2:Bid 50 @ 2.00 (10:04:15) | → MM3: Offer 60 @ 2.00 |
| (10:05:05) |
| LMM:Bid 40 @ 1.95 (10:03:09) | LMM:Offer 70 @ 2.05 (10:00:27) |
| MM3:Bid 80 @ 1.95 (10:03:50) | MM2:Offer 50 @ 2.10 (10:00:36) |
|
Atstep307, the process generates a virtual consolidated order andquote list42. It does this by combining theorder book29a, the snapshot of themarket quote book33a, and the snapshot of the awaymarket BBO book25atogether into a single ranked list of bids and a single ranked list of offers. As the order book does not presently contain any “working” orders, the market maker quotes and the orders are ranked according to strict price/time priority. As resident trading interest always has priority over nonresident trading interest at the same price level, the market maker quotes and the orders are ranked ahead of the away market quotes at the same price level.
Accordingly, the ranked list of bids looks like this:
| Order A: Buy 20 @ 2.00 (10:02:07) |
| MM2:Bid 50 @ 2.00 (10:04:15) |
| Away Market A:Bid 30 @ 2.00 (10:00:03) |
| Order G: Buy 10 @ 1.95 (10:02:45) |
| LMM:Bid 40 @ 1.95 (10:03:09) |
| MM3:Bid 80 @ 1.95 (10:03:50) |
| Away Market B: Bid 60 @ 1.95 (10:02:57) |
| Order F: Buy 30 @ 1.90 (09:57:10) |
| Order D: Buy 50 @ 1.90 (10:04:03) |
| |
The ranked list of offers looks like this:
| MM3: Offer 60 @ 2.00 (10:05:05) |
| LMM:Offer 70 @ 2.05 (10:00:27) |
| Order E: Sell 30 @ 2.05 (10:01:20) |
| Order B: Sell 40 @ 2.05 (10:02:37) |
| Away Market B:Offer 40 @ 2.05 (10:01:02) |
| MM2:Offer 50 @ 2.10 (10:00:36) |
| Order H: Sell 60 @ 2.10 (10:03:43) |
| Away Market A:Offer 50 @ 2.10 (10:00:30) |
| Order C: Sell 40 @ 2.15 (09:58:04) |
| |
The ranked list of bids and the ranked list of offers form the virtual consolidated order andquote list42, which momentarily looks like this:
| Order A: | Buy 20 @ 2.00 (10:02:07) | MM3: | Offer 60 @ 2.00 (10:05:05) |
| MM2: | Bid 50 @ 2.00 (10:04:15) | LMM: | Offer 70 @ 2.05 (10:00:27) |
| Away Market A: | Bid 30 @ 2.00 (10:00:03) | Order E: | Sell 30 @ 2.05 (10:01:20) |
| Order G: | Buy 10 @ 1.95 (10:02:45) | Order B: | Sell 40 @ 2.05 (10:02:37) |
| LMM: | Bid 40 @ 1.95 (10:03:09) | Away Market B: | Offer 40 @ 2.05 (10:01:02) |
| MM3: | Bid 80 @ 1.95 (10:03:50) | MM2: | Offer 50 @ 2.10 (10:00:36) |
| Away Market B: | Bid 60 @ 1.95 (10:02:57) | Order H: | Sell 60 @ 2.10 (10:03:43) |
| Order F: | Buy 30 @ 1.90 (09:57:10) | Away Market A: | Offer 50 @ 2.10 (10:00:30) |
| Order D: | Buy 50 @ 1.90 (10:04:03) | Order C: | Sell 40 @ 2.15 (09:58:04) |
|
Order Matching Engine Creates a Pseudo-Order on Behalf of the MM3 Offer, and Matches a Posted Buy OrderAtstep308, the process “walks” the virtual consolidated order andquote list42 to evaluate the execution opportunities, and determines that the MM3 offer is marketable against Buy Order A and the MM2 bid. Atstep310, the process retrieves the MM3 offer again from the marketmaker quote book33ato ensure that its price has not changed during the brief interval in which it was evaluating the virtual consolidated order andquote list42. As the MM3 offer has not changed in this example, instep312, the process determines that the MM3 offer is still marketable.
Atstep318, the process creates a pseudo-order on behalf of the MM3 offer:
Order PSO1: Sell60@2.00, IOC
Instep320, the process retrieves the best bid, Buy Order A, and matches20 contracts of Buy Order A at the price of 2.00, completely depleting Buy Order A and removing it from the books. Pseudo-order PSO1 (and the underlying MM3 offer) still have 40 contracts available to trade.
Theorder book29alooks like this:
| Order G: | Buy 10 @ 1.95 | Order E: | Sell 30 @ 2.05 (10:01:20) |
| (10:02:45) |
| Order F: | Buy 30 @ 1.90 | Order B: | Sell 40 @ 2.05 (10:02:37) |
| (09:57:10) |
| Order D: | Buy 50 @ 1.90 | Order H: | Sell 60 @ 2.10 (10:03:43) |
| (10:04:03) | Order C: | Sell 40 @ 2.15 (09:58:04) |
|
The virtual consolidated order andquote list42 momentarily looks like this:
| MM2: | Bid 50 @ 2.00 (10:04:15) | → MM3: | Offer 40 @ 2.00 (10:05:05) |
| Away Market A: | Bid 30 @ 2.00 (10:00:03) | LMM: | Offer 70 @ 2.05 (10:00:27) |
| Order G: | Buy 10 @ 1.95 (10:02:45) | Order E: | Sell 30 @ 2.05 (10:01:20) |
| LMM: | Bid 40 @ 1.95 (10:03:09) | Order B: | Sell 40 @ 2.05 (10:02:37) |
| MM3: | Bid 80 @ 1.95 (10:03:50) | Away Market B: | Offer 40 @ 2.05 (10:01:02) |
| Away Market B: | Bid 60 @ 1.95 (10:02:57) | MM2: | Offer 50 @ 2.10 (10:00:36) |
| Order F: | Buy 30 @ 1.90 (09:57:10) | Order H: | Sell 60 @ 2.10 (10:03:43) |
| Order D: | Buy 50 @ 1.90 (10:04:03) | Away Market A: | Offer 50 @ 2.10 (10:00:30) |
| | Order C: | Sell 40 @ 2.15 (09:58:04) |
|
Order Matching Engine Creates a Pseudo-Order on Behalf of the MM2 Bid, and Matches the MM3 Sell Pseudo-Order Against the MM2 Buy Pseudo-OrderStill atstep320, the process determines that pseudo-order PSO1 is also marketable against the MM2 bid. Accordingly, the process also checks the MM2 bid again in the marketmaker quote book33ato ensure that its price has not changed during the interval while the virtual consolidated order andquote list42 is being evaluated. The MM2 bid has not changed in this example.
The process creates a pseudo-order on behalf of the MM2 bid:
Order PSO2: Buy50@ 2.00, IOC
The process matches the remaining 40 contracts of pseudo-order PSO1 against 40 contracts of pseudo-order PSO2 at the price of 2.00, completely depleting pseudo-order PSO1. The remaining 10 contracts of pseudo-order PSO2 are immediately canceled. Instep322, the process decrements the MM3 offer by the quantity traded, completely depleting the MM3 offer and removing it from the virtual consolidated order andquote list42. The MM2 bid still has 10 contracts remaining.
The virtual consolidated order andquote list42 looks like this:
| → MM2: | Bid 10 @ 2.00 (10:04:15) | LMM: | Offer 70 @ 2.05 (10:00:27) |
| Away Market A: | Bid 30 @ 2.00 (10:00:03) | Order E: | Sell 30 @ 2.05 (10:01:20) |
| Order G: | Buy 10 @ 1.95 (10:02:45) | Order B: | Sell 40 @ 2.05 (10:02:37) |
| LMM: | Bid 40 @ 1.95 (10:03:09) | Away Market B: | Offer 40 @ 2.05 (10:01:02) |
| MM3: | Bid 80 @ 1.95 (10:03:50) | MM2: | Offer 50 @ 2.10 (10:00:36) |
| Away Market B: | Bid 60 @ 1.95 (10:02:57) | Order H: | Sell 60 @ 2.10 (10:03:43) |
| Order F: | Buy 30 @ 1.90 (09:57:10) | Away Market A: | Offer 50 @ 2.10 (10:00:30) |
| Order D: | Buy 50 @ 1.90 (10:04:03) | Order C: | Sell 40 @ 2.15 (09:58:04) |
|
As no further additional orders or quotes can execute at the present time, the virtual consolidated order andquote list42 is deleted from local memory.
Order Matching Engine Notifies the Market Maker Quote Engine of the executed MM3 Offer Quantity and the Executed MM2 Bid Quantity
Atstep324, the process generates an executed quote message on behalf of the MM3 offer:
→MM3 Offer (60@2.00) executed60, Leaves quantity=0
The process also generates an executed quote message on behalf of the MM2 bid:
→MM2 Bid (50@2.00) executed40, Leaves quantity=10
The process sends the two executed quote messages to the marketmaker quote engine32b. Atstep325, the process sends the execution reports to the order andexecution interface28. The trade for Order A is reported to the appropriateorder sending firm26, the trade for the MM3 offer is reported to market maker MM3, and the trade for the MM2 bid is reported to market maker MM2. The process then terminates instep326 as indicated.
Market Maker Quote Engine Receives the Executed Quote Message for the MM2 BidReferring toFIG. 5, atstep400 in this example, the marketmaker quote engine32breceives the executed quote message from theorder matching engine21 regarding the MM2 bid:
→MM2 Bid (50@ 2.00) executed40, Leaves quantity=10
Instep404, it retrieves the marketmaker quote book33afor the series. The marketmaker quote book33ais still momentarily locked and looks like this:
|
| Market Maker Bids | Market Maker Offers |
|
|
| MM2: | Bid 50 @ 2.00 | MM3: | Offer 60 @ 2.00 (10:05:05) |
| (10:04:15) |
| LMM: | Bid 40 @ 1.95 | LMM: | Offer 70 @ 2.05 (10:00:27) |
| (10:03:09) |
| MM3: | Bid 80 @ 1.95 | MM2: | Offer 50 @ 2.10 (10:00:36) |
| (10:03:50) |
|
Instep408, the process checks if the price of the MM2 bid on the executed quote message (2.00) is the same as the current published MM2 bid (2.00). As the prices are equal, the process continues to step410, where it checks if the remaining quote size (10) of the MM2 bid on the executed quote message is less than the current published MM2 bid size (50). As the remaining quote size on the message is less, the process continues to step412, where the marketmaker quote engine32bdecrements the current published quote size to 10 contracts.
The updated marketmaker quote book33anow looks like this:
|
| Market Maker Bids | Market Maker Offers |
|
|
| → MM2: | Bid 10 @ 2.00 | MM3: | Offer 60 @ 2.00 (10:05:05) |
| (10:04:15) |
| LMM: | Bid 40 @ 1.95 | LMM: | Offer 70 @ 2.05 (10:00:27) |
| (10:03:09) |
| MM3: | Bid 80 @ 1.95 | MM2: | Offer 50 @ 2.10 (10:00:36) |
| (10:03:50) |
|
MM
3 Sends a New Offer Before Receiving the Fill from the Prior Execution
In this example, in the brief interval before the marketmaker quote engine32breceives the executed quote message for the MM3 offer, market maker MM3 sends a new offer:
Offer40@2.05
Referring toFIG. 3B, atstep202, the marketmaker quote engine32bretrieves the marketmaker quote book33afor the series.
The marketmaker quote book33acurrently looks like this:
|
| Market Maker Bids | Market Maker Offers |
|
|
| MM2: | Bid 10 @ 2.00 | MM3: | Offer 60 @ 2.00 (10:05:05) |
| (10:04:15) |
| LMM: | Bid 40 @ 1.95 | LMM: | Offer 70 @ 2.05 (10:00:27) |
| (10:03:09) |
| MM3: | Bid 80 @ 1.95 | MM2: | Offer 50 @ 2.10 (10:00:36) |
| (10:03:50) |
|
Instep204, the process checks if market maker MM3 already has an offer for this series. As it does, the process continues to step208, where it replaces the current MM3 offer with the new MM3 offer and ranks the new offer in price/time priority.
The updated marketmaker quote book33anow looks like this:
|
| Market Maker Bids | Market Maker Offers |
|
|
| MM2: | Bid 10 @ 2.00 | LMM: | Offer 70 @ 2.05 (10:00:27) |
| (10:04:15) |
| LMM: | Bid 40 @ 1.95 | → MM3: | Offer 40 @ 2.05 (10:05:06) |
| (10:03:09) |
| MM3: | Bid 80 @ 1.95 | MM2: | Offer 50 @ 2.10 (10:00:36) |
| (10:03:50) |
|
Instep209, the process checks if the new market maker offer (2.05) locks or crosses the best market maker bid (2.00). As it does not, atstep210, the process retrieves the order book for the option series.
Theorder book29alooks like this:
| Order G: | Buy 10 @ 1.95 | Order E: | Sell 30 @ 2.05 (10:01:20) |
| (10:02:45) |
| Order F: | Buy 30 @ 1.90 | Order B: | Sell 40 @ 2.05 (10:02:37) |
| (09:57:10) |
| Order D: | Buy 50 @ 1.90 | Order H: | Sell 60 @ 2.10 (10:03:43) |
| (10:04:03) |
| | Order C: | Sell 40 @ 2.15 (09:58:04) |
|
Instep212, the process checks if the new MM3 offer (2.05) is less than or equal to the best buy order. As it is not, the MM3 offer is not marketable, and the process terminates instep216 as indicated. As the marketmaker quote book33ais no longer locked, the new MM3 offer is disseminated to the public order book and the market center BBO is updated.
→The market center BBO is now 2.00 to 2.05 (10×180)
The public order book looks like this:
| |
| Bids | Offers |
| |
| → 10 @ 2.00 | → 180 @ 2.05 |
| 130 @ 1.95 | 110 @ 2.10 |
| 80 @ 1.90 | 40 @ 2.15 |
| |
Market Maker Quote Engine Receives the Executed Quote Message for the Prior MM3 OfferReferring toFIG. 5, atstep400 in this example, the marketmaker quote engine32breceives the executed quote message from theorder matching engine21 regarding the MM3 offer:
→MM3 Offer (60@2.00) executed60, Leaves quantity=0
Instep404, it retrieves the marketmaker quote book33afor the series:
|
| Market Maker Bids | Market Maker Offers |
|
|
| MM2: | Bid 10 @ 2.00 | LMM: | Offer 70 @ 2.05 (10:00:27) |
| (10:04:15) |
| LMM: | Bid 40 @ 1.95 | MM3: | Offer 40 @ 2.05 (10:05:06) |
| (10:03:09) |
| MM3: | Bid 80 @ 1.95 | MM2: | Offer 50 @ 2.10 (10:00:36) |
| (10:03:50) |
|
Instep408, the process checks if the price of the MM3 offer on the executed quote message (2.00) is the same as the current published MM3 offer (2.05). As the prices are not equal, the process continues to step414, where it terminates as indicated. As shown in this example, the marketmaker quote engine32bdoes not reduce the quote size of the current MM3 offer because its price is different from that of the previous MM3 offer that executed above.
The state of the various books at the conclusion of these examples is shown below.
→The NBBO is 2.00 to 2.05 (40×220)The awaymarket BBO book25aremains unchanged and still looks like this:
|
| Away Market Bids | Away Market Offers |
|
|
| Away Market A: | Bid 30 @ 2.00 | Away Market B: | Offer 40 @ 2.05 |
| (10:00:03) | | (10:01:02) |
| Away Market B: | Bid 60 @ 1.95 | Away Market A: | Offer 50 @ 2.10 |
| (09:59:57) | | (10:00:30) |
|
The marketmaker quote book33alooks like this:
|
| Market Maker Bids | Market Maker Offers |
|
|
| MM2: | Bid 10 @ 2.00 | LMM: | Offer 70 @ 2.05 (10:00:27) |
| (10:04:15) |
| LMM: | Bid 40 @ 1.95 | MM3: | Offer 40 @ 2.05 (10:05:06) |
| (10:03:09) |
| MM3: | Bid 80 @ 1.95 | MM2: | Offer 50 @ 2.10 (10:00:36) |
| (10:03:50) |
|
Theorder book29alooks like this:
| Order G: | Buy 10 @ 1.95 (10:02:45) | Order E: | Sell 30 @ 2.05 |
| | | (10:01:20) |
| Order F: | Buy 30 @ 1.90 (09:57:10) | Order B: | Sell 40 @ 2.05 |
| | | (10:02:37) |
| Order D: | Buy 50 @ 1.90 (10:04:03) | Order H: | Sell 60 @ 2.10 |
| | | (10:03:43) |
| | Order C: | Sell 40 @ 2.15 |
| | | (09:58:04) |
|
→The market center BBO is 2.00 to 2.05 (10×180)
The public order book looks like this:
| |
| Bids | Offers |
| |
| 10 @ 2.00 | 180 @ 2.05 |
| 130 @ 1.95 | 110 @ 2.10 |
| 80 @ 1.90 | 40 @ 2.15 |
| |
While the invention has been discussed in terms of certain embodiments, it should be appreciated that the invention is not so limited. The embodiments are explained herein by way of example, and there are numerous modifications, variations and other embodiments that may be employed that would still be within the scope of the present invention.