Interprogram communication using message related to event and action on exchange
The system addresses inefficiencies in inter-program communication by using message-based exchange events and operations, enhancing trading efficiency through real-time order management and event-driven adjustments.
Patent Information
- Application Number
- JP2025111206
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2009-03-18
- Filing Date
- 2025-07-01
- Publication Date
- 2025-10-01
- Estimated Expiration
- 2030-02-11
AI Technical Summary
Existing systems lack efficient methods for inter-program communication involving exchange events and operations, particularly in financial trading environments, leading to suboptimal trading decisions due to communication delays and inefficiencies.
Implementing a system for inter-program communication using messages related to exchange events and operations, enabling real-time matching and execution of trading intents across multiple participants, utilizing a matching engine and event engine to facilitate efficient order management and event-driven adjustments.
Enhances trading efficiency by reducing communication delays and optimizing order execution, allowing for timely and accurate response to market events, thereby improving trading outcomes.
Smart Images

Figure 2025143362000001_ABST
Abstract
Description
[Technical Field]
[0001] The present invention relates to inter-program communication using messages related to exchange events and operations. [Brief explanation of the drawings]
[0002] [Figure 1] 1 illustrates an exemplary set of entities that may be involved in a transaction in some embodiments. [Figures 2A-2C] 1 illustrates an example of an exchange that may be used in some embodiments. [Figure 3] 10 illustrates another example of an exchange that may be used in some embodiments. [Figure 4] Yet another example that may be used in some embodiments is shown. [Figure 5] 1 illustrates an example of a method that may be implemented in some embodiments. [Figure 6] 10 illustrates another example of a method that may be implemented in some embodiments. [Figure 7] 10 illustrates another example of a method that may be implemented in some embodiments. [Figure 8] 10 illustrates another example of a method that may be implemented in some embodiments. [Figure 9] 10 illustrates another example of a method that may be implemented in some embodiments. DETAILED DESCRIPTION OF THE INVENTION
[0003] Sections I through X below provide guidance for interpreting this application.
[0004] I. Terminology The term "product" means any machine, manufacture, 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 otherwise) inherently includes one or more steps, and thus all references to a "step" or "steps" of a process inherently have antecedent meaning in the mere recitation of the term "process" or similar language. Accordingly, any reference to a "step" or "steps" of a process in a claim has sufficient antecedent meaning.
[0007] The term "invention" and similar terms mean "one or more inventions disclosed in this application," unless otherwise specified.
[0008] The terms "an embodiment," "embodiment," "embodiments," "the embodiment," "one or more embodiments," "some embodiments," "particular embodiments," "one embodiment," "another embodiment," and the like mean "one or more (but not all) embodiments of the disclosed invention," unless expressly stated otherwise.
[0009] The term "variant" of an invention means an embodiment of the invention, unless otherwise specified.
[0010] Reference to "another embodiment" in describing an embodiment does not imply that the referenced embodiment is mutually exclusive with the other embodiment (e.g., an embodiment described before the referenced embodiment) unless expressly stated otherwise.
[0011] The terms "include," "comprise," and variations thereof mean "including, but not limited to," unless expressly stated otherwise.
[0012] The terms "a," "an," and "the" mean "one or more," unless otherwise specified.
[0013] The term "plurality" means "two or more" unless otherwise specified.
[0014] The term "herein" means "in this application, including anything that may be incorporated by reference," unless otherwise specified.
[0015] The phrase "at least one of," when modifying a plurality of things (such as an enumerated list of things), means any combination of one or more of those things, unless otherwise specified. For example, the phrase "at least one of widgets, cars, and wheels" means either (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," when modifying a plurality of things, does not mean "one of each" of those plurality of things.
[0016] The numbers "one," "two," etc., when used as a cardinality to indicate a quantity of something (e.g., one widget, two widgets), mean the quantity indicated by the number, but not at least the quantity indicated by the number. For example, the phrase "one widget" does not mean "at least one widget," and thus the phrase "one widget," for example, does not imply two widgets.
[0017] The phrase "based on" does not mean "based only on," unless expressly specified otherwise. In other words, the phrase "based on" describes both "based only on" and "based at least on." The phrase "based at least on" is equivalent to the phrase "based at least in part on."
[0018] The term "represents" and similar terms are not exclusive unless expressly stated otherwise. For example, the term "represents" does not mean "represents only," unless expressly stated otherwise. 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 represents something else."
[0019] The term "whereby" is used herein only preceding a phrase or other group of words that expresses only an intended result, purpose, or consequence of something already expressly stated. Thus, when the term "whereby" is used in a claim, the phrase or other words that it modifies do not establish any specific further limitation on that claim or otherwise limit the meaning or scope of that claim.
[0020] The term "eg" and similar terms mean "for example," and thus do not limit the described term or phrase. For example, in the sentence "A computer sends data (e.g., instructions, data structures) over the Internet," the term "eg" explains that "instructions" are an example of "data" that a computer may send over the Internet, and also explains that a "data structure" is an example of "data" that a computer may send over the Internet. However, both "instructions" and "data structures" are merely examples of "data," and things other than "instructions" and "data structures" can be "data."
[0021] The term "respective" and similar terms mean "considered individually." Thus, when two or more things have "respective" characteristics, each such thing has its own characteristic, and those characteristics can, but need not, be different from one another. For example, the phrase "two machines each having a respective function" means that the first such machine has a function and the second such machine likewise has a function. The function of the first machine may or may not be the same as the function of the second machine.
[0022] The term "ie" and similar terms mean "that is," and thus qualify the term or phrase being described. For example, in the sentence "A computer sends data (ie, instructions) over the Internet," the term "ie" explains that the "instructions" are the "data" that a computer sends over the Internet.
[0023] Any given numerical range should include integers and fractions within that range, e.g., the range "1 to 10" should be interpreted as specifically including integers between 1 and 10 (e.g., 1, 2, 3, 4, . . ., 9) and non-integers (e.g., 1.1, 1.2, . . ., 1.9).
[0024] Where two or more terms or phrases are synonymous (e.g., because the terms or phrases are specified as synonymous), the instance of one such term / phrase does not mean that another such term / phrase must have a different meaning. For example, if the text indicates that the meaning of "including" is synonymous with "including, but not limited to," simply using the phrase "including, but not limited to" does not mean that the term "including" means anything other than "including, but not limited to."
[0025] II. Determining The term "determining" and its grammatical variations (e.g., determining a price, determining a value, determining an object that meets certain criteria) are used in an extremely broad sense. The term "determining" encompasses a wide range of actions; thus, "determining" can include calculating, computing, processing, deriving, examining, referencing (e.g., referencing a table, database, or other data structure), ascertaining, and the like. "Determining" can also include receiving (e.g., receiving information), accessing (e.g., accessing data in a memory), and the like. Furthermore, "determining" can include resolving, selecting, choosing, establishing, and the like.
[0026] The term "determining" does not imply certainty or absolute precision, and thus "determining" may include estimation, extrapolation, prediction, inference, and the like.
[0027] The term "determining" 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 "determining" does not imply that a particular device must be used, for example, the decision does not necessarily have to be made by a computer.
[0029] III. Sentence Form If a limitation of a first claim includes one feature as well as more than one feature (e.g., a limitation such as "at least one widget" includes one widget as well as more than one widget), and in a second claim that depends from the first claim, the second claim expresses a limitation using the definite article "the" (e.g., "the widget"), this does not suggest that the first claim includes only one feature, nor does it suggest that the second claim includes only one feature (e.g., "the widget" can include both one widget and more than one widget).
[0030] When an ordinal number (such as "first," "second," or "third") is used as an adjective before a term, the ordinal number is used only to indicate a particular feature, such as to distinguish that feature from another feature described by the same or a similar term (unless otherwise specified). For example, a "first widget" may be so named only to distinguish it from, for example, a "second widget." Thus, the mere use of 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 one or both widgets. For example, the mere use of the ordinal numbers "first" and "second" before the term "widget" does not (1) indicate whether one widget comes before or after another in order or location, (2) indicate that one widget occurs or operates before or after another in time, or (3) indicate that either widget is ranked above or below another in importance or quality. Furthermore, the mere use of ordinal numbers does not define numerical limits on the feature identified by the ordinal number. For example, the mere use of the ordinal numbers "first" and "second" before the term "widget" does not indicate that there may not be more than two widgets.
[0031] Where a single device, object, or other product is described herein, two or more devices / objects (whether cooperating or not) may alternatively be used in place of the single device / object described. Thus, functionality described as being possessed by a device may alternatively be possessed by two or more devices / objects (whether cooperating or not).
[0032] Similarly, where two or more devices, articles, or other products are described herein (whether or not operating in concert), a single device / article may alternatively be substituted for two or more of the described devices or articles. For example, a single computer-based device may replace multiple computer-based devices. Thus, various functionality described as being possessed by two or more devices or articles may alternatively be possessed by a single device / article.
[0033] The functionality and / or features of a single described device may alternatively be embodied by one or more other devices that are described but are not explicitly stated to have such functionality / features. Thus, other embodiments need not include the described device itself, but rather may include one or more other devices that have such functionality / features in those other embodiments.
[0034] IV. Disclosed Examples and Terminology Are Non-Limiting Neither the Title (which appears at the top of the first page of this application) nor the Abstract (which appears at the end of this application) should be construed as limiting the scope of the disclosed invention in any way, since the scope of the disclosed invention should be used in interpreting the meaning or limiting the scope of any claim. The Abstract is only included in this application because required by 37 CFR § 1.72(b).
[0035] The title of this application and the section headings provided herein are for convenience only and should not be construed as limiting the disclosure in any way.
[0036] Many embodiments are described herein, and these embodiments are presented for illustrative purposes only. The described embodiments are not, and are not intended to be, limiting in any way. The invention disclosed herein is broadly applicable to many embodiments, as will be readily apparent from the present disclosure. Those skilled in the art will recognize that the disclosed invention can be implemented with various changes and modifications, such as structural, logical, software, and electrical changes. While certain features of the disclosed invention may be described with reference to one or more specific embodiments and / or drawings, it should be understood that such features are not limited for use with the specific embodiment or embodiments described with reference or accompanying drawings, unless otherwise specified.
[0037] While an embodiment may be disclosed as including some features, other embodiments of the invention may include fewer than all such features. Thus, for example, a claim may be directed to fewer features than the entire set of features in the disclosed embodiments, and such a claim may include no more features than those expressly recited in that claim.
[0038] None of the method step or product element embodiments described herein constitutes, is essential to, or is not coextensive with the claimed invention unless expressly stated in the specification or claims.
[0039] The preambles of the claims merely describe the objects, benefits, and possible applications of the claimed invention, and do not limit the claimed invention.
[0040] This disclosure is not a complete description of all embodiments of the invention, nor is it a list of features of the invention that must be present in all embodiments.
[0041] All disclosed embodiments need not necessarily be encompassed by the claims (including all pending, amended, issued, and canceled claims). Moreover, an embodiment may (but need not) be encompassed by several claims. Thus, if a claim (whether pending, amended, issued, or canceled) is directed to a particular embodiment, such is not evidence that the scope of other claims does not encompass that embodiment.
[0042] Devices described as communicating with each other do not necessarily communicate with each other all the time, unless otherwise specified. On the contrary, such devices need only transmit to each other as necessary or desirable and may in fact refrain from exchanging data most of the time. For example, a machine that communicates with another machine over the Internet may not transmit data to the other machine for long periods of time (e.g., weeks at a time). Furthermore, devices that communicate with each other may communicate directly or indirectly through one or more intermediaries.
[0043] A description of an embodiment with several components or features does not imply that all or any of such components / features are required. Conversely, various optional components are described to illustrate the wide variety of possible embodiments of the present invention. Unless otherwise specified, no component / feature is essential or required.
[0044] Although process steps, algorithms, or the like may be described or claimed in a particular order, such processes may be configured to be performed in different orders. In other words, any order or sequence of steps that may be explicitly described or claimed in the specification or claims does not necessarily indicate a requirement that the steps be performed in that order. The steps of processes described herein may be performed in any order that is practicable. Furthermore, some steps may be performed simultaneously despite being described or implied as not being performed simultaneously (e.g., because one step is described after the other). Furthermore, the illustration of a process depicted in the accompanying drawings does not imply that the illustrated process excludes other variations and modifications thereto, nor does it imply that the illustrated process or any of its steps are required for the invention, or that the illustrated process is preferred.
[0045] Although a process may be described as including multiple steps, this does not imply that all or any of the steps are preferred, essential, or required. Various other embodiments within the scope of the described invention(s) include other processes that omit some or all of the described steps. Unless otherwise specified, no step is essential or required.
[0046] Although a process may be described in isolation, i.e., without reference to other products or methods, in embodiments the process may interact with other products or methods. For example, such interaction may include linking one business model to another. Such interaction may provide for increased flexibility or desirability of the process.
[0047] Although a product may be described as including multiple components, aspects, qualities, properties, and / or characteristics, this does not indicate that any or all of the multiple are preferred, essential, or required. Various other embodiments within the scope of the described invention(s) include other products that omit some or all of the multiple described.
[0048] An enumerated list of items (which may be numbered or unnumbered) does not imply that any or all of the items are mutually exclusive, unless expressly stated otherwise. Similarly, an enumerated list of items (which may be numbered or unnumbered) does not imply that any or all of the items are inclusive of any category, unless expressly stated otherwise. For example, an enumerated list of "computers, laptops, PDAs" does not imply that any or all of the three items in the list are mutually exclusive, nor does it imply that any or all of the three items in the list are inclusive of any category.
[0049] An enumerated list of items (which may or may not be numbered) does not imply that any or all of the items are equivalent to each other or can be readily substituted for each other.
[0050] All embodiments are illustrative and do not imply that the invention or any embodiment has been made or performed.
[0051] V. Calculation It will be readily apparent to those skilled in the art that the various processes described herein may be implemented, for example, by appropriately programmed general-purpose computers, special-purpose computers, and computing devices. Typically, a processor (e.g., one or more microprocessors, one or more microcontrollers, one or more digital signal processors) receives instructions (e.g., from a memory or similar device) and executes those instructions, thereby performing one or more processes defined by those instructions. The instructions may be embodied, for example, in one or more computer programs, one or more scripts, etc.
[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 multiprocessing / multicore, RISC, CISC, microprocessor with non-interlocking pipeline stages, pipelined, simultaneous multithreading).
[0053] Thus, a description of a process is also a description of an apparatus for performing the process. An apparatus for performing a process may include, for example, a processor, input devices, and output devices suitable for performing the process.
[0054] Furthermore, programs (as well as other forms of data) implementing such methods may be stored and transmitted in several ways using various media (e.g., computer-readable media). In some embodiments, hard-wired circuitry or custom hardware may be used in place of or in combination with some or all of the software instructions capable of implementing the processes of the various embodiments. Thus, various combinations of hardware and software may be used in place of software alone.
[0055] The term "computer-readable medium" refers to any medium, media, or combination of different media that participate in providing data (e.g., instructions, data structures) that can be read by a computer, a processor, or a similar device. Such media may take many forms, including, but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media include, for example, optical or magnetic disks and other permanent memory. Volatile media include dynamic random access memory (DRAM), which typically constitutes main memory. Transmission media include coaxial cables, copper wire, and fiber optics, including the wires that constitute a system bus coupled to the processor. Transmission media may include or convey acoustic waves, light waves, and electromagnetic radiation, such as those generated during radio frequency (RF) and infrared (IR) data communications. Common forms of computer-readable media include, for example, a computer-readable floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, DVD, any other optical medium, punch cards, paper tape, any other physical medium with a pattern of holes, RAM, PROM, EPROM, Flash EEPROM, any other memory chip or cartridge, a carrier wave as described below, or any other medium.
[0056] Various forms of computer-readable media may be involved in carrying data (e.g., sequences of instructions) to the processor. For example, data may be (i) sent from RAM to the processor, (ii) carried over a wireless transmission medium, (iii) formatted and / or transmitted in accordance with a number of 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 a variety of ways known in the art to ensure privacy or prevent fraud.
[0057] Thus, a description of a process is also a description of a computer-readable medium that stores a program that performs the process. The computer-readable medium can store (in any suitable format) the program elements that are appropriate for performing the method.
[0058] Just as the description of various steps in a process does not indicate that all described steps are required, apparatus embodiments include computers / computing devices operable to perform some, but not necessarily all, of the described processes.
[0059] Similarly, just as the description of various steps in a process does not indicate that all described steps are required, embodiments of a computer-readable medium storing a program or data structure include computer-readable media storing a program that, when executed, can cause a processor to perform some (but not necessarily all) of the described processes.
[0060] Where a database is described, those skilled in the art will understand that (i) alternative database structures to those described can be readily utilized, and (ii) other memory structures other than a database can be readily utilized. Any illustration or description of any exemplary database described herein is an exemplary arrangement of stored information representation. For example, any number of other arrangements other than those suggested by the tables illustrated in the drawings or elsewhere can be utilized. Similarly, any illustrated entries in a database represent exemplary information only. Those skilled in the art will understand that the number and content of entries can differ from those described herein. Furthermore, although a database has been described as a table, other formats (including relational databases, object-based models, and / or distributed databases) can be used to store and manipulate the data types described herein. Similarly, the object approach or behavior of a database can be used to implement various processes as described herein. Furthermore, a database can be stored locally or remotely from a device that accesses data in such a database, in a known manner.
[0061] Various embodiments can be configured to operate in a network environment including a computer in communication with one or more devices (e.g., via a communications network). The computer may communicate with the devices directly or indirectly via any wired or wireless medium (e.g., the Internet, a LAN, a WAN, or Ethernet, token ring, telephone lines, cable lines, radio channels, optical communications lines, commercial online service providers, bulletin board systems, satellite communications links, or any combination thereof). Each device may itself comprise a computer or other computing device configured to communicate with the computer, such as those based on an Intel®, Pentium®, or Centrino® processor. Any number and type of devices may communicate with the computer.
[0062] In embodiments, a server computer or central authority may not be necessary or desirable. For example, the present invention may, in embodiments, be practiced on one or more devices without a central authority. In such embodiments, any functions 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 such one or more devices.
[0063] Where a process is described, in an embodiment the process may operate without any user intervention. In another embodiment, the process includes some human intervention (e.g., steps are performed by or with the assistance of a human).
[0064] VI. Continuing Applications This disclosure provides one of ordinary skill in the art with an enabling description of several embodiments and / or inventions, some of which are not claimed in this application, but may nevertheless be claimed in one or more continuing applications claiming benefit of priority to this application.
[0065] Applicant intends to file additional applications to pursue patents directed to subject matter disclosed and enabled but not claimed in this application.
[0066] VII. U.S. Patent Law § 112 paragraph 6 In the claims, any claim limitation containing the words "means for" or "step for" means that § 112, paragraph 6 of the U.S. Code applies to that limitation.
[0067] In a claim, any claim limitation that does not contain the term "means" or the term "step" means that §112, paragraph 6 does not apply to that limitation, regardless of whether the limitation recites a function without the recitation of structure, material, or acts for performing that function. For example, in a claim, the mere use of "step" with reference to one or more steps in the claim or one or more steps in other claims does not mean that §112, paragraph 6 applies to those steps.
[0068] With respect to means or steps for performing a specified function pursuant to U.S. Patent Code § 112, paragraph 6, the corresponding structure, material, or acts described herein, and their equivalents, may perform additional functions as well as the specified functions.
[0069] Computers, processors, computing devices, and similar products are structures capable of performing a wide range of functions. Such products can be operable to perform specified functions by executing one or more programs, such as programs stored in memory devices within the product or memory devices accessed by the product. Unless otherwise specified, such programs need not be based on any particular algorithm, such as any particular algorithm that may be disclosed in this application. Those skilled in the art will appreciate that specified functions may be implemented via different algorithms, and which of several different algorithms is merely a matter of design choice for performing the specified function.
[0070] Thus, with respect to means or steps for performing a specified function pursuant to U.S.C. § 112, paragraph 6, structure corresponding to the specified function includes any product programmed to perform the specified function. Such structure includes a programmed product that performs the function, whether such product is programmed with (i) the disclosed algorithm that performs the function, (ii) an algorithm similar to the disclosed algorithm, or (iii) a different algorithm to perform the function.
[0071] Where a method recites a means for performing a certain function, one structure for performing the method includes a computing device (e.g., a general-purpose computer) that is programmed and / or configured with appropriate hardware to perform the function.
[0072] It also includes a computing device (eg, a general-purpose computer) that is programmed and / or configured with appropriate hardware to perform its functions via other algorithms as will be appreciated by those skilled in the art.
[0073] VIII. Disclaimer Multiple references to a particular embodiment do not imply a disclaimer or denial of additional, different embodiments, and similarly, references to a description of an embodiment including all of a particular feature do not imply a disclaimer or denial of embodiments that do not include the particular feature. Any clear disclaimer or denial in this application shall be prefaced with the words "does not include" or "cannot be implemented."
[0074] XI. INCORPORATION BY REFERENCE Any patents, patent applications, or other documents referenced herein are incorporated by reference into this application as part of this disclosure, but are incorporated by reference solely for purposes of description requirements under 35 U.S.C. § 112, paragraph 1, and enablement requirements under 35 U.S.C. § 112, paragraph 1, and should in no way be used to limit, define, or otherwise interpret the terms of this application, which would necessarily provide, or would be able to provide, the definitive meaning of such terms even in the absence of such incorporation by reference. Therefore, one of ordinary skill in the art need in no way be limited by any of the embodiments provided in the references.
[0075] Any incorporation by reference does not, in itself, imply support, approval, or acquiescence of any statements, opinions, assertions, or characterizations contained in any incorporated patent, patent application, or other document, unless otherwise expressly stated in this patent application.
[0076] X. Application Process In interpreting this application (including the claims), a person of ordinary skill in the art shall refer to the prosecution history of this application, but not to the prosecution history of any other patents or patent applications, regardless of whether there are any other patent applications that may be considered related to this application or that share a claim of priority with this application.
[0077] XI. Example of Implementation 1 illustrates an example configuration of an exchange 101 coupled to exchange participants 103. The exchange 101 may include one or more computer systems and / or computer components configured to provide trading services to the participants 103. The exchange 103 may accept information regarding the trading intent of the participants 103. The exchange 101 may identify when the trading intent of a pair of participants matches. The exchange 101 may execute trades that satisfy the matching trading intent.
[0078] An exchange may include one or more computer systems and / or computer components configured to match orders for financial instruments and facilitate execution of transactions that satisfy the matching orders. An exchange may include an alternative trading system 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 Ser. No. 12 / 257,499, filed October 24, 2008, which is incorporated herein by reference. An exchange may include a primary exchange that may conduct initial offers and / or secondary trading, such as the New York Stock Exchange and the Chicago Mercantile Exchange.
[0079] Financial instruments include instruments representing ownership of liabilities or assets and / or any derivatives thereof, and should be understood to include common stocks, shares, fixed income products, bonds, debentures, certificates of interest or deposits, warrants, options, futures, forwards, swaps, or generally any security.
[0080] A 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 various trades to be executed by the exchange 101 based on changes in the information. A participant may include a proprietary trader. Such a proprietary trader may request trades to be executed by the exchange 101 for the participant's own account. An example of such a trader may be a hedge fund. Yet another example of a participant may be a broker. A broker may request trades to be executed by the exchange 101 on behalf of the broker's client 105. In some embodiments, a client 105 may communicate with a broker through a communications network 107. Such a communications network may include, for example, a telephone network for traditional brokerage services, a computer network for electronic brokerage services, and / or any other communications network (e.g., the Internet, a private network, etc.).
[0081] It should be recognized that participants may include any combination of computers and people. 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 runs an algorithm on data and generates orders based on the output of the algorithm with little or no human input, an investment bank may include highly skilled investment professionals that analyze companies and generate orders based on that information (e.g., through an intermediary or directly to an exchange), etc.
[0082] In some embodiments, participants 103 may communicate with the exchange 101 through a communications network 109. The communications network 109 may include, for example, the Internet, a data bus, a dedicated wired or wireless communication link, and / or any other communications network. The communications network 109 may enable unidirectional or bidirectional communication. The communications network 109 may enable communication using, for example, TCP / IP. Information may be passed through the communications network in any form, including, for example, multiple data packets.
[0083] In some embodiments, one or more participants may communicate information regarding their trading intent to the exchange. For example, an order may be sent in the form of an electronic message from the participant to the exchange over the communications network 109. The order may define a side of a financial instrument.
[0084] An example of a suite of communications involving linking multiple orders for execution through an exchange is described in U.S. patent application Ser. No. 09 / 627,705, filed Jul. 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 to the order has been found. In some implementations, if a match is found, the exchange may execute the order and send instructions to do so. In some implementations, if a match is found, the exchange may ask the participant to confirm the order before executing the trade and may translate instructions to facilitate such execution.
[0086] In some embodiments, participants may communicate information regarding one or more events that may condition an order. For example, in some implementations, an electronic message may indicate that an order may be submitted if the event occurs. The events may include an event related to the financial instrument for which the order is submitted, an event related to a different financial instrument, an event unrelated to the financial instrument, and / or any other event. The events may include the existence of a condition (e.g., 7:00 AM - 9:00 PM), a change in the value of the second financial instrument, a change in trading volume of the second financial instrument, an earnings release by a company, a change in regulations governing an industry, a change in a company's credit rating, and / or any other occurrence. In some implementations, the events may relate to occurrences that may or may not occur.
[0087] In some embodiments, participants may communicate information regarding one or more events that may cause an order to be adjusted. For example, in some implementations, an electronic message may indicate that an order should be removed from an order queue if the event occurs, an electronic message may indicate that an order's quantity should be modified if the event occurs, an electronic message may indicate that a passive order should be changed to an aggressive order if the event occurs, an electronic message may indicate that an order's price should be modified if the event occurs, an electronic message may indicate that an order should be returned to a queue if the event occurs, and / or instructions may indicate that any other adjustments to the order should be made if the event occurs.
[0088] In some embodiments, the exchange may communicate information about the event to participants. For example, in some implementations, the exchange may send an electronic message indicating that the event occurred and / or did not occur.
[0089] In some embodiments, communications over the communications network 109 may include delays. Delays may include the time it takes for information to travel from a source to a destination. For example, delays may include the time it takes for information to be routed through a network, the time it takes for information to travel over wires, the time it takes for information to be processed by intermediate systems, etc. Delays may result in less-than-optimal trading results in some situations, such as when multiple participants compete to trade after an event occurs.
[0090] The information sources 111 may include one or more providers of information that may be relevant to trading decisions. The information sources 111 may be part of the exchange 101 and / or may be separate entities. The information may include, for example, information about transactions that have occurred, information about pending orders (e.g., in an order queue), information about trading volume, information about price changes, information about financial instruments, information about indexes, 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 order decisions based on such information, as well as to human investors that make trading decisions based on various information. In some implementations, information about events at the exchange (e.g., trading stacks, trade executions, etc.) may be reported by the exchange with shorter delays due to lower communication delays than from intermediaries that process such information, but may still be delayed based on, for example, communication delays through the communication network.
[0091] FIG. 2A illustrates an example exchange 201 according to some embodiments.
[0092] As shown, exchange 201 may be coupled to participants 203 through communications network 205. Some example participants and communications networks were described above in connection with FIG. 1. As shown in FIG. 2A, exchange 201 may include matching engine 207, interface 209, first communications network 211, event engine 213, and second communications network 215. It should be recognized that these components are provided by way of example only, and that various embodiments may include any number of additional and / or alternative components. For example, some implementations may use a single bus, the interface may be a separate machine, a separate rules processing engine may be used, the event engine and matching engine may be coupled, any other components that provide additional desired functionality may be included, etc.
[0093] The matching engine 207 may include one or more machine components. In some embodiments, the matching engine may include one or more processors. Such a processor may include a general-purpose processor configured to match orders. Such configuration may be achieved via hardware and / or software (e.g., programming and / or writing). The matching engine may be specialized for particular financial instruments, particular events, particular order types, particular financial instrument types, types of feature adjustments to orders, etc., as desired. In some embodiments, the matching engine may include machine components (e.g., processors) that identify matches for orders against financial instruments and execute transactions that satisfy the matching 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 queue 217 of buy orders for financial instruments. The buy order queue may include a prioritized collection of buy orders for financial instruments. The orders may be prioritized in any manner desired. For example, orders may be prioritized based on time placed in the queue, time the order was received by the exchange, time the order was created, time the order was received by the matching engine, time associated with an event triggering the creation of the order, size of the order, price of the order, etc. In one embodiment, the queue may be prioritized primarily, for example, so that the highest priced buy orders per financial instrument are given highest priority. In some embodiments, the queue may be prioritized secondarily, so that buy orders of the same price are prioritized based on time placed in the queue. It should be appreciated that any prioritization may be used in various embodiments. It should be appreciated that a queue may include any collection prioritized in any manner, and that the word queue should not be read as requiring any additional attributes to or exclusion of attributes described herein.
[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. The orders may be prioritized in any manner desired. For example, orders may be prioritized based on time placed in the queue, time the order was received by the exchange, time the order was created, time the order was received by the matching engine, time associated with an event triggering the creation of the order, size of the order, price of the order, etc. In one embodiment, the queue may be prioritized primarily, for example, so that the lowest priced sell order per financial instrument is given the highest priority. In some embodiments, the queue may be prioritized secondarily, so that sell orders of the same price are prioritized based on time placed in the queue. It should be appreciated that any prioritization 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, a set of memory locations containing orders may be prioritized, for example, by linking from 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 of ordering memory and / or prioritizing orders may be used.
[0097] In some implementations, a placeholder order may be placed in a queue. For example, such an order may be used to preserve time-based priority for an order that has been (e.g., temporarily) removed from the queue. Such a placeholder order may be placed in the queue, for example, by adding a node to a list that indicates where the order is but indicates to the matching engine that the order should not actually be used to match orders. In other implementations, the previous order may be flagged as inactive, so that the previous order is not eligible for matching, and such flag may be changed later to reinstate the order.
[0098] In some implementations, multiple buy order queues and / or multiple sell order queues may be used. For example, in some implementations, 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, multiple queues may be used to balance order loads, etc.
[0099] In some embodiments, the matching engine may receive an order indication. Such an indication may be received over a bus, another communications network, from a remote system, an event engine, etc. The matching engine (e.g., in response to receiving the order indication) may add the order to the appropriate queue at the appropriate priority level. For example, if the order is a buy order, the order may be added to a buy order queue at the priority level according to the matching engine's prioritization procedures. In some implementations, an instruction to add the order to the queue may be added to an instruction stack. The instruction stack may include a collection of instructions that the matching engine is asked to process in some priority order (e.g., FIFO). The matching engine may process the instruction to add the order to the queue when it has finished processing other higher priority instructions in the instruction stack, thereby causing the matching engine to add the order to the queue.
[0100] In some embodiments, the matching engine may include an arithmetic logic unit and / or other processing elements that perform the operations of the matching engine. For example, such a processing unit may execute instructions from an instruction stack. Such a processing element may make a determination as to whether two orders match. Such a processing element may take action if two orders match. The matching engine may have any number of such processing elements, which may be general-purpose and / or specialized for a desired purpose. For example, in some implementations, the matching engine may include a processing element that adds an order to a queue and a processing element that determines whether a match exists in the queue and acts accordingly.
[0101] In some embodiments, the matching engine may determine whether an order in a buy order queue matches an order in a 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 on opposite sides of a trade for the same financial instrument and are at the same price and / or overlapping price ranges. In some embodiments, orders may match if they are of similar quantities (e.g., an order may only match orders with quantities at least 10% of the order 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, the unmatched portions may remain in the queue, etc.
[0102] In some embodiments, in response to determining that the first and second orders match, the matching engine may execute a trade that fulfills at least a portion of each of the two orders. Execution may include, for example, sending an instruction to perform the execution. In some implementations, execution may include, for example, changing information about the orders stored in a database to indicate that the orders have been executed against each other. In some implementations, execution may include clearing, transfer of money, transfer of ownership, back-end processing, etc. In some implementations, some or all of the actions involved in execution may be performed by a remote system, an exchange, a matching engine, a person, etc. It should be recognized that any action that causes ownership of a financial instrument to be transferred may be used as execution in various embodiments.
[0103] As described above, the exchange 201 may include an interface 209. The interface 209 may facilitate communication of information between the exchange and outside the exchange (e.g., the communications network 205). The interface may include a network interface, as is well known. The interface may process incoming communications and direct communications to various components of the exchange, such as an event engine and a matching engine. The interface 209 may accept indications of exchange events (e.g., trade executions) and direct the information to a destination via the communications 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, information about prices, information about volatility, execution information, information about trading volume, etc. Such information may also be received from other elements of the exchange (e.g., a matching engine, an event engine, etc.) and / or from sources outside the exchange (e.g., sources). Such information may be reported outside the exchange. In doing so, the exchange may act as a source of information for such information. Obtaining information about trading events from the exchange rather than from external sources may reduce information latency.
[0105] In some embodiments, interface 209 may include one or more machine components. Such components may include one or more processors, memories, etc. It should be recognized that interface 209 is provided by way of example only, and that other embodiments may not include any interface and / or information source components.
[0106] A communications network 211 may facilitate communication between components of the exchange 201. The communications network 211 may include a data bus of a single machine and / or any other communications network (e.g., a LAN, etc.).
[0107] As described above, the exchange 201 may include an event engine 213. The event engine 213 may include one or more computer components. For example, the event engine 213 may include a processor, 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, a condition may include a prerequisite that may occur before the condition is met. A condition may include one or more events that may occur before the condition is met. Any number of actions may depend on a condition being satisfied.
[0108] In some embodiments, the event engine 213 may receive information identifying one or more events and one or more orders that may be conditioned on all or some of the events occurring. The event engine 213 may store information about the orders and events (e.g., in a database, memory, etc.). In one example embodiment, the event engine 213 may receive an electronic message sent from a participant 203 over the communications network 211. It should be understood that the message may undergo any number of variations, may be separated into many packets or sub-messages, may be received as multiple separate or connected messages, etc. In one example, the message may indicate that if trading volume for shares of ESpeed reaches a threshold level, a buy order for 100 shares of ESpeed should be submitted to the exchange. It should be appreciated 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 one or more actions that may be conditioned on all or some of the events occurring. The event engine 213 may store information about the actions and events (e.g., in a database, memory, etc.). In one example embodiment, the event engine 213 may receive an electronic message sent from a participant 203 over the communications network 211. It should be understood that the message may undergo any number of variations, may be split into many packets or sub-messages, may be received as multiple separate or connected messages, etc. In one example, the message may indicate that if the stock price of ESpeed reaches a certain threshold, a buy order for 100 shares of ESpeed should be changed to a buy order for 50 shares of ESpeed. In another example, the message may indicate that if a number of sell orders for ESpeed shares exceeding a certain threshold are received, a buy order for 100 shares of ESpeed should be 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 a sell order for 100 shares has been filled. As yet another example, the message may indicate that a passive buy order for 100 shares of ESpeed should be converted to an aggressive buy order for 100 shares of ESpeed if the number of buy orders for ESpeed shares reaches a threshold level. It should be appreciated that these examples are non-limiting and are provided as illustrations of particular embodiments.
[0110] In some implementations, such information may be processed and / or stored to facilitate analysis of whether an event has occurred and / or identification of what would happen if an event occurred and if so, what would happen if any orders were submitted. For example, a database storing such information may be keyed by event so that, when an event occurs, all actions contingent on that event may 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 off the exchange, etc. For example, information about the events may be received through the communications network 211. Such information may be received from an external source, from the exchange's matching engine, from a remote machine on the exchange, etc. In one example, an electronic message may indicate an event, such as the value of trading volume for ESpeed shares.
[0112] In some embodiments, the event engine may determine whether information received about an event satisfies one or more conditions on which an order and / or action is conditioned. In some implementations, the event engine may make such a determination in response to receiving event information, periodically, randomly, and / or at any other time. In some implementations, such a determination may be made, for example, by referencing stored information about the conditions. In some implementations where an order and / or action may be conditioned on multiple events, a flag may be set (e.g., in a database) to indicate that an event has occurred. If all conditions are flagged, the condition may be met. If an event occurs such that a condition is no longer met (e.g., trading volume decreases), the flag may be unset. It should be appreciated that some orders may be conditioned on some and / or all of the conditions being met. For example, an order may, in some implementations, be conditioned on a complex set of conditions, such as (condition A AND condition B) OR (condition C BUT NOT condition D) OR (condition E).
[0113] In some embodiments, the event engine may determine whether a condition on which an order and / or action is contingent has been met. For example, if an order is contingent only on the trading volume of ESpeed reaching a certain level and event information is received indicating that such level has been reached, the event engine may determine that a condition on which the order is contingent has been met. For example, in some implementations, the event engine may search and / or query a database or other collection of conditions to determine whether a condition associated with the order and / or action has been flagged. It should be appreciated that such a determination may be made in any desired manner, including, but not limited to, periodic queries to a database, database-triggered messages, etc. In more complex conditionalities, the event engine may determine whether a set of conditions that trigger an order have been met (e.g., from the above example, if A and B are true, if C is true but D is not true, or if E is true).
[0114] In some embodiments, for one or more orders and / or actions that satisfy a condition, the event engine may facilitate the submission of one or more respective orders and / or the execution of one or more actions. It should be appreciated that in some embodiments, any number of orders may be submitted and / or any number of actions may be performed when a condition is satisfied.
[0115] In the ESpeed order example, the event engine 213 may facilitate the submission of an order to buy 100 shares of ESpeed. The order may be submitted according to any other information received regarding the order, as described above. In some embodiments, facilitating the order submission by the event engine may include causing the matching engine 207 to add the order to an order queue. In the ESpeed example, the event engine may cause a buy order for 100 shares of ESpeed to be added to the matching engine's buy order queue.
[0116] As another example, a first order to buy 100 shares of ESpeed may be placed in a queue at a price of $100 per share. Adjustment instructions and conditions may be received. The adjustment instructions and conditions may be received along 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 shares of ESpeed is received (e.g., an order exceeding a threshold, a sell order for more than 1,000 shares), the requested adjustment may be to remove a buy order for 100 shares from the queue. In some implementations, 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 filled (e.g., a threshold portion is met, etc.), 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 as they occur and facilitate adjustments to the order accordingly.
[0118] As another example, when a price change occurs for a sell order (e.g., a large increase or decrease), the required adjustment may 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 quantity change occurs in a sell order, the first order may change 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 change to an aggressive buy order. In some implementations, the quantity may change as well.
[0120] It should be appreciated that the example actions and conditions are non-limiting, and that various embodiments may use any combination of the above actions and / or conditions, any associated actions and / or conditions, and / or any other actions and / or conditions. For example, any combination of 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 event may cause any combination of actions, such as changing the state of the order from passive to aggressive, changing the order type, changing the order price, changing the order quantity, canceling the order, submitting the order, and / or any other desired action.
[0121] In some implementations, processing event occurrences with an event engine that is part of the exchange may reduce delays associated with submitting and / or acting on orders that are contingent on the occurrence of an event. For example, if such information were processed off-site by a participant 203 rather than by the event engine 213, delays associated with receiving the event information may be increased (e.g., if the event information relates to an event that occurs at the exchange, the participant may have a slower connection to the information source than the exchange, etc.), delays associated with submitting and / or acting on orders (e.g., by transmitting over communications network 205), etc.
[0122] In some implementations, delays associated with transmitting information about an order (e.g., submitting an order, adjusting an order, deleting an order, etc.) to the matching engine may be based on the communications network through which the information about the order is transmitted to the matching engine. In various implementations, reducing the length of the communications network may reduce such delays, increasing the bandwidth of the communications network may reduce such delays, prioritizing order information over the communications network may reduce such delays, dedicating a communications network to such functions may reduce such delays, etc.
[0123] In some embodiments, the communication network 215 may include a data bus. The data bus may allow communication from the event engine to the matching engine. The data bus may be a dedicated bus that allows such communication. Such communication may be unidirectional or bidirectional. In some embodiments, such a bus may directly couple the event engine and the matching engine within the same machine. In some embodiments, the data bus may include an event injection bus. In some embodiments, orders received over the bus may act as interrupts to the matching engine. In some embodiments, order and / or action instructions sent to the matching engine over the bus may be added to an instruction queue to be processed before at least one other pending instruction. For example, an instruction to process the order and / or action may be added to the top of an instruction stack so that the order and / or action will be processed next by the matching engine. In some embodiments, an instruction to process the order and / or action may be added before instructions to process other pending orders and / or actions. In some embodiments, such instructions may be added to be processed before orders and / or actions received from other sources (e.g., orders and / or actions not received from the event engine, orders and / or actions received from participants 203, etc.). In some implementations, a separate instruction queue may be maintained for orders and / or actions from the event engine, which may be processed before other orders and / or actions.
[0124] In some embodiments, a data bus may include a communications network used to transmit information between / to / from machine components. In some implementations, a data bus may provide much faster data transfer than communications networks involved in communication between multiple remote machines. In some implementations, a data bus may also provide direct memory access and direct register access so that data and events may be injected from one machine component to another.
[0125] In some implementations, orders and / or actions received from the event engine may be given 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, even if the matching engine receives the other orders and / or actions before the orders and / or actions from the event engine.
[0126] In some implementations, prioritizing orders from the event engine may reduce the delay between when an event occurs and when an order is added to an order queue. Such prioritization may increase the priority level that an order receives if the matching engine is configured to prioritize orders based on when the order is added to the order queue.
[0127] In some embodiments, orders and / or actions may be time-stamped. Such time-stamping may be used to assist the matching engine in prioritizing the order queue. In some implementations, orders and / or actions sent from an event engine may be time-stamped using a time related to the event occurrence, such as the time the event occurred, the time an indication of the event occurrence was processed by the event engine, the time the original order being adjusted or added was originally submitted or otherwise time-stamped, and / or any other desired time. The matching engine may process the orders and / or actions using the timestamp to place the orders in a queue regardless of when the matching engine received the orders and / or actions. Thus, in some such implementations, orders and / or actions from the event engine may be given higher priority in the order queue than other orders and / or actions based on the timestamp, even if the orders and / or actions are received and processed by the matching engine after orders and / or actions from another source. The other orders may, for example, have later timestamps and / or may not be time-stamped. If other orders are not time-stamped, they may be treated as if they had a timestamp equal to the time they were added to the queue or another event occurred.
[0128] It should be appreciated that the descriptions of the individual components in Figure 2A are given by way of example only. It should also be appreciated that the exchange in Figure 2A is given by way of example only. In various embodiments, any combination of components and any set of components may be used. Such components may include, for example, a security component, a credit component, a reporting component, a clearing component, etc.
[0129] FIG. 2B illustrates an example embodiment in which communication network 215 is configured to allow direct memory access from event engine 213 to queues 217 and 219. In such an embodiment, order information in a queue may be modified through direct memory access of the information. For example, order information (e.g., order price, order quantity, order timestamp, etc.) may be stored in a memory location. The memory location may be accessed (e.g., by the event engine or some other component) to read and / or modify the information to adjust the order. In some embodiments, the queue may be searched for a particular order through direct memory access to identify the memory location (e.g., by following a series of links in a linked list to find the order, etc.). In some implementations, the event engine may track memory locations based on communication with the matching engine (e.g., the matching engine may send an indication of the memory location where the order is located to the event engine so that the event engine can record the information for later adjustment of the order). Such communication may occur with all orders, some orders, orders placed by the event engine, etc. In some implementations, orders may be added and / or deleted using such direct memory access (e.g., by adding a node in a list, removing a node from a list, etc.).
[0130] 2C shows another embodiment of an exchange with a separate rule or action processing element 221. The rule or action processing may process actions, such as adjustments to orders, similar to the event engine described above. For example, the rule or action processing element may track conditions on which actions are contingent and promote actions 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 appreciated that the example exchanges of FIGS. 2A, 2B, and 2C are given as such and / or any other desired configurations or elements are merely examples, and that other embodiments may include any combination of elements from.
[0132] 3 illustrates an example embodiment of an exchange 301 that includes an event engine 303, multiple matching engines 305, and a communication network 307. In some implementations, the event engine 303 may interact with each matching engine 305 in a manner similar to the interactions described above in FIG. 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 action types, etc. Accordingly, multiple matching engines may be included in an exchange to better service trading involving a single financial instrument and / or multiple financial instruments. In some implementations, each matching engine may be tasked with a particular subset of all orders within the exchange. In other implementations, matching engines may operate in parallel on the same set of orders to share the order processing load, such as for highly liquid instruments.
[0134] In some embodiments, one or more event engines 303 may be coupled to 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 an event, as described above with respect to FIG. 2A. It should be appreciated that multiple event engines may be paired with a single matching engine, or multiple event engines may be paired with multiple matching engines, as desired. For example, an event engine may be designed to handle a particular type of event, a particular type of order, etc.
[0135] In one example embodiment, the event engine 303 may process orders for ESpeed financial instruments. Each of the matching engines may process one each of ESpeed bonds, ESpeed preferred stock, ESpeed common stock, and ESpeed stock futures. The event engine may process orders related to all such instruments. The event engine may process events related to such instruments and / or any other events.
[0136] The communications 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 couple each matching engine to the event engine.
[0137] While FIG. 3 contemplates a configuration similar to FIG. 2A, it should be appreciated that other embodiments may be configured to incorporate direct queue access as discussed with respect to FIG. 2B, a separate rules engine as discussed with respect to FIG. 2C, and / or any other desired components and / or configurations.
[0138] Figure 4 illustrates yet another example exchange. As shown in Figure 4, an exchange 401 may be implemented on multiple systems (e.g., blades, servers, machines, general-purpose computers, etc.). The example 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] An order cluster 403 may include any number of matching engines and event engines, as described above, coupled in any manner. An order cluster may be implemented on a blade, server, etc. An order cluster may process orders, events, and / or actions associated with a particular financial instrument, event type, action type, and / or order type. An exchange may have any number and / or configuration of order clusters.
[0140] An order cluster may include an event engine coupled to a communications network so that it can receive and / or transmit event information (e.g., from / to other event engines, from / to external sources, to / from the event controller 405, etc.). Such a communications network is shown as event network 407 in FIG. 4. An event network may include a communications network that allows event information to be communicated between different systems and / or components. Such a network may be dedicated to event communications to reduce delays associated with communicating event information. For example, an event may relate to something that occurred in a first order cluster and is necessary for a second order cluster to determine whether an order should be generated. A high-speed communications network dedicated to event information may reduce delays associated with such communications of such information. However, it should be appreciated that other embodiments may not include such a dedicated network, and that various embodiments may use a communications network of any configuration.
[0141] In some embodiments, the event controller 405 may receive information about events via an event network or any other communication network and transmit the information to one or more order clusters. In some embodiments, an event controller may not be included. In some embodiments, an event engine is not 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, communication of event information outside the network, etc.
[0142] In some embodiments, order clusters may include interfaces for communicating information such as receiving orders, receiving terms on orders, etc. Such interfaces may be coupled to communications network 411. Communications network 411 may operate as a general-purpose communications network between components of the exchange. In other embodiments, any configuration of communications network may be used.
[0143] Interface 409 may interface between the exchange and external sources such as participants, information sources, etc. Information may be sent and received through communication network 411, which allows components of the exchange to communicate with external sources.
[0144] Additional components 413 may include any other desired components of an exchange. For example, such components may include a clearing house, a credit function, a security function, a separate rules processing function, etc.
[0145] It should be appreciated that this example exchange is non-limiting, and that in various embodiments, any configuration of exchange components may be combined in any manner. In some embodiments, multiple configurations such as those shown in FIG. 4 may be combined in any manner to create even larger exchanges. Such abstractions may be performed any number of times to create exchanges of any size that can accommodate any desired number of orders. It should be appreciated that while the order clusters are described as being similar to the configuration of FIG. 2A, other embodiments may include configurations that include direct queue access as described in FIG. 2B, a separate rules processor as described in FIG. 2C, and / or any desired components and / or configurations.
[0146] 5 illustrates an example method 500 that may be implemented in some embodiments. Method 500 may be implemented by one or more processors and / or other components of an exchange, such as a matching engine, an event engine, an interface, etc.
[0147] As indicated at block 501, method 500 may include receiving a condition indication. The indication may be received from a remote computer. The condition may define one or more events. The condition may be met if an event occurs, as described above.
[0148] As indicated at block 503, method 500 may include receiving an order instruction. The instruction may be received from a remote computer. The remote computer may be the same computer from which the condition instruction originates. The condition instruction and the order instruction may be received together (e.g., in one electronic message, simultaneously, etc.), may be one instruction, may be separate instructions, etc. The order defines one side of a trade for a financial instrument.
[0149] As indicated at block 505, method 500 may include determining that an event has occurred. Such a determination may be made by a processor. For example, such a determination may be made by an event engine of the exchange. In some embodiments, for example, such a 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 a database of events is searched, when an event occurs at the exchange (e.g., when a matching engine utilizes a trade, etc.), etc. In some embodiments, the event occurrence indication may be received and sent by a component of the exchange and / or an external source.
[0150] As indicated at block 507, method 500 may include transmitting an order instruction to a matching engine. Such an instruction may be transmitted over a communication bus. The communication bus may couple a processor (e.g., the event engine) to another processor (e.g., the matching engine). Such transmission of the instruction may occur in response to the determination of block 505.
[0151] As indicated at block 509, method 500 may include adding the order to an order queue. The order queue may be part of a processor (e.g., a matching engine). The matching engine may be configured to identify order matches and execute trades that satisfy the matching orders, as described above.
[0152] It should be appreciated that method 500 is merely an example, and that other methods may include any set of operations, such as, in various embodiments, timestamping, filling the order, clearing the order, adding to an instruction stack, reporting the order, etc.
[0153] 6 illustrates an example method 600 that may be implemented in some embodiments. Method 600 may be performed by one or more processors and / or other components of an exchange, such as an event engine.
[0154] As indicated at 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 off-exchange source. Such an indication may be received from a processor, such as a matching engine, an event controller, etc. Such an indication may be received from any desired source.
[0155] As indicated at block 603, method 600 may include determining that a condition contingent on the order has been met. The order may define a side of a trade for a financial instrument. This determination may be made by a processor at the exchange. This determination may be made by an event engine. This determination may be made by searching stored information, such as a database that stores order and condition information.
[0156] As shown in block 605, method 600 may include transmitting an instruction to add the order to an order queue. The order queue may be maintained by a matching engine of the exchange. The transmitting may be performed over a data bus. The data bus may couple processors of the exchange (e.g., the event engine that executes the method and the matching engine that maintains the queue). The transmitting may be performed in response to the identification of block 603.
[0157] It should be appreciated that method 600 is merely an example, and that other methods may include any set of operations, such as, in various embodiments, timestamping, receiving an order, storing an order, storing conditions, retrieving stored information, fulfilling the order, clearing the order, adding to an instruction stack, reporting the order, reporting an event, etc.
[0158] 7 illustrates an example method 700 that may be implemented in some embodiments. Method 700 may be performed by one or more processors and / or other components of an exchange, such as a matching engine, an event engine, an interface, etc.
[0159] As indicated at block 701, method 700 may include receiving a condition indication. The indication may be received from a remote computer. The condition may define one or more events. The condition may be met if the 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. The remote computer may be the same computer as the source of the condition instruction. The condition instruction and the action instruction may be received together (e.g., in one electronic message, simultaneously, etc.), may be one instruction, may be separate instructions, etc. The action defines an adjustment to the order for the financial instrument. The adjustment may include cancellation, temporary removal from the queue (e.g., until another event occurs), changing the quantity, changing the price, placing a replacement order in the queue, etc. The action may include any other desired action to be taken if the condition is met.
[0161] As indicated at block 705, method 700 may include determining that an event has occurred. Such determination may be made by a processor. For example, such determination may be made by an event engine of the exchange. In some embodiments, for example, 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 a database of events is searched, when an event occurs at the exchange (e.g., when a matching engine executes a trade, etc.), etc. In some embodiments, the indication of the event occurrence may be received from and / or transmitted to a component of the exchange and / or an external source. Some example events may include a change in the value of the second financial instrument, a change in the trading volume of the second financial instrument, an earnings release by a company, the submission of an order on the other side of a trade (e.g., an order that meets certain conditions, such as at a price point with a certain quantity), a change in regulations regulating an industry, and a change in a company's credit rating.
[0162] As indicated in block 707, method 700 may include sending an instruction to adjust the order to the matching engine. Such an instruction may be sent over a communication bus. The communication bus may couple a processor (e.g., an event engine, a rules processor, etc.) to another processor (e.g., the matching engine). Sending such an instruction may be performed in response to the identification of block 705.
[0163] As depicted in block 709, method 700 may include adjusting the order. Adjustments may include canceling, temporarily removing from the queue (e.g., until another event occurs), changing the quantity, changing the price, placing a replacement order in the queue, etc. Adjusting an order may include adjusting a pending order 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 fill matching orders, as described above.
[0164] In some embodiments, adjusting the order may include adjusting the order before the matching engine executes at least one instruction pending in the instruction stack. For example, the instruction to adjust the order may be added to the matching engine's instruction stack (e.g., using an interrupt, direct memory access, etc.) before the at least one instruction. The at least one instruction may include at least one of adding and removing another order from one of a buy order queue and a sell order queue.
[0165] In some embodiments, adjusting an order may include sending information to a memory location of the matching engine. The information may include instructions, orders, adjustments to orders, etc. In some implementations, the memory location may include a memory location associated with an order in a queue. In such implementations, adjusting an order may include changing information about the order stored in the memory location (e.g., using direct memory access).
[0166] In some embodiments, adjusting an order may include removing the order from the matching engine's queue. Removing the order from the queue may stop the execution of a trade for the order. Adjusting an order may include adding a replacement order to the matching engine's queue. The replacement order may include an order with adjusted parameters (e.g., size, price, type, etc.). In one implementation, the original order may be a passive order (e.g., an order waiting to find a match) and the replacement order may be an aggressive order (e.g., an order to take / lift an order). In some implementations, the replacement 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 replacement order. For example, it may send an instruction to the matching engine indicating that the first order should be deleted and that a second order should be added to the queue with the same timestamp as the first order. In some implementations, an order may be deleted without adding a replacement (e.g., immediately, until after another event occurs, always, etc.). For example, in one embodiment, if a new order opposite to the order for a trade is received and the new order is for a quantity above a threshold, the order may be removed from the queue, and if the quantity associated with the opposite order decreases below another threshold amount (e.g., the new order is filled, the new order is canceled, etc.), the order may be returned to the queue.
[0167] In one example, the order may not be pending in the queue at the time associated with the occurrence of the event. For example, the order may not be pending in the matching engine's queue when the event occurs, when the event occurrence process is executed, etc. Adjusting the order may include adding the order to the queue. The order may have previously been pending in the queue (e.g., before being removed because a previous adjustment was contingent on a previous event). Adding the order to the queue may include adding the order to the queue with a priority based on the time associated with the order, if the order was previously pending in the queue. For example, such an action may be contingent on a reduction in quantity associated with the order on the opposite side of the trade for the financial instrument of the order (e.g., after the quantity previously reached above a threshold, triggering the removal of the order from the queue). In some implementations, the time-based priority may be maintained along with the timestamp (e.g., by adding the order to the queue with the order's previous timestamp). Such timestamps may be monitored and maintained by the event engine when the order is removed (e.g., by storing such information in a database associated with the event, order, and / or action). In some embodiments, preserving time-based priority may be facilitated by adding an order to a queue through direct memory access of the queue such that the order is positioned in the queue where it would have been if it had not been deleted. In some embodiments, a processor (e.g., an event engine, a rules processor, etc.) may track where an order would have been in the queue if it had not been canceled, may place a placeholder order in the queue such that the order may later be placed in the placeholder position, etc.
[0168] It should be appreciated that method 700 is merely an example, and that other methods may include any set of operations, such as, in various embodiments, timestamping, filling the order, clearing the order, adding to an instruction stack, reporting the order, etc.
[0169] 8 illustrates an example method 800 that may be implemented in some embodiments. Method 800 may be implemented by one or more processors and / or other components of an exchange, such as an event engine.
[0170] As indicated at 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 off-exchange source. Such an indication may be received from a processor, such as a matching engine, an event controller, etc. Such an indication may be received from any desired source.
[0171] As indicated at block 803, method 800 may include determining that a condition upon which the action is contingent has been met. The action may include an adjustment to an order defining a side of a trade for a financial instrument. The identification may be performed by a processor at the exchange. The identification may be performed by an event engine. The identification may be performed by searching stored information, such as a database storing order, action, and / or condition information.
[0172] As shown in block 805, method 800 may include transmitting the order adjustment instruction to a matching engine. The transmitting may be performed over a data bus. The data bus may couple processors of the exchange (e.g., the event engine that executes the method and the matching engine that maintains the queue). The transmitting may be performed in response to the identification of block 803.
[0173] It should be appreciated that method 800 is merely an example, and that other methods may include any set of operations, which in various embodiments may include time stamping, receiving an order, storing an order, storing conditions, retrieving stored information, fulfilling the order, clearing the order, adding to an instruction stack, reporting the order, reporting an event, etc.
[0174] 9 illustrates an example method 900 that may be implemented in some embodiments. Method 900 may be performed by one or more processors and / or other components of an exchange, such as a matching engine, an event engine, an interface, etc. Method 900 may include a method for placing an order in a queue, later removing it from the queue, and later restoring the queue.
[0175] As shown at 901, method 900 may include receiving an order instruction. As shown at 903, method 900 may include receiving an action instruction and a condition instruction. Each action may include any number of conditions on which the action may be conditional. An action may be unavailable for execution until another action is performed. For example, an action to return an order to a queue may be unavailable until the order is first removed from the queue.
[0176] As shown at 905, method 900 may include placing the order in a queue. As mentioned above, the queue may be maintained by the matching engine.
[0177] As shown at 907, it may be determined that a condition for the first action has been met. The condition 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 order for the trade has reached a specified quantity of the financial instrument.
[0178] As shown at 909, in response to the identification, an action may be taken. For example, the action shown is the removal of the order from the queue. It should be appreciated that in other examples, any other desired action may be taken. The order may be removed by removing the order from a queue maintained by the matching engine, by flagging the order in the matching engine's queue as inactive, by replacing the order with a placeholder order in the matching engine's queue, and / or by performing any other desired action.
[0179] As shown in block 911, it may be determined that the condition for the second action is met. The condition may include, for example, the occurrence of any number of events. The condition may include the first action being taken. In one example, the condition may be the occurrence of a price change (e.g., the price returning to a previous range). In another example, the condition may be the order opposite the order for the trade reaching a specified quantity of financial instruments (e.g., returning to a range close to when the first action was taken, etc.).
[0180] As shown at 913, a second action may be taken in response to the identification. For example, the action shown is adding the order to a queue. It should be appreciated that in other examples, any other desired action may be taken. The order may be added by placing the order in a queue maintained by the matching engine, by flagging the order in the matching engine's queue as active, by replacing a placeholder with the order, and / or by performing any other desired action. The order may be placed with the same time-based priority as it was previously in the queue.
[0181] It should be appreciated that the example processes and systems are provided by way of non-limiting example only, and other embodiments may include different operations, steps, components, elements, configurations, sequences, etc.
[0182] XII. Further Embodiments The following should be construed as example embodiments, not as claims.
[0183] A. A matching engine, receiving order instructions, each order defining one side of a transaction in a financial instrument; Adding each order to one of the financial instrument's buy order queue and one of the financial instrument's sell order queue; determining that at least a first order in the buy order queue and a second order in the sell order queue are matched; and Fulfilling transactions that satisfy the first and second orders a matching engine configured to perform An event engine, receiving an indication of an occurrence of an event; determining that an adjustment to the order is contingent on said occurrence, the order defining one side of a transaction in a financial instrument; and In response to said determining, transmitting an order adjustment instruction to the matching engine over the data bus. an event engine configured to execute a data bus configured to enable communication of order add instructions from the event engine to the matching engine; An apparatus comprising:
[0184] A.1. The apparatus of claim A, wherein the data bus and matching engine are configured such that when the matching engine receives an order add instruction, the matching engine adds the order before executing at least one instruction pending in the instruction stack.
[0185] A.1.1. The apparatus of claim A.1, wherein the at least one instruction includes an order adjustment instruction.
[0186] A.1.1.1. The apparatus of claim A.1.1, in which the order adjustment instructions include at least one of instructions to change the quantity of the order and instructions to change the price of the order.
[0187] A.1.1.2. The apparatus of claim A.1.1, wherein the order adjustment instructions include order deletion instructions.
[0188] A.1.1.2.1. The apparatus of claim A.1.1.2, wherein the order adjustment instructions include instructions to add a replacement order.
[0189] A.1.1.2.1.1. The apparatus of claim A.1.1.2.1, wherein the order comprises a passive order and the alternative order comprises an aggressive order.
[0190] A.1.1.2.1.2. The apparatus of claim A.1.1.2.1, wherein the adjustment instructions include instructions to add a replacement order having the same time-based priority as the order.
[0191] A.1.1.2.2. The apparatus of claim A.1.1.2, wherein the event includes the submission of an order for the opposite side of a trade in a financial instrument having an associated quantity that exceeds a threshold.
[0192] A.1.2. The apparatus of claim A.1, wherein the data bus is configured to transmit information to memory locations of the matching engine, and the matching engine is configured to read data from the memory locations.
[0193] A.1.3. The apparatus of claim A.1, wherein the at least one instruction includes instructions for processing 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 Changes in the value of the second financial instrument; Changes in the trading volume of the second financial instrument; Company financial statements announced, Submitting an order for the opposite side of a trade; changes in regulations governing the industry; and Changes in corporate credit ratings The apparatus of claim A, comprising at least one of:
[0195] A.3. The apparatus of claim A, wherein the event engine is configured to receive occurrence indications from a remote information source.
[0196] A.4. The apparatus of claim A, wherein the event engine is configured to receive an occurrence indication from the matching engine.
[0197] A.5. The apparatus of claim A, wherein at a time associated with the event, the order is not pending in a queue of the matching engine, and the instructions to adjust the order include instructions to add the order to a queue of the matching engine.
[0198] A.5.1. The apparatus of claim A.5, wherein the order addition instructions include instructions to add the order with a priority based on a time associated with the order if the order was previously in a queue.
[0199] A.5.2. The apparatus of claim A.5, wherein the event includes a reduction in quantity associated with an order on the opposite side of a trade for the financial instrument.
[0200] B. A method of conducting a transaction, receiving an indication of a condition from the remote computer, the condition defining an event, and the condition being satisfied if the event occurs; receiving a first action instruction from the remote computer, the action defining an adjustment to the order for the financial instrument; the determination by the exchange's processor that an event has occurred; In response to the determination, transmitting an order adjustment instruction to a matching engine of the exchange over a communication bus coupling the processor and the matching engine, the matching engine being configured to identify matching orders and execute trades that satisfy the matching orders; and Adjusting orders A method comprising:
[0201] B.1. The method of claim B, in which the condition indication and the action indication are received as a single communication.
[0202] B.2. The method of claim B, wherein adjusting the order includes adjusting the order with the matching engine before executing at least one instruction pending in the instruction stack.
[0203] B.2.1. The method of claim B.2, wherein the at least one instruction includes at least one of an instruction to add and an instruction to remove another order from one of a buy order queue and a sell order queue.
[0204] B.3. The method of claim B, wherein adjusting the order includes the processor sending information to a memory location of the matching engine.
[0205] B.3.1. The method of claim B.3, wherein the memory locations include memory locations associated with orders in a queue, and adjusting the orders includes the processor changing information about the orders stored in the memory locations.
[0206] B.4. The event Changes in the value of the second financial instrument; Changes in the trading volume of the second financial instrument; Company financial statements announced, Submitting an order for the opposite side of a trade; changes in regulations governing the industry; and Changes in corporate credit ratings The method of claim B, comprising at least one of:
[0207] B.5. The method of claim B, further comprising receiving an indication of occurrence from a remote source.
[0208] B.6. The method of claim B, further comprising receiving an occurrence indication from the matching engine.
[0209] B.7. The method of claim B, wherein adjusting the order includes at least one of changing the quantity of the order and changing the price of the order.
[0210] B.8. The method of claim B, wherein adjusting the order includes removing the order from a queue of the matching engine.
[0211] B.8.1. The method of claim B.8, in which adjusting the order includes adding a replacement order to a queue of the matching engine.
[0212] B.8.1.1. The method of claim B.8.1, in which the order comprises a passive order and the alternative order comprises an aggressive order.
[0213] B.8.1.2. The method of claim B.1, in which adding a replacement order to the queue includes adding the replacement order with the same time-based priority as the order.
[0214] B.8.2. The method of claim B.8, wherein the event includes the submission of an order opposite to the order for the trade, with an associated quantity exceeding a threshold.
[0215] B.9. The method of 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 instructions include instructions to add the order to the matching engine's queue.
[0216] B.9.1. The method of claim B.9, wherein the order addition instructions include instructions to add the order with a priority based on a time associated with the order if the order was previously in a queue.
[0217] B.9.2. The method of claim B.9, wherein the event includes a reduction in quantity associated with an order on the opposite side of a trade for the financial instrument.
[0218] C. receiving an indication from the remote computer that an event has occurred; determining, by the processor, that a condition upon which an action is conditioned is met, the action including an adjustment to an order defining a side of a trade for the financial instrument; Responsive to said determining, transmitting an order adjustment instruction to the matching engine over a data bus coupling the processor and the matching engine. A method comprising:
[0219] C.1. The method of 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 of claim C, wherein sending the adjustment instruction includes sending an instruction to remove the order from a queue of the matching engine.
[0221] C.2.1. The method of claim C.2, wherein sending an adjustment instruction includes sending an instruction to add a replacement order to a queue of the matching engine.
[0222] C.2.1.1. The method of claim C.2.1, in which the order comprises a passive order and the alternative order comprises an aggressive order.
[0223] C.2.1.2. The method of claim C.2.1, in which the adjustment instruction includes adding a replacement order to the queue with the same time-based priority as the order.
[0224] C.2.2. The method of claim C.2, in which the event includes the submission of an order opposite to the order for the trade, with an associated quantity exceeding a threshold.
[0225] C.3. The method of claim C, wherein sending the adjustment instruction includes sending information to a memory location of the matching engine.
[0226] C.3.1. The method of claim C.3, wherein the memory location includes a memory location where the order is stored in a queue of a matching engine.
[0227] C.3.2. The method of claim C, wherein sending the adjustment instruction includes sending an instruction to an instruction stack of the matching engine.
[0228] C.4. Events Changes in the value of the second financial instrument; Changes in the trading volume of the second financial instrument; Company financial statements announced, Submitting an order for the opposite side of a trade; changes in regulations governing the industry; and Changes in corporate credit ratings The method of claim C, comprising at least one of:
[0229] C.5. The method of claim C including receiving an indication of the event occurrence from a remote source.
[0230] C.6. The method of claim C including receiving an indication of an event occurrence from a matching engine.
[0231] C.7. The method of claim C, wherein at a time associated with the event, the order is not pending in a queue of the matching engine and the adjustment instructions include instructions to add the order to a queue of the matching engine.
[0232] C.7.1. The method of claim C.7, wherein the order addition instructions include instructions to add the order with a priority based on a time associated with the order if the order was previously in a queue.
[0233] C.7.2. The method of claim C.7, in which the event includes a reduction in quantity associated with an order on the opposite side of a trade for the financial instrument.
[0234] (Appendix 1) A matching engine, receiving order instructions each defining one side of a transaction for a financial instrument; adding each order to a respective one of a buy order queue and a sell order queue for said financial instrument; determining that at least a first order in the buy order queue and a second order in the sell order queue are matched; and Executing a transaction that satisfies said first order and said second order. a matching engine configured to perform An event engine, receiving an event occurrence indication; determining that an adjustment to an order is contingent on said occurrence, said order defining one side of a trade for said financial instrument; and In response to said determining, sending instructions to said matching engine over a data bus to adjust said order. an event engine configured to execute the data bus configured to enable communication of instructions to add the order from the event engine to the matching engine; An apparatus comprising: (Appendix 2) 10. The apparatus of claim 1, wherein the data bus and the matching engine are configured, when the matching engine receives an instruction to add the order, to add the order before executing at least one instruction pending in an instruction stack. (Appendix 3) 3. The apparatus of claim 2, wherein the at least one instruction includes instructions to adjust the order. (Appendix 4) 4. The apparatus of claim 3, wherein the order adjustment instructions include at least one of instructions to change the quantity of the order and instructions to change the price of the order. (Appendix 5) 4. The apparatus of claim 3, wherein the order adjustment instructions include instructions to delete the order. (Appendix 6) 6. The apparatus of claim 5, wherein the order adjustment instructions include instructions to add a replacement order. (Appendix 7) 7. The apparatus of claim 6, wherein the order comprises a passive order and the substitute order comprises an aggressive order. (Appendix 8) 7. The apparatus of claim 6, wherein the adjustment instructions include instructions to add the replacement order with the same time-based priority as the order. (Appendix 9) 6. The apparatus of claim 5, wherein the event includes the submission of an opposite-side order for the financial instrument associated with a quantity that exceeds a threshold. (Appendix 10) 3. The apparatus of claim 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. (Appendix 11) 3. The apparatus of claim 2, wherein the at least one instruction includes instructions for processing 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. (Appendix 12) The event is Changes in the value of the second financial instrument; Changes in the trading volume of the second financial instrument; Company financial statements announced, Submitting an order for the opposite side of a trade; changes in regulations governing the industry; and Changes in corporate credit ratings 10. The apparatus of claim 1, comprising at least one of: (Appendix 13) 10. The apparatus of claim 1, wherein at the time associated with the event, the order is not pending in a queue of the matching engine, and the order adjustment instructions include instructions to add the order to the queue of the matching engine. (Appendix 14) 14. The apparatus of claim 13, wherein the instructions to add the order include instructions to add the order with a priority based on a time associated with the order if the order was previously in the queue. (Appendix 15) 14. The apparatus of claim 13, wherein the event includes a reduction in quantity associated with an order on the opposite side of a trade for the financial instrument. (Appendix 16) 1. A method of operating an exchange, comprising: receiving an indication of a condition from a remote computer, the condition defining an event, and when the event occurs, the condition is satisfied; receiving a first action instruction from the remote computer, the action defining an adjustment to an order for a financial instrument; determining, by a processor at said exchange, that said event has occurred; in response to the determination, sending instructions to the matching engine of the exchange over a communication bus coupling the processor and a matching engine to adjust the order, the matching engine being configured to identify an order match and execute a trade to satisfy the matching order; and Adjusting said orders A method comprising: (Appendix 17) 17. The method of claim 16, wherein the condition indication and the action indication are received as a single communication. (Appendix 18) adjusting the order includes adjusting the order with the matching engine before executing at least one instruction pending in an instruction stack. The method described in Appendix 16. (Appendix 19) 19. The method of claim 18, wherein the at least one instruction includes at least one of instructions to add and remove another order from one of a buy order queue and a sell order queue. (Appendix 20) 17. The method of claim 16, wherein adjusting the order includes the processor sending information to a memory location of the matching engine. (Appendix 21) 21. The method of claim 20, wherein the memory locations include the memory locations associated with the orders in a queue, and adjusting the orders includes the processor changing information about the orders stored in the memory locations. (Appendix 22) The event is Changes in the value of the second financial instrument; Changes in the trading volume of the second financial instrument; Company financial statements announced, Submitting an order for the opposite side of a trade; changes in regulations governing the industry; and Changes in corporate credit ratings 17. The method of claim 16, comprising at least one of: (Appendix 23) 17. The method of claim 16, wherein adjusting the order includes at least one of changing the quantity of the order and changing the price of the order. (Appendix 24) 17. The method of claim 16, wherein adjusting the order includes removing the order from a queue of the matching engine. (Appendix 25) 25. The method of claim 24, wherein adjusting the order includes adding a replacement order to the queue of the matching engine. (Appendix 26) 26. The method of claim 25, wherein the order comprises a passive order and the substitute order comprises an aggressive order. (Appendix 27) 26. The method of claim 25, wherein adding the replacement order to the queue includes adding the replacement order with the same time-based priority as the order. (Appendix 28) 25. The method of claim 24, wherein the event includes the submission of an order on the opposite side of the trade to the order associated with a quantity that exceeds a threshold. (Appendix 29) 17. The method of claim 16, wherein the order is not pending in a queue of the matching engine at a time associated with the event, and the order adjustment instructions include instructions to add the order to the queue of the matching engine. (Appendix 30) 30. The method of claim 29, wherein the instructions to add the order include instructions to add the order with a priority based on a time associated with the order if the order was previously in the queue. (Appendix 31) 30. The method of claim 29, wherein the event includes a reduction in quantity associated with an order on the opposite side of a trade for the financial instrument. (Appendix 32) receiving an indication from the remote computer that an event has occurred; the processor determining that a condition upon which an action is contingent is satisfied, the action including an adjustment to an order defining a side of a trade for a financial instrument; In response to said determining, sending instructions to said matching engine to adjust said order over a data bus coupling said processor and said matching engine. A method comprising: (Appendix 33) 33. The method of claim 32, wherein sending the adjustment instruction includes sending an instruction to adjust at least one of a price and a quantity of the order. (Appendix 34) 33. The method of claim 32, wherein sending the adjustment instruction includes sending an instruction to remove the order from a queue of the matching engine. (Appendix 35) 35. The method of claim 34, wherein sending the adjustment instruction includes sending an instruction to add a replacement order to the queue of the matching engine. (Appendix 36) 36. The method of claim 35, wherein the order comprises a passive order and the substitute order comprises an aggressive order. (Appendix 37) 36. The method of claim 35, wherein the adjustment instructions include adding a replacement order to the queue having the same time-based priority as the order. (Appendix 38) 35. The method of claim 34, wherein the event includes the submission of an order on the opposite side of the trade to the order associated with a quantity that exceeds a threshold. (Appendix 39) 33. The method of claim 32, wherein sending the adjustment instruction includes sending information to a memory location of the matching engine. (Appendix 40) 40. The method of claim 39, wherein the memory location includes a memory location where the order is stored in a queue of the matching engine. (Appendix 41) 40. The method of claim 39, wherein sending the adjustment instruction includes sending an instruction to an instruction stack of the matching engine. (Appendix 42) The event is Changes in the value of the second financial instrument; Changes in the trading volume of the second financial instrument; Company financial statements announced, Submitting an order for the opposite side of a trade; changes in regulations governing the industry; and Changes in corporate credit ratings 33. The method of claim 32, comprising at least one of: (Appendix 43) 33. The method of claim 32, wherein the order is not pending in a queue of the matching engine at a time associated with the event, and the instructions to adjust the order include instructions to add the order to the queue of the matching engine. (Appendix 44) 44. The method of claim 43, wherein the instructions to add the order include instructions to add the order with a priority based on a time associated with the order if the order was previously in the queue. (Appendix 45) 44. The method of claim 43, wherein the event comprises a reduction in quantity associated with an order on the opposite side of a trade for the financial instrument.
Claims
1. A trading system comprising: a data bus communicatively connected to the event engine and the matching engine, configured to communicate instructions from the event engine to the matching engine; The matching engine, receiving order instructions each defining one side of a transaction for a financial instrument; adding each order to a respective one of a buy order queue and a sell order queue for said financial instrument; determining that at least a first order in the buy order queue and a second order in the sell order queue are matched; and Executing a transaction that satisfies the first order and the second order. the matching engine configured to perform The event engine, receiving an event occurrence indication; responsive to receiving an indication of the event occurrence, determining that an adjustment to the order is contingent on at least one criterion associated with the occurrence; determining that the at least one criterion associated with the occurrence upon which the order is contingent has been satisfied; and the event engine, in response to the determination, sending to the matching engine over a data bus an instruction to adjust the order, the instruction acting as an interrupt to the matching engine's processing to cause the matching engine to adjust the order; A trading system comprising:
2. the matching engine comprises a machine instruction stack; the data bus and the matching engine are configured such that, when an instruction to adjust the order is received by the matching engine, the matching engine places the instruction in the machine instruction stack before at least one instruction pending on the machine instruction stack. The trading system of claim 1.
3. 3. The trading system of claim 2, wherein the at least one instruction includes a second instruction to adjust the order.
4. 3. The trading system of claim 2, wherein the instructions to adjust the order include at least one of instructions to change the quantity of the order and instructions to change the price of the order.
5. The trading system of claim 2 , wherein the instructions to adjust the order include instructions to delete the order.
6. 6. The trading system of claim 5, wherein the instructions to adjust the order include instructions to add a replacement order.
7. 7. The trading system of claim 6, wherein the instructions to adjust the order include instructions to add the replacement order with the same time-based priority as the order.
8. 6. The trading system of claim 5, wherein the event comprises the submission of an order on the opposite side of a trade for the financial instrument having an associated quantity that exceeds a threshold.
9. 3. The trading system of claim 2, wherein the data bus is configured to transmit information to memory locations of the machine instruction stack of the matching engine, and the matching engine is configured to read data from the memory locations.
10. the at least one instruction includes instructions for processing an instruction to add another order to at least one of the sell order queue and the buy order queue that was received by the matching engine before the instruction was received by the matching engine, the instruction to add the other order being an instruction that was not received by the matching engine from the data bus, and the order being added before the instruction is executed based on the order not being received from the data bus. The trading system according to claim 2.
11. The event is Change in the value of the second financial instrument; Changes in the trading volume of the second financial instrument; Company financial statements announced, Submitting an order for the opposite side of a trade; changes in regulations governing the industry; and Changes in corporate credit ratings 2. The trading system of claim 1, comprising at least one of:
12. 2. The trading system of claim 1, wherein at the time associated with the event, the order is not pending in a queue of the matching engine, and the instructions to adjust the order include instructions to add the order to the queue of the matching engine.
13. 13. The trading system of claim 12, wherein the instructions to add the order include instructions to add the order with a priority based on a time associated with the order if the order was previously in the queue.
14. 13. The trading system of claim 12, wherein the event comprises a reduction in quantity associated with an order on the opposite side of a trade for the financial instrument.
15. 1. A method of operating an exchange, comprising: receiving, by an event engine, an indication of a condition from a remote computer, the condition defining an event, and the condition being satisfied if the event occurs; receiving an indication of a first action from the remote computer, the action defining an adjustment to an order for a financial instrument; determining, by the event engine, that the event has occurred; sending, by the event engine, in response to the determination, an instruction to adjust the order to the matching engine of the exchange over a communication bus coupling the event engine and a matching engine, the matching engine being configured to identify matching orders and execute a trade to satisfy the matching orders, the instruction to adjust the order acting as an interrupt to the matching engine's processing to cause the matching engine to adjust the order; and Adjusting said orders A method comprising:
16. The method of claim 15 , wherein the indication of the condition and the indication of the action are received as a single communication.
17. adjusting the order includes adjusting the order by the matching engine prior to executing at least one instruction pending in an instruction stack based on the at least one pending instruction not being received from the data bus.
16. The method of claim 15.
18. 18. The method of claim 17, wherein the at least one instruction includes at least one of instructions to add and remove another order from one of a buy order queue and a sell order queue.
19. 16. The method of claim 15, wherein adjusting the order comprises sending information by the event engine to a memory location of the instruction stack of the matching engine.
20. 20. The method of claim 19, wherein the memory locations of the instruction stack include the memory locations associated with the orders in a queue, and adjusting the orders includes modifying, by the matching engine, information about the orders stored in the memory locations of the machine instruction stack.
21. 16. The method of claim 15, wherein adjusting the order comprises at least one of changing the quantity of the order and changing the price of the order.
22. 16. The method of claim 15, wherein adjusting the order comprises removing the order from a queue of the matching engine.
23. 23. The method of claim 22, wherein adjusting the order comprises adding a replacement order to the queue of the matching engine.
24. 24. The method of claim 23, wherein adding the replacement order to the queue comprises adding the replacement order with the same time-based priority as the order.
25. 23. The method of claim 22, wherein the event comprises the submission of an order on the opposite side of a trade to the order associated with a quantity that exceeds a threshold.
26. 16. The method of claim 15, wherein the order is not pending in a queue of the matching engine at the time associated with the event, and the instructions to adjust the order include instructions to add the order to the queue of the matching engine.
27. 27. The method of claim 26, wherein the instructions to add the order include instructions to add the order with a priority based on a time associated with the order if the order was previously in the queue.
28. 27. The method of claim 26, wherein the event comprises a reduction in quantity associated with an order on the opposite side of a trade for the financial instrument.
29. an event engine of the exchange receiving an indication from the remote computer that an event has occurred; the event engine determining that a condition upon which an action is conditioned is met, the action including an adjustment to an order defining a side of a trade for a financial instrument; the event engine, in response to the determination, sending an instruction to the exchange's matching engine to adjust the order over a data bus of the exchange coupling the processor and the matching engine, the instruction to adjust the order acting as an interrupt to the matching engine's processing to cause the matching engine to adjust the order. method.
30. 30. The method of claim 29, wherein transmitting an indication to adjust comprises transmitting an indication to adjust at least one of a price and a quantity of the order.
31. 30. The method of claim 29, wherein transmitting an indication of the adjustment comprises transmitting an indication to remove the order from a queue of the matching engine.
32. 32. The method of claim 31, wherein transmitting an indication of the adjustment comprises transmitting an indication to add a replacement order to the queue of the matching engine.
33. 33. The method of claim 32, wherein the adjustment instructions include adding a replacement order to the queue that has the same time-based priority as the order.
34. 32. The method of claim 31, wherein the event comprises the submission of an order on the opposite side of a trade to the order associated with a quantity that exceeds a threshold.
35. 30. The method of claim 29, wherein sending the indication of the adjustment comprises sending information to a memory location of the machine instruction stack of the matching engine.
36. 36. The method of claim 35, wherein the memory locations of the machine instruction stack include memory locations where the orders are stored in queues of the matching engine.
37. 36. The method of claim 35, wherein sending the indication of the adjustment comprises sending an instruction to the machine instruction stack of the matching engine.
38. 30. The method of claim 29, wherein the order is not pending in a queue of the matching engine at the time associated with the event, and the instructions to adjust the order include instructions to add the order to the queue of the matching engine.
39. 39. The method of claim 38, wherein the instructions to add the order include instructions to add the order with a priority based on a time associated with the order if the order was previously in the queue.
40. 40. The method of claim 39, wherein the event comprises a reduction in quantity associated with an order on the opposite side of a trade for the financial instrument.
41. the event engine is configured to record an instruction in a memory location where the order is stored, the instruction in the memory location being an instruction sent from the matching engine; The trading system of claim 1.
42. the at least one instruction to add another order to the at least one sell queue and buy queue includes a price that is better than the price of the order; The trading system of claim 10.
43. A trading system comprising: a data bus that communicatively connects the event engine and the matching engine, the data bus being configured to allow commands to be sent from the event engine to the matching engine; a matching engine having a machine instruction stack, the data bus and the matching engine configured to, when an instruction to adjust an order is received by the matching engine, add the instruction in front of at least one instruction pending in the machine instruction stack; The matching engine receiving order instructions each defining one side of a transaction for a financial instrument; adding each order to a respective one of a buy order queue and a sell order queue for said financial instrument; determining that at least a first order in the buy order queue and a second order in the sell order queue are matched; and Executing a transaction that satisfies the first order and the second order. the matching engine configured to perform An event engine, Receives an instruction to generate an event, The event is Change in the value of the second financial instrument; Changes in the trading volume of the second financial instrument; Company financial statements announced, Submitting an order for the opposite side of a trade; changes in regulations governing the industry; and Changes in corporate credit ratings and the order is not pending in a queue of the matching engine at the time of the occurrence of the event, and the instructions to adjust the order include instructions to add the order to the queue of the matching engine; In response to receiving an instruction that the event has occurred, determining whether the adjustment to the order complies with at least one criterion related to the occurrence of the event; determining whether at least one criterion related to the occurrence of the event on which the order was conditioned is satisfied; in response to the determination, sending an instruction to the matching engine via the data bus to adjust the order, the instruction to adjust the order acting as an interrupt to the matching engine's processing to cause the matching engine to adjust the order; A trading system with
Citation Information
Patent Citations
Information display device and its data processing method
JP1995244690A
Device, system and method for automatically giving selling or buying order
JP2001155086A
System and method for supporting transaction verification and storage medium stored with program for making computer perform processing in the system
JP2001167155A
Interrupt simulation method and device
JP2002073374A
Automated trading ordering methods and systems for stocks, bonds, properties, futures, options, indices, foreign exchange, etc.
JP2002543481A