Inter-program communication using messages related to exchange events and operations

The exchange system addresses inefficiencies in inter-program communication by integrating an event engine and matching engine architecture to optimize order processing through direct memory access and prioritized communication, thereby reducing latency and improving transaction efficiency.

JP7706619B2Active Publication Date: 2025-07-11BGC PARTENRS INC
View PDF 13 Cites 0 Cited by

Patent Information

Application Number
JP2024147090
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2009-03-18
Filing Date
2024-08-29
Publication Date
2025-07-11
Estimated Expiration
2030-02-11

AI Technical Summary

Technical Problem

Existing systems face challenges in efficiently managing inter-program communication for events and operations within exchanges, particularly in reducing latency and optimizing transaction processing through improved event handling and order management.

Method used

Implementing an exchange system with an event engine and matching engine architecture that processes orders and adjusts them based on event occurrences, using direct memory access and prioritized communication buses to minimize latency and enhance order processing efficiency.

Benefits of technology

The solution reduces latency and improves the efficiency of order processing by ensuring timely adjustments and matches based on real-time events, enhancing the overall performance of exchange transactions.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007706619000001
    Figure 0007706619000001
  • Figure 0007706619000002
    Figure 0007706619000002
  • Figure 0007706619000003
    Figure 0007706619000003
Patent Text Reader

Abstract

To provide a trading system for facilitating the execution of order transactions for financial products.SOLUTION: In a trading system, an exchange 201 comprises: a matching engine 207 for, upon receiving an order instruction, populating a buy order queue and a sell order queue, determining that at least a first order in the buy order queue and a second order in the sell order queue are a match and executing a transaction that satisfies the first order and the second order; and an event engine 213 for receiving an event occurrence instruction, determining, in response to reception of the event occurrence instruction, that an adjustment to the order is contingent on at least one criterion associated with an occurrence, determining that at least one criterion associated with the occurrence on which the order is contingent has been satisfied, and transmitting, in response to the determination, an instruction to adjust the order to the matching engine over a data bus.SELECTED DRAWING: Figure 2A
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to inter - program communication using messages related to events and operations of an exchange.

Brief Description of the Drawings

[0002]

Figure 1

Figures 2A - 2C

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Modes for Carrying Out the Invention

[0003] In the following Chapters I to X, guidelines for interpreting this application are provided.

[0004] I. Terms The term "product" means any machine, manufactured article, and / or composition of matter, unless otherwise specified.

[0005] The term "process" means any process, algorithm, method, etc., unless otherwise specified.

[0006] Each process (whether a method, an algorithm, or something else) essentially includes one or more steps, and thus all references to a "step" or "steps" of a process essentially have the prior description in the mere description of the term "process" or similar terms. Thus, any reference to a "step" or "steps" of a process in a claim has sufficient prior description.

[0007] The term "invention" and similar terms mean "one or more inventions disclosed in this application" unless otherwise specified.

[0008] The terms "an embodiment, embodiment, embodiments, the embodiment, the embodiments", "one or more embodiments", "some embodiments", "a particular embodiment", "an embodiment", "another embodiment", etc. mean "one or more (but not all) embodiments of the disclosed invention" unless otherwise specified.

[0009] The term "variant" of an invention means an embodiment of the present invention unless otherwise specified.

[0010] The reference to "another embodiment" in describing an embodiment does not suggest, unless otherwise specified, that the recited embodiment is mutually exclusive with another embodiment (e.g., an embodiment described prior to the recited embodiment).

[0011] The terms "comprising", "including", and their variants mean "including but not limited to" unless otherwise specified.

[0012] The terms "a", "an", and "the" mean "one or more" unless otherwise specified.

[0013] The term "plurality" means "two or more" unless otherwise specified.

[0014] Unless otherwise specified, the term "in this specification" means "in this application, including all that can be incorporated by reference".

[0015] Unless otherwise specified, when the phrase "at least one of" modifies a plurality of things (such as an enumerated list of things), it means one or any combination of more than one of those things. For example, the phrase "at least one of widget, car, and wheel" means (i) widget, (ii) car, (iii) wheel, (iv) widget and car, (v) widget and wheel, (vi) car and wheel, or (vii) any one of widget, car, and wheel. The phrase "at least one of" does not mean "each one of" the plurality of things when it modifies a plurality of things.

[0016] When numbers such as "one", "two", etc. are used as cardinal numbers indicating a quantity (for example, one widget, two widgets), they mean the quantity indicated by that number, but not at least the quantity indicated by that number. For example, the phrase "one widget" does not mean "at least one widget", and thus the phrase "one widget" does not imply, for example, two widgets.

[0017] Unless otherwise specified, the phrase "based on" does not mean "based only on". In other words, the phrase "based on" explains 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".

[0018] Unless otherwise specified, the terms "represent" and similar terms are not exclusive. For example, unless otherwise specified, the term "represent" does not mean "represent only". In other words, the statement "the data represents a credit card number" explains both "the data represents only the credit card number" and "the data represents the credit card number and also represents something else".

[0019] In this specification, the phrase "whereby" is used only prefixed to a clause or other collection of words that express only an intended result, purpose, or consequence of something already specified. Thus, when the term "whereby" is used in a claim, the clause or other words modified by the term "whereby" do not establish a further limitation of that claim, nor do they otherwise limit the meaning or scope of that claim.

[0020] The terms "e.g." and like terms mean "for example" and thus do not limit the terms or phrases being described. For example, in the sentence "A computer transmits data (e.g., instructions, data structures) via the Internet", the term "e.g." explains that "instructions" is an example of "data" that a computer can transmit via the Internet, and also explains that "data structures" is an example of "data" that a computer can transmit via the Internet. However, both "instructions" and "data structures" are merely examples of "data", and other things besides "instructions" and "data structures" can also be "data".

[0021] The terms "respectively" and like terms mean "interpreted individually". Thus, when two or more things have "respective" characteristics, each of such things has its own characteristics, and those characteristics may differ from each other, but it is not necessarily required that they differ from each other. For example, the phrase "Each of the two machines has its respective function" means that the first such machine has a certain function and the second such machine also has a certain function. The function of the first machine may or may not be the same as the function of the second machine.

[0022] The term "i.e." and like terms mean "that is" and thus qualify the term or phrase being explained. For example, in the sentence "A computer transmits data (i.e., instructions) via the Internet", the term "i.e." explains that "instructions" are the "data" that the computer transmits via the Internet.

[0023] Any given numerical range should include the integers and decimals within that range. For example, the range "1 to 10" should be interpreted as including, in particular, the integers from 1 to 10 (e.g., 1, 2, 3, 4, ···, 9) and non-integers (e.g., 1.1, 1.2, ···, 1.9).

[0024] If two or more terms or phrases are synonymous (e.g., because it is stated that the terms or phrases are synonymous), an instance of one such term / phrase does not mean that another such term / phrase must have a different meaning. For example, if a passage indicates that the meaning of "comprising" is synonymous with "including but not limited to", simply using the phrase "including but not limited to" does not mean that the term "comprising" means something other than "including but not limited to".

[0025] II. Determining The term "determining" and its grammatical variations (e.g., determining a price, determining a value, determining an object that meets a specific criterion) are used in a very broad sense. The term "determining" encompasses a wide range of actions and thus may include calculating, computing, processing, deriving, investigating, referring (e.g., referring to a table, database, or other data structure), verifying, etc. "Determining" may also include receiving (e.g., receiving information), accessing (e.g., accessing data in a memory), etc. Further, "determining" may include resolving, selecting, choosing, establishing, etc.

[0026] The term "determine" does not imply certainty or absolute accuracy; thus, "determine" can include estimation, extrapolation, prediction, speculation, etc.

[0027] The term "determine" does not imply that a mathematical process must be performed, that a numerical method must be used, or that an algorithm or process is employed.

[0028] The term "determine" does not imply that a particular apparatus must be used. For example, a computer need not necessarily perform the determination.

[0029] III. Sentence Format The limitation of the first claim encompasses one feature and two or more features (e.g., a limitation such as "at least one widget" encompasses one widget as well as two or more widgets). In a second claim that depends on the first claim, when the second claim expresses the limitation using the definite article "the" (e.g., "the widget"), this does not imply that the first claim encompasses only one feature, nor does it imply that the second claim encompasses only one feature (e.g., "the widget" can encompass both one widget and two or more widgets).

[0030] When an ordinal number (such as "first", "second", "third", etc.) is used as an adjective before a term, the ordinal number is used only to indicate a particular feature, such as to distinguish that particular feature from another feature described by the same or a similar term (unless otherwise specified). For example, "the first widget" may simply be so named, for example, to distinguish it from "the second widget". Thus, simply using the ordinal numbers "first" and "second" before the term "widget" does not indicate any relationship between the two widgets, nor does it indicate any other characteristics of one or both of the widgets. For example, simply using the ordinal numbers "first" and "second" before the term "widget" does not (1) indicate whether the widget comes before or after another in order and location, (2) indicate that the widget occurs or operates before or after another in time, or (3) indicate that either widget is ranked above or below another in terms of importance or quality. Further, simply using an ordinal number does not define a numerical limit for the feature identified by the ordinal number. For example, simply using the ordinal numbers "first" and "second" before the term "widget" does not indicate that there should not be more than two widgets.

[0031] When a single device, article, or other product is described herein, alternatively, two or more devices / articles (whether or not they cooperate) may be used in place of the single device / article described. Thus, the functions described as being held by a device may alternatively be held by two or more devices / articles (whether or not they cooperate).

[0032] Similarly, if two or more devices, articles, or other products are described herein (whether or not they cooperate), alternatively, a single device / article may be used in place of the two or more described devices or articles. For example, multiple computer-based devices may be replaced by a single computer-based device. Accordingly, the various functions described as being possessed by two or more devices or articles may alternatively be possessed by a single device / article.

[0033] The functions and / or features of the single device described may alternatively be embodied by one or more other devices that are described but not specified as having such functions / features. Accordingly, other embodiments need not include the device itself as described, but rather, those other embodiments may include one or more other devices having such functions / features.

[0034] IV. The disclosed examples and terms are non-limiting The scope of the disclosed invention should not be construed as being limited by the name (set forth at the beginning of the first page of this application) or the abstract (set forth at the end of this application) when interpreting the meaning of any claim or limiting the scope of any claim. The abstract is merely included in this application as required by Patent Rule 37 C.F.R. § 1.72(b).

[0035] The name of this application and the headings of the chapters provided herein are for convenience only and should in no way be construed as limiting this disclosure.

[0036] Numerous embodiments are described in this application, and these embodiments are presented for illustrative purposes only. The described embodiments are not limiting in any sense and are not intended to be limiting. The invention disclosed in this application is widely applicable to many embodiments as will be readily understood from this disclosure. Those skilled in the art will recognize that the disclosed invention can be implemented with various changes and modifications such as structural changes, logical changes, software changes, electrical changes, etc. Specific features of the disclosed invention may be described with reference to one or more specific embodiments and / or drawings, but it should be understood that such features are not limited to use in one or more of the specific embodiments or the accompanying drawings described by reference unless otherwise specified.

[0037] Embodiments may be disclosed as including some features, but other embodiments of the invention may include fewer features than all such features. Thus, for example, a claim may be directed to fewer features than the entire set of features in the disclosed embodiments, and such a claim does not include features beyond those explicitly recited in the claim.

[0038] None of the steps of the methods or elements of the products described in this application constitute, are essential to, or have the same scope as the invention claimed in the claims, unless otherwise specified in this specification or the claims.

[0039] The preamble of the claim merely describes the purpose, benefits, and possible uses of the invention claimed in the claim and does not limit the invention claimed in the claim.

[0040] This disclosure is not a complete description of all embodiments of the invention. This disclosure is also not a list of features that must exist in all embodiments of the invention.

[0041] All disclosed embodiments need not necessarily be included in the claims (including all of the pending claims, amended claims, issued claims, and cancelled claims). Further, an embodiment may be included in some claims (but not necessarily so). Thus, if a claim (regardless of whether it is a pending claim, an amended claim, an issued claim, or a cancelled claim) is directed to a particular embodiment, that fact is not evidence that the scope of other claims does not cover that embodiment.

[0042] Devices described as communicating with each other need not always be communicating with each other, unless otherwise specified. Conversely, such devices need only transmit to each other as necessary or desired, and in fact may refrain from data exchange for most of the time. For example, a machine that communicates with another machine via the Internet may not transmit data to the other machine for an extended period of time (e.g., for several weeks at a time). Further, devices that communicate with each other may communicate directly or indirectly through one or more intermediaries.

[0043] The description of an embodiment having several components or features does not imply that all or any of such components / features are necessary. On the contrary, various optional components are described to illustrate broad ranges of practicable embodiments of the invention. Unless otherwise specified, a component / feature is not essential or required.

[0044] Process steps or algorithms, etc. may be described in the specification or claims in a specific order, but such processes can be configured to be carried out in a different order. In other words, any order or sequence of steps that may be explicitly described in the specification or claims does not necessarily indicate a requirement to perform the steps in that order. The steps of the processes described herein can be carried out in any order that is feasible. Furthermore, some steps, despite being described or suggested as not being carried out simultaneously (for example, because one step is described after the other), can be carried out simultaneously. Additionally, the illustrations of the processes represented in the accompanying drawings do not suggest that the illustrated processes exclude other variations and modifications thereto, do not suggest that any of the illustrated processes or their steps are necessary for the present invention, and do not suggest that the illustrated processes are preferred.

[0045] A process can be described as including a plurality of steps, but this does not suggest that all or any of the steps are preferred, essential, or necessary. Various other embodiments within the scope of the described invention include other processes that omit some or all of the described steps. Unless otherwise specified, none of the steps are essential or required.

[0046] A process can be described alone, i.e., without reference to other products or methods, but in embodiments, the process can interact with other products or methods. For example, such interaction can include linking one business model to another business model. Such interaction can be provided to improve the flexibility or desirability of the process.

[0047] The product may be described as including a plurality of components, aspects, qualities, characteristics, and / or features, but it does not indicate whether any or all of these plurality are suitable, essential, or necessary. Various other embodiments within the scope of the described invention include other products that omit some or all of those described as a plurality.

[0048] (Optionally numbered) Lists of enumerated items do not imply that any or all of the items are mutually exclusive unless otherwise specified. Similarly, (optionally numbered) lists of enumerated items do not imply that any or all of the items encompass any category unless otherwise specified. For example, the enumerated list of "computer, laptop, PDA" 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 encompass any category.

[0049] (Optionally numbered) Lists of enumerated items do not imply that any or all of the items are equivalent to each other or can be easily substituted for each other.

[0050] All embodiments are illustrative and do not imply that the invention or any embodiment has been or will be made or implemented.

[0051] V. Calculation It will be readily apparent to those skilled in the art that the various processes described in this application can be implemented, for example, by a general-purpose computer, a dedicated computer, and a computing device appropriately programmed as needed. Generally, 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 a similar device) and executes those instructions, thereby performing one or more processes defined by those instructions. The instructions can be embodied, for example, by one or more computer programs, one or more scripts.

[0052] "Processor" means one or more microprocessors, a central processing unit (CPU), a computing device, a microcontroller, a digital signal processor, or a similar device, or any combination thereof, regardless of architecture (e.g., chip-level multiprocessing / multicore, RISC, CISC, microprocessor with non-interlocking pipeline stages, pipeline configuration, simultaneous multithreading).

[0053] Therefore, the description of a process is also a description of an apparatus for performing the process. An apparatus for performing a process can include, for example, a processor, an input device, and an output device appropriate for performing the process.

[0054] Furthermore, a program (as well as other forms of data) for implementing such a method can be stored and transmitted in several ways using various media (e.g., computer-readable media). In some embodiments, wiring circuitry or custom hardware can be used instead of, or in combination with, some or all of the software instructions capable of implementing the processes of the various embodiments. Thus, various combinations of hardware and software can be used instead of software alone.

[0055] The term "computer-readable medium" refers to any medium, multiple media, or combination of different media involved in providing data (e.g., instructions, data structures) that can be read by a computer, processor, or similar device. Such media can take many forms including, but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks and other permanent memories. Volatile media typically includes dynamic random access memory (DRAM) that constitutes main memory. Transmission media includes coaxial cables, copper wire, and fiber optics, including the wires that make up a system bus coupled to a processor. Transmission media can include or convey acoustic, optical, and electromagnetic radiation such as that generated during data communication by radio frequency (RF) and infrared (IR). Common forms of computer-readable media include, for example, computer-readable floppy (registered trademark) disks, flexible disks, hard disks, magnetic tape, any other magnetic medium, CD-ROM, DVD, any other optical medium, punch cards, paper tape, any other physical medium with hole patterns, RAM, PROM, EPROM, flash EEPROM, any other memory chip or cartridge, the carrier waves described below, or any other medium.

[0056] Various forms of computer-readable media can be involved in carrying data (e.g., instruction sequences) to a processor. For example, the data can be (i) sent from RAM to the processor, (ii) carried via a wireless transmission medium, (iii) formatted and / or transmitted according to many formats, standards, or protocols such as Ethernet (registered trademark) (or IEEE802.3), SAP, ATP, Bluetooth (registered trademark), TCP / IP, TDMA, CDMA, and 3G, and / or (iv) encrypted in various arbitrary ways well-known in the art to secure privacy or prevent tampering.

[0057] Accordingly, the description of the process is also a description of a computer-readable medium storing a program for executing the process. The computer-readable medium can store (in any suitable format) program elements suitable for the execution of the method.

[0058] Similar to how the description of the various steps in a process does not indicate that all of the described steps are required, embodiments of an apparatus include a computer / computing device operable to perform some (but not necessarily all) of the described processes.

[0059] Similarly, similar to how the description of the various steps in a process does not indicate that all of the described steps are required, embodiments of a computer-readable medium storing a program or data structure include a computer-readable medium storing a program that, when executed, can cause a processor to perform some (but not necessarily all) of the described processes.

[0060] When a database is described, one of ordinary skill in the art will understand that (i) alternative database structures for what is described can be readily utilized, and (ii) other memory structures other than databases can be readily utilized. Any example or description of any exemplary database described herein is an exemplary configuration of a stored information representation. For example, any number of other configurations other than those suggested by the tables exemplified in the drawings or elsewhere can be utilized. Similarly, any exemplified entry of a database represents only exemplary information. One of ordinary skill in the art will understand that the number and content of the entries can differ from those described herein. Further, even though the database has been described as a table, other formats (including relational databases, object-based models, and / or distributed databases) can be used to store and manipulate the data types described herein. Similarly, various processes as described herein can be implemented using an object approach or behavior of a database. Further, the database can be stored in a known manner locally or remotely to an apparatus accessing the data within such a database.

[0061] Various embodiments can be configured to operate in a network environment that includes a computer that communicates with one or more devices (e.g., via a communication network). The computer can communicate directly or indirectly with the devices via any wired or wireless medium (e.g., the Internet, a LAN, a WAN, or Ethernet®, token ring, telephone lines, cable lines, wireless channels, optical communication lines, commercial online service providers, bulletin board systems, satellite communication links, any combination thereof). Each device itself can comprise a computer or other computing device configured to communicate with a computer, such as one based on an Intel®, Pentium®, or Centrino® processor. Any number and type of devices can communicate with the computer.

[0062] In embodiments, a server computer or a central authority may not be necessary or may be undesirable. For example, the present invention may be implemented on one or more devices without a central authority in embodiments. In such embodiments, any function described herein as being performed by a server computer or data described as being stored in a server computer may instead be performed by such one or more devices or stored in such devices.

[0063] When a process is described, in embodiments, the process may operate without any user intervention. In another embodiment, the process may include some human intervention (e.g., steps are performed with or under the assistance of a human).

[0064] VI. Continued Applications This disclosure provides those skilled in the art with descriptions enabling the implementation of some embodiments and / or inventions. Some of these embodiments and / or some of the present inventions may not be described in the claims of this application, but nevertheless may be described in the claims of one or more continued applications claiming the benefit of the priority of this application.

[0065] The applicant intends to file additional applications to pursue patenting of subject matter that is not described in the claims of this application but is disclosed and enabled.

[0066] VII. 35 U.S.C. § 112, Paragraph 6 In a claim, a claim limitation that includes the term "means for" or the term "step for" means that 35 U.S.C. § 112, Paragraph 6 applies to that limitation.

[0067] In a claim, a limitation of a claim that does not include the term "means" or the term "step" means that, whether or not the limitation describes a structure, material, or act for performing the function, 35 U.S.C. § 112, paragraph 6 does not apply to the limitation. For example, in a claim, simply using the term "step" with reference to one or more steps of the claim or one or more steps of another claim does not mean that 35 U.S.C. § 112, paragraph 6 applies to that step.

[0068] With respect to a means or step for performing a specific function in accordance with 35 U.S.C. § 112, paragraph 6, the corresponding structure, material, or act described herein, and equivalents thereof, can perform the additional functions as well as the specified function.

[0069] Computers, processors, computing devices, and the like are structures capable of performing a wide range of functions. Such products can be operative to perform a specified function by executing one or more programs, such as a program stored in a memory device within the product or a memory device accessible by the product. Unless otherwise specified, such programs need not be based on any particular algorithm, such as any particular algorithm disclosed herein. It is well known to those skilled in the art that the specified function can be implemented via different algorithms and that which of several different algorithms is used is merely a design choice for performing the specified function.

[0070] Accordingly, with respect to a means or step for performing a specified function in accordance with 35 U.S.C. § 112, paragraph 6, the structure corresponding to the specified function includes any product programmed to perform the specified function. Such structure includes a product programmed to perform the function whether such product is programmed by (i) the disclosed algorithm for performing the function, (ii) an algorithm similar to the disclosed algorithm, or (iii) a different algorithm for performing the function.

[0071] Where means for performing a function that is a method is described, one structure for performing this method includes a computing device (e.g., a general-purpose computer) in which the hardware appropriate for performing the function is programmed and / or configured.

[0072] It also includes a computing device (e.g., a general-purpose computer) in which the hardware appropriate for performing the function is programmed and / or configured via other algorithms as would be understood by those skilled in the art.

[0073] VIII. Disclaimer Multiple references to a particular embodiment do not indicate a disclaimer or negation of additional different embodiments, and similarly, a reference to a description of an embodiment that includes all of a particular feature does not indicate a disclaimer or negation of an embodiment that does not include that particular feature. Explicit disclaimers or negations in this application shall be preceded by the phrase "not including" or the phrase "not capable of performing".

[0074] XI. Incorporation by Reference Any patent, patent application, or other document referenced herein is incorporated by reference into this application as part of the present disclosure solely for the purposes of the written description requirement under 35 U.S.C. § 112, paragraph 1 and the enablement requirement under 35 U.S.C. § 112, paragraph 1, and should never be used to limit, define, or otherwise interpret the terms of this application. This application would provide a definite meaning even in the absence of such incorporation by reference, and rather, it would be possible to provide a definite meaning for such terms. Accordingly, those skilled in the art need never be limited by any of the embodiments provided in the reference.

[0075] Any incorporation by reference, in and of itself, does not imply support, approval, or acquiescence for any mention, opinion, claim, or characterization contained in any of the patents, patent applications, or other documents incorporated by reference, unless expressly stated otherwise in this patent application.

[0076] X. Application History (Regardless of whether there are other patent applications recognized as relevant to this application when interpreting this application (including the claims), and regardless of whether there are other patent applications sharing the claim of priority of this application), those skilled in the art shall refer to the application history of this application but not to the application history of other patents or patent applications.)

[0077] XI. Embodiment Examples FIG. 1 shows the configuration of an exchange 101 as an example coupled to an exchange participant 103. The exchange 101 may include one or more computer systems and / or computer components configured to provide trading services to the participant 103. The exchange 103 may receive information regarding the trading intent of the participant 103. The exchange 101 may identify a case where the trading intents of a pair of participants match. The exchange 101 may execute a trade that satisfies the matching trading intents.)

[0078] The exchange may include one or more computer systems and / or computer components configured to match orders for financial products and facilitate the execution of trades that satisfy the matching orders. The exchange may include alternative trading systems such as the LiquidNet alternative trading system or the Aqua Equities alternative trading system. An example of an alternative trading system is described in U.S. Patent Application No. 12 / 257,499 filed on October 24, 2008, and this patent application is incorporated herein by reference. The exchange may include primary exchanges that can conduct initial offers and / or secondary trades, such as the New York Stock Exchange and the Chicago Mercantile Exchange.)

[0079] Financial products include products indicating ownership of liabilities or assets and / or any derivative products thereof, and are understood to include common stocks, shares, fixed-income products, bonds, corporate bonds, certificates of interest or deposit, warrants, options, futures, forwards, swaps, or generally any securities.)

[0080] Participant 103 may include any entity that participates in trading activities through exchange 101. For example, a participant may include an algorithmic trading system. Such an algorithmic trading system may monitor information and request that exchange 101 execute various trades based on changes in the information. A participant may include a proprietary trader. Such a proprietary trader may request that exchange 101 execute trades on the participant's own account. Examples of such traders may include hedge funds. As yet another example of a participant, a broker may be mentioned. A broker may request that exchange 101 execute trades on behalf of broker's client 105. In some embodiments, client 105 may communicate with the broker through communication network 107. Such a communication network may include, for example, a telephone line network for traditional brokerage services, a computer network for electronic brokerage services, and / or any other communication network (e.g., the Internet, a private network, etc.).

[0081] It should be appreciated that a participant may include any combination of computers and humans. For example, an Internet broker such as Etrade may operate as a participant directed by a human investor, a traditional broker may interface using a direct connection to the exchange, an algorithmic trader may include a computer that executes an algorithm based on data and generates orders using little or no input from a human and based on the output of the algorithm, an investment bank may include highly skilled investment professionals who analyze companies and generate orders based on that information (e.g., by intervening in something or directly with the exchange), etc.

[0082] In some embodiments, participant 103 may communicate with exchange 101 through communication network 109. Communication network 109 may include, for example, the Internet, a data bus, a dedicated wired or wireless communication link, and / or any other communication network. Communication network 109 may enable unidirectional or bidirectional communication. Communication network 109 may enable communication, for example, using TCP / IP. Information may be transferred through the communication network in any form, including, for example, multiple data packets.

[0083] In some embodiments, one or more participants may communicate information regarding trading intent to the exchange. For example, an order may be sent from a participant through communication network 109 to the exchange in the form of an electronic message. The order may define the side of the financial instrument.

[0084] An example of a set of communications that includes linking multiple orders for fulfillment through an exchange is described in U.S. Patent Application No. 09 / 627,705, filed Jul. 28, 2000, which is hereby incorporated by reference herein.

[0085] In some embodiments, the exchange may communicate to the participant that a matching order has been found. For example, the exchange may send an electronic message identifying that a match to the order has been found. In some embodiments, if a match is found, the order may be fulfilled and such an instruction may be sent. In some embodiments, if a match is found, the participant may be requested to confirm the order before the trade is fulfilled, and the instruction may be translated to facilitate such fulfillment.

[0086] In some embodiments, a participant may communicate information regarding one or more events that may condition an order. For example, in some embodiments, an electronic message may indicate that an order may be submitted if an event occurs. The event may include an event related to a financial product for which an order is being submitted, an event related to a different financial product, an event not related to a financial product, and / or any other event. The event may include the period of validity of a condition (e.g., 7:00 am to 9:00 pm), a change in the value of a second financial product, a change in the trading volume of a second financial product, an earnings announcement by a company, a change in regulations governing an industry, a change in the credit rating of a company, and / or any other occurrence, event, etc. In some embodiments, the event may be related to an occurrence that may or may not happen.

[0087] In some embodiments, a participant may communicate information regarding one or more events that may adjust an order. For example, in some embodiments, an electronic message may indicate that an order should be deleted from an order queue if an event occurs, an electronic message may indicate that the quantity of an order should be changed if an event occurs, an electronic message may indicate that a passive order should be changed to an aggressive order if an event occurs, an electronic message may indicate that the price of an order should be changed if an event occurs, an electronic message may indicate that an order should be returned to the queue if an event occurs, and / or the instruction may indicate that any other adjustment to the order should be made if an event occurs.

[0088] In some embodiments, an exchange may communicate information regarding an event to a participant. For example, in some embodiments, the exchange may send an electronic message indicating that an event has occurred and / or has not occurred.

[0089] In some embodiments, communication through communication network 109 may include latency. Latency may include the time it takes for information to be transmitted from an information source to the destination of the information. For example, latency may include the time to route information through the network, the time for information to be transmitted over a wire, the time for information to be processed by an intermediate system, etc. Latency may, depending on the situation, such as when multiple participants compete for transactions after an event occurs, result in sub-optimal transaction results.

[0090] Information source 111 may include one or more providers of information relevant to making a determination regarding a transaction. Information source 111 may be part of exchange 101 and / or may be a separate entity. The information may include, for example, information about a transaction that has occurred, information about an order that is pending (e.g., within an order queue), information about the trading volume, information about a price change, information about a financial product, information about an index, information about the type of financial product, information about an industry, information about a political event, information about a regulatory change, and / or information about any other event. Such information may be useful, for example, to algorithmic trading systems that make determinations about orders based on such information as well as to human investors who make determinations about transactions based on various information. In some embodiments, information about an event at an exchange (e.g., trading stack, execution of a trade, etc.) may be reported by the exchange with a shorter latency because it has less communication latency than an intermediary that processes such information, but still may be delayed, for example, based on communication latency through a communication network.

[0091] FIG. 2A shows an example of an exchange 201 according to some embodiments.

[0092] As shown, the exchange 201 can be coupled to the participants 203 through the communication network 205. Examples of participants and communication networks were described above in connection with FIG. 1. As shown in FIG. 2A, the exchange 201 can include a matching engine 207, an interface 209, a first communication network 211, an event engine 213, and a second communication network 215. It should be recognized that these components are given as merely examples, and that various embodiments can include any number of additional and / or alternative components. For example, in some embodiments, a single bus can be used, the interface can be a separate machine, a separate rules processing engine can be used, the event engine and the matching engine can be combined, and any other optional components providing additional desired functionality can be included, etc.

[0093] The matching engine 207 can include one or more machine components. In some embodiments, the matching engine can include one or more processors. Such processors can include general-purpose processors configured to match orders. Such configuration can be done via hardware and / or software (e.g., programming and / or writing). The matching engine can be dedicated to a particular financial product, a particular event, a particular order type, a particular financial product type, the type of adjustment of features to an order, etc., as desired. In some embodiments, the matching engine can include a machine component (e.g., a processor) that identifies matches of orders for financial products and executes transactions that fulfill the matching orders. In some embodiments, the matching engine can maintain a buy order queue and a sell order queue with priority-ordered orders for matching, such that when multiple buy orders match a single sell order, the buy order with the highest priority in the queue is selected as the matching buy order.

[0094] The matching engine 207 may include a buy order queue 217 for financial products. The buy order queue may include a prioritized collection of buy orders for financial products. Priorities can be assigned to orders in any desired way. For example, priorities can be assigned to orders based on the time placed in the queue, the time the exchange received the order, the time the order was created, the time the matching engine received the order, the time associated with the event that initiated the creation of the order, the size of the order, the price of the order, etc. In one embodiment, for example, priorities can be primarily assigned to the queue such that the buy order with the highest price for each financial product is given the highest priority. In some embodiments, priorities can be secondarily assigned to the queue such that buy orders of the same price are assigned priorities based on the time placed in the queue. It should be recognized that any priority assignment can be used in various embodiments. It should also be recognized that the queue can include any collection prioritized in any way and that such a collection need not be read as requiring any additional attributes to the attributes described herein, nor should the exclusion of such attributes be read as required.

[0095] The matching engine 207 may include a sell order queue 219 for financial products. The sell order queue may include a prioritized collection of sell orders for financial products. Priorities can be assigned to orders in any desired way. For example, priorities can be assigned to orders based on the time placed in the queue, the time the exchange received the order, the time the order was created, the time the matching engine received the order, the time associated with the event that initiated the creation of the order, the size of the order, the price of the order, etc. In one embodiment, for example, priorities can be primarily assigned to the queue such that the sell order with the lowest price for each financial product is given the highest priority. In some embodiments, priorities can be secondarily assigned to the queue such that sell orders of the same price are assigned priorities based on the time placed in the queue. It should be recognized that any priority assignment can be used in various embodiments.

[0096] In some embodiments, the queue may include memory (e.g., RAM, registers, solid state memory, hard disk drive, etc.). In some embodiments, the order of elements within the memory may correspond to the order of priorities within the queue. In some embodiments, for example, a set of memory locations including orders may be linked from a first prioritized memory location to the next memory location and so on, thereby assigning priorities. In other embodiments, physical memory locations may have static priorities. In other embodiments, any other method of ordering the memory and / or assigning priorities to orders may be used.

[0097] In some embodiments, placeholder orders may be placed within the queue. For example, such orders may be used to maintain priorities based on the time of an order that has been (e.g., temporarily) removed from the queue. Such placeholder orders may be placed within the queue, for example, by adding nodes to a list that indicate where the order is but indicate to the matching engine that the order should not actually be used for order matching. In other embodiments, a non-active flag may be attached to a previous order, whereby the previous order is not a target for matching and such a flag may be changed later to reinstate the order.

[0098] In some embodiments, multiple buy order queues and / or multiple sell order queues may be used. For example, in some embodiments, a separate queue may be used for very large orders, a separate queue may be used for limit orders as opposed to market orders, multiple queues may be used to balance the load of orders, and so on.

[0099] In some embodiments, the matching engine may receive order instructions. Such instructions may be received from a remote system, an event engine, etc. via a bus or another communication network. The matching engine may add the order to an appropriate queue at an appropriate priority level (e.g., in response to receiving the order instruction). For example, if the order is a buy order, the order may be added to the buy order queue at a priority level according to the priority assignment procedure of the matching engine. In some embodiments, an instruction to add an order to a queue may be added to an instruction stack. The instruction stack may include a collection of instructions that the matching engine is required to process in some order of priority (e.g., FIFO). The matching engine may process an instruction to add an order to a queue when it has finished processing other higher-priority instructions in the instruction stack, thereby causing the matching engine to add the order to the queue.

[0100] In some embodiments, the matching engine may include an arithmetic logic unit and / or other processing elements that execute the processing of the matching engine. For example, such a processing unit may execute instructions from the instruction stack. Such a processing element may determine whether two orders match. Such a processing element may operate when two orders match. The matching engine may have any number of such processing elements that may be general-purpose and / or dedicated for a desired purpose. For example, in some embodiments, the matching engine may include a processing element that adds an order to a queue and a processing element that determines whether a match exists in the queue and operates accordingly.

[0101] In some embodiments, the matching engine may determine whether an order in the buy order queue matches an order in the sell order queue. For example, the processing element may determine whether the highest priority buy order matches the highest priority sell order. In some embodiments, multiple orders may match a single order. In some embodiments, multiple orders may match multiple orders. For example, if the orders are on the opposite side of a transaction for the same financial product and are at the same price and / or in an overlapping price range, the orders may match another order. In some embodiments, orders may match if they are of a similar quantity (e.g., an order may match only an order of a quantity that is at least 10% of the quantity of that order). In some embodiments, multiple smaller orders may match a single larger order. In some embodiments, orders may match partially. Partially matching orders may be removed from the queue, or the non-matching portion may be left in the queue, etc.

[0102] In some embodiments, in response to determining that a first and a second order match, the matching engine may execute a transaction that satisfies at least a portion of each of the two orders. Execution may include, for example, sending an instruction to execute the execution. In some embodiments, execution may include, for example, modifying information about the orders stored in a database to indicate that the orders have been executed against each other. In some embodiments, execution may include clearing, money transfer, transfer of ownership, back-end processing, etc. In some embodiments, some or all of the actions involved in execution may be performed by a remote system, an exchange, the matching engine, a person, etc. It should be appreciated that any action that causes the transfer of ownership of a financial product may be used as execution in various embodiments.

[0103] As described above, the exchange 201 may include an interface 209. The interface 209 can facilitate the communication of information between the exchange and the outside of the exchange (e.g., the communication network 205). The interface may include a network interface, as is well known. The interface can process the incoming communication and direct the communication to various components of the exchange, such as an event engine and a matching engine. The interface 209 can receive an instruction for an exchange event (e.g., trade execution) and direct information to a destination via the communication network 205.

[0104] In some embodiments, the interface 209 can receive information about events related to the exchange. For example, such information may include information about an order queue, information about a price, information about a volatility rate, fulfillment information, information about a trading volume, etc. Such information can be received from other elements of the exchange (e.g., a matching engine, an event engine, etc.) and / or from outside the exchange (e.g., an information source). Such information can be reported outside the exchange. By doing so, the exchange can function as an information source regarding such information. By obtaining information about events occurring in a trade from the exchange rather than an external information source, the latency regarding the information can be reduced.

[0105] In some embodiments, the interface 209 may include one or more mechanical components. Such components may include one or more processors, memories, etc. It should be recognized that the interface 209 is provided as a mere example and that in other embodiments, no interface and / or information source components may be included.

[0106] The communication network 211 can facilitate the communication between the components of the exchange 201. The communication network 211 may include a data bus of a single machine and / or any other communication network (e.g., a LAN, etc.).

[0107] As described above, the exchange 201 may include an event engine 213. The event engine 213 may include one or more computer components. For example, the event engine 213 may include a processor, a memory, and / or any other components. In some embodiments, the event engine may include a mechanical component (e.g., a processor) that determines when a condition is met based on the occurrence of an event. In some embodiments, the condition may include a prerequisite that may occur before the condition is met. The condition may include one or more events that may occur before the condition is met. Any number of operations may depend on the condition that is satisfied.

[0108] In some embodiments, the event engine 213 may receive information identifying one or more events and information identifying one or more orders that may condition all or some of the occurrence of the event. The event engine 213 may store information about the orders and events (e.g., in a database, memory, etc.). In one example embodiment, the event engine 213 may receive an electronic message sent from the participant 203 through the communication network 211. It should be understood that the message may undergo any number of transformations, may be divided into many packets or sub-messages, and may be received as multiple separate or connected messages, etc. In one example, the message may indicate that when the trading volume of ESpeed's stock reaches a threshold level, a buy order for 100 shares of ESpeed should be submitted to the exchange. It should be recognized that the embodiments are not limited to simple market orders and that various embodiments may include any type of order.

[0109] In some embodiments, the event engine 213 may receive information identifying one or more events and information identifying one or more actions that may be conditioned on all or some of the occurrences of the events. The event engine 213 may store information about the actions and events (e.g., in a database, memory, etc.). In one example embodiment, the event engine 213 may receive an electronic message sent from the participant 203 through the communication network 211. It should be understood that the message may undergo any number of variations, may be divided into many packets or sub-messages, or may be received as multiple separate or connected messages, etc. In one example, the message may indicate that if the stock price of ESpeed reaches a certain threshold, a buy order for 100 shares of ESpeed should be changed to a buy order for 50 shares of ESpeed. In another example, the message may indicate that if a number of sell orders for ESpeed shares exceeding a certain threshold are received, a buy order for 100 shares of ESpeed should be deleted from the queue. The message may indicate that a buy order for 100 shares of ESpeed should be returned to the queue if at least a threshold portion of a sell order for 100 shares is filled. As yet another example, the message may indicate that if the number of buy orders for ESpeed shares reaches a threshold level, a passive buy order for 100 shares of ESpeed should be changed to an aggressive buy order for 100 shares of ESpeed. It should be recognized that these examples are non-limiting and are provided as illustrations of specific embodiments.

[0110] In some embodiments, such information may be processed and / or stored to facilitate the analysis of whether an event has occurred and / or the determination of what would happen if any order were submitted when the event occurs. For example, a database in which such information is stored may be keyed based on the event so that all actions conditioned on that event can be easily referenced within the database if the event occurs.

[0111] In some embodiments, the event engine 213 may receive information regarding the occurrence of one or more events. Such events may include, for example, events occurring at an exchange, events occurring outside the exchange, and the like. For example, information about an event may be received through the communication network 211. Such information may be received from an external information source, from the exchange's matching engine, from a remote machine of the exchange, and the like. In one example, an electronic message may indicate an event such as the value of the trading volume of ESpeed shares.

[0112] In some embodiments, the event engine may determine whether the information received about an event satisfies one or more conditions upon which an order and / or an action is conditioned. In some embodiments, the event engine may make such a determination periodically, randomly, and / or at any other time in response to the receipt of event information. In some embodiments, such a determination may be made, for example, by referring to information stored about the conditions. In some embodiments where an order and / or an action may be conditioned on multiple events, a flag may be set (e.g., in a database) to indicate that an event has occurred. When all conditions are flagged, the conditions may be satisfied. When an event occurs such that a certain condition is no longer satisfied (e.g., the trading volume decreases), the flag may be unset. It should be appreciated that some orders may be conditioned on some and / or all of the conditions that are satisfied. For example, an order may be conditioned on a complex set of conditions such as (Condition A AND Condition B) OR (Condition C BUT NOT Condition D) OR (Condition E) in some embodiments.

[0113] In some embodiments, the event engine may determine whether conditions for an order and / or an operation are satisfied. For example, if an order is conditional only on the trading volume of ESpeed reaching a specific level and event information indicating that such a level has been reached is received, the event engine may determine that the conditions for the order are satisfied. For example, in some embodiments, the event engine may search and / or query a database or other collection of conditions to determine whether a flag is set for conditions associated with an order and / or an operation. It should be recognized that such determination may be made in any desired manner including, but not limited to, periodic queries to the database, messages triggered by the database, etc. For more complex conditioning, the event engine may determine whether a set of conditions that trigger an order are satisfied (e.g., from the above example, if A and B are true, C is true, but if D is true or E is true).

[0114] In some embodiments, for one or more orders and / or operations that satisfy the conditions, the event engine may facilitate the submission of one or more of each order and / or the execution of one or more operations. It should be recognized that in some embodiments, any number of orders may be submitted and / or any number of operations may be performed when the conditions are satisfied.

[0115] In an example of an ESpeed order, the event engine 213 may facilitate the submission of a buy order for 100 shares of ESpeed stock. The order may be submitted according to any other information received regarding the order as described above. In some embodiments, facilitating order submission by the event engine may include adding the order to an order queue in the matching engine 207. In an example of ESpeed stock, the event engine may add a buy order for 100 shares of ESpeed stock to the buy order queue of the matching engine.

[0116] As another example, a first buy order for 100 shares of ESpeed 100 stock can be placed in the queue at a price of $100 per share. Adjustment instructions and conditions can be received. The adjustment instructions and conditions can be received along with the instructions for the first order. The conditions and adjustments can identify that an adjustment should be made to the order if the conditions are met.

[0117] For example, if a large sell order for ESpeed stock is received (e.g., an order exceeding a threshold, a sell order of more than 1000 shares), the required adjustment could be to delete 100 shares of the buy order from the queue. In some embodiments, second conditions and actions can be received. The second conditions and actions can be to return the order to the queue if some of the sell order is filled (e.g., a threshold portion is filled, etc.), if the total quantity associated with the sell order is reduced (e.g., below some threshold amount), and / or if any other event occurs. The exchange can monitor these conditions as they occur and facilitate adjustments to the order accordingly.

[0118] As another example, if a price change occurs for a sell order (e.g., a large increase or decrease), the required adjustment could be to increase or decrease the quantity associated with the order. For example, if the price decreases, the quantity can be increased, and if the price increases, the quantity can be decreased.

[0119] As another example, if a quantity change occurs for a sell order, the first order can be changed from a passive order to an aggressive order. For example, if the quantity of available sell orders is reduced below a threshold, the passive buy order can be changed to an aggressive buy order. In some embodiments, the quantity can be changed as well.

[0120] It should be recognized that the operating examples and conditions are non-limiting, and in various embodiments, any combination of the above operations and / or conditions, optionally associated operations and / or conditions, and / or any other operations and / or conditions may be used. For example, an increase in the offered and / or bid price, a decrease in the offered and / or bid price, an increase in the quantity demanded and / or offered, a decrease in the quantity demanded and / or offered, and / or any combination of any other events may cause any combination of operations such as a change in the order state from passive to aggressive, a change in the order type, a change in the order price, a change in the order quantity, cancellation of an order, submission of an order, and / or any other desired operations.

[0121] In some embodiments, by processing event occurrences by an event engine that is part of an exchange, delays related to order submission and / or operations conditioned on event occurrences can be reduced. For example, if such information is processed off-site by Participant 203 rather than by Event Engine 213, the delay associated with receiving event information can increase (e.g., if the event information is related to an event occurring at the exchange and the participant has a slower connection to the information source than the exchange), and the delay related to order submission and / or operations can increase (e.g., by transmitting through Communication Network 205), etc.

[0122] In some embodiments, the delay associated with transmitting information about an order (e.g., order submission, order adjustment, order deletion, etc.) to a matching engine can be based on the communication network that serves as the medium for transmitting the order information to the matching engine. In various embodiments, reducing the length of the communication network can reduce such delays, increasing the bandwidth of the communication network can reduce such delays, assigning priority to order information on the communication network can reduce such delays, and making the communication network dedicated to such functions can reduce such delays, etc.

[0123] In some embodiments, communication network 215 may include a data bus. The data bus may enable communication from the event engine to the matching engine. The data bus may be a dedicated bus that enables such communication. Such communication may be unidirectional or bidirectional. In some embodiments, such a bus may directly couple the event engine and the matching engine within the same machine. In some embodiments, the data bus may include an event injection bus. In some embodiments, an order received through the bus may function as an interrupt to the matching engine. In some embodiments, an order and / or an instruction to operate sent to the matching engine through the bus may be added to an instruction queue so as to be processed before at least one other pending instruction. For example, an instruction to process an order and / or an operation may be added to the top of an instruction stack so that the order and / or the operation is processed next by the matching engine. In some embodiments, an instruction to process an order and / or an operation may be added before an instruction to process another pending order and / or operation. In some embodiments, such an instruction may be added so as to be processed before an order and / or an operation received from another source (e.g., an order and / or an operation not received from the event engine, an order and / or an operation received from participant 203, etc.). In some embodiments, a separate instruction queue that can be processed before other orders and / or operations may be maintained for orders and / or operations from the event engine.

[0124] In some embodiments, the data bus may include a communication network used to transmit information between / among / from components of a machine. In some embodiments, the data bus may provide much faster data transfer than a communication network involved in communication between multiple remote machines. In some embodiments, the data bus may also provide direct memory access and direct register access so as to be able to inject data and events from one machine component to another.

[0125] In some embodiments, by assigning a higher priority to orders and / or operations received from an event engine than to orders and / or operations received from other sources, those orders and / or operations can be processed earlier and / or with a higher priority than other orders and / or operations, and / or can affect the order queue. This can be executed even when the matching engine receives other orders and / or operations prior to the orders and / or operations from the event engine.

[0126] In some embodiments, by prioritizing orders from an event engine, the delay from when an event occurs until the order is added to the order queue can be reduced. Such prioritization can increase the priority level an order receives when the matching engine is configured to assign a priority to an order based on when the order was added to the order queue.

[0127] In some embodiments, orders and / or operations may be timestamped. Such timestamping can be used to assist in prioritization within the order queue by the matching engine. In some embodiments, for example, orders and / or operations sent from the event engine may be timestamped with the time the event occurred, the time the indication of the event occurrence was processed by the event engine, the time the original order being adjusted or added was initially submitted or otherwise timestamped, and / or any other desired time related to the event occurrence, such as another time. The matching engine can use the timestamp to process the order and / or operation and place the order in the queue based on its position within the queue regardless of when the matching engine received the order and / or operation. Thus, in some such embodiments, an order and / or operation may be given a higher priority within the order queue over other orders and / or operations from the event engine based on the timestamp, even if the order and / or operation is received and processed by the matching engine after orders and / or operations from another source. Other orders may, for example, have a late timestamp and / or may not be timestamped. If other orders are not timestamped, they may be processed as if they had a timestamp equal to the time they were added to the queue or the time another event occurred.

[0128] It should be recognized that the descriptions of the individual components in FIG. 2A are provided as mere examples. It should also be recognized that the exchange in FIG. 2A is provided as a mere example. In various embodiments, any combination of components and any set of components may be used. Such components may include, for example, security components, credit components, reporting components, clearing components, and the like.

[0129] Figure 2B shows an example embodiment in which the communication network 215 is configured to enable direct memory access from the event engine 213 to queues 217 and 219. In such an embodiment, the order information in the queue can be changed by direct memory access of the information. For example, the order information (e.g., order price, order quantity, order timestamp, etc.) can be stored in a memory location. Access the memory location (e.g., by the event engine or some other component), read the information, and / or change the information to adjust the order. In some embodiments, through direct memory access, the queue can be searched for a specific order to identify the memory location (e.g., by traversing a series of links in a linked list, finding the order, etc.). In some embodiments, the event engine can track the memory location based on communication with the matching engine (e.g., the matching engine can send an indication of the memory location where the order is placed to the event engine so that the event engine can record information for later adjustment of the order). Such communication can be performed for all orders, some orders, orders placed by the event engine, etc. In some embodiments, an order can be added and / or deleted using such direct memory access (e.g., by adding a node to a list, deleting a node from a list, etc.).

[0130] Figure 2C shows another embodiment of an exchange having separate rule or action processing elements 221. The rule or action processing can handle actions such as adjustments to orders, similar to the event engine described above. For example, the rule or action processing element can track the conditions that an action is conditional upon and facilitate the action when the conditions are met. The rule or action processing element can receive information about events from the event engine, the matching engine, and / or an external source. The adjustment can be performed through the communication network 215 and / or 211.

[0131] Examples of exchanges of FIGS. 2A, 2B, and 2C are provided as such examples and / or any other desired configuration or element, and it should be recognized that they are merely examples and may include any combination of elements from other embodiments.

[0132] FIG. 3 shows an example embodiment of an exchange 301 that includes an event engine 303, a plurality of matching engines 305, and a communication network 307. In some embodiments, the event engine 303 can interact with each matching engine 305 in the same manner as the above-described interaction of FIG. 2A.

[0133] As described above, a matching engine can be dedicated to one or more financial products, one or more order types for a financial product, one or more order size ranges, one or more operation types, etc. Thus, in order to provide more services for transactions related to a single financial product and / or a plurality of financial products, a plurality of matching engines can be included in the exchange. In some embodiments, for each matching engine, a specific subset of all orders within the exchange can be tasked. In other embodiments, the matching engines can operate in parallel on the same order set to share the load of order processing for highly liquid products, etc.

[0134] In some embodiments, one or more event engines 303 can be coupled to a plurality of matching engines 305. The event engine 303, shown here as one engine, can provide orders and / or operations to the matching engines based on the occurrence of events, as described above with respect to FIG. 2A. It should be recognized that, if desired, a plurality of event engines can be paired with one matching engine, or a plurality of event engines can be paired with a plurality of matching engines. For example, an event engine can be designed to process a specific type of event, a specific type of order, etc.

[0135] In one example embodiment, the event engine 303 may process orders for financial products of ESpeed. Each of the matching engines may process one of each of the debt securities of ESpeed, the preferred stock of ESpeed, the common stock of ESpeed, and the futures of ESpeed stock. The event engine may process orders related to all such products. The event engine may process events related to such products and / or any other arbitrary events.

[0136] The communication network 307 may include a data bus as described above. The data bus may be a bus shared by multiple matching engines as shown. In other embodiments, dedicated data buses may couple each matching engine to the event engine.

[0137] Figure 3 considers a configuration similar to that of Figure 2A, but it should be recognized that other embodiments may be configured to incorporate the direct queue access considered with respect to Figure 2B, the separate rules engine considered in relation to Figure 2C, and / or any other desired components and / or configurations.

[0138] Figure 4 shows yet another exchange example. As shown in Figure 4, the exchange 401 may be implemented on a plurality of systems (e.g., blades, servers, machines, general-purpose computers, etc.). This exchange example includes four order clusters 403, an event controller 405, an event network 407, an interface 409, a communication network 411, and additional components 413.

[0139] The order cluster 403 may include any number of matching engines and event engines coupled in any manner as described above. The order cluster may be implemented on blades, servers, etc. The order cluster may process orders, events, and / or operations related to a particular financial product, event type, operation type, and / or order type. The exchange may have any number and / or configuration of order clusters.

[0140] The order cluster may include an event engine coupled to a communication network so that it can receive and / or transmit event information (e.g., from another event engine, to another event engine, from an external source, to an external source, to the event controller 405, from the event controller 405, etc.). Such a communication network is shown as the event network 407 in FIG. 4. The event network may include a communication network that enables the communication of event information between different systems and / or components. Such a network may be dedicated to event communication in order to reduce the latency associated with the communication of event information. For example, an event may be related to something that occurred within a first order cluster, and a second order cluster may need it to determine whether an order should be generated. A high-speed communication network dedicated to event information may reduce the latency associated with such communication of such information. However, it should be recognized that in other embodiments, such a dedicated network may not be included, and in various embodiments, communication networks of any configuration may be used.

[0141] In some embodiments, the event controller 405 may receive information about an event as an event network or any other communication network and transmit that information to one or more order clusters. In some embodiments, the event controller may not be included. In some embodiments, the event engine may not be included within the cluster, and the event controller may operate as the event engine. In some embodiments, the event engine may provide any desired event processing such as intermediate event processing, variable setting, communication of event information outside the network, etc.

[0142] In some embodiments, the order cluster may include an interface for communicating information such as receiving an order, receiving conditions for the order, etc. Such an interface may be coupled to a communication network 411. The communication network 411 may operate as a general communication network between components of the exchange. In other embodiments, a communication network of any configuration may be used.

[0143] The interface 409 may interface between external sources such as participants, information sources, etc. and the exchange. Information may be transmitted and received through a communication network 411 that enables components of the exchange to communicate with external sources.

[0144] The additional component 413 may include any other desired component of the exchange. For example, such components may include a clearinghouse, a credit function, a security function, a separate rules processing function, etc.

[0145] It should be recognized that this exchange example is non-limiting and that in various embodiments, exchange components of any configuration may be combined in any manner. In some embodiments, for example, multiple configurations such as those shown in FIG. 4 may be combined in any manner to generate a larger exchange. Such abstractions may be performed any number of times to generate an exchange of any size that can handle any desired number of orders. The order cluster is described as being similar to the configuration of FIG. 2A, but it should be recognized that other embodiments may include the direct queue access described in FIG. 2B, the separate rules processor described in FIG. 2C, and / or any desired components and / or configurations including any desired configuration.

[0146] FIG. 5 shows a method 500 as an example that may be implemented in some embodiments. The method 500 may be implemented by one or more processors and / or other components of the exchange such as a matching engine, an event engine, an interface, etc.

[0147] As shown in block 501, method 500 may include receiving a condition instruction. This instruction may be received from a remote computer. The condition may define one or more events. The condition may be satisfied when the event occurs, as described above.

[0148] As shown in block 503, method 500 may include receiving an order instruction. This instruction may be received from a remote computer. The remote computer may be the same computer as the computer that sent the condition instruction. The condition instruction and the order instruction may be received together (e.g., in one electronic message, simultaneously, etc.), may be one instruction, or may be separate instructions, etc. The order defines the side of the transaction for the financial product.

[0149] As shown in block 505, method 500 may include determining that an event has occurred. Such determination may be made by a processor. For example, such determination may be made by an event engine of an exchange. In some embodiments, for example, such determination may be made when an instruction that the event has occurred is received (e.g., from an external source, a matching engine, another component of the exchange, etc.), when a database of events is searched, or when the event occurs at the exchange (e.g., when the matching engine utilizes a transaction, etc.). In some embodiments, the event occurrence instruction may be received and sent by components of the exchange and / or external sources.

[0150] As shown in block 507, method 500 may include sending the order instruction to a matching engine. Such instruction may be sent through a communication bus. The communication bus may couple a processor (e.g., an event engine) to another processor (e.g., a matching engine). Sending such instruction may be done in response to the determination in block 505.

[0151] As shown in block 509, method 500 may include adding an order to an order queue. The order queue may be part of a processor (e.g., a matching engine). The matching engine may be configured to identify order matches and execute transactions to fulfill the matching orders, as described above.

[0152] It should be recognized that method 500 is merely an example, and other methods may include any set of operations. For example, in various embodiments, it may include timestamping, order fulfillment, order clearing, adding to an instruction stack, order reporting, and the like.

[0153] Figure 6 shows method 600 as an example that may be implemented in some embodiments. Method 600 may be executed by one or more processors and / or other components of an exchange such as an event engine.

[0154] As shown in block 601, method 600 may include receiving an indication that an event has occurred. Such an indication may be received from a remote computer such as an information source outside the exchange. Such an indication may be received from a processor such as a matching engine or an event controller. Such an indication may be received from any desired information source.

[0155] As shown in block 603, method 600 may include determining that the conditions specified by an order are satisfied. The order may define a side of a transaction for a financial instrument. This determination may be made by a processor of the exchange. This determination may be made by an event engine. This determination may be made by searching stored information such as a database in which order and condition information is stored.

[0156] As shown in block 605, method 600 may include sending an instruction to add an order to an order queue. The order queue may be held by the exchange's matching engine. The sending may be performed through a data bus. The data bus may couple the exchange's processors (e.g., an event engine that executes the method and a matching engine that holds the queue). The sending may be performed in response to the specification of block 603.

[0157] It should be recognized that method 600 is merely an example and that other methods may include any set of operations. For example, in various embodiments, it may include timestamping, order reception, order storage, condition storage, retrieval of stored information, order fulfillment, order clearing, addition to an instruction stack, order reporting, event reporting, etc.

[0158] FIG. 7 shows method 700 as an example that may be implemented in some embodiments. Method 700 may be executed by one or more processors such as a matching engine, an event engine, an interface, etc. and / or other components of the exchange.

[0159] As shown in block 701, method 700 may include receiving a condition instruction. The instruction may be received from a remote computer. The condition may define one or more events. The condition may be satisfied when an event occurs, as described above.

[0160] As shown in block 703, method 700 may include receiving an operation instruction. The instruction may be received from a remote computer. The remote computer may be the same computer as the sender of the condition instruction. The condition instruction and the operation instruction may be received together (e.g., in one electronic message, simultaneously, etc.), may be one instruction, or may be separate instructions, etc. The operation defines an adjustment to an order for a financial product. The adjustment may include cancellation, temporary removal from the queue (e.g., until another event occurs), change in quantity, change in price, placement of an alternative order into the queue, etc. The operation may include any other desired arbitrary operation to be taken when the condition is met.

[0161] As shown in block 705, method 700 may include determining that an event has occurred. Such determination may be made by a processor. For example, such determination may be made by an event engine of an exchange. In some embodiments, for example, such determination may be made when an instruction that an event has occurred is received (e.g., from an external source, a matching engine, another component of the exchange, etc.), may be made when a database of events is searched, may be made when an event occurs at the exchange (e.g., when a matching engine fulfills a trade, etc.), etc. In some embodiments, the event occurrence instruction may be received from and / or transmitted to components of the exchange and / or an external source. Some examples of events may include a change in the value of a second financial product, a change in the trading volume of a second financial product, an earnings announcement by a company, the submission of an order on the opposite side of a trade (e.g., an order meeting certain conditions at a price point having a certain quantity, etc.), a change in regulations governing the industry, and a change in the credit rating of a company, etc.

[0162] As shown in block 707, method 700 may include sending an order adjustment instruction to a matching engine. Such an instruction may be sent through a communication bus. The communication bus may couple a processor (e.g., an event engine, a rules processor, etc.) to another processor (e.g., a matching engine). The sending of such an instruction may be performed in response to the specification of block 705.

[0163] As shown in block 709, method 700 may include adjusting an order. The adjustment may include cancellation, temporary removal from the queue (e.g., until another event occurs), quantity change, price change, placement of an alternative order into the queue, etc. Adjustment of an order may include adjustment of an order pending in the queue of the matching engine, addition of an order to the queue of the matching engine, and / or deletion of a queue within the queue of the matching engine. The matching engine may be configured to identify matches of orders, fulfill transactions, and satisfy matching orders, as described above.

[0164] In some embodiments, adjusting an order may include the matching engine adjusting the order before executing at least one instruction pending in the instruction stack. For example, an instruction to adjust an order may be added to the instruction stack of the matching engine before at least one instruction (e.g., using interrupts, direct memory access, etc.). At least one instruction may include at least one of adding and deleting another order to / from one of the buy order queue and the sell order queue.

[0165] In some embodiments, adjusting an order may include sending information to a memory location of the matching engine. The information may include instructions, orders, adjustments to orders, etc. In some embodiments, the memory location may include a memory location associated with an order in the queue. In such embodiments, adjusting an order may include changing information about the order stored at the memory location (e.g., using direct memory access).

[0166] In some embodiments, order adjustment may include removing an order from the matching engine's queue. Removing an order from the queue may stop the fulfillment of a trade for the order. Order adjustment may include adding an alternative order to the matching engine's queue. The alternative order may include an order with adjusted parameters (e.g., size, price, type, etc.). In one embodiment, the original order is a passive order (e.g., an order waiting for a match) and the alternative order may be an aggressive order (e.g., an order to take / lift an order). In some embodiments, the alternative order may be added to the queue with a priority based on the same time as the original order. For example, the event engine and / or the matching engine may place the timestamp of the original order on the alternative order. For example, an instruction may be sent to the matching engine indicating that the first order should be deleted and the second order should be added to the queue with the same timestamp as the first order. In some embodiments, an order may be deleted without adding an alternative (e.g., immediately, after another event occurs, always, etc.). For example, in one embodiment, a new order on the opposite side of a trade order is received and if the new order is for an amount that exceeds a threshold, the order may be removed from the queue. If the quantity associated with the opposite side order is reduced until it is below another threshold amount (e.g., when the new order is filled, when the new order is cancelled, etc.), the order may be returned to the queue.

[0167] In one example, an order may not be pending in the queue at the time associated with the occurrence of an event. For example, at the time of event occurrence, at the time of executing event occurrence processing, etc., the order may not be pending in the queue of the matching engine. Adjustment of an order may include adding the order to the queue. The order may have been previously pending in the queue (e.g., before being deleted because a previous adjustment was conditional on a previous event). Adding an order to the queue may include adding the order to the queue with a priority based on the time associated with the order if the order was previously pending in the queue. For example, such an operation may be conditional on a reduction in the quantity associated with the order on the opposite side of the trade for the financial product of the order (e.g., after the quantity has reached above a threshold and initiated deletion of the order from the queue). In some embodiments, a time-based priority may be maintained along with a timestamp (e.g., by adding the order to the queue with the timestamp the order previously had). Such a timestamp may be monitored and maintained by the event engine when the order is deleted (e.g., by storing such information in a database associated with events, orders, and / or operations). In some embodiments, maintaining a time-based priority may be facilitated by adding the order to the queue through direct memory access to the queue such that the order is positioned at the location where it would have been placed in the queue if it had not been deleted. In some embodiments, a processor (e.g., an event engine, a rules processor, etc.) may track where an order could be in the queue if the order was not cancelled, and may place a placeholder order in the queue such that the order can be placed at the position of the placeholder later, etc.

[0168] It should be recognized that method 700 is merely an example and that other methods may include any set of operations. For example, in various embodiments, it may include timestamping, order fulfillment, order clearing, adding to an instruction stack, order reporting, etc.

[0169] FIG. 8 shows a method 800 as an example that can be implemented in some embodiments. The method 800 can be implemented by one or more processors and / or other components of the exchange, such as an event engine.

[0170] As shown in block 801, the method 800 can include receiving an indication that an event has occurred. Such an indication can be received from a remote computer, such as an information source outside the exchange. Such an indication can be received from a processor, such as a matching engine, an event controller, etc. Such an indication can be received from any desired information source.

[0171] As shown in block 803, the method 800 can include determining that a condition for an operation is satisfied. The operation can include an adjustment to an order that defines a side of a trade for a financial instrument. The determination can be made by a processor of the exchange. The determination can be made by an event engine. The determination can be made by searching stored information, such as a database in which order, operation, and / or condition information is stored.

[0172] As shown in block 805, the method 800 can include sending an order adjustment instruction to a matching engine. The sending can be performed through a data bus. The data bus can couple processors of the exchange (e.g., an event engine that executes the method and a matching engine that holds a queue). The sending can be performed in response to the determination of block 803.

[0173] It should be recognized that the method 800 is merely an example and that other methods can include any set of operations. For example, in various embodiments, it can include timestamping, order reception, order storage, condition storage, stored information retrieval, order fulfillment, order clearing, addition to an instruction stack, order reporting, event reporting, etc.

[0174] Figure 9 shows a method 900 as an example that can be implemented in some embodiments. The method 900 can be executed by one or more processors and / or other components of the exchange such as a matching engine, an event engine, an interface, etc. The method 900 can include a method of placing an order in a queue, later deleting it from the queue, and further restoring the queue later.

[0175] As shown at 901, the method 900 can include receiving an order instruction. As shown at 903, the method 900 can include receiving an operation instruction and a condition instruction. Each operation can include any number of conditions under which the operation can be a condition. An operation can be unavailable for execution until another operation is performed. For example, the operation of returning an order to the queue can be unavailable until the order is first deleted from the queue.

[0176] As shown at 905, the method 900 can include placing an order in a queue. As described above, the queue can be held by a matching engine.

[0177] As shown at 907, it can be determined that a condition for a first operation is satisfied. The condition can include, for example, the occurrence of any number of events. In one example, the condition can be the occurrence of a price change. In another example, the condition can be that an order on the opposite side of the trade order has reached a specific quantity of financial products.

[0178] As shown at 909, in response to the specific, an operation can be taken. For example, the operation shown is the deletion of an order from the queue. It should be recognized that in other examples, any other desired operation can be taken. An order can be deleted by taking the order out of the queue held by the matching engine, by attaching an inactive flag to the order in the matching engine's queue, by replacing the order in the matching engine's queue with a placeholder order, and / or by performing any other desired operation.

[0179] As shown in block 911, it can be determined that the conditions for the second operation are satisfied. The conditions can include, for example, the occurrence of any number of events. The conditions can include that the first operation has been taken. In one example, the condition can be the occurrence of a price change (e.g., the price returns to the previous range). In another example, the condition can be that an order on the opposite side of the trading order has reached a specific quantity of financial products (e.g., returns to a nearby range when the first operation is taken, etc.).

[0180] As shown in 913, in response to a specific situation, the second operation can be taken. For example, the operation shown can be the addition of an order to a queue. In other examples, it should be recognized that any other desired operation can be taken. The order can be added by placing the order in the queue held by the matching engine, by attaching an active flag to the order in the queue of the matching engine, by replacing a placeholder with the order, and / or by performing any other desired operation. The order can be placed with a priority based on the same time as when it was previously in the queue.

[0181] It should be recognized that the process examples and system examples are given only as non-limiting illustrations. Other embodiments can include different operations, steps, components, elements, configurations, orders, etc.

[0182] XII. Further Embodiments The following should be construed as example embodiments rather than as claims.

[0183] A. A matching engine, Receiving an order instruction, where each order defines each side of a financial product transaction, Adding each order to one of the buy order queue and the sell order queue of the financial product respectively, Determining that at least a first order in the buy order queue and a second order in the sell order queue match, and Fulfilling a transaction that satisfies the first order and the second order A matching engine configured to execute, and An event engine, Receiving an event occurrence instruction, Determining that an adjustment to an order is conditional upon the occurrence, where the order defines a side of a financial product transaction, and In response to the determination, sending an order adjustment instruction to the matching engine through a data bus An event engine configured to execute, and A data bus configured to enable communication of an order addition instruction from the event engine to the matching engine and A device comprising.

[0184] A.1. The data bus and the matching engine are configured such that when the matching engine receives an order addition instruction, the matching engine adds an order before executing at least one instruction pending in the instruction stack, the device according to claim A.

[0185] A.1.1. The at least one instruction includes an order adjustment instruction, the device according to claim A.1.

[0186] A.1.1.1. The order adjustment instruction includes at least one of an instruction to change the quantity of an order and an instruction to change the price of an order, the device according to claim A.1.1.

[0187] A.1.1.2. The order adjustment instruction includes an order deletion instruction, the device according to claim A.1.1.

[0188] A.1.1.2.1. The order adjustment instruction includes an instruction to add an alternative order, the device according to claim A.1.1.2.

[0189] A.1.1.2.1.1. The order includes a passive order and the alternative order includes an aggressive order, the device according to claim A.1.1.2.1.

[0190] The apparatus according to claim A.1.1.2.1, wherein the adjustment command includes a command to add an alternative order having a priority based on the same time as the above order.

[0191] The apparatus according to claim A.1.1.2, wherein the event includes the submission of an order on the opposite side of a transaction of a financial product, associated with a quantity exceeding a threshold value.

[0192] The apparatus according to claim A.1, wherein the data bus is configured to transmit information to a memory location of the matching engine, and the matching engine is configured to read data from the memory location.

[0193] The apparatus according to claim A.1, wherein at least one command includes a command to process an instruction to add another order to at least one of the sell order queue and the buy order queue, and the instruction to add another order is an instruction not received by the matching engine from the data bus.

[0194] A.2. The event is a change in the value of a second financial product, a change in the trading volume of a second financial product, the release of financial statements by a company, the submission of an order on the opposite side of a transaction, a change in regulations regulating the industry, and a change in the credit rating of a company and includes at least one of them, according to the apparatus of claim A.

[0195] The apparatus according to claim A, wherein the event engine is configured to receive generation instructions from a remote information source.

[0196] The apparatus according to claim A, wherein the event engine is configured to receive generation instructions from the matching engine.

[0197] The apparatus according to claim A, wherein at the time associated with the event, the order is not pending in the queue of the matching engine, and the order adjustment instruction includes an instruction to add the order to the queue of the matching engine.

[0198] The apparatus according to claim A.5, wherein the order addition instruction includes an instruction to add the order with a priority based on the time associated with the order if the order was previously in the queue.

[0199] The apparatus according to claim A.5, wherein the event includes a reduction in the quantity associated with the order on the opposite side of the transaction for the financial product.

[0200] A method of conducting a transaction, comprising: Receiving an instruction of a condition from a remote computer, wherein the condition defines an event and is satisfied when the event occurs; Receiving a first operation instruction from a remote computer, wherein the operation defines an adjustment to an order for a financial product; Determining by a processor of the exchange that the event has occurred; In response to the determination, sending an order adjustment instruction to a matching engine of the exchange through a communication bus that couples the processor and the matching engine, wherein the matching engine is configured to identify a match of orders and execute a transaction to fulfill the matching orders; and Adjusting the order The method comprising.

[0201] The method according to claim B, wherein the condition instruction and the operation instruction are received as a single communication.

[0202] The method according to claim B, wherein adjusting the order includes adjusting the order by the matching engine before executing at least one instruction pending in the instruction stack.

[0203] B.2.1. The method according to claim B.2, wherein at least one instruction includes at least one of an instruction to add another order and an instruction to delete an order to one of a buy order queue and a sell order queue.

[0204] B.3. Adjusting an order includes the processor transmitting information to a memory location of the matching engine, the method according to claim B.

[0205] B.3.1. The memory location includes a memory location associated with an order in a queue, and adjusting an order includes the processor changing information about the order stored at the memory location, the method according to claim B.3.

[0206] B.4. An event is a change in the value of a second financial product, a change in the trading volume of a second financial product, a financial statement release by a company, the submission of an order on the opposite side of a transaction, a change in regulations regulating the industry, and a change in the credit rating of a company including at least one of the foregoing, the method according to claim B.

[0207] B.5. The method according to claim B, further including receiving a generation instruction from a remote information source.

[0208] B.6. The method according to claim B, further including receiving a generation instruction from the matching engine.

[0209] B.7. Adjusting an order includes at least one of changing the quantity of the order and changing the price of the order, the method according to claim B.

[0210] B.8. Adjusting an order includes deleting the order from a queue of the matching engine, the method according to claim B.

[0211] B.8.1. The method according to claim B.8, wherein adjusting an order includes adding an alternative order to the queue of the matching engine.

[0212] B.8.1.1. The method according to claim B.8.1, wherein the order includes a passive order and the alternative order includes an aggressive order.

[0213] B.8.1.2. The method according to claim B.1, wherein adding an alternative order to the queue includes adding an alternative order having a priority based on the same time as the order.

[0214] B.8.2. The method according to claim B.8, wherein the event includes submitting an order on the opposite side of a trade order associated with a quantity exceeding a threshold.

[0215] B.9. At the time associated with the event, the order is not pending in the queue of the matching engine, and the order adjustment instruction includes an instruction to add an order to the queue of the matching engine, according to the method described in claim B.

[0216] B.9.1. The method according to claim B.9, wherein the order addition instruction includes an instruction to add an order with a priority based on the time associated with the order if the order was previously in the queue.

[0217] B.9.2. The method according to claim B.9, wherein the event includes a reduction in the quantity associated with an order on the opposite side of a trade for a financial product.

[0218] C. Receiving an indication from a remote computer that an event has occurred, The processor determines that a condition for conditional operation is satisfied, and the operation includes adjusting an order that defines the side of a trade for a financial product, the determining, In response to the determination, transmitting an order adjustment instruction to the matching engine through a data bus that couples the processor and the matching engine The method includes.

[0219] The method according to claim C, wherein transmitting an adjustment instruction includes transmitting an instruction to adjust at least one of an order price and an order quantity.

[0220] The method according to claim C, wherein transmitting an adjustment instruction includes transmitting an instruction to delete an order from a queue of a matching engine.

[0221] The method according to claim C.2, wherein transmitting an adjustment instruction includes transmitting an instruction to add an alternative order to a queue of a matching engine.

[0222] The method according to claim C.2.1, wherein the order includes a passive order and the alternative order includes an aggressive order.

[0223] The method according to claim C.2.1, wherein the adjustment instruction includes adding an alternative order having a priority based on the same time as the order to the queue.

[0224] The method according to claim C.2, wherein the event includes submitting an order on the opposite side of a transaction order associated with a quantity exceeding a threshold.

[0225] The method according to claim C, wherein transmitting an adjustment instruction includes transmitting information to a memory location of a matching engine.

[0226] The method according to claim C.3, wherein the memory location includes a memory location where an order is stored within a queue of a matching engine.

[0227] The method according to claim C, wherein transmitting an adjustment instruction includes transmitting an instruction to an instruction stack of a matching engine.

[0228] C.4. The event is a change in the value of a second financial product, a change in the trading volume of a second financial product, The company's financial statement disclosure, The submission of an order on the opposite side of the transaction, Changes in regulations that regulate the industry, and Changes in the credit rating of the company The method according to claim C, comprising at least one of the above.

[0229] C.5. The method according to claim C, comprising receiving an event occurrence instruction from a remote information source.

[0230] C.6. The method according to claim C, comprising receiving an event occurrence instruction from a matching engine.

[0231] C.7. At the time related to the event, the order is not pending in the queue of the matching engine, and the adjustment instruction includes an instruction to add the order to the queue of the matching engine. The method according to claim C.

[0232] C.7.1. The order addition instruction includes an instruction to add the order with a priority based on the time associated with the order if the order was previously in the queue. The method according to claim C.7.

[0233] C.7.2. The event includes a reduction in the quantity associated with an order on the opposite side of a transaction for a financial product. The method according to claim C.7.

[0234] (Appendix 1) A matching engine, Receiving an order instruction that defines each side of a transaction for a financial product, Adding each order to one of the buy order queue and the sell order queue of the financial product respectively, Determining that at least a first order in the buy order queue and a second order in the sell order queue match, and Executing a transaction that satisfies the first order and the second order A matching engine configured to perform the above, An event engine, Receiving an event occurrence instruction, Determining that an adjustment to an order is conditional on the occurrence, where the order defines a side of a transaction for the financial product, and In response to the determination, sending an instruction to adjust the order to the matching engine through a data bus An event engine configured to perform, The data bus configured to communicate an instruction to add the order from the event engine to the matching engine A device comprising. (Appendix 2) The data bus and the matching engine are configured such that when the matching engine receives an instruction to add the order, it adds the order before executing at least one instruction pending in the instruction stack, the device according to Appendix 1. (Appendix 3) The at least one instruction includes an instruction to adjust the order, the device according to Appendix 2. (Appendix 4) The order adjustment instruction includes at least one of an instruction to change the quantity of the order and an instruction to change the price of the order, the device according to Appendix 3. (Appendix 5) The order adjustment instruction includes an instruction to delete the order, the device according to Appendix 3. (Appendix 6) The order adjustment instruction includes an instruction to add an alternative order, the device according to Appendix 5. (Appendix 7) The order includes a passive order and the alternative order includes an aggressive order, the device according to Appendix 6. (Appendix 8) The adjustment instruction includes an instruction to add an alternative order having a priority based on the same time as the order, the device according to Appendix 6. (Appendix 9) The event includes the submission of an order on the opposite side of a transaction for the financial product associated with a quantity exceeding a threshold, the device according to Appendix 5. (Appendix 10) The data bus is configured to transmit information to a memory location of the matching engine, and the matching engine is configured to read data from the memory location, the apparatus according to Appendix 2. (Appendix 11) At least one instruction includes an instruction for processing an instruction to add another order to at least one of the sell order queue and the buy order queue, and the instruction to add the other order is an instruction not received by the matching engine from the data bus, the apparatus according to Appendix 2. (Appendix 12) The event is a change in the value of a second financial product, a change in the trading volume of a second financial product, a financial statement announcement by a company, submission of an order on the opposite side of a transaction, a change in regulations that regulate the industry, and a change in the credit rating of a company including at least one of, the apparatus according to Appendix 1. (Appendix 13) At the time associated with the event, the order is not pending in the queue of the matching engine, and the order adjustment instruction includes an instruction to add the order to the queue of the matching engine, the apparatus according to Appendix 1. (Appendix 14) The order addition instruction includes an instruction to add the order with a priority based on the time associated with the order if the order was previously in the queue, the apparatus according to Appendix 13. (Appendix 15) The event includes a reduction in the quantity associated with an order on the opposite side of a transaction for the financial product, the apparatus according to Appendix 13. (Appendix 16) A method of operating an exchange, comprising receiving an instruction of a condition from a remote computer, the condition defining an event, and when the event occurs, the condition is satisfied, Receiving a first operation instruction from the remote computer, the operation defining an adjustment to an order for a financial product, determining by the processor of the exchange that the event has occurred, in response to the determination, transmitting an instruction to adjust the order to the matching engine of the exchange through a communication bus coupling the processor and the matching engine, the matching engine being configured to identify order matches and execute transactions to fulfill the matching orders, and adjusting the order A method comprising: (Appendix 17) The method according to Appendix 16, wherein the conditional instruction and the operation instruction are received as a single communication. (Appendix 18) Adjusting the order includes adjusting the order by the matching engine before executing at least one instruction pending in the instruction stack. The method according to Appendix 16. (Appendix 19) The method according to Appendix 18, wherein the at least one instruction includes at least one of an instruction to add and an instruction to delete another order to one of a buy order queue and a sell order queue. (Appendix 20) Adjusting the order includes the processor transmitting information to a memory location of the matching engine. (Appendix 21) The memory location includes the memory location associated with the order in the queue, and adjusting the order includes the processor changing information about the order stored in the memory location. The method according to Appendix 20. (Appendix 22) The event is a change in the value of a second financial product, a change in the trading volume of a second financial product, Corporate financial statement disclosure, submission of an order on the opposite side of a transaction, change in regulations regulating the industry, and change in the credit rating of a company The method described in Appendix 16, including at least one of the above. (Appendix 23) Adjusting the order includes at least one of changing the quantity of the order and changing the price of the order, and is the method described in Appendix 16. (Appendix 24) Adjusting the order includes deleting the order from the queue of the matching engine, and is the method described in Appendix 16. (Appendix 25) Adjusting the order includes adding an alternative order to the queue of the matching engine, and is the method described in Appendix 24. (Appendix 26) The order includes a passive order, and the alternative order includes an aggressive order, and is the method described in Appendix 25. (Appendix 27) Adding the alternative order to the queue includes adding an alternative order with the same time-based priority as the order, and is the method described in Appendix 25. (Appendix 28) The event includes submission of an order on the opposite side of a transaction associated with a quantity exceeding a threshold, and is the method described in Appendix 24. (Appendix 29) At the time associated with the event, the order is not pending in the queue of the matching engine, and the order adjustment instruction includes an instruction to add the order to the queue of the matching engine, and is the method described in Appendix 16. (Appendix 30) The order addition instruction includes an instruction to add the order with the time-based priority associated with the order if the order was previously in the queue, and is the method described in Appendix 29. (Appendix 31) The method described in Appendix 29, wherein the event includes a reduction in the quantity associated with an order on the opposite side of a transaction for the financial product. (Appendix 32) Receiving an indication from a remote computer that an event has occurred The processor determines that an operation-conditioned condition is met, where the operation includes an adjustment to an order that defines a side of a transaction for a financial product In response to the determination, sending an instruction to the matching engine to adjust the order through a data bus that couples the processor and the matching engine A method comprising. (Appendix 33) The method described in Appendix 32, wherein sending the adjustment instruction includes sending an instruction to adjust at least one of the price and quantity of the order. (Appendix 34) The method described in Appendix 32, wherein sending the adjustment instruction includes sending an instruction to delete the order from the queue of the matching engine. (Appendix 35) The method described in Appendix 34, wherein sending the adjustment instruction includes sending an instruction to add an alternative order to the queue of the matching engine. (Appendix 36) The method described in Appendix 35, wherein the order includes a passive order and the alternative order includes an aggressive order. (Appendix 37) The method described in Appendix 35, wherein the adjustment instruction includes adding an alternative order having a priority based on the same time as the order to the queue. (Appendix 38) The method described in Appendix 34, wherein the event includes the submission of an order on the side opposite to the order of the transaction, associated with a quantity exceeding a threshold. (Appendix 39) The method described in Appendix 32, wherein sending the adjustment instruction includes sending information to a memory location of the matching engine. (Appendix 40) The method according to Appendix 39, wherein the memory location includes the memory location where the order is stored in the queue of the matching engine. (Appendix 41) The method according to Appendix 39, wherein sending the adjustment instruction includes sending an instruction to the instruction stack of the matching engine. (Appendix 42) The event is a change in the value of a second financial product, a change in the trading volume of a second financial product, a financial statement announcement by a company, submission of an order on the opposite side of a transaction, a change in regulations regulating the industry, and a change in the credit rating of a company The method according to Appendix 32, including at least one of the above. (Appendix 43) At the time associated with the event, the order is not pending in the queue of the matching engine, and the order adjustment instruction includes an instruction to add the order to the queue of the matching engine. The method according to Appendix 32. (Appendix 44) The order addition instruction includes an instruction to add the order with a priority based on the time associated with the order if the order was previously in the queue. The method according to Appendix 43. (Appendix 45) The method according to Appendix 43, wherein the event includes a reduction in the quantity associated with an order on the opposite side of a transaction for the financial product.

Claims

1. A trading system, communicatively connected to an event engine and a matching engine, a data bus communicatively configured to communicate instructions from the event engine to the matching engine, the matching engine, receiving order instructions that define each side of a transaction for a financial product, adding each order to one of a buy order queue and a sell order queue for the financial product, determining that at least a first order in the buy order queue and a second order in the sell order queue match, and fulfilling a transaction that satisfies the first order and the second order the matching engine configured to execute; the event engine, receiving an event occurrence command, in response to receiving the event occurrence command, determining that an adjustment to an order is conditional on at least one criterion associated with the occurrence, determining that the at least one criterion associated with the occurrence that the order conditions is satisfied, and in response to determining that the at least one criterion is satisfied, sending, through the data bus, to the matching engine, an order adjustment command that, in response to receiving the order adjustment command, functions as an interrupt to the processing of the matching engine for adjusting the order by the matching engine, the event engine; comprising, The order adjustment command adds an order previously deleted from at least one of the sell order queue and the buy order queue. A trading system.

2. The order adjustment command changes the characteristics of a predetermined order on hold in the at least one queue before the next order in at least one of the sell order queue and the buy order queue is executed by the matching engine, and is an order for adjusting the at least one of the sell order queue and the buy order queue. The trading system according to claim 1.

3. The matching engine comprises a machine instruction stack. When an instruction to adjust the order is received by the matching engine, the data bus and the matching engine are configured such that the matching engine inserts an instruction in the machine instruction stack before at least one instruction pending in the machine instruction stack. The trading system according to claim 2.

4. The data bus is configured to transmit information to a memory location of the machine instruction stack of the matching engine, and the matching engine is configured to read data from the memory location. The trading system according to claim 3.

5. The at least one instruction includes an instruction to process an instruction to add another order to the at least one queue received by the matching engine before the order is received by the matching engine. The instruction to add another order is an instruction not received by the matching engine from the data bus, and the another order is added before the instruction is executed based on the another order not from the data bus. The trading system according to claim 3.

6. A method of operating an exchange, Receiving, by an event engine, an instruction of a condition from a remote computer, where the condition defines an event and the condition is satisfied when the event occurs, Receiving, from the remote computer, an instruction of a first operation, where the operation defines an adjustment to an order for a financial product, Determining, by the event engine, that the event has occurred, and Transmitting, by the event engine, in response to the determination, an instruction to adjust an order to the matching engine of the exchange through a data bus that couples the event engine and the matching engine. The matching engine is configured to identify a match of orders and fulfill a trade that satisfies the matching orders. The instruction to adjust the order functions as an interrupt to the processing of the matching engine to cause the matching engine to adjust the order in response to receiving the instruction to adjust the order. The order to adjust the order adds an order that was previously deleted from at least one of the sell order queue and the buy order queue. Method. **Claim 7**: The order to adjust the order is an order to adjust at least one queue by changing characteristics of a predetermined order on hold in the at least one queue before the next order in the at least one queue is executed by the matching engine. Adjusting the at least one queue by at least one of changing characteristics of an order on hold in the at least one queue. The method according to claim 6, comprising. **Claim 8**: The method according to claim 6, wherein the order for the condition and the order for the first operation are received as a single communication. **Claim 9**: An event engine of an exchange receives an order from a remote computer that an event has occurred. The event engine determines that a condition for the operation is satisfied, the operation including adjusting an order that defines a side of a transaction for a financial product, and In response to determining that the condition is satisfied, the event engine sends an order to adjust the order to the matching engine of the exchange through the data bus of the exchange that couples the event engine and the matching engine, and the order to adjust the order functions as an interruption to the processing of the matching engine to cause the matching engine to adjust the order in response to receiving the order to adjust the order, including. The order to adjust the order adds an order that was previously deleted from at least one of the sell order queue and the buy order queue. Method. **Claim 10**: A trading system, A data bus that communicably connects an event engine and a matching engine to each other, the data bus being configured to be able to transmit an order from the event engine to the matching engine. The matching engine, which has a machine instruction stack, and the data bus and the matching engine are configured such that when an instruction to adjust an order is received by the matching engine, the matching engine inserts an instruction in the machine instruction stack in front of at least one instruction held in the machine instruction stack. The matching engine is configured to receive order instructions that respectively define each side of a transaction for a financial product, add each order to one of a buy order queue and a sell order queue for the financial product, determine that at least a first order in the buy order queue and a second order in the sell order queue match, and fulfill a transaction that satisfies the first order and the second order The matching engine is configured to execute, and The event engine, receives an event generation command, The event includes a change in the value of a second financial product, a change in the trading volume of a second financial product, a financial statement release by a company, submission of an order on the opposite side of a transaction, a change in regulations that regulate the industry, and a change in the credit rating of a company including at least one of At the time of the occurrence of the event, the order is not held in the queue of the matching engine, and the instruction to adjust the order includes an instruction to add the order to the queue of the matching engine. In response to receiving the event generation command, determine whether the adjustment of the order conforms to at least one criterion related to the occurrence of the event. Determine whether at least one criterion related to the occurrence of the event, on which the order is conditional, is satisfied. In response to determining that the at least one criterion is satisfied, send an instruction to adjust the order to the matching engine via the data bus. The instruction to adjust the order functions as an interrupt to the processing of the matching engine to cause the matching engine to adjust the order in response to receiving the instruction to adjust the order. The event engine is provided. The instruction to adjust the order adds an order previously deleted from at least one of the sell order queue and the buy order queue. A trading system.

Citation Information

Patent Citations

  • Information display device and its data processing method

    JP1995244690A

  • Device, system and method for automatically giving selling or buying order

    JP2001155086A

  • System and method for supporting transaction verification and storage medium stored with program for making computer perform processing in the system

    JP2001167155A

  • Interrupt simulation method and device

    JP2002073374A

  • Automated trading ordering methods and systems for stocks, bonds, properties, futures, options, indices, foreign exchange, etc.

    JP2002543481A