Interprogram communication using messages related to exchange events and operations

The implementation of inter-program communication using event and operation messages in exchanges addresses communication inefficiencies, enhancing trading efficiency by improving order matching and execution.

JP7887535B2Active Publication Date: 2026-07-09BGC PARTENRS INC

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
BGC PARTENRS INC
Filing Date
2025-07-01
Publication Date
2026-07-09

AI Technical Summary

Technical Problem

Existing systems lack efficient mechanisms for inter-program communication regarding events and operations in exchanges, leading to suboptimal trading outcomes due to communication delays and inefficiencies.

Method used

Implementing a system for inter-program communication using messages related to events and operations, allowing exchanges to efficiently match trading intentions and execute trades based on real-time information and event triggers.

Benefits of technology

Enhances trading efficiency by reducing delays and improving the matching of trading orders, leading to more optimal trading outcomes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007887535000001
    Figure 0007887535000001
  • Figure 0007887535000002
    Figure 0007887535000002
  • Figure 0007887535000003
    Figure 0007887535000003
Patent Text Reader

Abstract

To provide a trading system, method and system that match orders for financial instruments and facilitate execution of trades that fulfill the matching orders.SOLUTION: A trading system includes: communication networks 211, 215 connected to an event engine 213 and a matching engine 207 and including a data bus for communicating an instruction from the event engine to the matching engine; the matching engine configured to receive indications of trading orders for a financial instrument, add each of the orders to buy orders and sell orders for the financial instrument, and determine that a first order in the buy orders and a second order in the sell orders match, and execute a trade; and the event engine configured to receive an indication of an occurrence of an event, determine that the addition to an order is conditioned on the occurrence, determine that conditions on which an order is conditioned are satisfied, and in response to the determination, transmit an indication to add the order to the matching engine.SELECTED DRAWING: Figure 2A
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0005] , , , [Figure 9] ,

[0004] , , , , , , , , , , ,

[0006] ,

[0003]

[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] Shows an exemplary set of entities that may be involved in transactions in some embodiments. [Figure 2A-2C] Shows an example of an exchange that may be used in some embodiments. [Figure 3] Shows another example of an exchange that may be used in some embodiments. [Figure 4] Shows yet another example that may be used in some embodiments. [Figure 5] Shows an example of a method that may be executed in some embodiments. [Figure 6] Shows another example of a method that may be executed in some embodiments. [Figure 7] Shows another example of a method that may be executed in some embodiments. [Figure 8] Shows another example of a method that may be executed in some embodiments. [Figure 9] Shows another example of a method that may be executed in some embodiments.

Modes for Carrying Out the Invention

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

[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, algorithm, or whatever name it may be) essentially comprises one or more steps, and therefore every reference to “steps” or “multiple steps” of a process essentially has prior art in the mere description of the term “process” or similar terms. Thus, any reference to “steps” or “multiple steps” of a process in a claim has sufficient prior art.

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

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

[0009] The term "modification" in the invention means embodiments of the invention unless otherwise specified.

[0010] When describing embodiments, references to "other embodiments" do not imply that the embodiments referred to are mutually exclusive with other embodiments (for example, embodiments described before the embodiments referred to), unless otherwise specified.

[0011] The terms "include," "equip," and their variations mean "include, but not limited to," unless otherwise specified.

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

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

[0014] The term "in this specification" means "in this application, including everything that can be invoked by reference," unless otherwise specified.

[0015] The phrase "at least one of" modifies multiple things (such as a list of things), and unless otherwise specified, it means one or any combination of those things. For example, the phrase "at least one of widgets, cars, and wheels" means any of (i) widgets, (ii) cars, (iii) wheels, (iv) widgets and cars, (v) widgets and wheels, (vi) cars and wheels, or (vii) widgets, cars, and wheels. The phrase "at least one of" modifies multiple things and does not mean "one of each" of those things.

[0016] When numbers such as "one" or "two" are used as a cardinal number to indicate a quantity (e.g., one widget, two widgets), they mean the quantity indicated by the number, but not the quantity indicated by the number. For example, the phrase "one widget" does not mean "at least one widget," and therefore, the phrase "one widget" does not imply, for example, two widgets.

[0017] The phrase "based on" does not mean "based solely on" unless otherwise specified. In other words, the phrase "based on" describes both "based solely on" and "based at least on." The phrase "based at least on" is equivalent to the phrase "based at least partially on."

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

[0019] In this specification, the phrase "thereby" is used only in front of a clause or other collection of words that express only an intended result, purpose, or consequence of something already specified. Thus, when the term "thereby" is used in a claim, the clause or other words modified by the term "thereby" 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 explained. For example, in the sentence "A computer transmits data (e.g., instructions, data structures) via the Internet", the term "e.g." explains that "instructions" are an example of "data" that a computer can transmit via the Internet, and also explains that "data structures" are 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 can be different from each other, but they are not necessarily required to be different 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 be the same as or different from 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] When two or more terms or phrases are synonymous (e.g., because it is specified 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 "comprising, but not limited to", simply using the phrase "comprising, but not limited to" does not mean that the term "comprising" means something other than "comprising, 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 particular 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 "decision" does not imply certainty or absolute accuracy; therefore, "decision" may include estimation, extrapolation, prediction, inference, etc.

[0027] The term "decision" does not imply that mathematical processing must be performed, that numerical methods must be used, or that an algorithm or process must be used.

[0028] The term "decision" does not imply that a specific device must be used. For example, a computer does not necessarily have to make the decision.

[0029] III. Sentence Structure If the limitation of the first claim encompasses one feature and two or more features (for example, a limitation such as "at least one widget" encompasses one widget and two or more widgets), and the second claim dependent on the first claim uses the definite article "the" to express a limitation (for example, "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 (for example, "the widget" may encompass both one widget and two or more widgets).

[0030] When ordinal numbers (such as "first," "second," "third," etc.) are used as adjectives preceding a term, the ordinal number is used solely to indicate a specific characteristic, such as to distinguish it from another characteristic described with the same or similar terminology (unless otherwise specified). For example, "first widget" may be named so simply to distinguish it from, for example, "second widget." Therefore, 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 characteristic of either or both widgets. For example, simply using the ordinal numbers "first" and "second" before the term "widget" does not (1) indicate whether a widget comes before or after another in order and place, (2) indicate whether a widget occurs or operates before or after another in time, or (3) indicate whether one widget is ranked above or below another in importance or quality. Furthermore, simply using ordinal numbers does not define a numerical limit for the features identified by the ordinal numbers. For example, simply using the ordinal numbers "first" and "second" before the term "widget" does not indicate that there can be no more than three widgets.

[0031] Where a single device, object, or other product is described herein, two or more devices / objects (whether working together or not) may be used as alternatives to the single device / object described. Therefore, functions described as being possessed by a device may be possessed by two or more devices / objects (whether working together or not) as alternatives.

[0032] Similarly, where two or more devices, objects, or other products are described herein (whether they work together or not), a single device / object may be used as an alternative in place of the two or more described devices or objects. For example, multiple computer-based devices may be replaced by a single computer-based device. Thus, various functions described as being possessed by two or more devices or objects may, as an alternative, be possessed by a single device / object.

[0033] The functions and / or features of a single device described may, as an alternative, be embodied by one or more other devices described but not explicitly stated to have such functions / features. Therefore, other embodiments do not necessarily have to include the described device itself, but rather may include one or more other devices having such functions / features.

[0034] IV. The examples and terms disclosed are not limiting. The scope of the disclosed invention should be used in interpreting the meaning of any claim or limiting the scope of any claim; therefore, neither the title (as indicated at the beginning of the first page of this application) nor the abstract (as indicated at the end of this application) should be construed as limiting the scope of the disclosed invention. The abstract is included in this application simply because it is required by Patent Rule 37C.FR §1.72(b).

[0035] The title of this application and the chapter headings provided herein are for convenience only and should not be construed as limiting this disclosure.

[0036] Numerous embodiments are described in this application, and these embodiments are presented solely for illustrative purposes. The embodiments described are not, and are not intended to be, limiting in any sense. The invention disclosed herein is broadly applicable to many embodiments, as readily apparent from this disclosure. Those skilled in the art will recognize that the disclosed invention can be carried out with various modifications and alterations, such as structural, logical, software, and electrical changes. Certain 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 the one or more specific embodiments or accompanying drawings described by reference unless otherwise specified.

[0037] Embodiments may be disclosed as including several features, but other embodiments of the present invention may include fewer features than all such features combined. Therefore, for example, a claim may cover fewer features than the total set of multiple features in the disclosed embodiments, and such a claim shall not include features beyond those explicitly enumerated by that claim.

[0038] None of the steps of the method or the embodiments of the product elements described herein constitute the claimed invention, are not essential to the claimed invention, or do not have the same scope as the claimed invention, unless otherwise expressly stated in this specification or in the claims.

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

[0040] This disclosure is not a complete description of all embodiments of the invention. Nor is this disclosure a list of features of the invention that must be present in all embodiments.

[0041] Not all disclosed embodiments are necessarily included in the claims (including all pending, amended, published, and canceled claims). Furthermore, embodiments may be included in some claims (but are not necessarily required). Therefore, if a claim (whether pending, amended, published, or canceled) covers a particular embodiment, this is not evidence that the scope of other claims does not cover that embodiment.

[0042] Devices described as communicating with each other are not necessarily required to communicate with each other at all times unless otherwise specified. Conversely, such devices may only need to transmit data to each other when necessary or desired, and in practice, may refrain from exchanging data for most of the time. For example, a device communicating with another device via the internet may not transmit data to the other device for extended periods (e.g., several weeks at a time). Furthermore, devices communicating with each other may communicate directly or indirectly through one or more intermediaries.

[0043] Descriptions of embodiments having several components or features do not imply that all or any of such components / features are necessary. Conversely, various optional components are described to illustrate a wide range of implementable embodiments of the invention. Unless otherwise specified, components / features are not essential or required.

[0044] Process steps or algorithms may be described in a specific order in the specification or claims, but such processes may be configured to be performed 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 imply a requirement that the steps be performed in that order. The steps of the processes described herein may be performed in any order in which they are feasible. Furthermore, some steps may be performed simultaneously even though they are described or suggested not to be performed simultaneously (for example, because one step is described after another). Furthermore, the examples of processes shown in the accompanying drawings do not imply that the illustrated processes exclude other variations and modifications thereof, that any of the illustrated processes or their steps are necessary for the present invention, or that the illustrated processes are preferred.

[0045] A process may be described as comprising multiple steps, but this does not imply that any or all 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 in isolation, that is, without reference to other products or methods; however, in embodiments, a process may interact with other products or methods. For example, such interaction may include linking one business model to another. Such interaction may be provided to improve the flexibility or desirability of the process.

[0047] A product may be described as comprising multiple components, aspects, qualities, characteristics, and / or features, but this does not indicate that any or all of these multiple components are preferred, essential, or necessary. Various other embodiments within the scope of the described invention include other products that omit some or all of the multiple components described.

[0048] An enumerated list of items (whether numbered or not) does not imply that any or all items are mutually exclusive unless otherwise specified. Similarly, an enumerated list of items (whether numbered or not) does not imply that any or all items encompass any category unless otherwise specified. For example, the enumerated list of "computers, laptops, and PDAs" does not imply that any or all of the three items in that list are mutually exclusive, nor does it imply that any or all of the three items in that list encompass any category.

[0049] The enumerated list of items (whether numbered or not) does not suggest that any or all items are equivalent to or readily interchangeable with one another.

[0050] All embodiments are illustrative and do not imply that the present invention or any of its embodiments have been or will be practiced.

[0051] V. Calculation It will be readily apparent to those skilled in the art that the various processes described herein can be carried out, for example, by appropriately programmed general-purpose computers, dedicated computers, and computing devices. Typically, a processor (e.g., one or more microprocessors, one or more microcontrollers, one or more digital signal processors) receives instructions (e.g., from memory or similar devices), executes those instructions, and thereby executes one or more processes defined by those instructions. Instructions can be embodied, for example, by one or more computer programs, one or more scripts.

[0052] "Processor" means one or more microprocessors, central processing units (CPUs), computing devices, microcontrollers, digital signal processors, or similar devices, or any combination thereof, regardless of architecture (e.g., chip-level multiplexing / multicore, RISC, CISC, microprocessors with non-interlocking pipeline stages, pipeline configurations, simultaneous multithreading).

[0053] Therefore, a description of a process is also a description of the apparatus that executes the process. The apparatus that executes the process may include, for example, a processor, input devices, and output devices suitable for executing the process.

[0054] Furthermore, programs (and other forms of data) that implement such methods can be stored and transmitted in several formats using various media (e.g., computer-readable media). In some embodiments, wiring circuits or custom hardware can be used in place of, or in combination with, some or all of the software instructions capable of implementing the processes of various embodiments. Thus, various combinations of hardware and software can be used in place of software alone.

[0055] The term “computer-readable medium” refers to any medium, multiple media, or combinations 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. Examples of non-volatile media include optical or magnetic disks and other permanent memory. Examples of volatile media include dynamic random-access memory (DRAM), which typically constitutes main memory. Examples of transmission media include coaxial cables, copper wires, and optical fibers, including wires that constitute a system bus coupled to a processor. Transmission media include, or can transmit, sound waves, light waves, and electromagnetic radiation, such as those generated during data communication using radio frequency (RF) and infrared (IR). Common forms of computer-readable media include, for example, computer-readable floppy disks, flexible disks, hard disks, magnetic tapes, any other magnetic media, CD-ROMs, DVDs, any other optical media, punch cards, paper tapes, any other physical media having a hole pattern, RAM, PROMs, EPROMs, flash EEPROMs, any other memory chips or cartridges, carriers as described below, or any other media.

[0056] Various forms of computer-readable media can be involved in the transport of data (e.g., instruction sequences) to the processor. For example, data can be (i) sent from RAM to the processor, (ii) transported via a wireless transmission medium, (iii) formatted and / or transmitted by many formats, standards or protocols such as Ethernet® (or IEEE 802.3), SAP, ATP, Bluetooth®, TCP / IP, TDMA, CDMA and 3G, and / or (iv) encrypted in any of the various methods well known in the art to ensure privacy or prevent tampering.

[0057] Therefore, a description of a process is also a description of a computer-readable medium that stores the program that executes the process. The computer-readable medium is capable of storing (in any suitable format) the program elements appropriate for the execution of the method.

[0058] Just as a description of the various steps in a process does not indicate that all of the described steps are necessary, an embodiment of the apparatus may include a computer / calculating device capable of performing some (but not all) of the described process.

[0059] Similarly, just as a description of various steps in a process does not indicate that all described steps are necessary, embodiments of computer-readable media for storing programs or data structures include computer-readable media for storing programs that, when executed, cause a processor to perform some (but not all) of the described processes.

[0060] Where a database is described, those skilled in the art will understand that (i) alternative database structures are readily available, and (ii) other memory structures other than databases are readily available. Any example or description of any exemplary database described herein is an exemplary configuration of the stored information representation. For example, any number of other configurations other than those suggested by tables illustrated in drawings or elsewhere may be available. Similarly, any example entry in a database represents exemplary information only. Those skilled in the art will understand that the number and content of entries may differ from those described herein. Furthermore, even if a database is described as a table, other forms (including relational databases, object-based models, and / or distributed databases) may be used to store and manipulate the data types described herein. Similarly, various processes as described herein can be performed using object techniques or behaviors of databases. Furthermore, databases may be stored locally or remotely in known ways on devices that access the data in such databases.

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

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

[0063] Where a process is described, in an embodiment, the process may operate without any user intervention. In another embodiment, the process may involve some human intervention (for example, a step may be performed with or with human assistance).

[0064] VI. Continuing Application This disclosure provides to those skilled in the art a description of several embodiments and / or inventions that enable the implementation of the invention. Some of these embodiments and / or inventions are not described in the claims of this application, but are nevertheless described in the claims of one or more continuation applications claiming priority of this application.

[0065] The applicant intends to file additional applications to pursue patentability for subjects disclosed and made available, although these are not described in the claims of the present application.

[0066] VII. U.S. Patent Law § 112 paragraph 6 Any limitation of a claim that includes the terms “means for” or “step for” means that the limitation falls under § 112 paragraph 6 of the U.S. Patent Act.

[0067] Any limitation of a claim that does not include the terms “means” or “step” means that such limitation does not constitute a limitation, regardless of whether the limitation describes a function that does not include a description of the structure, materials, or operation for performing that function. For example, simply using the term “step” in a claim in reference to one or more steps of the claim or one or more steps of another claim does not constitute a limitation of §112 paragraph 6 of the U.S. Patent Act.

[0068] With respect to means or steps for performing a particular function in accordance with Section 112, Paragraph 6 of the U.S. Patent Act, the corresponding structures, materials, or actions described herein, and their equivalents, may perform additional functions and specified functions.

[0069] Computers, processors, computing devices, and similar products are structures capable of performing a wide range of functions. Such products can be operated to perform a specified function by executing one or more programs, such as programs stored in memory devices within the product or in memory devices accessed by the product. Unless otherwise specified, such programs do not need to be based on any particular algorithm, such as any specific algorithm disclosed herein. It is well known to those skilled in the art that a specified function can be performed through 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 means or steps for performing a function designated pursuant to Section 112, paragraph 6 of the U.S. Patent Act, a structure corresponding to a designated function includes any product programmed to perform a designated function. Such a structure includes a programmed product that performs a function, regardless of whether such product is programmed by (i) a 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 a means for performing a function is described, a structure for performing this method includes a computing device (e.g., a general-purpose computer) programmed and / or configured with hardware suitable for performing that function.

[0072] This also includes computing devices (e.g., general-purpose computers) programmed and / or configured with appropriate hardware to perform the function via other algorithms that would be understood by those skilled in the art.

[0073] VIII. Disclaimer Multiple references to a particular embodiment do not constitute a disclaimer or disclaimer of additional, different embodiments, and similarly, a reference to a description of an embodiment that includes all of a particular feature does not constitute a disclaimer or disclaimer of an embodiment that does not include that particular feature. Any explicit disclaimer or disclaimer in this application shall be preceded by the phrase “does not include” or the phrase “cannot be performed.”

[0074] XI. References Any patent, patent application, or other document referenced herein is incorporated by reference as part of this disclosure, but only for the purpose of providing information and enabling information under §112, paragraph 1 of the U.S. Patent Act and §112, paragraph 1 of the U.S. SC, and should not be used to limit, define, or otherwise interpret any term of this application. This application will certainly provide, and in fact will be able to provide, a certain meaning of such term even without such reference. Therefore, a person skilled in the art will not need to be limited by any embodiment provided by reference.

[0075] Any reference by means of reference does not, in itself, imply any endorsement, approval, or acquiescence of any reference, opinion, claim, or characterization contained in any patent, patent application, or other document being referenced, unless otherwise expressed in this patent application.

[0076] X. Application History In interpreting this application (including the claims), a person skilled in the art will refer to the application history of this application, but not to the application history of any other patent or patent application, regardless of whether there are any other patent applications that are deemed to be related to this application, or whether there are any other patent applications that share a claim of priority with this application.

[0077] XI. Example of an Embodiment Figure 1 shows the configuration of exchange 101 as an example of being combined with exchange participant 103. Exchange 101 may include one or more computer systems and / or computer components configured to provide trading services to participant 103. Exchange 103 may receive information regarding participant 103's trading intentions. Exchange 101 may identify cases where a pair of participants have matching trading intentions. Exchange 101 may execute trades that satisfy the matching trading intentions.

[0078] An exchange may include one or more computer systems and / or computer components configured to match orders for financial instruments and to facilitate the execution of trades that satisfy matching orders. An 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 24 October 2008, which is incorporated herein by reference. An exchange may include primary exchanges capable of conducting initial offers and / or secondary trades, such as the New York Stock Exchange and the Chicago Mercantile Exchange.

[0079] Financial instruments are understood to include instruments and / or any derivatives thereof that represent ownership of liabilities or assets, and include common stock, shares, fixed income instruments, bonds, corporate bonds, certificates of interest or deposit, warrants, options, futures, forwards, swaps, or any other securities in general.

[0080] Participant 103 may include any entity that participates in trading activities through the exchange 101. For example, a participant may include an algorithmic trading system. Such an algorithmic trading system may monitor information and request the exchange 101 to execute various trades based on changes in the information. A participant may include a proprietary trader. Such a proprietary trader may request the exchange 101 to execute trades on behalf of the participant's own account. An example of such a trader is a hedge fund. Another example of a participant is a broker. A broker may request the exchange 101 to execute trades on behalf of the broker's client 105. In some embodiments, the client 105 may communicate with the broker through a communication network 107. Such a communication network may include, for example, a telephone network for conventional 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 noted that participants may include any combination of computers and humans. For example, an internet broker such as Etrade may act as a participant commanded by a human investor; a traditional broker may interface using a direct connection to an exchange; an algorithmic trader may include a computer that executes algorithms based on data and generates orders using minimal human input or based on the output of the algorithm without any human input; and an investment bank may include highly skilled investment professionals who analyze companies and generate orders based on that information (e.g., through an intermediary or directly to an exchange), and so on.

[0082] In some embodiments, participant 103 may communicate with exchange 101 through a communication network 109. The communication network 109 may include, for example, the internet, a data bus, a dedicated wired or wireless link, and / or any other communication network. The communication network 109 may enable unidirectional or bidirectional communication. The communication network 109 may enable communication using, for example, TCP / IP. Information may be transmitted 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 their trading intentions to the exchange. For example, an order may be sent from a participant to the exchange via a communication network 109 in the form of an electronic message. The order may define the side of a financial instrument.

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

[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 for the order has been found. In some embodiments, if a match is found, the exchange may execute the order and send instructions to do so. In some embodiments, if a match is found, the exchange may ask the participant to confirm the order before executing the trade and may translate the instructions to facilitate such execution.

[0086] In some embodiments, a participant may communicate information about one or more events that may condition an order. For example, in some embodiments, an electronic message may indicate that an order can be placed if an event occurs. Events may include events relating to the financial instrument on which the order is placed, events relating to a different financial instrument, events unrelated to a financial instrument, and / or any other arbitrary events. Events may include the existence of the condition (e.g., 7 a.m. to 9 p.m.), a change in the value of the second financial instrument, a change in the trading volume of the second financial instrument, a company's financial results announcement, a change in regulations governing the industry, a change in a company's credit rating, and / or any other arbitrary occurrence, event, etc. In some embodiments, an event may relate to occurrences that may or may not occur.

[0087] In some embodiments, participants may communicate information about one or more events that may cause an order to be modified. For example, in some embodiments, an electronic message may indicate that an order should be removed from the 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 instructions may indicate that any other modifications to the order should be made if an event occurs.

[0088] In some embodiments, the exchange may communicate information about the event to participants. For example, in some embodiments, the exchange may send an electronic message indicating that the event occurred and / or did not occur.

[0089] In some embodiments, communication through the communication network 109 may include delays. These delays may include the time it takes for information to be transmitted from the source to the destination. For example, delays may include the time it takes to route information through the network, the time it takes for information to be transmitted over the wire, and the time it takes for information to be processed by an intermediate system. Depending on the situation, such as when multiple participants are competing to trade after an event occurs, delays may result in suboptimal trading outcomes.

[0090] Information source 111 may include one or more providers of information that may be relevant to trading decisions. Information source 111 may be part of the exchange 101 and / or a separate entity. The information may include, for example, information about trades that have occurred, information about pending orders (e.g., in order queues), information about trading volume, information about price changes, information about financial instruments, information about indices, information about types of financial instruments, information about industries, information about political events, information about regulatory changes, and / or information about any other events. Such information may be useful, for example, to algorithmic trading systems that make decisions about orders based on such information, and to human investors who make decisions about trades based on various pieces of information. In some embodiments, information about events at the exchange (e.g., trading stack, trade execution, etc.) may be reported by the exchange with a short delay due to less communication latency than from intermediaries that process such information, but may still be delayed, for example, due to communication latency through the communication network.

[0091] Figure 2A shows an exchange 201 as an example according to several embodiments.

[0092] As shown, the exchange 201 may connect to the participants 203 through the communication network 205. Participants and communication networks as some examples have been described above in relation to Figure 1. As shown in Figure 2A, the exchange 201 may 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 examples only, and that various embodiments may include any number of additional and / or alternative components. For example, in some embodiments, a single bus may be used, the interface may be a separate machine, a separate rule processing engine may be used, the event engine and matching engine may be combined, and any other components that provide additional desired functionality may be included, etc.

[0093] The matching engine 207 may include one or more mechanical components. In some embodiments, the matching engine may include one or more processors. Such processors may include general-purpose processors configured to match orders. Such configurations may be made via hardware and / or software (e.g., programming and / or writing). The matching engine may, as desired, be dedicated to a particular financial instrument, a particular event, a particular order type, a particular type of financial instrument, a type of feature adjustment to an order, etc. In some embodiments, the matching engine may include mechanical components (e.g., processors) that identify matched orders for a financial instrument and execute trades to satisfy the matched orders. In some embodiments, the matching engine may maintain buy order queues and sell order queues that hold prioritized 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 instruments. The buy order queue may include a prioritized collection of buy orders for financial instruments. Orders may be given priority in any desired manner. For example, orders may be given priority based on the time they were 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 an event that triggered the creation of the order, the size of the order, the price of the order, etc. In one embodiment, the queue may be given primary priority, for example, so that the highest-priced buy order for each financial instrument is given the highest priority. In some embodiments, the queue may be given secondary priority, so that buy orders at the same price are given priority based on the time they were placed in the queue. It should be noted that any prioritization may be used in various embodiments. It should be noted that the queue may include any collection that is prioritized in any manner, and that a word queue should not be read as requiring any additional attributes to the attributes described herein, nor should it be read as requiring the exclusion of such attributes.

[0095] The matching engine 207 may include a sell order queue 219 for financial instruments. The sell order queue may include a prioritized collection of sell orders for financial instruments. Orders may be given priority in any desired manner. For example, orders may be given priority based on the time they were 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 an event that triggered the creation of the order, the size of the order, the price of the order, etc. In one embodiment, the queue may be given priority primarily, for example, so that the lowest-priced sell orders for each financial instrument are given the highest priority. In some embodiments, the queue may be given priority secondarily, so that sell orders at the same price are given priority based on the time they were placed in the queue. It should be noted that any priority assignment may be used in various embodiments.

[0096] In some embodiments, the queue may include memory (e.g., RAM, registers, solid-state memory, hard disk drives, etc.). In some embodiments, the order of elements in memory may correspond to the order of priority in the queue. In some embodiments, priority may be assigned to a set of memory locations including an order by linking a first prioritized memory location to the next memory location, and so on. In other embodiments, physical memory locations may have static priorities. In other embodiments, any other method may be used to order the memory and / or assign priority to the order.

[0097] In some embodiments, placeholder orders may be placed in the queue. For example, such orders may be used to maintain a time-based priority for orders that have been (e.g., temporarily) removed from the queue. Such placeholder orders may be placed in the queue by adding a node to a list that indicates, for example, where an order is located but that the order should not actually be used for order matching to the matching engine. In other embodiments, a previous order may be flagged as inactive so that it is not subject to matching, and such a flag may be changed later to restore 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, a separate queue may be used for market orders, and multiple queues may be used to balance the order load.

[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, another communication network. The matching engine may (for example, in response to receiving an order instruction) add the order to the appropriate queue at the appropriate priority level. For example, if the order is a buy order, the matching engine may add the order to the buy order queue at the appropriate priority level according to its prioritization procedure. In some embodiments, an instruction to add an order to the queue may be added to the instruction stack. The instruction stack may contain a collection of instructions that the matching engine is asked to process in some priority order (e.g., FIFO). If the matching engine has finished processing other instructions with higher priority in the instruction stack, it may process the instruction to add an order to the queue, 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 perform processing of the matching engine. For example, such a processing unit may execute instructions from an instruction stack. Such a processing element may determine whether two orders match. Such a processing element may act if the two orders match. The matching engine may have any number of such processing elements that may be general-purpose and / or specific to a desired purpose. For example, in some embodiments, the matching engine may include a processing element that adds orders to a queue and a processing element that determines whether a match exists in the queue and acts 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, a processing element may determine whether a highest-priority buy order matches a 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, an order may match another order if the orders are the opposite side of a trade on the same financial instrument and are at the same price and / or overlapping price range. In some embodiments, orders may match if they are of similar quantities (for example, an order may match only orders of at least 10% of its quantity). In some embodiments, multiple smaller orders may match a single larger order. In some embodiments, orders may partially match. Partially matching orders may be removed from the queue, or the non-matching portion may remain in the queue, etc.

[0102] In some embodiments, in response to a determination that the first and second orders 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 perform 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 for each other. In some embodiments, execution may include clearing, transfer of funds, transfer of ownership, backend processing, etc. In some embodiments, some or all of the actions involved in execution may be performed by a remote system, exchange, matching engine, person, etc. It should be noted that any action that transfers ownership of a financial instrument may be used as execution in various embodiments.

[0103] As described above, the exchange 201 may include an interface 209. Interface 209 may be used for the communication of information between the exchange and outside the exchange (e.g., a communication network 205). The interface may include a network interface, as is well known. The interface may process incoming communications and direct them to various components of the exchange, such as an event engine and a matching engine. Interface 209 may accept instructions for exchange events (e.g., trade execution) and direct the information to its destination via the communication network 205.

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

[0105] In some embodiments, interface 209 may include one or more mechanical components. Such components may include one or more processors, memory, etc. It should be noted that interface 209 is given merely as an example, and that in other embodiments, it may not include any interface and / or information source components.

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

[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, memory, and / or any other components. In some embodiments, the event engine may include a machine 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 preconditions 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 actions may depend on the condition being 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 be conditional on all or some of the occurrence of events. The event engine 213 may store information about orders and events (e.g., in a database, memory, etc.). In one embodiment, the event engine 213 may receive electronic messages transmitted from participant 203 through the communication network 211. It should be understood that messages may undergo any number of transformations, may be divided into many packets or submessages, may be received as multiple separate or connected messages, etc. In one example, a message may indicate that a buy order for 100 shares of ESpeed ​​should be submitted to the exchange if the trading volume of ESpeed ​​shares reaches a threshold level. It should be recognized that embodiments are not limited to simple market orders, and 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 conditional on all or some of the occurrence of events. The event engine 213 may store information about actions and events (e.g., in a database, memory, etc.). In one embodiment, the event engine 213 may receive electronic messages sent from participant 203 through the communication network 211. It should be understood that messages may undergo any number of transformations, may be divided into many packets or submessages, may be received as multiple separate or connected messages, etc. In one example, a message may indicate that if the ESpeed ​​stock price 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, a message may indicate that if a number of sell orders for ESpeed ​​stock exceeding a certain threshold are received, a buy order for 100 shares of ESpeed ​​should be removed 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 the sell orders for 100 shares is met. As yet another example, the message may indicate that a passive buy order for 100 shares of ESpeed ​​should be changed to an aggressive buy order for 100 shares of ESpeed ​​if the number of buy orders for ESpeed ​​reaches a threshold level. It should be noted that these examples are non-exclusive and are given as illustrative examples of specific embodiments.

[0110] In some embodiments, such information may be processed and / or stored in a manner that facilitates the analysis of whether an event has occurred and / or, if an event has occurred, the outcome of submitting any order. For example, a database storing such information may be keyed by the event so that, if an event occurs, all actions conditional on that event can be easily referenced within the database.

[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 on the exchange, events occurring outside the exchange, etc. For example, information about events may be received through the communication network 211. Such information may be received from external sources, such as the exchange's matching engine or the exchange's remote machine. 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 that an order and / or action is conditional upon. In some embodiments, the event engine may make such determinations periodically, randomly, and / or at any other time in response to the receipt of event information. In some embodiments, such determinations may be made, for example, by referring to stored information about the conditions. In some embodiments where an order and / or action may be conditional on multiple events, a flag may be set (for example, in a database) to indicate that an event has occurred. If all conditions are flagged, the conditions may be satisfied. If an event occurs that causes a condition to no longer be satisfied (for example, a decrease in trading volume), the flag may be unflashed. It should be noted that some orders may be conditional on some and / or all of the conditions that are satisfied. For example, in some embodiments, an order may be conditional on a complex set of conditions such as (condition A AND condition B) OR (condition C BUT NOT condition D) OR (condition E).

[0113] In some embodiments, the event engine may determine whether the conditions that an order and / or action is subject to have been met. For example, if an order is subject to the trading volume of ESpeed ​​reaching a certain level, and the event engine receives event information indicating that such a level has been reached, the event engine may determine that the conditions that the order is subject to have been met. For example, in some embodiments, the event engine may search and / or query a database or other set of conditions to determine whether any conditions associated with an order and / or action are flagged. It should be noted that such determinations can be made in any desired way, including but not limited to periodic queries to a database or messages triggered by the database. In more complex conditions, the event engine may determine whether the set of conditions that trigger an order has been met (for example, from the above example, if A and B are true, C is true but D is not true, or E is true).

[0114] In some embodiments, for one or more orders and / or actions that meet certain conditions, the event engine may facilitate the submission of one or more orders and / or the execution of one or more actions. In some embodiments, it should be noted that any number of orders may be submitted and / or any number of actions may be performed if the conditions are met.

[0115] In the ESpeed ​​order example, the event engine 213 may facilitate the submission of a buy order for 100 shares of the ESpeed ​​stock. The order may be submitted according to any other information received regarding the order, as described above. In some embodiments, the event engine's facilitation of order submission may include causing the matching engine 207 to add the order to its order queue. In the ESpeed ​​stock example, the event engine may cause the matching engine to add a buy order for 100 shares of the ESpeed ​​stock to its buy order queue.

[0116] As another example, a first buy order for 100 shares of ESpeed ​​may be placed in the queue at a price of $100 per share. Adjustment instructions and conditions may be received. Adjustment instructions and conditions may be received together with the instructions for the first order. The conditions and adjustments may 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 ​​shares is received (e.g., an order exceeding a threshold, a sell order exceeding 1000 shares), the required adjustment may be to remove 100 buy orders from the queue. In some embodiments, a second condition and action may be received. The second condition and action may be to return the order to the queue if some of the sell orders are met (e.g., a threshold portion is met), if the total quantity associated with the sell orders is reduced (e.g., below some threshold amount), and / or if some other event occurs. The exchange may monitor these conditions that occur and facilitate adjustments to the orders accordingly.

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

[0119] As another example, if a change in the quantity of a sell order occurs, the first order may be changed from a passive order to an aggressive order. For example, if the quantity of available sell orders falls below a threshold, a passive buy order may be changed to an aggressive buy order. In some embodiments, the quantity may also be changed in a similar manner.

[0120] It should be noted that the example actions and conditions are non-limiting, and that in various embodiments, any combination of the above actions and / or conditions, any associated actions and / or conditions, and / or any other actions 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 requested and / or offered quantity, a decrease in the requested and / or offered quantity, and / or any other combination of any event may trigger any combination of actions such as a change in order status from passive to aggressive, a change in order type, a change in order price, a change in order quantity, cancellation of an order, submission of an order, and / or any other desired action.

[0121] In some embodiments, delays related to the submission and / or execution of orders conditional on the occurrence of an event can be reduced by having an event engine, which is part of the exchange, handle the occurrence of events. For example, if such information is processed off-site by a participant 203 rather than by the event engine 213, delays related to the reception of event information may increase (e.g., if the event information relates to an event occurring at the exchange, or if the participant has a slower connection to the information source than the exchange), and delays related to the submission and / or execution of orders may increase (e.g., by transmitting it over the communication network 205).

[0122] In some embodiments, delays associated with transmitting order information (e.g., order submission, order adjustment, order deletion, etc.) to the matching engine may depend on the communication network that serves as the medium for transmitting order information to the matching engine. In various embodiments, such delays may be reduced by reducing the length of the communication network, increasing the bandwidth of the communication network, prioritizing order information on the communication network, or dedicating the communication network to such functions, and so on.

[0123] In some embodiments, the 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 connect 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, orders received through the bus may function as interrupts to the matching engine. In some embodiments, instructions for orders and / or actions sent to the matching engine through the bus may be added to an instruction queue so that they are processed before at least one other pending instruction. For example, an instruction to process an order and / or action may be added to the top of the instruction stack so that the order and / or action is processed next by the matching engine. In some embodiments, an instruction to process an order and / or action may be added before an instruction to process other pending orders and / or actions. In some embodiments, such an instruction may be added so that it is processed before orders and / or actions received from other sources (e.g., orders and / or actions not received from the event engine, such as orders and / or actions received from participant 203). In some embodiments, a separate command queue may be maintained for orders and / or actions from the event engine, which can be processed before other orders and / or actions.

[0124] In some embodiments, the data bus may include a communication network used to transmit information between, to, and from machine components. In some embodiments, the data bus may provide much faster data transfer than the 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 that data and events can be injected from one machine component to another.

[0125] In some embodiments, orders and / or actions received from the event engine may be given a higher priority than orders and / or actions received from other sources, thereby allowing those orders and / or actions to be processed earlier and / or with higher priority than other orders and / or actions, and / or affecting the order queue. This can be done even if the matching engine receives other orders and / or actions before those from the event engine.

[0126] In some embodiments, prioritizing orders from the event engine can reduce the delay between an event occurring and the order being added to the order queue. Such prioritization can increase the priority level an order receives if the matching engine is configured to assign priority to orders based on when they were added to the order queue.

[0127] In some embodiments, orders and / or actions may be timestamped. Such timestamping can be used to assist the matching engine in prioritizing orders within the order queue. In some embodiments, for example, orders and / or actions sent from an event engine may be timestamped using a time related to the event occurrence, such as the time the event occurred, the time the event engine processed the instruction for the event occurrence, the time the original order being adjusted or added was initially submitted or timestamped in another manner, and / or any other desired time. The matching engine can use the timestamp to process orders and / or actions to place them in the queue regardless of when the matching engine received them. Thus, in some such embodiments, even if the order and / or actions are received and processed by the matching engine after orders and / or actions from another source, the timestamp may be used to assign a higher priority to the order and / or actions from the event engine within the order queue than to other orders and / or actions. Other orders may have, for example, later timestamps and / or may not be timestamped at all. If other orders are not assigned a timestamp, they may be treated 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 noted that the descriptions of the individual components in Figure 2A are given as examples only. It should also be noted that the exchange in Figure 2A is given as an example only. 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, etc.

[0129] Figure 2B shows an example embodiment in which the communication network 215 is configured to allow direct memory access from the event engine 213 to queues 217 and 219. In such embodiments, order information in the queues can be modified by direct memory access of the information. For example, order information (e.g., order price, order quantity, order timestamp, etc.) can be stored in a memory location. The memory location can be accessed (e.g., by the event engine or some other component), the information can be read, and / or the information can be modified to adjust the order. In some embodiments, the queue can be searched for a specific order through direct memory access to locate the memory location (e.g., by following a series of links in a linked list to find the order). In some embodiments, the event engine can track memory locations based on communication with the matching engine (e.g., the matching engine can send instructions to the event engine about the memory location where an order is located so that the event engine can record the information to adjust the order later). Such communication can be performed with all orders, some orders, orders placed by the event engine, etc. In some embodiments, orders may be added and / or removed using such direct memory access (e.g., by adding a node to a list, removing a node from a list, etc.).

[0130] Figure 2C shows another embodiment of an exchange having a separate rule or action processing element 221. The rule or action processing may handle actions such as adjustments to orders, similar to the event engine described above. For example, the rule or action processing element may track conditions that an action is predicated on and facilitate an action when the conditions are met. The rule or action processing element may receive information about events from the event engine, the matching engine, and / or external sources. Adjustments may be made through communication networks 215 and / or 211.

[0131] It should be noted that the exchange examples in Figures 2A, 2B, and 2C are provided as such examples and / or any other desired configuration or element, and are merely examples, as other embodiments may include any combination of elements from.

[0132] Figure 3 shows an example embodiment of an exchange 301 including an event engine 303, a plurality of matching engines 305, and a communication network 307. In some embodiments, the event engine 303 may interact with each matching engine 305 in the same manner as the interaction shown in Figure 2A.

[0133] As described above, a matching engine may be dedicated to one or more financial instruments, one or more order types for financial instruments, one or more order size ranges, one or more operation types, etc. Therefore, multiple matching engines may be included in an exchange to provide more services for trading on a single financial instrument and / or multiple financial instruments. In some embodiments, each matching engine may be tasked with a specific subset of all orders within the exchange. In other embodiments, matching engines may operate in parallel on the same set of orders, sharing the order processing load for highly liquid instruments, etc.

[0134] In some embodiments, one or more event engines 303 may be coupled with multiple matching engines 305. The event engine 303, shown here as a single engine, may provide orders and / or actions to the matching engines based on the occurrence of events, as described above with respect to Figure 2A. It should be noted that, as desired, multiple event engines may be paired with one matching engine, or multiple event engines may be paired with multiple matching engines. For example, an event engine may be designed to handle a specific type of event, a specific type of order, etc.

[0135] In one embodiment, the event engine 303 may process orders for ESpeed's financial instruments. Each matching engine may process one of each of ESpeed's bonds, ESpeed's preferred stock, ESpeed's common stock, and ESpeed ​​stock futures. The event engine may process orders related to all such instruments. The event engine may process events and / or any other events related to such instruments.

[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, a dedicated data bus may connect each matching engine to an event engine.

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

[0138] Figure 4 shows yet another example of an exchange. As shown in Figure 4, the exchange 401 can be implemented using multiple systems (e.g., blades, servers, machines, general-purpose computers, etc.). This example of an exchange 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] As described above, order cluster 403 may include any number of matching and event engines combined in any way. Order clusters may be implemented using blades, servers, etc. Order clusters may process orders, events, and / or actions associated with specific financial instruments, event types, action types, and / or order types. An exchange may have any number and / or configurations 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 other event engines to other event engines, from external sources to external sources, to event controller 405, etc.). Such a communication network is shown as event network 407 in Figure 4. The event network may include a communication network that enables event information to be communicated between different systems and / or components. Such a network may be dedicated to event communication to reduce the latency associated with the communication of event information. For example, an event may relate to something that occurred in a first order cluster, which a second order cluster may need to determine whether or not to generate an order. A high-speed communication network dedicated to event information can reduce the latency associated with such communication of such information. However, it should be noted that in other embodiments, such a dedicated network may not be included, and in various embodiments, a communication network of any configuration may be used.

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

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

[0143] Interface 409 can interface between the exchange and external sources such as participants and information sources. Information can be sent and received through a communication network 411 that allows components of the exchange to communicate with external sources.

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

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

[0146] Figure 5 shows Method 500 as an example that can be implemented in several embodiments. Method 500 can be implemented by one or more processors and / or other components of the exchange such as a matching engine, an event engine, or an interface.

[0147] As shown in block 501, method 500 may include receiving a conditional instruction. This instruction may be received from a remote computer. The condition may define one or more events. The condition may be satisfied if an 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, which may be the same computer from which the condition instruction originated. The condition instruction and the order instruction may be received together (e.g., simultaneously in a single electronic message), may be a single instruction, or may be separate instructions, etc. An order defines the trading side of a financial instrument.

[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 the exchange's event engine. In some embodiments, such determination may be made when an indication that an event has occurred is received (e.g., from an external source, a matching engine, another component of the exchange, etc.), when an event database is retrieved, or when an event occurs at the exchange (e.g., when a matching engine makes use of a trade, etc.). In some embodiments, event occurrence indications may be received and transmitted by components of the exchange and / or external sources.

[0150] As shown in block 507, method 500 may include sending an order instruction to a matching engine. Such an instruction may be sent via a communication bus, which may couple one processor (e.g., an event engine) to another processor (e.g., a matching engine). The transmission of such an instruction may be made in response to a decision 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 matched orders and execute trades to satisfy the matching orders, as described above.

[0152] It should be noted that Method 500 is merely an example, and that other methods may include any set of operations. For example, various embodiments may include timestamping, order execution, order clearing, adding to the instruction stack, order reporting, etc.

[0153] Figure 6 shows Method 600 as an example that can be implemented in several embodiments. Method 600 can be implemented by one or more processors and / or other components of the 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 external source. 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 source.

[0155] As shown in block 603, method 600 may include determining that the conditions that an order has conditions have been met. An order may define the trading side of a financial instrument. This determination may be made by the exchange's processor. This determination may be made by the event engine. This determination may be made by retrieving 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 maintained by the exchange's matching engine. The transmission may be performed via a data bus. The data bus may connect the exchange's processors (e.g., an event engine that executes the method and a matching engine that maintains the queue). The transmission may be performed in response to the identification in block 603.

[0157] It should be noted that method 600 is merely an example, and other methods may include any set of operations. For example, various embodiments may include timestamping, receiving an order, storing an order, storing conditions, retrieving stored information, fulfilling an order, clearing an order, adding to the instruction stack, reporting an order, reporting an event, and so on.

[0158] Figure 7 shows Method 700 as an example that can be implemented in several embodiments. Method 700 can be implemented by one or more processors and / or other components of the exchange, such as a matching engine, an event engine, and an interface.

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

[0160] As shown in block 703, method 700 may include receiving an action instruction. The instruction may be received from a remote computer, which may be the same computer that sent the condition instruction. The condition instruction and the action instruction may be received together (e.g., simultaneously in a single electronic message), may be a single instruction, or may be separate instructions, etc. An action defines an adjustment to an order for a financial instrument. An adjustment may include cancellation, temporary removal from the queue (e.g., until another event occurs), a change in quantity, a change in price, or the placement of an alternative order in the queue. An action may include any other desired action 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 the exchange's event engine. In some embodiments, such determination may be made when an indication that an event has occurred is received (e.g., from an external source, a matching engine, another component of the exchange, etc.), when an event database is retrieved, or when the event has occurred at the exchange (e.g., when the matching engine executes a trade, etc.). In some embodiments, an event occurrence indication may be received from and / or transmitted to components of the exchange and / or external sources. Some examples of events include a change in the value of a second financial instrument, a change in the trading volume of a second financial instrument, a company's financial results announcement, the submission of an order on the opposite side of a trade (e.g., an order that meets certain conditions at a price point with a certain quantity, etc.), a change in industry-regulating regulations, and a change in a company's credit rating.

[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 via a communication bus, which may connect one processor (e.g., an event engine, a rule processor, etc.) to another processor (e.g., a matching engine). The transmission of such an instruction may be performed in response to the identification in block 705.

[0163] As shown in block 709, method 700 may include adjusting an order. Adjustments may include cancellation, temporary removal from the queue (e.g., until another event occurs), changes in quantity, changes in price, placement of an alternative order in the queue, etc. Order adjustments may include adjusting an order pending in the matching engine's queue, adding an order to the matching engine's queue, and / or removing an order from the matching engine's queue. The matching engine may be configured to identify order matches and execute trades to fulfill matching orders, as described above.

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

[0165] In some embodiments, order adjustment may include sending information to a memory location of the matching engine. This 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 a queue. In such embodiments, order adjustment may include modifying the information about the order stored in 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 halt the execution of a trade on that 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 may be a passive order (e.g., an order waiting for a match to be found), 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 the same time-based priority as the original order. For example, the event engine and / or 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 removed 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 removed without adding an alternative (e.g., immediately, after another event occurs, always, etc.). For example, in one embodiment, upon receiving a new order for the opposite of a trade order, if the new order exceeds a certain quantity, the order may be removed from the queue. If the quantity associated with the opposite order decreases to a different threshold amount (e.g., if the new order is fulfilled or canceled), 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 the event occurrence, when the event occurrence processing is executed, etc., an order may not be pending in the matching engine's queue. Order adjustment may include adding the order to the queue. The order may have been pending in the queue before (e.g., before being deleted because the previous adjustment was conditional on a previous event). Adding an order to the queue may include adding the order to the queue with priority based on the time associated with the order, if the order was previously pending in the queue. For example, such action may be conditional on a reduction in the quantity associated with the order's opposite order for a trade on a financial instrument (e.g., after the quantity had previously reached a threshold, triggering the removal of the order from the queue). In some embodiments, time-based priority may be maintained along with timestamps (e.g., by adding the order to the queue along with the timestamps the order previously had). Such timestamps 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 the event, order, and / or action). In some embodiments, time-based priority can be facilitated by adding orders to the queue through direct memory access of the queue so that the orders are positioned in the queue where they would have been if they had not been deleted. In some embodiments, a processor (e.g., an event engine, a rule processor, etc.) may track where an order might have been in the queue if it had not been canceled, and may place a placeholder order in the queue so that the order can later be placed in the placeholder position, etc.

[0168] It should be noted that Method 700 is merely an example, and other methods may include any set of operations. For example, various embodiments may include timestamping, order execution, order clearing, adding to the instruction stack, order reporting, etc.

[0169] Figure 8 shows Method 800 as an example of how it can be implemented in several embodiments. 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, method 800 may include receiving an indication that an event has occurred. Such an indication may be received from a remote computer, such as an external source. 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 source.

[0171] As shown in block 803, method 800 may include determining that the conditions for an action have been met. An action may include adjusting an order that defines the trading side of a financial instrument. Identification may be performed by the exchange's processor. Identification may be performed by the event engine. Identification may be performed by retrieving stored information, such as a database in which order, action, and / or condition information is stored.

[0172] As shown in block 805, method 800 may include sending an order adjustment instruction to a matching engine. The transmission may be performed via a data bus. The data bus may connect the exchange's processors (e.g., an event engine that runs the method and a matching engine that holds the queues). The transmission may be performed in response to the identification in block 803.

[0173] It should be noted that method 800 is merely an example, and other methods may include any set of operations. For example, various embodiments may include timestamping, receiving an order, storing an order, storing conditions, retrieving stored information, fulfilling an order, clearing an order, adding to the instruction stack, reporting an order, reporting an event, and so on.

[0174] Figure 9 shows Method 900 as an example that can be implemented in several embodiments. Method 900 may be performed by one or more processors and / or other components of the exchange such as a matching engine, an event engine, or an interface. Method 900 may include a method for placing orders in a queue, later removing them from the queue, and later restoring the queue.

[0175] As shown in 901, method 900 may include receiving an order instruction. As shown in 903, method 900 may include receiving an action instruction and a condition instruction. Each action may include any number of conditions that the action may be subject to. An action may be unavailable for execution until another action is performed. For example, the action of returning an order to the queue may be unavailable until the order is first removed from the queue.

[0176] As shown in 905, method 900 may include placing orders in a queue. As described above, the queue may be maintained by a matching engine.

[0177] As shown in 907, it may be determined that the conditions for the first action have been met. The conditions may include, for example, the occurrence of any number of events. In one example, the condition may be the occurrence of a price change. In another example, the condition may be that an order opposite to the trading order has reached a certain quantity of a financial instrument.

[0178] As shown in 909, actions can be taken in response to specifics. For example, the action shown is the removal of an order from the queue. In other examples, it should be noted that any other desired action may be taken. An order can be removed by submitting an order from the queue held by the matching engine, by flagging an order in the matching engine's queue as inactive, by replacing an order in the matching engine's queue with a placeholder order, and / or by performing any other desired action.

[0179] As shown in block 911, it may be determined that the conditions for a second action have been met. The conditions may include, for example, the occurrence of any number of events. The conditions may include that the first action has been taken. In one example, the condition may be the occurrence of a price change (e.g., the price returning to the previous range). In another example, the condition may be that an order opposite to the trading order has reached a certain quantity of a financial instrument (e.g., returning to a range close to the range at which the first action was taken).

[0180] As shown in 913, a second action may be taken in response to a specific. For example, the action shown is adding an order to the queue. Note that in other examples, any other desired action may be taken. An order may be added by placing it in a queue held by the matching engine, by flagging an order in the matching engine's queue as active, by replacing a placeholder with an order, and / or by performing any other desired action. An order may be placed with the same priority based on the time it was previously in the queue.

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

[0182] XII. Further Embodiments The following should be interpreted as examples of embodiments, not as claims.

[0183] A. A matching engine, Receiving an order instruction, where each order defines each side of a financial instrument transaction, Each order is added to one buy order queue and one sell order queue for the financial instrument. At a minimum, it must be determined that the first order in the buy order queue and the second order in the sell order queue are consistent, and To fulfill the transactions that satisfy the first and second orders. A matching engine configured to perform the following actions: It is an event engine, Receiving an event occurrence instruction, The adjustment to the order is determined to be conditional on the occurrence of the above, and the order defines and determines the side of the transaction of the financial instrument, and In response to the above determination, send order adjustment instructions to the matching engine via the data bus. An event engine configured to execute, A data bus configured to allow order addition instructions to be communicated from the event engine to the matching engine. A device equipped with the following features.

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

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

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

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

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

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

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

[0191] A.1.1.2.2. 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 instrument, associated with a quantity exceeding a threshold.

[0192] A.1.2. 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] A.1.3. The apparatus according to claim A.1, wherein at least one instruction includes an instruction to add another order to at least one of the sell order queue and the buy order queue, the instruction to add another order being an instruction not received by the matching engine from the data bus.

[0194] A.2. The event is The second financial instrument's value change, Changes in the trading volume of the second financial product, Corporate financial reporting, Submitting an order on the opposite side of a trade, Changes in regulations governing the industry, and Changes in corporate credit ratings The apparatus according to claim A, comprising at least one of the following.

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

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

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

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

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

[0200] B. A method for carrying out a transaction, Receiving conditional instructions from a remote computer, where the condition defines an event, and when the event occurs, the condition is met; receiving this information. Receiving a first action instruction from a remote computer, the action defining an adjustment to an order for a financial instrument, The exchange's processor determines that an event has occurred. In response to the above determination, an order adjustment instruction is transmitted to the exchange's matching engine via a communication bus connecting the processor and the matching engine, the matching engine being configured to identify the match and execute a trade to fulfill the matched order, and Adjusting the order Methods that include...

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

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

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

[0204] B.3. The method according to claim B, wherein adjusting the order includes sending information to a memory location of the matching engine.

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

[0206] B.4. The event is, The second financial instrument's value change, Changes in the trading volume of the second financial product, Corporate financial reporting, Submitting an order on the opposite side of a trade, Changes in regulations governing the industry, and Changes in corporate credit ratings The method according to claim B, comprising at least one of the following.

[0207] B.5. The method according to claim B, further comprising receiving an generating instruction from a remote source.

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

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

[0210] B.8. The method according to claim B, wherein adjusting an order includes removing an order from the queue of the matching engine.

[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 a queue includes adding an alternative order having the same time-based priority as the order.

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

[0215] B.9. The method according to claim B, wherein, at the time associated with the event, the order is not pending in the matching engine's queue, and the order adjustment instruction includes an instruction to add the order to the matching engine's queue.

[0216] B.9.1. The method according to claim B.9, wherein the order addition instruction includes an instruction to add the order on 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 the reverse order of a trade in a financial instrument.

[0218] C. Receiving instructions from a remote computer that an event has occurred. The processor determines that an action is performed if a conditioned condition is met, and that the action includes adjusting an order that defines the trading side of a financial instrument. In response to the above determination, send order adjustment instructions to the matching engine via a data bus connecting the processor and the matching engine. Methods that include...

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

[0220] C.2. The method according to claim C, wherein sending an adjustment instruction includes sending an instruction to remove an order from the queue of the matching engine.

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

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

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

[0224] C.2.2. The method according to claim C.2, wherein the event includes the submission of an order opposite to a trading order, associated with a quantity exceeding a threshold.

[0225] C.3. The method according to claim C, wherein sending adjustment instructions includes sending information to a memory location of the matching engine.

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

[0227] C.3.2. The method according to claim C, wherein sending a coordination instruction includes sending an instruction to the instruction stack of the matching engine.

[0228] C.4. The event is The second financial instrument's value change, Changes in the trading volume of the second financial product, Corporate financial reporting, Submitting an order on the opposite side of a trade, Changes in regulations governing the industry, and Changes in corporate credit ratings The method according to claim C, comprising at least one of the following.

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

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

[0231] C.7. The method according to claim C, wherein, at the time associated with the event, the order is not pending in the matching engine's queue, and the adjustment instruction includes an instruction to add the order to the matching engine's queue.

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

[0233] C.7.2. The method according to claim C.7, wherein the event includes a reduction in the quantity associated with the reverse order of a trade in a financial instrument.

[0234] (Note 1) It is a matching engine, Receiving order instructions that define each side of a transaction involving a financial instrument, Each order is added to one of the buy order queues and one of the sell order queues for the aforementioned financial instrument. It is determined that at least the first order in the buy order queue and the second order in the sell order queue match, and To execute a transaction that satisfies the first and second orders. A matching engine configured to perform the following actions: It is an event engine, Receiving an event occurrence instruction, The adjustment to the order is determined to be conditional on the occurrence of the said, and the said order defines the transaction side for the said financial instrument, and In response to the aforementioned determination, an instruction to adjust the order is sent to the matching engine via the data bus. An event engine configured to execute, The data bus is configured to enable communication from the event engine to the matching engine of instructions to add the aforementioned order. A device equipped with the following features. (Note 2) The apparatus according to Appendix 1, wherein the data bus and the matching engine are configured to add the order before executing at least one pending instruction in the instruction stack when the matching engine receives an instruction to add the order. (Note 3) The apparatus as described in Appendix 2, wherein the at least one instruction includes an instruction to adjust the order. (Note 4) The apparatus as described in Appendix 3, wherein the order adjustment order includes at least one of an order to change the quantity of the order and an order to change the price of the order. (Note 5) The apparatus described in Appendix 3, wherein the order adjustment command includes a command to delete the order. (Note 6) The apparatus described in Appendix 5, which includes an order adjustment order that includes an order to add an alternative order. (Note 7) The apparatus as described in Appendix 6, wherein the order includes a passive order and the alternative order includes an aggressive order. (Note 8) The apparatus as described in Appendix 6, wherein the adjustment order includes an order to add the alternative order having the same time-based priority as the order. (Note 9) The apparatus described in Appendix 5, wherein the event includes the submission of an order for the opposite side of a trade in the financial instrument, associated with a quantity exceeding a threshold. (Note 10) The apparatus as described in Appendix 2, 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. (Note 11) The apparatus as described in Appendix 2, wherein at least one instruction includes an instruction to process an instruction to add another order to at least one of the sell order queue and the buy order queue, the instruction to add another order being an instruction not received by the matching engine from the data bus. (Note 12) The aforementioned event was, The second financial instrument's value change, Changes in the trading volume of the second financial product, Corporate financial reporting, Submitting an order on the opposite side of a trade, Changes in regulations governing the industry, and Changes in corporate credit ratings The apparatus described in Appendix 1, including at least one of the following. (Note 13) The apparatus as described in Appendix 1, wherein, during the time associated with the event, the order is not pending in the matching engine's queue, and the order adjustment instruction includes an instruction to add the order to the matching engine's queue. (Note 14) The apparatus according to Appendix 13, wherein the order addition instruction includes an instruction to add the order, if the order was previously in the queue, with priority based on the time associated with the order. (Note 15) The apparatus as described in Appendix 13, wherein the event includes a reduction in the quantity associated with the reverse order of a transaction for the financial instrument. (Note 16) A method of manipulating an exchange, Receiving conditional instructions from a remote computer, wherein the condition defines an event, and when the event occurs, the condition is satisfied. Receiving a first operation instruction from the remote computer, wherein the operation defines an adjustment to an order for a financial instrument. The exchange's processor determines that the event has occurred. In response to the aforementioned determination, the matching engine of the exchange transmits an instruction to adjust the order via a communication bus connecting the processor and the matching engine, wherein the matching engine is configured to identify a match in the order and to execute a trade that satisfies the matched order, and Adjusting the aforementioned order Methods that include... (Note 17) The method described in Appendix 16, wherein the conditional instruction and the operation instruction are received as a single communication. (Note 18) Adjusting the order includes adjusting the order by the matching engine before executing at least one pending instruction in the instruction stack. The method described in Appendix 16. (Note 19) The method according to Appendix 18, wherein the at least one command includes at least one of a command to add another order to one of the buy order queue and the sell order queue and a command to delete another order. (Note 20) The method according to Appendix 16, wherein adjusting the order includes the processor transmitting information to the memory location of the matching engine. (Note 21) The method according to Appendix 20, wherein the memory location includes the memory location associated with the order in the queue, and adjusting the order includes the processor changing the information about the order stored in the memory location. (Note 22) The aforementioned event was, The second financial instrument's value change, Changes in the trading volume of the second financial product, Corporate financial reporting, Submitting an order on the opposite side of a trade, Changes in regulations governing the industry, and Changes in corporate credit ratings The method described in Appendix 16, which includes at least one of the following. (Note 23) The method according to Appendix 16, wherein adjusting the order includes at least one of changing the quantity of the order and changing the price of the order. (Note 24) The method described in Appendix 16, which includes adjusting the order, by removing the order from the queue of the matching engine. (Note 25) The method according to Appendix 24, wherein adjusting the aforementioned order includes adding an alternative order to the queue of the matching engine. (Note 26) The method described in Appendix 25, wherein the order includes a passive order and the alternative order includes an aggressive order. (Note 27) The method according to Appendix 25, wherein adding the alternative order to the queue includes adding the alternative order having the same time-based priority as the original order. (Note 28) The method described in Appendix 24, wherein the event includes the submission of an order on the opposite side of the transaction to the aforementioned order, associated with a quantity exceeding a threshold. (Note 29) The method according to Appendix 16, wherein, during the time associated with the event, the order is not pending in the matching engine's queue, and the order adjustment instruction includes an instruction to add the order to the matching engine's queue. (Note 30) The method according to Appendix 29, wherein the order addition instruction includes an instruction to add the order if the order was previously in the queue, with priority based on the time associated with the order. (Note 31) The method described in Appendix 29, wherein the event includes a reduction in the quantity associated with the reverse order of a trade in the financial instrument. (Note 32) Receiving instructions from a remote computer that an event has occurred. The processor determines that an action is performed if a conditioned condition is met, and the action includes adjusting an order that defines the trading side of a financial instrument. In response to the aforementioned determination, an instruction to adjust the order is transmitted to the matching engine via a data bus connecting the processor and the matching engine. Methods that include... (Note 33) The method according to Appendix 32, wherein sending the adjustment instruction includes sending an instruction to adjust at least one of the price and quantity of the order. (Note 34) The method according to Appendix 32, wherein sending the adjustment instruction includes sending an instruction to remove the order from the queue of the matching engine. (Note 35) The method according to Appendix 34, wherein transmitting the adjustment instruction includes transmitting an instruction to add an alternative order to the queue of the matching engine. (Note 36) The method described in Appendix 35, wherein the order includes a passive order and the alternative order includes an aggressive order. (Note 37) The method according to Appendix 35, wherein the adjustment instruction includes adding an alternative order having the same time-based priority as the aforementioned order to the queue. (Note 38) The method described in Appendix 34, wherein the event includes the submission of an order on the opposite side of the transaction to the aforementioned order, associated with a quantity exceeding a threshold. (Note 39) The method according to Appendix 32, wherein transmitting the adjustment instruction includes transmitting information to the memory location of the matching engine. (Note 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 transmitting the adjustment instruction includes transmitting 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 an enterprise, the 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 an enterprise 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 method for controlling an electronic trading system, The electronic trading system includes a physical data bus, a first physical processing element of at least one processor, and a second physical processing element of at least one processor. The physical data bus is configured to directly communicate with the first physical processing element and the second physical processing element, and to transmit commands from the first physical processing element to the second physical processing element. The aforementioned method, The at least one processor controls the second physical processing element to receive order instructions defining each side of a transaction for a financial instrument from a remote device that is not part of the electronic trading system. Each order is added to one of the buy order queues and one of the sell order queues for the aforementioned financial instrument. It is determined that at least the first order in the buy order queue and the second order in the sell order queue are matching. When it is determined that the first order and the second order match, the step of executing a transaction that satisfies the first order and the second order, The at least one processor controls the first physical processing element, Receiving an event occurrence instruction, In response to receiving the instruction that the event has occurred, it is determined that the adjustment to the order is subject to at least one criterion related to the occurrence of the event. To determine that at least one of the criteria for the occurrence of the aforementioned order has been met, The steps include: in response to determining that at least one of the above criteria has been met, transmitting an order adjustment instruction to the second physical processing element via the physical data bus, the instruction which, in response to receiving the order adjustment instruction, functions as an interrupt to the processing of the second physical processing element causing the second physical processing element to adjust the order; A method that includes this.

2. The second physical processing element further comprises a physical memory having a machine instruction stack, The steps of the at least one processor controlling the second physical processing element in response to the second physical processing element receiving the instruction to adjust the order, further including the step of placing an instruction to adjust the order corresponding to the instruction to adjust the order into the machine instruction stack before at least one instruction pending in the machine instruction stack and before processing a particular instruction in the machine instruction stack, The method according to claim 1.

3. The at least one instruction includes a second instruction for adjusting the order, The method according to claim 2.

4. The order adjusting the order includes at least one of the following: an order adjusting the quantity of the order, or an order changing the price of the order. The method according to claim 2.

5. The order adjusting the order includes an order deleting the order, The method according to claim 2.

6. The physical data bus is configured to transmit information indicated by the instruction to adjust the order to a physical memory location in the machine instruction stack of the second physical processing element, the physical memory location being accessed by direct memory access from the second physical processing element. The aforementioned method, The steps of controlling the second physical processing element by at least one processor further include reading data from the physical memory location. The method according to claim 2.

7. The at least one instruction includes an instruction to process an instruction to add another order to at least one of the sell order queue and the buy order queue received by the second physical processing element before the order is received by the second physical processing element, wherein the instruction to add another order is an instruction not received by the second physical processing element from the physical data bus, and the order is added before the instruction is executed based on the receipt of the order not from the physical data bus. The method according to claim 2.

8. The event is, The second change in the value of financial instruments, Changes in the trading volume of the second financial product, Submitting an order on the opposite side of a trade, Changes in regulations governing the industry, or Changes in corporate credit ratings Including at least one of the following: The method according to claim 1.

9. When the event occurs, the order is not pending in the queue of the second physical processing element, and the instruction to adjust the order includes an instruction to add the order to the queue of the second physical processing element. The method according to claim 1.

10. A method for controlling the operation of an electronic trading system, The electronic trading system includes a physical data bus, a first physical processing element of at least one processor, and a second physical processing element of at least one processor. The physical data bus is configured to directly communicate with the first physical processing element and the second physical processing element, and to transmit commands from the first physical processing element to the second physical processing element. The second physical processing element further comprises a physical memory having a machine instruction stack, The physical data bus and the second physical processing element are configured such that when an order adjustment instruction is received by the second physical processing element, the order adjustment instruction functions as an interrupt to the processing of the second physical processing element. The aforementioned method, The at least one processor controls the second physical processing element, In response to the instruction to adjust the order being received by the second physical processing element, the machine instruction stack is populated with an instruction to adjust the order corresponding to the instruction to adjust the order, before at least one pending instruction in the machine instruction stack and before processing a particular instruction in the machine instruction stack. Receiving order instructions that define each side of a transaction involving a financial instrument, Each order is added to one of the buy order queues and one of the sell order queues for the aforementioned financial instrument. It is determined that at least the first order in the buy order queue and the second order in the sell order queue are matching. To transmit an instruction to the first physical processing element for the physical memory location where the order is stored, When it is determined that the first order and the second order match, the transaction that satisfies the first order and the second order is to be executed. The steps include: storing an instruction for the physical memory location in which the aforementioned order is stored; The at least one processor controls the first physical processing element, Receiving an event occurrence instruction, The aforementioned event was, Submission of an order for the opposite side of a transaction of the said financial instrument, where a quantity exceeding the threshold is associated. The second change in the value of financial instruments, Changes in the trading volume of the second financial product, Submitting an order on the opposite side of a trade, Changes in regulations governing the industry, or Changes in corporate credit ratings Includes at least one of the following: At the time of the event, the order is not pending in the queue of the second physical processing element, and the instruction to adjust the order includes an instruction to add the order to the queue of the second physical processing element. In response to receiving the instruction that the event has occurred, it is determined that the adjustment to the order is subject to at least one criterion related to the occurrence of the event. To determine that at least one of the criteria for the occurrence of the aforementioned order has been met, The steps include: in response to determining that at least one of the above criteria has been met, sending an instruction to adjust the order to the second physical processing element via the physical data bus; A method that includes this.