System and method for managing and processing sequenced events in a distributed network

HK40137662APending Publication Date: 2026-09-18CFPH LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
HK42026125992
Authority / Receiving Office
HK · HK
Patent Type
Applications
Current Assignee / Owner
Priority Date
2020-01-31
Filing Date
2026-07-10
Publication Date
2026-09-18
Estimated Expiration
2041-01-28

Smart Images

  • Figure 00000026_0000
    Figure 00000026_0000
  • Figure 00000027_0000
    Figure 00000027_0000
  • Figure 00000028_0000
    Figure 00000028_0000
Patent Text Reader

Abstract

System and method for electronic order management processing may include a sequencer that updates a parent order status maintained at the sequencer based on an order instruction, and generates and multicasts to interface processors of a host server a sequence of events generated based on order instructions and a current order state of the parent order. An event may indicate an order instruction of or related to the parent order, confirmation of completion of a client order or an exchange order of a trade of a portion of the parent order, or an order instruction related to the parent order determined to be in conflict with the current order state. Events may be stored on a queue at a host server according to global sequence numbers assigned at the sequencer, and the interface processors may determine a next action for order processing based on the events on the queue.
Need to check novelty before this filing date? Find Prior Art

Description

(19) *EP004764999A2* (11) EP 4 764 999 A2 (12) EUROPEAN PATENT APPLICATION (43) Date of publication: 24.06.2026 Bulletin 2026 / 26 (21) Application number: 25158908.1 (22) Date of filing: 29.01.2021 (51) International Patent Classification (IPC): G06Q 30 / 06 (2023.01) (52) Cooperative Patent Classification (CPC): G06Q 40 / 04; G06Q 40 / 06 (84) Designated Contracting States: AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR (30) Priority: 31.01.2020 US 202062968415 P (62) Document number(s) of the earlier application(s) in accordance with Art. 76 EPC: 21747290.1 / 4 073 724 (27) Previously filed application: 29.01.2021 US PCT / US2021 / 015761 (71) Applicant: CFPH, LLC New York, NY 10022 (US) (72) Inventor: Solodovnik, Aleksey Brooklyn, NY, 11235 (US) (74) Representative: Mzb PartmbB Schloßberg 10 71032 Böblingen (DE) Remarks: •Claims 16 to 20 are deemed to be abandoned due to non-payment of the claims fee (Rule 45(3) EPC). •This application was filed on 19‑02‑2025 as a divisional application to the application mentioned under INID code 62. (54) SYSTEM AND METHOD FOR MANAGING AND PROCESSING SEQUENCED EVENTS IN A DISTRIBUTED NETWORK (57) System and method for electronic order man- agement processing may include a sequencer that up- dates a parent order status maintained at the sequencer based on an order instruction, and generates and multi- casts to interface processors of a host server a sequence of events generated based on order instructions and a current order state of the parent order. An event may indicate an order instruction of or related to the parent order, confirmation of completion of a client order or an exchange order of a trade of a portion of the parent order, or an order instruction related to the parent order deter- mined to be in conflict with the current order state. Events may be stored on a queue at a host server according to global sequence numbers assigned at the sequencer, and the interfaceprocessorsmaydetermineanext action for order processing based on the events on the queue. EP 4 76 4 99 9 A 2 Processed by Luminess, 75001 PARIS (FR) Description RELATED APPLICATIONS

[0001] This application claims the benefit of U.S. Provisional Application Serial No. 62 / 968,415 filed January 31, 2020, the entirety of the contents of which is hereby incorporated herein by reference. TECHNICAL FIELD

[0002] Thepresent disclosure generally relates tomanaging and processing sequenced events in a distributed network of servers. BACKGROUND

[0003] Algorithmic trading relies heavily on the speed at which orders are sent to electronic market venues. As such, financial institutions invest heavily in computing and processing power. Today’s networking speeds allow thousands of trades to execute in seconds, and financial institutions to capitalize on trading strategies based on microsecond differentials.

[0004] The execution of an order typically involves communication of electronic messages among multiple entities including, for example, brokers, financial institutions, market exchanges and electronic trading systems. The transmis- sion, reception and processing of the messages occupy bandwidth of a network, consume memory and result in processing latencies. Processing latencies may include latency incurred within a system after the message to be processed has been received and before processing has been completed. In addition, electronic trading systems may be subject to failures, which typically require implementing a failover procedure among multiple servers of a distributed network that forms the electronic trading system.

[0005] Accordingly, there exists a need formethod, apparatus and system that uses an improved computer architecture to minimize bandwidth usage, memory consumption and processing latencies, and to increase reliability, efficiency and speed of processing, in managing and processing an order for a financial instrument on an electronic trading system, and toprovidea failover procedure thatminimizesdowntimeandavoidsdata loss in theeventof failureofanetwork component of the electronic trading system. SUMMARY

[0006] In accordance with an aspect of the present disclosure, a method may include controlling, by at least one processor of a first sequencer, receiving, on a command multicast address, a command indicating an order instruction related to a parent order from one of first, second and third interface processors of a first host server, in which the first host server includes at least one second processor as the first, second and third interface processors and a first queue manager; performing ordermanagement processing, to determine an order state of the parent order and update the order state of the parent order to a current order state of the parent order, based on the order instruction, by applying the order instruction to a statemachine at the first sequencer indicating an order history for the parent order; generating at least one event based on the order instruction and the current order state of the parent order, in which each of the at least one event includes (i) a header indicating a global sequence number corresponding to a time when the command is received at the first sequencer, a topic identifier indicatingapublisherof the commandanda topic sequencenumber for the topic identifier, and (ii) a payload indicating at least a portion of the order instruction; multicasting, on an event multicast address, the at least one event to the first queue manager, a second queue manager of a second host server and a second sequencer; wherein the first queue manager is configured to control: receiving the at least one event from the first sequencer; and adding the at least one event to a first queue of amemory of the first host server; wherein each of the first, second and third interface processors is configured to control: acquiring the at least one event from the first queue, and automatically in response to acquiring the at least one event from the first queue, determining from the at least one event a next action, in which the next action is at least one of (i) transmitting, on the command multicast address, another command indicating another order instruction related to the parent order to the first sequencer, (ii) transmitting, over a communication network, amessage toexecutea trade related to theparent order toa remoteexchangecomputingdevice, (iii) transmitting, over the communication network, a trade confirmation to a client computing device, or (iv) updating a memory of a given interface processor such that information related to the parent order stored in the memory of the given interface processor reflects the current order state of the parent order at the state machine of the first sequencer; (A) automatically when a first given order instruction indicated by a first given command, received on the commandmulticast address, is to place anorder for a first portion of a given first parent order of a given client, performing ordermanagement processing with the statemachine to updateanorder state of thegivenfirst parent order toa current order state of thegiven first parent order basedon the first 2 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 given command; (B) automatically when a second given order instruction indicated by a single second given command, receivedon thecommandmulticast address, indicatesa tradeofa secondportionof thegivenfirst parent orderof thegiven client has been completed, performing order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order, based on the single second given command, generating a first event as a client order trade confirm that indicates completion of a trade of the second portion of the given first parent order on the remote exchange computing device and a second event as an exchange order trade confirm that indicates completion of the trade of the second portion of the given first parent order on the remote exchange computing device, andmulticasting, on the eventmulticast address, the first event and the second event to the first queue manager and the second queue manager; and (C) automatically when a given third order instruction indicated by a third command, received on the command multicast address, indicates a request to change an order state of the given first parent order, performing the order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order based on the third command, and determine whether the given third order instruction is in conflict with the current order state of the given first parent order, in response to determining that the request to change the order state is in conflict with the current order state of the given first parent order, generating a third event as a client order indicating rejection of the request to change the order state of the given first parent order, such that the third event will be ignored by each of the first, second and third interface processors, and multicasting, on the event multicast address, the third event to the first queue manager and the second queue manager; wherein the first queue manager is configured to control: receiving the first, second and third events from the first sequencer; and adding the first, second and third events to the first queue; wherein the first interface processor is configured to control: acquiring the second event from the first queue and transmitting a command response, over the communication network, to the client computing device confirming execution of the second portion of the given first parent order; and wherein the third interface processor is configured to control: acquiring the first event from the first queue and transmitting a command over the communication network to the remote exchange computing device to execute a trade of the second portion of the given first parent order.

[0007] In accordancewith an aspect of the present disclosure, a systemmay include a first host server including at least one first processor as a first interfaceprocessor, a second interfaceprocessor, a third interface processor and afirst queue manager; and a first sequencer including at least one second processor configured to control: receiving, on a command multicast address, a command indicating an order instruction related to a parent order from one of the first, second and third interface processors; performing ordermanagement processing, to determine an order state of the parent order and update the order state of the parent order to a current order state of the parent order, based on the order instruction, by applying the order instruction to a state machine of the first sequencer indicating an order history for the parent order; generatingat least oneevent basedon theorder instructionand the current order state of the parent order, inwhich eachof the at least one event includes (i) a header indicating a global sequence number corresponding to a time when the command is received at the first sequencer, a topic identifier indicating a publisher of the command and a topic sequence number for the topic identifier, and (ii) a payload indicating at least a portion of the order instruction; multicasting, on an event multicast address, the at least one event to the first queue manager, a second queue manager of a second host server and a second sequencer; wherein the first queuemanager is configured to control: receiving the at least one event from thefirst sequencer; andadding theat least oneevent to afirst queueof amemoryof the first host server;wherein each of the first, second and third interface processors is configured to control: acquiring the at least one event from the first queue, and automatically in response to acquiring the at least one event from the first queue, determining from the at least one event a next action, in which the next action is at least one of (i) transmitting, on the command multicast address, another command indicating another order instruction related to the parent order to the first sequencer, (ii) transmitting, over a communication network, amessage to execute a trade related to the parent order to a remote exchange computing device, (iii) transmitting, over the communication network, a trade confirmation to a client computing device, or (iv) updating amemory of a given interface processor such that information related to the parent order stored in thememory of the given interface processor reflects the current order state of the parent order at the statemachine of the first sequencer; wherein the first sequencer is configured to control: (A) automaticallywhena first givenorder instruction indicated by a first given command, received on the command multicast address, is to place an order for a first portion of a given first parent order of a given client, performing order management processing with the state machine to update an order state of the given first parent order to a current order state of the given first parent order based on the first given command; (B) automatically when a second given order instruction indicated by a single second given command, received on the commandmulticast address, indicatesa tradeof a secondportionof thegivenfirst parent order of thegiven client hasbeen completed, performing order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order, based on the single second given command, generating a first event as a client order trade confirm that indicates completion of a tradeof the secondportion of the given first parent order on the remote exchange computing device and a second event as an exchange order trade confirm that indicates completion of the trade of the second portion of the given first parent order on the remote exchange computing device, and multicasting, on the event multicast address, the first event and the second event to the first queue manager 3 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 and the second queuemanager; and (C) automatically when a given third order instruction indicated by a third command, received on the command multicast address, indicates a request to change an order state of the given first parent order, performing the order management processing with the state machine to update the order state of the given first parent order to thecurrent order stateof thegivenfirst parent order basedon the third command,anddeterminewhether thegiven third order instruction is in conflict with the current order state of the given first parent order, in response to determining that the request to change the order state is in conflict with the current order state of the given first parent order, generating a third event as a client order indicating rejection of the request to change the order state of the given first parent order, such that the third eventwill be ignoredbyeachof the first, secondand third interfaceprocessors, andmulticasting, on theevent multicast address, the third event to the first queue manager and the second queue manager; wherein the first queue manager is configured to control: receiving the first, second and third events from the first sequencer; and adding the first, second and third events to the first queue; wherein the first interface processor is configured to control: acquiring the second event from the first queue and transmitting a command response, over the communication network, to the client computing device confirming execution of the secondportion of the given first parent order; andwherein the third interface processor is configured to control: acquiring the first event from the first queue and transmitting a command over the communicationnetwork to the remoteexchangecomputingdevice toexecutea tradeof thesecondportionof thegivenfirst parent order. BRIEF DESCRIPTION OF THE DRAWINGS

[0008] FIG. 1 is a block diagram of an exemplary electronic trading system according to the present disclosure; FIG. 2 is a block diagram of an exemplary electronic trading system according to the present disclosure; FIG. 3 is a block diagram of an exemplary sequencer according to the present disclosure; and FIG. 4 illustrates an exemplary high level flow diagram of a method for electronic order processing according to the present disclosure. DETAILED DESCRIPTION

[0009] The technology of the present disclosure relates to, by way of example, a computer and networking architecture that may control electronic order processing in an electronic trading system implemented as a distributed network, which provides for high-throughput of messages associated with processing an order for a financial instrument, and minimizes downtime in the event of failure of a component of the system. In some embodiments, the technology of the present disclosure may provide for reliable and high-throughput delivery of messages associated with processing an order for a financial instrument, which minimizes bandwidth usage, processor usage, memory usage and processing latencies, by performing ordermanagement processing onmessages related to an order for a financial instrument, such as to place an order, to complete a tradeonat least a portionof anexistingorder, or to changeastate of anexistingorder, using astatus of a current order state of the existing order, where the status of the current order state of the existing order ismaintained and updated in real time or substantially real time, based on all messages that relate to the existing order transmitted in the electronic trading system. While embodiments of the computer and networking architecture may be applied to various types of computer systems, the present disclosure is described in the context of an electronic trading system implemented by one or more computing devices communicating over a communication network. As systems may be programmed according to many different configurations, the particular configuration of an exemplary system described herein is not limited to the present disclosure.

[0010] The present disclosuremay be implemented using a combination of computer hardware and computer software to form a specialized machine capable of performing operations. Embodiments of the present disclosure may be performed utilizing a combination of central processing units (CPUs), physical memory, physical storage, electronic communication ports, electronic communication lines and other computer hardware. The computer softwaremay include at least a computer operating system and specialized computer processes described herein.

[0011] In the present disclosure, certain specific details are set forth in order to provide a thorough understanding of variousdisclosedembodiments.However, oneskilled in the relevant artwill recognize that embodimentsmaybepracticed without one or more of these specific details, or with other methods, components, etc. In other instances, well-known structures associatedwith an electronic trading systemhave not been shown or described in detail to avoid unnecessarily obscuring descriptions of the embodiments.

[0012] The aspects, features and advantages of the present disclosure will be appreciated when considered with reference to the following description of examples and accompanying figures. In describing the exemplary embodiments of the disclosure illustrated in thedrawings, specific terminologywill be used for the sakeof clarity.However, thedisclosure is not intended to be limited to the specific terms used. 4 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 Example Systems

[0013] FIG. 1 illustrates a block diagram of an exemplary electronic trading system 10 in accordance with the present disclosure.Thesystem10may includeelectronic tradinghost servers12,14and16.Eachof thehost servers12,14and16 may include the same or similar components and provide the same or similar functions as described in detail below. The host servers may be communicatively coupled to one another by a communication network 18. The host servers may facilitatemanaging and processing an order for a financial instrument, which includes receiving an instruction or an itemof information that relates to any aspect of completing (filling) an order ("order instruction"), processing and analyzing an order instruction, and facilitating placing and executing a trade indicated by an order instruction, as described in detail below. In some embodiments, the system 10 may include at least two sequencers, each of which may be part of or associatedwith a respective host server, where at any timewhen the system is in an operating state, one sequencer of the systemmay operate as a primary sequencer and another sequencermay operate as a backup sequencer, and where, by performance of a failover procedure by a processor of the system 10, the backup sequencer may become a new primary sequencer for the system 10 in case of failure of the original primary sequencer. In some embodiments, advantageously according to the present disclosure, the primary sequencermay serve as a centralized ordermanagement processor that performs order management processing functions that decrease the number of messages generated, transmitted, received and processed by components of the system 10 in connection with processing, managing and completing an order for a financial instrument, which provides the technical advantages of minimizing usage of network bandwidth, processing resources andmemory resources usage, as described in detail below. For ease of reference, the components of the host server 12 are described below to highlight the aspects of the present disclosure.

[0014] Referring to FIG. 1, and in particular to host server 12 as an exemplary embodiment of the host servers of the system 10, the server 12 may be in the form of a computing device that includes one or more processors 2, one or more memory 4, and other components commonly found in computing devices.

[0015] The memory 4 may store information accessible by the one or more processors 2, including instructions 6 that may be executed by the one or more processors 2. Memory 4may also include data 8 that can be stored, manipulated, or retrieved by the processor. The data 8 may also be used for executing the instructions 6 and / or for performing other functions. Thememory4maybeany typeof non-transitorymedia readableby theoneormoreprocessors, suchasahard- drive, solid state hard-drive, memory card, ROM, RAM, DVD, CD-ROM, write-capable, read-only memories, etc.

[0016] The instructions 6 may be any set of instructions capable of being read and executed by the one or more processors 2. The instructions may be stored in a location separate from the computing device, such as in a network attached storage drive, or locally at the computing device. The terms "instructions," "functions," "application," "steps," and "programs" may be used interchangeably herein.

[0017] Data 8 may be stored, retrieved and / or modified by the one or more processors 2 in accordance with the instructions 6. Such data may be stored in one or more formats or structures, such as in a relational or non-relational database, in aSQLdatabase, as a table havingmany different fields and records, XLS, TXT, or XMLdocuments. The data may also be formatted in any computing device-readable format. In some embodiments the data may be encrypted.

[0018] In addition, the server 12 may include a communication device 9 configured to provide wired or wireless communication capabilities.

[0019] Theoneormoreprocessors2maybeany typeofprocessor, ormore thanone typeofprocessor.Forexample, the one or more processors 2 may be CPUs from Intel, AMD, and Apple, or application specific integrated circuits (ASIC) or system on chips (SoCs).

[0020] Server 12may includeall thecomponentsnormally used in connectionwithacomputer. Forexample, itmayhave a keyboard and mouse and / or various other types of input devices such as pen-inputs, joysticks, buttons, touch screens, etc., as well as a display, which could include, for instance, a CRT, LCD, plasma screen monitor, TV, projector, etc.

[0021] FIG. 1 illustrates the components of the server 12 as being single components, however, the components may actually comprise multiple processors, computers, computing devices, or memories that may or may not be stored within the same physical housing. For example, the memory may be a hard drive or other storage media located in housings different from that of the server 12.Accordingly, references to a processor, computer, computing device, ormemory herein will be understood to include references to a collection of processors, computers, computing devices, or memories that may or may not operate in parallel. Further, although some functions described below are indicated as taking place on a single computing device having a single processor, various aspects of the subject matter described herein may be implemented by a plurality of computing devices in series or in parallel. For example, in one embodiment, functions performedby the server 12asdescribedbelowmayat least bepartially performedat another server suchas theservers14 or 16. In one embodiment, functions described herein as performed by one or more of the servers may be distributed among one or more computing devices (servers) that operate as a cloud system.

[0022] Server 12may also be interconnected to other computers via the network 18, whichmay be a local area network ("LAN"), wide area network ("WAN"), the Internet, etc. Network 18 and intervening nodes may also use various protocols including virtual private networks, local Ethernet networks, private networks using communication protocols proprietary to 5 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 oneormore companies, cellular andwireless networks,HTTP, and various combinations of the foregoing. Althoughonly a fewservers (computers) aredepictedherein it shouldbeappreciated that anetworkmay includeadditional interconnected computers. It should further be appreciated that server 12 may be an individual node in a network containing a larger number of computers.

[0023] The instructions residing in a non-transitorymemorymay comprise any set of instructions to be executed directly (such as machine code) or indirectly (such as scripts) by processor 2. In this regard, the terms "instructions," "scripts," or "modules" may be used interchangeably herein. The computer executable instructions may be stored in any computer language or format, such as in object code or modules of source code. Furthermore, it is understood that the instructions may be implemented in the form of hardware, software, or a combination of hardware and software and that the examples herein are merely illustrative.

[0024] Referring to FIG. 2, in some embodiments, each host server of the system 10 may be configured to implement specific functions and operations in accordance with embodiments of the present disclosure, and in some embodiments may be programmed with programs to perform some or all of the functions and operations described herein.

[0025] Referring to FIG. 2, the host server 12 may include a queue manager or journaler 24, a replayer 28, interface processors 30, 32, 34 and 35, and a buffer as an event journal or queue 36. Each of the journaler 24, replayer 28, and the interface processors 30, 32, 34 and 35 may include a processor and memory including instructions that implement functions of the respective component, as described below.

[0026] In some embodiments, the host server 12may include a sequencer 26 that is associatedwith the host server 12. In some embodiments, the sequencer 26may at least partially be of the host server 12, or be a component separate from and external to the host server. At any time during operation of the system10, a single one of the sequencers in the system 10mayserveasaprimarysequencer operating in correspondencewithadesignated, associatedhost server, andanother different sequencer or sequencers in the system10mayserve as abackup sequencer operating in correspondencewith a designated, associatedhost server.Theanotherdifferent sequencermaybecomeanewprimarysequencer in theevent of failure of the existing primary sequencer, and be associatedwith a samehost server as the previous primary sequencer or a different host server. In someembodiments, any one of the sequencers in the system10may be a redundant sequencer to another different one of the sequencers.

[0027] Each of the interface processors 30, 32, 34 and 35 may have communication capabilities and include a communications network interface. Referring to FIG. 2, each of the interface processors 30, 32, 34 and 35, as publishers, may control generating a command indicating an order instruction, and transmitting the command as an electronic message to the primary sequencer 26, by transmitting (publishing) the command as a downstream command packet on a dedicated command multicast address of the communication network 51. In this manner, an interface processor may contributeanewcommand fromwhichat least oneevent is generatedat thesequencer and included inasequencedevent stream. As described in detail below, an event may be a unique ordered command which relates to an order for a specific financial instrument, may be identified with a unique global sequence number as well as other identifying information, and may be generated by and transmitted from the sequencer 26.

[0028] Eachof the interfaceprocessorsmaybeauniquely identifiednodeof the system10whose identity is indicatedby a topic identifier in a downstreamcommandpacket it sends. In someembodiments, each of the interfaceprocessors in the system 10 may be of a respective pair of interface processors, where one of the pair is a primary interface processor and the other of the pair is a backup interface processor. In the system 10, the primary interface processor and the backup interface processor of the pair may have the same topic identifier. In addition, each of the interface processors may (i) act as a subscriber capable to read and acquire events stored in the queue 36 and process information indicated in a payload of eachevent, and (ii) control determining andperforminganext action basedon processing of the information indicated in the payload together with other information related to trading of financial instruments, such as stored in a memory of the interface processor or obtained from a remote computing device over the communication network 51. In some embodi- ments, each of the interface processors may control receiving a stream of events directly via an event multicast from a primary sequencer. In some embodiments, each of the interface processorsmay acquire an event from the event journal, and perform processing that generates a command related to an order for a financial instrument, and transmit the command to the primary sequencer over the communication network 51.

[0029] In some embodiments, an interface processor that is operating as a primary interface processor of a pair of interface processorsmay perform instructions to control populating newcommands in an internal buffermemory; keeping track of a topic sequence number, which corresponds to a command in a sequence of commands published by the interface processor, last used at the interface processor; adding a newly created command to a User Datagram Protocol (UDP) packet;when theUDPpacket is full, transmitting thepacket before attempting to addanewcommand to thepacket; flushing theUDPpacket in case it is not completely filled; receiving events from theevent stream; and confirming that each command published by the interface processor matches a received event, where the received event constitutes an acknowledgement by the sequencer that a corresponding command from the interface processor has been received and processed by the sequencer. In some embodiments, an interface processor may perform instructions to control, when a published command remains unacknowledged for an extended period of time, retrying sending the command to the 6 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 sequencer to provide that an event corresponding to the command is generated and received at the host servers of the system.

[0030] In addition, in some embodiments, an interface processor as a backup interface processor of a pair of interface processors may perform instructions of a Backup Operation to control creating and buffering a new command which is basedonaneworder instruction, keeping trackof a last topic sequencenumber usedby theprimary interfaceprocessor of the pair by accessing theevent journal of the host server, receiving events from theevent stream, andacknowledging in its internal memory that an event has been generated for each command transmitted from the primary interface processor.

[0031] In addition, in some embodiments, an interface processor as a backup interface processor of a pair of interface processors may perform instructions of a Backup-to-Primary Failover Operation to control transmitting all buffered commands and, after transmitting all buffered commands, switching from operating as a backup interface processor of a pair of interface processors to the primary interface processor of the pair and operate as a primary interface processor.

[0032] In some embodiments, the interface processor 30 may serve as a client gateway and control receiving, from a computing device 50 of a client external to the system 10 over a communication network 51, an electronic message including an order instruction; and transmitting, over the communication network 51 to the computing device 50, order completion confirmation information. The order instruction from the client may be an order for a financial instrument, for example, buy or sell a financial instrument, or a request to change an order state of an existing order ("parent order") for a financial instrument, such as a request to cancel the parent order or reduce or increase the quantity of a financial instrument to be bought or sold relative to the quantity indicated in the parent order. In addition, the client gateway 30may control validating a client or computing device of a client fromwhichanelectronicmessage including anorder instruction is received. Further, the client gateway 30may acquire an event stored in the event journal 36 by reading the event from the journal, and perform a further action based on a result of processing the contents of the event, such as, for example, transmitting a trade confirmation to the client’s computing device 50 when the event indicates a trade of a financial instrument requested by the client as part of a parent order is completed.

[0033] The network 51 may be part of the communication network 18, or a communication network external to the network 18. In someembodiments, the computing device 50 of the clientmay be a remote trading terminal of an electronic trading system communicatively coupled with the host server 12 via the network 51.

[0034] It is to be understood that a plurality of clients via respective computing devices and client gateways may communicate with host servers of the system 10 to provide respective order instructions for financial instruments, and receive respective responsemessages from the client gateways that confirmwhether trades are executed in accordance with the order instructions, and that the operations described belowwith respect to the client gateway 30may be similarly performed by other client gateways of any of the host servers of the system 10.

[0035] In some embodiments, the interface processor 32 may serve as an algorithmic trading control component that controls analyzing order instructions indicated by respective events stored on the event journal 36, and generating an order instruction to fill an order, e.g., buy or sell a financial instrument, which may be transmitted as a command to the sequencer, based on parameters of a trading algorithm and an order instruction, such as a parent order, indicated by an event.

[0036] In some embodiments, the interface processor 34may serve as an exchange gateway and control transmitting, over the communicationnetwork 51 toa computing device 55of anexternalmarket accessprovider, amessage to request an order be placed for a financial instrument, and receiving, from the computing device 55, an electronic message including trade confirmation information indicating an order was completed based on the request to place the order.

[0037] In someembodiments, the interfaceprocessor 35mayserveasasmart order router that controls analyzingorder instructions indicated by respective events stored on the event journal 36, and generating an order instruction to fill an order, e.g., buy or sell a financial instrument, which may be transmitted as a command to the sequencer, based on parameters of an order routing algorithm and an order instruction indicated by an event.

[0038] In some embodiments, the sequencer 26 may have communication capabilities including a communication network interface. In some embodiments, further referring to FIG. 3, the sequencer 26 may include amemory including a buffer 60, a state machine 62, a processor 64, and a replayer 66. In some embodiments, the processor 64 may execute instructions in memory to control receiving non-sequenced downstream command packets as messages including respective commands; for each command generating a corresponding event identified with a global sequence number in accordance with the time that the command is received at the sequencer; generating an additional event to be injected as an injected event into the event stream, based on an order instruction indicated in a command and a determination of a current order state of a parent order that ismaintainedupdatedat the sequencer, and identifying theadditional eventwith a next unused global sequence number; keeping track of a last global sequence number used; and keeping track of a last topic sequence number, which is indicated in a command and indicates a sequence of order instructions from a same publisher. The processor 64, thus, may perform instructions to transform a command stream into a globally ordered event stream.

[0039] In some embodiments, the processor 64 may control receiving downstream command packets on a dedicated command multicast address; for each command generating a corresponding event with a global sequence number 7 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 assigned in correspondencewith the chronological order in which the command is received at the sequencer; and storing the events in global sequence number order in the buffer 60.

[0040] In some embodiments, the downstream command packet format for a command may include a field of a topic sequence number, which may be 64 bits; a field of a topic identifier (Topic ID), which may be 32 bits; and a payload. The Topic IDmay be set to correspond to a pair of interface processors, and indicate a specific publisher pair, such as a pair of algorithmic interface processors, where the primary interface processor of the pair when operating normally publishes a command, suchanorder tobuyaportionof theparent order oranorder tocancel theparent order, and thebackup interface processor of the pair stores in its memory an order instruction of an event acquired from the event journal 36 and which includes an indication, byway of the Topic ID, as being related to a command published by the primary interface processor of the pair.

[0041] Thebuffer60maybeacircular buffer, andconfiguredwithmemoryslots tostore theevents in theorder theevents are generated at the sequencer. In some embodiments, the buffer 60 may be of limited size so as to have a capability of storing about a maximum of hundreds of thousands of events.

[0042] In someembodiments, eachevent generatedbyasequencermay includeaheader andabody.Theheader of an eventmay includeor indicateasending time, inmilliseconds, froman interfaceprocessor, of acommand towhich theevent corresponds, where the sending time is indicated by an interface processor as a publisher of the command packet within a command data packet; a global sequence number (GSN) that corresponds to a chronological time of receipt at the sequencer of a command from which an event is generated, or a next global sequence number following a last global sequence number used for an event generated at the sequencer; a topic identifier (T) corresponding to an interface processor that generates a command, such as buy or sell a particular financial instrument, such as a particular stock, e.g., GOOGLE; a topic sequence number (SN) indicating a chronology of order instructions for a particular topic identifier, where SN is set by a publisher of a command, increasesmonotonically and serves to track the order instructions from the publisher; a source identifier (SOURCE ID) indicating a publisher to which the order instruction of the event corresponds; anda target destination (TARGET ID) indicatingaunique identifier of agroupofoneormoredestinations, suchas interface processors, that are designated to read the event from the buffer 36 of the host server, where a TARGET ID is set by a publisher when generating a command to which the event corresponds. In some embodiments, as described in detail below, a sequencermaycreateanadditional event basedonacommand, anda topic identifier for theadditional eventmay correspond to the sequencer that creates the additional event.

[0043] In some embodiments, downstream command packets may be received at the sequencer without timing information indicated in the packets.

[0044] In some embodiments, the message format of an event may be as follows: 8 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 where the fields of the data packet for an event have the following configuration: Sending Time 64 bits, Global Se- quence Number 64 bits, Topic Sequence Number 64 bits, Topic ID 32 bits, Source ID 16 bits and Target ID 16 bits.

[0045] In some embodiments, the body or payload of an event may include details of or describe an order instruction (i) contained in a command received at the sequencer, or (ii) generated by the sequencer, based on a current order state of a parent order maintained at the sequencer and an order instruction of a command received at the sequencer.

[0046] For example, the payload of an event may describe an order instruction of an initial or parent order to buy a number of sharesof the stockGOOGLE,where theorder instruction is fromaclient indicated in a commandgeneratedand published by the client gateway, and where the command is within a downstream command packet received at the sequencer 26at time t1.Theheaderof this eventmay includeaglobal sequencer numberequal to1 (assuming this is a first event generated by the sequencer when operation of the system 10 is commenced), a topic identifier T#1 identifying the client gateway 30 as a publisher of the buy order for GOOGLE stock, and a topic sequence number SN#1 indicating the event describes an initial order instruction published as a command by the client gateway 30. In addition, the payload of a second event may describe another order instruction to buy a number of shares of GOOGLE contained in a command publishedbyanother interfaceprocessor, suchas the interfaceprocessor32,and receivedat thesequencerat time t2after time t1. The header of the second event may have the global sequencer number 2, when the electronic message with the second order instruction is a next command received at the sequencer after the command received at time t1; the topic identifier T#2, which identifies the command as having been published by the interface processor 32; and the topic sequencenumberSN#1,which indicates theevent corresponds to a first order instruction from the interfaceprocessor 32. In some embodiments, the order instruction from which an event concerning the parent order is generated may originate 9 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 from an interface processor of another host server, such as the host server 14.

[0047] In some embodiments, the sequencer 26 may execute instructions in a memory to control performance of operations that relate to a parent order and may result in generating an additional event as an injected event that is integrated into sequenced events transmitted from the sequencer, where the additional event is in addition to an event generated that corresponds toa command receivedat the sequencer 26.Advantageously, thegeneration of theadditional eventmay conserve processing andmemory resources,minimize bandwidth usage, and increase speed of processing of order instructions indicated in respective events in the system 10. The sequencer may generate an additional event, by performing order management processing using a history of all order instructions related to a parent order and that indicates a current order state of the parent order maintained in its memory. The generation of an additional event may occur, for example, when an order instruction of a command received by the sequencer indicates completion of at least a portion of a parent order. The generation of the additional event at the sequencer according the present disclosure, based on anorder instruction of a command received at the sequencer and a current order state of the parent ordermaintained at the sequencer, may overcome the technical problem of latency and delayed processing, and consumption of bandwidth andmemory resources, resulting fromone interface processor needing to await acknowledgement of whether an order of an order instruction related to the parent order, which corresponds to a command froma different interface processor, has been completed. For example, the integration of an additional event into a stream of sequenced events that includes events respectively corresponding to commands received at the sequencermay avoid one interface processor, such as a client gateway, awaiting receipt of anacknowledgementmessage indicating completionof a tradeof aportionof theparent order that the interface processor 32 initiated. In the absence of generation of the additional event, the client gateway wouldneed toawait (i) theanother processor 32 to internally confirm that a trade for aportionof theparent order initiatedby the interfaceprocessor32hasbeencompleted, and to transmit anacknowledgementmessageacknowledging theportion of the parent order has been completed, and (ii) transmission of anothermessage, such as by a sequencer, responsive to the acknowledgement message and indicating to the client gateway that the trade for the portion of the parent order has been completed. By generating the additional event at the sequencer, speed of processing events in the system may be increased, number of processing operations performedmay be reduced, andmemory space for other usages, such as at the interface processors, may be increased.

[0048] In some embodiments, a sequencer may, by performing order management processing using a history of all order instructions related toaparent order and indicatingacurrent order stateof theparent ordermaintained in itsmemory, reduce latency and delayed processing, and consumption of bandwidth and memory resources in managing and processing an order instruction that is a request to change a state of a parent order ("change order state"), such as canceling the parent order or changing a quantity of the parent order. In some circumstances, an order instruction to change a state of a parent order, if implemented, may conflict with a current order state of the parent order. To avoid implementation of an order instruction that conflicts with a current order state of a parent order, typically in the prior art the order instruction to change order state is provided in an electronic message to an interface processor and the interface processor evaluates the order instruction in view of a history of order instructions stored in its memory. If based on determination from the history stored in itsmemory implementation of the order instructionwould produce a conflict, in the prior art the interface processor typically generates and transmits a command indicating that the order instruction should be ignored, and a further message as an event that needs to be generated and transmitted to all interface processors indicating the order instruction of change order state is rejected and should be ignored by all publishers of the system. Advantageously, in the present disclosure, the sequencer, by performingordermanagement processing onall commands related to aparent order to determineanorder state of the parent order, such that a current, real timeupdatedorder state of the parent order is indicated in its memory based on all the order instructions related to the parent order published as commands in the system 10, may change the contents of the order instruction, such as to indicate rejection of the order instruction to cancel the parent order, and generate an event with the changed event contents indicating rejection of the change order state order instruction. This centralized processing of all order instructions related to a parent order transmitted in the system 10 at the sequencer advantageously provides that publishers may ignore the event, and avoid the need for a publisher to determine from processing, using data in its memory, that the order instruction for the change order state as indicated in an event is a conflict, and to generate and transmit a message as a command to a sequencer indicating the order instruction should be rejected, and the need for the sequencer to then generate and transmit an event indicating theorder instructionshouldbe rejectedbyall publishers. Thus, by the sequencer performingordermanagement processing based on the order instruction of a command received at the sequencer and a current order state of the parent order maintained at the sequencer, the technical problem of latency and delayed processing, and excessive use of bandwidth, processing resources and memory resources may be overcome, as an interface processor does not need to determinewhether an order instruction related to a parent order conflicts with a prior order instruction related to the parent order. Furthermore, an individual interface processormay avoid awaiting receipt of an acknowledgement message that a portion of the order has been completed, before taking a next action indicated by an event, such as to place a trade or modify or remove an order instruction for a parent order from its internal buffer. The action of changing the contents of an order instruction to be included in an event at the sequencer thusmay increase speed of processing events in the system, 10 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 reduce number of processing operations performed, and conserve and free memory space for other usages at the interface processors of the system.

[0049] In some embodiments, the statemachine 62may perform instructions to control processing order instructions to update a current order state of a parent order. For example, the state machine 62 may control processing an order instruction (i) constituting a parent order for a particular financial instrument from a client; (ii) generated based on processing an event from the queue of a host server by an interface processor, such as an interface processor 32; (iii) generated based on processing an event from the queue of a host server by a smart order router such as an interface processor 35; (iv) and for a same financial instrument as the parent order originating from the client, and transmitted in a command from theclient gateway that is receivedat thesequencer after thecommand includinganorder instruction for the parent order is received at the sequencer.

[0050] In someembodiments, the statemachine 62maygenerate, and store inmemory, a table that indicates a plurality of sets of order instructions for a respective plurality of parent orders. The table may store respective sets of order instructions referenced to a single parent order using a topic identifier and a topic sequence number. In some embodi- ments, the state machine may control performing order management processing to determine a current order state of a parent order byanalyzingorder instructionsof anorder history for aparticular parent order stored in thememory, suchas in a table, of the sequencer.

[0051] Referring to FIG. 3, in some embodiments, the state machine may process an order instruction for a financial instrument fromaclient that constitutes aparent order (P), and set the order instructionof the parent orderPasa topor first item in a chronological hierarchy indicating time of receipt at the sequencer. The state machine may process additional order instructions in respective commands received subsequent to the order instruction of the parent order P at the sequencer, and provide, in the hierarchy, that the first item is followed in sequence order by, for example, (i) a second item C1 corresponding to an additional order instruction received in a command from the interface processor 32, (ii) a third item C2corresponding to anadditional order instruction from the client received in a command from the client gateway30; (iv) a fourth itemC3corresponding toanadditional order instruction received inacommand from the interfaceprocessor32;and (iv) a fifth item C4 corresponding to an additional order instruction from a smart order router received in a command from the interface processor 35.As illustrated at the statemachine62, the additional order instructions relating to a parent order maybe linkedwith eachother and theparent order in a hierarchy for the parent order (P),whereC1andC2are child orders of P, and C3 and C4 are child orders of C2.

[0052] In some embodiments, the statemachine, by use of the hierarchy information associatedwith the parent order P, may analyze all order instructions for the particular financial instrument of the parent order P when an order instruction relating to the parent order P, such as cancel or change order state by reducing the number of shares to buy relative to the numberof shares tobuy indicated in theparent orderP, is received inacommandat thesequencer, todeterminewhether to generate an additional event. For example, the state machine may query the order table to extract order instructions corresponding to a history of order instructions associatedwith parent order, and reconcile the history of order instructions for the parent order with the order instruction currently received at the sequencer in a command. After the history of order instructions is reconciled with the order instruction of the command currently received, the state machine 62 in real time may update an order state of the parent order, such as in the table, to an updated current order state in viewof the received order instructionand thehistory, andgenerateanadditional eventbasedon thecurrently receivedorder instructionand the updated current order state of the parent order in the table. As described above, the additional eventmay include a header indicating a global sequence number that is next after the last global sequence number used to identify an event corresponding to a command received at the sequencer. For example, when an order instruction of a command from an exchange gateway 34 indicates a trade of 100 shares of GOOGLE is completed, the statemachinemay update the order state of a parent order to buy 100 shares of GOOGLE by performing a roll-up of all other order instructions for the parent order. The roll-up updates the hierarchy information for the client’s parent order for GOOGLE to eliminate all other order instructions for the parent order, and the sequencer may generate an additional event to indicate to the client gateway 30 that the parent order to buy 100 shares of GOOGLE is completed. In addition, the sequencer may generate an event corresponding respectively to the command indicating completion of the trade, such that an interface processor 32, which previously sent a command including an order to buy 100 shares of GOOGLE based on the parent order, where the order instruction of the command from the interface processor 32 caused the exchange gateway 34 to place the trade for 100 shares on an exchange to be executed, upon acquiring such event from the event journal, may confirm internally that its order and also the parent order to buy 100 shares of GOOGLE is completed.

[0053] In some embodiments, the statemachinemay perform instructions to control the ordermanagement processing to update the current order state of the parent order to indicate the parent order is at least partially filled, and update a corresponding table describing the hierarchy information for the parent order to indicate the current order state of the parent order.

[0054] In some embodiments, the statemachinemay perform instructions to control the ordermanagement processing to, when an order instruction of a command is a request to change a state of an order of a parent order, such by canceling the order completely or at least in part, determinewhether the requested change to the state of the order is in conflict with a 11 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 current order state of the parent order. For example, the order instruction to change an order state from a client may be to amend the parent order, such to reduce the number of shares to buy from 100 to 50, or to cancel the parent order. In the event theorder instruction to change theorder state of the parent order is determined to conflictwith a current order state of theparent order in thehierarchy, for example, 75 sharesalreadyhavebeenpurchased for aparent order to buy100 shares and theamendment to theparentorder is tobuyonly50shares,or all of thesharesof theparent order tobepurchasedhave already been purchased before the command including the order instruction to cancel or amend the parent order is received at the sequencer, the statemachinemay determine a conflict.When the statemachine determines a conflict, the sequencer may control generating an event that does not contain the same order instruction to change order state, and instead indicates a rejection of the order instruction of the command indicating to change order state, such that the event may be ignored by any of the interface processors of the system. Based on the state machine determining a conflict upon receipt of a command to changeanorder state of the parent order, processing resources, bandwidth, andmemory storage are saved, in that an individual interface processor does not need to internally process the order instruction of change an order state to determine a potential conflict, and then publish a command requesting an acknowledgement from the system that the change order state may be performed without causing a conflict with a previous action performed for the parent order.

[0055] In some embodiments, the state machine may perform order management processing on the order instruction currently received to determine whether a request is valid, such as whether necessary information for an order, such as price, size, trade parameters or the like, is missing from or exists in the order instruction. In the event the state machine determines the request is not valid, the state machine may update the state of the parent order to indicate an order instruction of a command relating to the parent order that was received is invalid. In this instance, the sequencer may control generating an event that indicates a rejection of the order instruction of the command, such that the event may be ignored by any of the interface processors, and also a particular interface processor that published the command determined tobe invalidmaybecomeawareof the invalidity determinationandpublishanother command,with themissing information, to provide for implementation of the intended order instruction in the system 10.

[0056] In some embodiments the sequencer may execute instructions to control dropping duplicate command packets with a topic sequence number that is the same as or less than a last known topic sequence number for a given topic.

[0057] Referringagain toFIG.2, thesequencer 26mayperform instructions to control transmitting, bymulticasting, over the communication network onadedicated eventmulticast address, an event to the queuemanager 24, a queuemanager of each of the host servers 14 and 16 and any backup sequencer, such as the sequencer 126.

[0058] The journaler 24 may perform instructions to control receiving, over the communication network, sequenced downstreamevent packets from thesequencer, storingeachevent fromanevent packet asamessage in theevent journal 36, and transmitting, over the communication network to a replayer of another server or a primary or backup sequencer, a replay request (a gap fill request) for an event packet(s) having a particular global sequence number range. In some embodiments, a replayer of the system 10, such as replayer 28 of the host server 12, may control receiving, over the communication network, a replay request (a gap fill request) for an event packet(s) having a particular global sequence number range; extracting events for a requested sequence number range from the replay request; accessing a memory, such as the event journal 36, to retrieve a requested event packet; and transmitting, over the communication network, an event packet having the requested global sequence number in response to the replay request. In someembodiments, the replayer may receive replay requests on a unicast address, and transmit a response to a requestor to a unicast address thereof only if at least oneevent is found for a requested range. Insomeembodiments, the replayerof a sequencer, suchas replayer 66 of the sequencer 26, may control receiving replay requests on a unicast address, retrieving a request event packet from the buffer 60, and transmitting, on a unicast address, an event packet having the requested global sequence number in response to the replay request. In some embodiments, the transmission of replay requests and responses to replay requestsmaybeperformed in the systemwhenadetermination ismade from theevent journal that a rangeof global sequence numbers is missing from an event stream stored at an event journal, such as may occur when there is a disruption to a communication network or a primary sequencer fails and a failover procedure to convert a backup sequencer to a primary sequence is performed.

[0059] In some embodiments, the journaler may perform instructions to control storing events using a local file system directly or via a mapped memory in the host server. In some embodiments, the journaler 24 may perform instructions to control receiving downstream event packets on an event multicast address over the communication network 51; determining whether an event packet has a global sequence number less than or equal to the global sequence number of a previously received event packet, and if yes, dropping such event as a duplicate; and storing in the buffer 36 downstream events with a global sequence number greater than the last known (stored) global sequence number plus one.

[0060] The journalermayperform instructions to control requesting, fromof one ormore replayers of the system10over the communication network on a unicast address, a replay request that requests re-sending an event whose global sequence number is determined to be missing from a sequence of received events in the buffer 36, to fill a gap in the sequence of global sequence numbers. In someembodiments, the replay requests from the replayermay be spaced from 12 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 eachotherbya timeout interval. Further, in someembodiments, the journaler24mayperform instructions tocontrol storing in the buffer 36 all events from a last event packet received if the global sequence number is the next expected global sequence number, and keeping track of the last global sequence number processed. Also, in some embodiments, the journaler 24may perform instructions to control determining whether an event packet has a global sequence number that matches a next expected global sequence number of an event packet, and if yes, storing the event packet received, and if no, transmitting a replay request. In some embodiments, when event packets with missing global sequence numbers are received at the journaler, the journalermayperform instructions to control storing thosemissingevent packets in the buffer and resuming storing event packets with not yet received global sequence numbers in the buffer from the resumed last tracked global sequence number.

[0061] In someembodiments, any one of the host servers 10, 12, 14 and an associated sequencermay be redundant to another one of the host servers and its associated sequencer. In someembodiments, the request for replay and response to replay request functions described above may be performed when a failover from the primary sequencer to a backup sequencer as the redundant sequencer is initiated. The global sequence number for each event may be used by the system10 toensure that dataassociatedwithanorder instruction is not lost, in theevent that aprimary sequencer fails or is compromised and another sequencer becomes a primary sequencer of the system 10.

[0062] In some embodiments, a sequencer 126 may perform instructions to control converting itself as the sequencer operating as a backup sequencer to a primary sequencer of the system. In some embodiments, for example, the sequencer 126, as a backup sequencer, may perform instructions to control receiving downstream event packets on an eventmulticast address, droppingduplicate event packetswith a global sequencenumber less thanor equal to last known global sequence number, and storing each individual event in a buffer. In addition, in some embodiments, the sequencer 126 may perform instructions of a Backup-to-Primary Failover Operation procedure that controls transmitting, over the communication network, a global sequence number query to each journaler in the system and awaiting response; receiving a response to the query over the communication network; comparing a global sequence number from each response to a locally stored value and, if necessary, performing a gap fill operation involving a communication exchange with a journaler and replayer of each host server of the system, to obtain any missing events from a combination of a replayer and journaler of a host server having an event with the highest global sequence number in its event journal. In addition, the sequencer 126mayperform instructions to control, after the eventwith a highest sequence number has been stored in its event journal, switchingamodeof operation fromabackupmode toaprimarymode, afterwhich thesequencer may perform operations as a primary sequencer described above for the sequencer 26. Referring to FIG. 2, when the backup sequencer 126 is transitioning to become a primary sequencer in the system10, the sequencer 126may send the global sequence number query, receive a response to the query, send a replay request, and receive a response to a replay request onaunicast address as indicatedby reference line 130, andafter the backup sequencer 126becomes theprimary sequencer for the system, receive commands on the command multicast address, as indicated by reference line 132. Example Methods

[0063] For purposes of illustrating the features of the present disclosure, a high-level block diagram of an exemplary process 200, as shown in FIG. 4, which advantageously may minimize processing latency, bandwidth usage on a communication network, and usage of processing resources and memory, is described below in connection with operations performed at components of the system 10 as shown in FIGs. 1‑3. The process 200 may manage and processevents in aqueue, inwhich theevents indicate respectiveorder instructions related to aparent order for a financial instrument, to facilitate high-throughput trading of financial instruments on a distributed networkwith a reduced number of processing operations, reduced memory usage and reduced bandwidth usage on a communication network, and to minimize downtime in case of failure of a network component of the system.

[0064] Forpurposesof illustrationof theprocess200, thehost server 12maybeassociatedwith the sequencer 26which is operating as a primary sequencer of the system 10. In addition, the sequencer 126 may be operating as a backup sequencer and associated with the host server 14.

[0065] Referring to FIG. 4, in block 205, the client gateway 32 of the host server 12 may receive, from the computing device50of a client, over a communicationnetwork51, anorder instruction for a financial instrument. Theorder instruction may be, for example, an initial or new order for a particular financial instrument (parent order).

[0066] In block 210. the client gateway 32may generate a command indicating the order instruction of the parent order. The commandmaybe included in anUDPpacket and indicate details of the order instruction of the parent order. The client gateway 32may track receipt of order instructions for a particular financial instrument received from a client. In particular, the client gateway 32may, within the command that is generated based on a parent order, identify the order instruction for the parent order with the topic identifier (Topic ID) of the publisher of the command and a topic sequence number SN, in accordance with the protocol described above. The Topic ID may serve as a common payload identifier for one or more commands in a sameUDPpacket, where the topic sequence numberSN identifieswhether the command is a first or later, sequential order instruction for the same Topic ID. For example, the client gateway may generate the command for an 13 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 order instruction that is a parent order to buy 1000 shares of IBM that includes the topic identifier T#1 and sequence numberSN#1, anda command for a subsequent order instruction relating to theparent order, for example, buy500 shares of IBM, that includes the topic identifier T#1 and sequence number SN#2.

[0067] Further in block 210, the client gateway 30 may publish, over communication network 51, on a command multicast address, anelectronicmessage including theUDPpacketwith thecommandof theparent order for receipt by the primary sequencer 26.

[0068] In block215, thesequencer 26may receive, on the commandmulticast address, anUDPpacketwithoneormore commands. For each command, the sequencer 26 may extract the corresponding order instruction from the UDP, and based on the order instruction extracted determine details of the parent order, suchas price, quantity, type and identity of a financial instrument forming the parent order. In addition, the sequencer 26 may extract the Topic ID and Topic Sequence Number of the command. Based on the extracted information from the command, the sequencer 26 may perform order management processing to determine an order state for a financial instrument indicated in the command. In some embodiments, the processor of the sequencer may operate as a state machine that determines whether the order instruction of the command constitutes a parent order, or a subsequent order related to the parent order, and maintain a real time, updated record of a current order state of a parent order in a hierarchy according to the order instructions related to the parent order of the commands respectively received at the sequencer. As described below, in the hierarchy for a parent order, items of respective order instructionsmay be linked to each other, and the hierarchymay indicate whether a particular order instruction related to a parent order has been completed. For example, for a command that indicates a parent order for a specific financial instrument, the state machine may determine that a history of an order for the specific financial instrument does not exist, in other words, the order instruction is a parent order, and therefore create a parent order P as a first item in a hierarchy, as shown in FIG. 3.

[0069] Further inblock215, thesequencermaygenerateanevent that corresponds to theorder instruction for theparent order indicated in thecommand.Theeventmay include (i) aheader indicatingaglobal sequencenumber corresponding to a time when the command is received at the sequencer, the topic identifier indicated in the command and the topic sequence number for the topic identifier indicated in the command; and (ii) a payload describing the order instruction indicated by the command. Further in block 215, the sequencer may store the event in the circular buffer 60.

[0070] In block 220, the sequencermaymulticast, on an eventmulticast address, the event to the queuemanager 24. a queue manager of any other host server of the system 10. such as the host server 14, and the backup sequencer 126.

[0071] In block 225, the queue manager 24 may receive the event on the event multicast address, and responsive to receiving the event, add the event to the queue 36 in an order according to the global sequence number of the event. The events received at the sequencer 26 may be arranged in chronological order in the queue 36 according to their global sequence numbers, so that the events may be processed in sequence according to global sequence number by an interface processor of the host server 12. In addition, the queue manager of other host servers of the system 10 may similarly receive anevent and store theevent on theevent journal thereof. Further, thebackup sequencer 126may receive the event on the event multicast address, and store the event on a buffer of the backup sequencer.

[0072] After an event is stored on the queue of a host server, in block 230 one or more of the interface processors of the server 12mayacquire an event from the queue36, and performprocessing basedon theorder instruction indicated by the event to determineanext action.Anext action, for example,maybe togenerate a command indicating anorder instruction related to the parent order. In some embodiments, the next action may be determined automatically in response to the event being acquired from the queue.

[0073] In some embodiments, in block 230, an interface processor that is an exchange gateway may determine a next action, which is to place on order on an exchange, such as trade 500 shares of IBM, and transmit a request to place the order, over the communicationnetwork51, to a remoteexchangecomputingdevice. In someembodiments,when thenext action is determined to be place an order on an exchange, in block 230 the exchange gatewaymaygenerate an order for a financial instrument tobeplacedonanexchange, suchasbuy500sharesof IBMwhich is indicated in theparent order, and transmit the order, over the communication network 51, to the remote exchange computing device 55.

[0074] In some embodiments, in block 230 an interface processor that is an exchange gateway may determine a next action which is to apply the order information for a completed trade indicated in the event, to information stored inmemory at the interface processor which relates to the parent order. In some embodiments, when the next action is to apply the order information for a completed trade indicated in the event, to information stored in memory at the interface processor which relates to theparent order, in block 230 the interface processor applies theorder information for the completed trade indicated in theevent to update itsmemory, soas to indicate the trade thatwas the subject of a command from the interface processor is completed.

[0075] In someembodiments, inblock230 theexchangegatewaymay,when theorder information foracompleted trade is indicated in theevent, use theorder information to performan internal acknowledgement in thememoryof the exchange gateway that a trade is completed related to the parent order. By such action, the information related to the parent order in thememoryat theexchangegatewaymay include the sameorder informationas in thehierarchy for theparent order at the sequencer. 14 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55

[0076] In block 235. an interface processor, such as the interface processor 32 or 35 of the server 12 may, based on a next action determined in block 230. generate a command indicating an order instruction related to the parent order. In someembodiments, an interfaceprocessor32asanalgorithmic tradingprocessor, or an interfaceprocessor35asasmart order router, may, based on a determined next action, generate a command indicating another order instruction related to the parent order. The interface processormay include the command in anUDPpacketwith a topic identifier and sequence number assigned using the protocol convention as described above. The interface processors 32 and 35may publish the commands on a command multicast address, for receipt by the primary sequencer 26.

[0077] In someembodiments, in block235,an interfaceprocessoras theexchangegateway34may,basedon receipt of a message over the communication network from a remote exchange computing device indicating a trade for at least a portion of the parent order was completed, generate a command indicating that a trade for the at least a portion of the parent orderwas completed. The interfaceprocessor 34may include the command in anUDPpacketwith a topic identifier and a sequence number assigned using the protocol convention as described above. The interface processor 34 may similarly publish the command on a command multicast address, for receipt by the primary sequencer 26.

[0078] In some embodiments, in block 235, a client gateway may generate a command based on an order instruction related to the parent order thatmaybe a subsequent order related to the parent order, andwhichmay be received from the computing device 50 of the client over the communication network 51. For example, the order instruction of the parent order may be buy 500 shares of GOOGLE at $100, and the order instruction of a subsequent order related to the parent ordermay be one of: buy an additional 250 shares of GOOGLEat $100, amend the parent order to buy only 250 shares of GOOGLE at $100, or cancel the parent order in its entirety. The client gatewaymay publish the command on a command multicast address, for receipt by the primary sequencer 26.

[0079] In block240, thesequencer 26may receive, on the commandmulticast address, anUDPpacketwithoneormore commands related to the parent order. For each command received at the sequencer, the sequencer 26, automatically in response to receiving the command, may extract from the UDP packet the order instruction corresponding to the command, to determine details of an order instruction related to the parent order. Based on the extracted information for a command, the sequencer 26 automatically may perform order management processing to determine and update, in real time, a current order state of the parent order to which the order instruction in the command relates. In some embodiments, updating of the order state of the parent order to a current order state of the parent ordermay be performed in substantially real time, without delay, automatically upon receipt of a command at the sequencer.

[0080] In addition, in some embodiments, in block 240 the state machine may determine that a history of order instructions for a specific financial instrument exists, in other words, the order instruction relating to the parent order is subsequent the order instruction for the parent order; determine that the subsequent order instruction changes in order state of the parent order: and update the history of order instructions for the parent order P based on the subsequent order instruction. For example, a subsequent order instruction may be to buy 500 shares of IBM to complete a portion of the parent order P. which is buy 1000 shares of IBM. The subsequent order instruction may be identified as C1, as shown in FIG. 3. In someembodiments, the history of the parent ordermay include several subsequent order instructions related to the parent order P, where one subsequent order instruction is a child order C2 of buy 500 shares of IBM and may have several sub-child order instructions C3 and C4, for example, each to buy 250 shares of IBM.

[0081] In someembodiments, in block 240, the statemachinemayperformordermanagement processing using a table inwhichorder instructions related toaparent orderarearranged inahierarchy indicativeof current order stateof theparent order. In someembodiments, the subsequent order instructions of respective commandsmay, for example, originate from a client, or from any interface processor of any of the host servers in the system 10. When the order instructions are subsequent order instructions related to the parent order, the statemachine of the sequencer may update the table to link the subsequent order instructions to the order instruction constituting the parent order and any other subsequent order instructions relating to the parent order, and indicate a chronological history of receipt of the subsequent order instructions at the sequencer in relation to other order instructions relating to the parent order received after the order instruction for the parent order. In someembodiments, the tablemay be updated to indicate the source of the subsequent order instructions, for example, the client gateway or another interface processor of the server 12.

[0082] Also in block 240, the sequencermay generate an event corresponding to the order instruction of the command, following updating the current order state of the parent order at the state machine.

[0083] Further in block 240, the sequencermaygenerate anadditional event to inject into the event stream, basedonan order instruction of a command and an updated current order state of a parent order determined by the state machine. In some embodiments, the additional event may include (i) a header indicating a global sequence number one greater than the global sequence number last assigned to an event generated at the sequencer, a topic identifier and a topic sequence number for the topic identifier according to theprotocol conventiondescribedabove; and (ii) a payloaddescribing theorder instruction for the additional event. Further in block 240, the sequencer may store the event in the circular buffer 60.

[0084] In some embodiments, the sequencer may generate an additional event based on a result of updating the hierarchy for the parent order. For example, in some embodiments, when the sequencer determines that the order instruction of the command indicates execution of an order that satisfies the entirety of the parent order, automatically in 15 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 response to this determination and in real time the statemachinemay roll-up the hierarchy for the parent order, such that a current order state of the parent order in the memory of the state machine is the parent order is completely filled. In this circumstance, the sequencermay generate an additional event that may indicate to a client gateway that a parent order is completed. This additional event is in addition to the event generated from the command that indicates to an interface processor, which initiated the order related to the parent order that was completed, that the order placed by the interface processor is completed.

[0085] In block 245, the client gateway 22 may process an event to determine a parent order is partially or entirely executed, and transmit amessage, over the communicationnetwork to the computingdevice 50of the client, that confirms the parent order is partially or entirely executed. For example, the message may indicate an order to buy 1000 shares of IBMat the currentmarket price,whichwas indicatedasa financial instrument to be traded inaparent order, hasbeenfilled.

[0086] In someembodiments, a commandmay includeasubsequent order instruction indicating completionof a portion of a trade that results in a portion or an entirety of the parent order being filled. The state machine in this example may, in block 240, perform order management processing that updates the current order state of the parent order based on the subsequent order instruction and a current state of the parent order in the hierarchy, and generates (i) an event A as an exchange order trade confirmation that is designated for acquisition by an interface processor and indicates completion of a trade for the portion of the parent order on a remote exchange computing device that was initiated by the interface processor, and (ii) an additional event Bas aclient order trade confirm that is designated for acquisition bya client gateway and indicates trade completion of the portion of the parent order on a remote exchange computing device. The sequencer may multicast, on the event multicast address, the two events A and B. The interface processor, such as interface processor 32, which transmitted a message to order a trade for the portion, may acquire the event A, which is designated for the interface processor, and update its internal memory and history to indicate an acknowledgement, namely, that the sequencer updated the hierarchy for the parent order based on completion of the trade indicated by themessage to place the trade from the interface processor 32. In addition, the client gateway may acquire the additional event B, which is designated for the client gateway, and update its internal memory concerning the parent order and, as suitable, transmit over thecommunicationnetwork, anacknowledgementmessage that aportionof theparent order is completed,where the portion may be the entirety of the parent order.

[0087] In some embodiments, a command may include a subsequent order instruction to change an order state of a parent order. In some embodiments, in block 240, the state machine, based on the order instruction to change an order state of the parent order, may perform order management processing to update the order state of the parent order and determine whether the change order state order instruction is in conflict with a current order state of the parent order. A conflict may occur, for example, where the order instruction is to cancel the parent order and the parent order has been at least partially filled. Also, a conflict may occur where the subsequent order instruction is to amend the parent order to reduce the quantity to be traded, for example, the parent order is to buy 1000 and the amended order is to buy 500 shares, andmore than thedesired quantity for trading basedon theamendment alreadyhas been traded, for example, 600 shares alreadyhavebought for the parent order. The sequencer, automatically and in real time in response to determining that the change order state indicated by the subsequent order instruction is in conflict with the current order state of the parent order, may generate a replacement event as a client order that has a different action indication than the subsequent order instruction, for example, reject insteadof cancel, to indicate rejectionof theorder instruction tochange theorder stateof the parent order. The sequencer may transmit the event with the indication to reject. An event having an indication of reject, such as in the header, [inventor- please confirm], may be ignored by any interface processor of the system.

[0088] In some embodiments, in block 230, when an event indicates to place a trade and an exchange gateway is indicated as a recipient within the event, the exchange gateway, upon acquiring the event,may transmit a request over the communication network to the remote exchange computing device to execute a trade for a portion of the financial instrument of the parent order. In addition, the exchange gateway may receive a message over the communication network from the remote exchange computing device confirming the portion of the financial instrument was traded.

[0089] An exemplary implementation of the present disclosure is illustrated with reference to electronic messages indicated below in Table 1, which may be transmitted over the network 51 when functions of blocks of process 200 as described above are performed in connection with system 10. For purposes of clarity, the messages are exemplified with relevant fields indicating a source of an order instruction and an order number corresponding to a particular order, namely, a client gateway order COor exchange gateway order EOand anorder number (e.g.,CO#1), an instruction or action to be performed, such as BUY, trade TRD, cancel CXL or reject REJ, name of financial instrument, quantity and price. Also indicatedat the left of the tableare references toentities associatedwith the function indicated to the immediate right on the table, where FIX is an external computing device, such as client’s computing device or a remote computing device of an exchangemarketplace, CG is client gateway,OM / SEQ is sequencer,World is all nodes of the systemcapable of receiving anevent, andEGisexchangegateway. It is tobeunderstood thateachmessagemay includeadditional fieldsnot indicated below. 16 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 Table 1 [FIX => CG] CO#1 BUY IBM 1000@$140.00 [CG => OM / SEQ] CO#1 BUY IBM 1000@$140.00 <GSN#na,T#1,SN#1> [OM / SEQ => World] CO#1 BUY IBM 1000@$140.00 <GSN#10,T#1,SN#1> [ALGO => OM / SEQ] EO#1 BUY IBM 500@$140.00 <GSN#na,T#2,SN#1> [ALGO => OM / SEQ] EO#2 BUY IBM 500@$140.00 <GSN#na,T#2,SN#2> [OM / SEQ => World] EO#1 BUY IBM 500@$140.00 <GSN#11,T#2,SN#1> [OM / SEQ => World] EO#2 BUY IBM 500@$140.00 <GSN#12,T#2,SN#2> [EG => FIX] EO#1 BUY IBM 500@$140.00 [EG => FIX] EO#2 BUY IBM 500@$140.00 [FIX => EG] EO#1 TRD IBM 500@$140.00 [FIX => EG] EO#2 TRD IBM 500@$140.00 [EG => OM / SEQ] EO#1 TRD IBM 500@$140.00 <GSN#na,T#3,SN#1> [EG => OM / SEQ] EO#2 TRD IBM 500@$140.00 <GSN#na,T#3,SN#2> [FIX => CG] CO#1 CXL IBM 1000@$140.00 [CG => OM / SEQ] CO#1 CXL IBM 1000@$140.00 <GSN#na,T#1,SN#2> [OM / SEQ => World] EO#1 TRD IBM 500@$140.00 <GSN#13,T#3,SN#1> [OM / SEQ => World] CO#1 TRD IBM 500@$140.00 <GSN#14,T#4,SN#1> [OM / SEQ => World] EO#2 TRD IBM 500@$140.00 <GSN#15,T#3,SN#2> [OM / SEQ => World] CO#1 TRD IBM 500@$140.00 <GSN#16,T#4,SN#2> [OM / SEQ => World] CO#1 REJ IBM 1000@$140.00 <GSN#17,T#1,SN#2> [CG => FIX] CO#1 TRD IBM 1000@$140.00

[0090] Referring to Table 1, the computing device 50 of the client may transmit an electronic message, over the communicationnetwork to theclient gateway30, of anorder tobuy1000sharesof IBMat$140.Theclient gateway30may, based on the order, generate a command having the following data fields: CO#1 BUY IBM 1000@$140.00. The client gateway30, basedon theorder,maygenerateacommandpacket having the followingdata fields:CO#1BUY IBM1000@ $140.00 <GSN#na,T#1,SN#1>, which indicates a specific client gateway T#1 transmits an order to buy 1000 shares of IBM at $140 and the order instruction is the first order instruction SN#1 published from the client gateway. The client gateway then may publish the command packet as well store a record of the command in its memory.

[0091] The sequencer may receive the command packet for the order to buy 1000 shares of IBM at $140 from the client gateway, and generate an event based on the command of the command packet with the data fields CO#1 BUY IBM 1000@$140.00 <GSN#10,T#1,SN#1>. The sequencer may assign a global sequence number to the event of GSN#10, which may be the next global sequence number not yet assigned by the sequencer. The other data field identifier information from the command may also be retained in the event. The sequencer may publish the event on the multicast event address, and the state machine at the sequencer may initiate a record in a hierarchy to establish an order state of a parent order based on the command.

[0092] Theeventmaybe receivedby the journaler of a host server and storedon thequeueof the respectivehost server. An interface processor 32 as an algorithmic trading devicemayacquire and process the order instruction of the event, and generate a commandwith an order instruction indicating to place an order to buy a portion of the parent order, namely, 500 shares of IBM. The command from the interface processor 32 is assigned a topic identifier T#2, and has the following data fields:EO#1BUY IBM500@$140.00<GSN#na,T#2,SN#1>. Inaddition, the interfaceprocessor32mayprocess theorder instruction of the event, and generate another command indicating to place an order to buy another portion of the parent order, namely, 500 shares of IBM. This another command may have the following data fields: EO#2 BUY IBM 500@ $140.00 <GSN#na,T#2,SN#2>.

[0093] The sequencer may receive the commands <GSN#na,T#2,SN#1> and <GSN#na,T#2,SN#2>, and generate respective corresponding events having the next global seqeunce numbers as EO#1 BUY IBM 500@$140.00 <GSN#11,T#2,SN#1> and EO#2 BUY IBM 500@$140.00 <GSN#12,T#2,SN#2>. In addition, the state machine of the sequencer may update the hierarchy for the parent order to indicate EO#1 BUY IBM 500@$140.00 and EO#2 BUY IBM 500@$140.00 are child orders Child‑1 and Child‑2 to the parent order CO#1 BUY IBM 1000@$140.00. The sequencer may then multicast the events EO#1 BUY IBM 500@$140.00 <GSN#11,T#2,SN#1> and EO#2 BUY IBM 500@$140.00 <GSN#12,T#2,SN#2>. The journaler 24 of the server 12 may receive these events and add them to the event journal 36.

[0094] Theexchangegatewaymayacquire theeventsEO#1BUY IBM500@$140.00<GSN#11,T#2,SN#1>andEO#2 BUY IBM 500@$140.00 <GSN#12,T#2,SN#2> from the event journal 36, and based on processing the contents of the events, transmit over the communication network 51 to the remote computing device 55 an order corresponding to EO#1 17 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 BUY IBM 500@$140.00 and another order corresponding to EO#2 BUY IBM 500@$140.00. The remote computing device 55may execute the two orders on amarketplace and then transmit messages EO#1 TRD IBM 500@$140.00 and EO#2 TRD IBM 500@$140.00 over the communication network to the exchange gateway. The messages from the computingdevice 55mayserveas confirmations to theexchangegateway that the tradeswere completed respectively for each of the two orders to buy 500 shares of IBM.

[0095] Theexchangegatewaymay,basedon receipt of themessagesconfirmingcompletionofeachof the twoorders to buy 500 shares of IBM, generate respective commands EO#1 TRD IBM 500@$140.00 <GSN#na,T#3,SN#1> and EO#2 TRD IBM 500@$140.00 <GSN#na,T#3,SN#2> indicating the two trades for 500 shares of IBM were completed, and publish these commands for receipt by the sequencer.

[0096] In addition, the client gatewaymay receive amessage from the client device over the communication network 51 indicating a subsequent order to cancel the parent order, as CO#1 CXL IBM 1000@$140.00. Based on receipt of the subsequent order to cancel theparent order, the client gatewaymaygenerateacommandCO#1CXL IBM1000@$140.00 <GSN#na,T#1,SN#2>, and publish this command for receipt by the sequencer.

[0097] The sequencer may receive the commands EO#1 TRD IBM 500@$140.00 <GSN#na,T#3,SN#1> and EO#2 TRD IBM 500@$140.00 <GSN#na,T#3,SN#2>, before the sequencer receives the command CO#1 CXL IBM 1000@ $140.00 <GSN#na,T#1,SN#2> from the client gateway. In this circumstance, the statemachinemay update the hierarchy for the parent order, based on the commands EO#1 TRD IBM 500@$140.00 <GSN#na,T#3,SN#1> and EO#2 TRD IBM 500@$140.00<GSN#na,T#3,SN#2>, such that theheirarchy for theparent order is automatically rolled-upand theparent order is indicated as completed in the hierarchy. The sequencer may then generate an event EO#1 TRD IBM 500@ $140.00 <GSN#13,T#3,SN#1> corresponding to the command EO#1 TRD IBM 500@$140.00 <GSN#na,T#3,SN#1>, and an additional event CO#1 TRD IBM 500@$140.00 <GSN#14,T#4,SN#1> based on the updating of the hierarchy for the parent order in accordance with receipt of the command EO#1 TRD IBM 500@$140.00 <GSN#na,T#3,SN#1>. The additional event GSN#14 may serve to notify the interface processor 32 that a portion of the parent order is filled.

[0098] Further, the sequencer may generate an event EO#2 TRD IBM 500@$140.00 <GSN#15,T#3,SN#2> corre- sponding to the commandEO#2TRD IBM500@$140.00, <GSN#na,T#3,SN#2>, andanadditional eventCO#1TRD IBM 500@$140.00 <GSN#16,T#4,SN#2> based on the updating of the hierarchy for the parent order in accordance with receipt of the command EO#2 TRD IBM 500@$140.00 <GSN#na,T#3,SN#2>. The additional event GSN#16 may notify the client exchange that another portion of the parent order is filled.

[0099] As the sequencer processes the commands EO#1 TRD IBM 500@$140.00 <GSN#na,T#3,SN#1> and EO#2 TRD IBM 500@$140.00 <GSN#na,T#3,SN#2> to generaete respective events before the command CO#1 CXL IBM 1000@$140.00 <GSN#na,T#1,SN#2> is processed, when the sequencer subsequently processes the command CO#1 CXL IBM 1000@$140.00 <GSN#na,T#1,SN#2>, the sequencer may determine, based on the current order state of the parent order indicated in the hierarchy for the parent order, that the current order state of the parent order is completed, such that a cancel order is not permitted for the parent order. Based on the determination that a cancel order is not permitted, the sequencer may generate an event CO#1 REJ IBM 1000@$140.00 <GSN#17,T#1,SN#2> to reject the cancel order, andmulticast the event for reception by the journaler and addition to the event journal of the respective host server. The designation "REJ" included in the event may indicate to all interface processors that the event should be ignored.

[0100] Advantageously, thegenerationandmulticastingof theeventwith thedesignation "REJ", instead thedesignation "CXL", which occurs based on a determination of the current order state of parent order at the sequencer, may reduce processing,bandwidthandmemoryusage in thesystem. If ahierarchy indicatingacurrent stateof theparent orderwasnot available at the sequencer, such that a current order state of the parent ordermaynot be ascertained at the sequencer, the seqeuncer in response to receipt of the command to cancel likely may generate and multicast an event CO#1 CXL IBM 1000@$140.00<GSN#17,T#1,SN#2> ("cancel event") , whichwould be added to the event journal of the host server. The interface processor, such as the interface processor 32, that published the two commands to buy 500 shares, upon acquiring the cancel event, may determine from its memory that the two trades for the parent order are completed, and consequently generate and publish a command with a rejection designation replacing a cancel designation as follows CO#1 REJ IBM 1000@$140.00 <GSN#na,T#1,SN#2>. The sequencer, based on upon receipt of the command CO#1 REJ IBM 1000@$140.00 <GSN#na,T#1,SN#2>, may generate and multicast an event CO#1 REJ IBM 1000@$140.00 <GSN#18,T#1,SN#2>, which would indicate that the subsequent order instruction to cancel the parent order should be ignored. Hence, the features of the present disclosure solve a technical problem by avoiding the need to generate and multicast two additional messages, one from an interface processor and another from the sequencer, to confirm that a cancelation order related to the parent order should be rejected, which consumes processing, bandwidth and memory resourcesof the system.Thesequencer of thepresent disclosure, byperformingordermanagement processingbasedon received commandswith a statemachine thatmaintains an updated in real time, current order state of a parent order,may generate and transmit only one event to effectuate rejection of an order to cancel the parent order, thus saving processing, bandwidth and memory resources of the system, and also minimizing processing latencies.

[0101] In some embodiments, the sequencer may similarly replace an order to change a state of a parent order with 18 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 content indicating rejection, similar to the circumstances described above for the order to cancel, which similarlymay save processing, bandwidth and memory resources of the system, and also minimize processing latencies.

[0102] Referring again to Table 1, the client gateway, based on processing the events GSN#14 and GSN#16, may generate a confirmationmessageCO#1TRD IBM1000@$140.00 indicating that the parent order is completely filled, and transmit the confirmation message over the communcation network to the computing device of the client.

[0103] In some embodiments, each sequencer in the system 10 may perform instructions from memory to execute a backup recovery process when the sequencer is operating as a backup sequencer, such that the sequencer may ensure that the events in the queue of the host server designated as associated with the sequencer match those events in the queue of another host server. The host recovery process may be initiated, for example, based a manually generated failover message transmitted over the network 18, or an automatic failover message generated, for example, by a processor at the host server 12 monitoring processing transactions at the host server.

[0104] In someembodiments, a backup to primary failovermaybe initiated at a backup sequencer via an interfaceof the system, such as at a host server. The interfacemay bea graphical user interface or someother command-based interface thatprovides for instructions tobe transmitted into thesystembyauser. In someembodiments, the failovermaybe initiated automatically by a failuremonitoring process that evaluates status of the primary sequencer and upon detecting a failover event initiates the failover. Exemplary criteria to automatically determinea failover eventmay includeaprocessbeing in an "alarm" or nonresponsive state, and a buildup of particular typemessages,whichwould indicate one ormore components is not finishing its processing.

[0105] Based on the failover message, the backup sequencer may initiate a failover process to compare the events stored in the event journal of the host server associated with the backup sequencer to the events stored in the queues of each of the host servers, using global sequence numbers, to determine if the events of the respective queues are synchronized. It is to be understood that based on the failover message being sent, the sequencer designated as associated with the host server 12 may no longer process messages to generate new events.

[0106] In some embodiments, the comparison may bemade at the host server associated with the primary sequencer, automatically responsive to the server associatedwith the backup sequencer transmitting the global sequence number of the last event stored in its queue to thehost server associatedwith the primary sequencer. Thehost server associatedwith the primary servermay determine if the global sequence number of the last event in its queuematches the received global sequence number. If there is match, the host server associated with the primary sequencer may transmit a proceed with failover instruction to the other server associated with the backup sequencer. If there is not a match, the re-player may determine any events missing from the other server’s queue based on the comparison, and re-transmit, by retrieving the events from the queue of the host server, the missing events to the backup sequencer. The queue manager at the sequencermay receive the re-transmitted events, and then add those events to the queue in sequence order according to the global sequence number.

[0107] After the proceed with failover instruction is received at the backup sequencer, or the queue of the backup sequencer is synchronized with the queues of the servers of the system, the backup sequencer may execute transfer of primary processing to itself, such that the backup sequencer now becomes the primary sequencer for the system 10 and generates new events starting with the next global sequence number after the global sequence number of the last event stored in its queue. In addition, thebackup sequencermay transmit a request to thepreviousprimary sequencer to forward all new commands to the backup sequencer. Accordingly, order instructions may be forwarded from the former primary sequencer to the new primary sequencer, once the backup sequencer becomes the primary sequencer.

[0108] In some embodiments, a backup to primary failover operation may include a backup sequencer receiving a failover notification indicating failure of the primary sequencer. The backup sequencer, automatically responsive to receiving the failover notification, may perform a back-up recovery procedure to obtain any event in the queue of the primary sequencer missing from a queue of the backup sequencer. In some embodiments, the backup sequencer may broadcast a retransmission request, on a unicast address, including a global sequence number of a last event stored in an event buffer of the backup sequencer to each re-player of host servers in the system. The backup sequencer may, responsive to receiving the failover notification, add to its event buffer each missing event obtained received from any re- player of thesystem, such that thehighest global sequencenumberof anevent in its event buffer is thesameas thehighest global sequencer number of an event it received.

[0109] Although the disclosure herein has been described with reference to particular examples, it is to be understood that theseexamplesaremerely illustrativeof theprinciples of thedisclosure. It is therefore tobeunderstood that numerous modificationsmay bemade to the examples and that other arrangementsmaybe devisedwithout departing from the spirit and scope of the disclosure as defined by the appended claims. Furthermore, while particular processes are shown in a specific order in the appended drawings, such processes are not limited to any particular order unless such order is expressly set forth herein. Rather, various steps can be handled in a different order or simultaneously, and steps may be omitted or added. 19 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 Claims 1. A system comprising: a first host server including at least one first processor as a first interface processor, a second interfaceprocessor, a third interface processor and a first queue manager; and a first sequencer including at least one second processor configured to control: receiving, on a command multicast address, a command indicating an order instruction related to a parent order from one of the first, second and third interface processors; performing order management processing, to determine an order state of the parent order and update the order state of the parent order to a current order state of the parent order, based on the order instruction, by applying the order instruction to a state machine of the first sequencer indicating an order history for the parent order; generating at least one event based on the order instruction and the current order state of the parent order, in which each of the at least one event includes (i) a header indicating a global sequence number corresponding to a time when the command is received at the first sequencer, a topic identifier indicating a publisher of the command and a topic sequence number for the topic identifier, and (ii) a payload indicating at least a portion of the order instruction; multicasting, on an event multicast address, the at least one event to the first queue manager, a second queue manager of a second host server and a second sequencer; wherein the first queue manager is configured to control: receiving the at least one event from the first sequencer; and adding the at least one event to a first queue of a memory of the first host server; wherein each of the first, second and third interface processors is configured to control: acquiring the at least one event from the first queue, and automatically in response to acquiring the at least one event from the first queue, determining from the at least one event a next action, in which the next action is at least one of (i) transmitting, on the commandmulticast address, another command indicating another order instruction related to the parent order to the first sequencer, (ii) transmitting, over a communication network, a message to execute a trade related to the parent order to a remote exchange computing device, (iii) transmitting, over the communication network, a trade confirmation to a client computing device, or (iv) updatingamemoryof agiven interfaceprocessor such that information related to theparent order stored in the memory of the given interface processor reflects the current order state of the parent order at the state machine of the first sequencer; wherein the first sequencer is configured to control: (A) automatically when a first given order instruction indicated by a first given command, received on the commandmulticast address, is to place an order for a first portion of a given first parent order of a given client, performing order management processing with the state machine to update an order state of the given first parent order to a current order state of the given first parent order based on the first given command; (B) automatically when a second given order instruction indicated by a single second given command, receivedon thecommandmulticast address, indicatesa tradeof asecondportionof thegivenfirst parent order of the given client has been completed, performing order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order, based on the single second given command, generating a first event as a client order trade confirm that indicates completion of a trade of the second portion of the given first parent order on the remote exchange computing device and a second event as an exchange order trade confirm that indicates completion of the trade of the second portion of the given first parent order on the remote exchange computing device, and multicasting, on the event multicast address, the first event and the second event to the first queue 20 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 manager and the second queue manager; and (C) automatically when a given third order instruction indicated by a third command, received on the commandmulticast address, indicates a request to change an order state of the given first parent order, performing theordermanagement processingwith thestatemachine toupdate theorder stateof the given first parent order to the current order state of the given first parent order based on the third command, anddeterminewhether the given third order instruction is in conflictwith the current order state of the given first parent order, in response to determining that the request to change the order state is in conflict with the current order stateof thegivenfirst parentorder, generatinga thirdeventasaclient order indicating rejection of the request to change theorder state of the given first parent order, such that the third eventwill be ignored by each of the first, second and third interface processors, and multicasting, on the event multicast address, the third event to the first queue manager and the second queue manager; wherein the first queue manager is configured to control: receiving the first, second and third events from the first sequencer; and adding the first, second and third events to the first queue; wherein the first interface processor is configured to control: acquiring the second event from the first queue and transmitting a command response, over the commu- nication network, to the client computing device confirming execution of the second portion of the given first parent order; and wherein the third interface processor is configured to control: acquiring the first event from the first queue and transmitting a command over the communication network to the remoteexchangecomputingdevice toexecutea tradeof thesecondportionof thegivenfirst parent order. 2. The system of claim 1, wherein theordermanagement processingupdates theorder state of theparent order to indicate theparent order is at least partially filled. 3. The system of claim 1, wherein the order management processing is performedwith the statemachine to update the order state of the given first parent order to indicate a conflict between the given third order instruction for the given first parent order and the current order state of the given first parent order. 4. The system of claim 1, wherein the order management processing is performedwith the statemachine to update the order state of the given first parent order to indicate the given third order instruction is invalid. 5. The system of claim 1, wherein the second interface processor is configured to control: acquiring, from the first queue, a fourth event having a fourth order instruction related to the given first parent order; generating a fifth command including a fifth order instruction based on processing of the fourth event; and multicasting, on the command multicast address, the fifth command to the first sequencer; and wherein the first sequencer is configured to control: receiving, on the command multicast address, the fifth command, performing order management processing with the state machine to indicate the fifth order instruction is related to the given first parent order in a hierarchy of given order instructions for the given first parent order arranged by time of receipt at the first sequencer; generating a fifth event indicating the fifth order instruction based on the order management processing 21 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 performed based on the fifth order instruction; and multicasting, on the eventmulticast address, the fifth event to the first queuemanager and the second queue manager; and wherein the first queue manager is configured to control: receiving the fifth event from the first sequencer; and adding the fifth event to the first queue. 6. The system of claim 1, wherein the first sequencer is configured to control: receiving, on the commandmulticast address, a fourth command including a fourth order instruction related to the parent order from a smart order router as one of the interface processors; performing order management processing with the state machine to update the order state of the parent order in a hierarchy of given order instructions related to the parent order, in which the fourth order instruction is indicated subsequently in the hierarchy to a fifth order instruction related to the parent order of a fifth command generated by the second interface processor based on a fifth event acquired from the first queue; generating a fourth event indicating the fourth order instruction for the parent order in a hierarchy of given order instructions for the parent order; and multicasting, on the event multicast address, the fourth event to the first queue manager and the second queue manager; wherein the first queue manager is configured to control: receiving the fourth event from the first sequencer; and adding the fourth event to the first queue. 7. The system of claim 1, further comprising the second host server, wherein the second sequencer is of the second host server and configured to control: receiving a failover notification indicating failure of the first sequencer, and automatically responsive to receiving the failover notification, performing a back-up recovery procedure toobtain anyevent in the first queuemissing fromasecondqueuemaintainedbyasecondqueuemanager of the secondhost server, by controllingbroadcastinga retransmission request, onaunicast address, including a global sequence number of a last event stored in an event buffer of the second sequencer to each re-player of the first host server and the second host server, and to cause the second queue manager of the second host server to add each missing event obtained to the second queue thereof received from any re-player of the first host server and the second host server. 8. The system of claim 1, in which the state machine is updated for the given first parent order based on the order instruction, by the at least one second processor querying an order table of given parent orders stored in amemory of the first sequencer and indicating given order histories respectively for the given parent orders. 9. The system of claim 1, wherein the first sequencer is configured to control: automatically when the ordermanagement processing determines that the current order state of the given first parent order is the given first parent order is at least partially unfilled based on the first given command such that execution of the first portion of the given first parent order is permissible based on the first given command, generating a fourth event as an exchange order indicating to place an order for the first portion of the given first parent order on the remote exchange computing device, and multicasting, on the event multicast address, the fourth event to the first and second queue managers. 10. The system of claim 1, wherein the first sequencer is configured to control: when the given third order instruction of the third command indicates a request to cancel at least a portion of the given first parent order, 22 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 performing the order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order based on the third command and determine whether the current order state of the given first parent order is completely filled, in response todetermining that thecurrent order stateof thegivenfirst parent order is completely filled, generating a fourth event as a client order indicating rejection of the request to cancel the at least a portion of the given first parent order, such that the fourth event will be ignored by each of the first, second and third interface processors; and multicasting, on the event multicast address, the fourth event to the first queue manager and the second queue manager. 11. The system of claim 1, wherein the first sequencer is configured to control: when the given third order instruction of the third command indicates a request to amend the given first parent order, performing the order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order based on the third command and determine whether the current order state of the given first parent order indicates an amount of the given first parent order is available to amend without conflicting with a previous order instruction for the given first parent order, in response todetermining that thecurrent order stateof thegivenfirst parent order is in conflictwith thegiven third order instruction to amend the given first parent order, generating a fourth event as a client order indicating rejection of the request to amend the given first parent order, such that the fourth event will be ignored by each of the first, second and third interface processors; and multicasting, on the event multicast address, the fourth event to the first queue manager and the second queue manager. 12. The system of claim 1, in which a command as the parent order is received at the first interface processor over the communication network from the client computing device. 13. A method comprising: controlling, by at least one processor of a first sequencer, receiving, on a commandmulticast address, a command indicating an order instruction related to a parent order from one of first, second and third interface processors of a first host server, in which the first host server includes at least one second processor as the first, second and third interface processors and a first queue manager; performing order management processing, to determine an order state of the parent order and update the order state of the parent order to a current order state of the parent order, basedon theorder instruction, by applying the order instruction to a state machine at the first sequencer indicating an order history for the parent order; generating at least one event based on the order instruction and the current order state of the parent order, inwhicheachof theat least oneevent includes (i) aheader indicatingaglobal sequencenumber corresponding to a time when the command is received at the first sequencer, a topic identifier indicating a publisher of the commandanda topic sequencenumber for the topic identifier, and (ii) a payload indicating at least a portion of the order instruction; multicasting, on an event multicast address, the at least one event to the first queue manager, a second queue manager of a second host server and a second sequencer; wherein the first queue manager is configured to control: receiving the at least one event from the first sequencer; and adding the at least one event to a first queue of a memory of the first host server; wherein each of the first, second and third interface processors is configured to control: acquiring the at least one event from the first queue, and automatically in response to acquiring the at least one event from the first queue, determining from the at least one event a next action, in which the next action is at least one of (i) transmitting, on the command multicast address, another command indicating another order instruction related to the parent order to the first sequencer, (ii) transmitting, over a communication network, amessage toexecute a trade related to the parent order to a remote exchange computing device, (iii) transmitting, over the communication network, a trade confirmation to a client computing device, or (iv) updating amemory of a given interfaceprocessor such that 23 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 information related to the parent order stored in the memory of the given interface processor reflects the current order state of the parent order at the state machine of the first sequencer; (A) automatically when a first given order instruction indicated by a first given command, received on the commandmulticast address, is to place an order for a first portion of a given first parent order of a given client, performing order management processing with the state machine to update an order state of the given first parent order to a current order state of the given first parent order based on the first given command; (B) automatically when a second given order instruction indicated by a single second given command, received on the command multicast address, indicates a trade of a second portion of the given first parent order of the given client has been completed, performing order management processing with the state machine to update the order state of the given first parent order to thecurrent order stateof thegivenfirst parent order, basedon thesinglesecondgiven command, generating a first event as a client order trade confirm that indicates completion of a trade of the second portion of the given first parent order on the remote exchange computing device and a second event as an exchange order trade confirm that indicates completion of the trade of the second portion of the given first parent order on the remote exchange computing device, and multicasting, on the event multicast address, the first event and the second event to the first queue manager and the second queue manager; and (C) automatically when a given third order instruction indicated by a third command, received on the command multicast address, indicates a request to change an order state of the given first parent order, performing the order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order based on the third command, and determine whether the given third order instruction is in conflict with the current order state of the given first parent order, in response to determining that the request to change the order state is in conflict with the current order state of the given first parent order, generating a third event as a client order indicating rejection of the request to change theorder stateof thegivenfirst parent order, such that the thirdeventwill be ignoredby each of the first, second and third interface processors, and multicasting, on the event multicast address, the third event to the first queue manager and the second queue manager; wherein the first queue manager is configured to control: receiving the first, second and third events from the first sequencer; and adding the first, second and third events to the first queue; wherein the first interface processor is configured to control: acquiring the second event from the first queue and transmitting a command response, over the communication network, to the client computing device confirming execution of the second portion of the given first parent order; and wherein the third interface processor is configured to control: acquiring the first event from the first queue and transmitting a command over the communication network to the remote exchange computing device to execute a trade of the second portion of the given first parent order. 14. The method of claim 13, wherein theordermanagement processingupdates theorder state of theparent order to indicate theparent order is at least partially filled. 15. The method of claim 13, wherein the order management processing is performedwith the statemachine to update the order state of the given first parent order to indicate a conflict between the given third order instruction for the given first parent order and the current order state of the given first parent order. 16. The method of claim 13, 24 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 wherein the order management processing is performedwith the statemachine to update the order state of the given first parent order to indicate the given third order instruction is invalid. 17. The method of claim 13, wherein the second interface processor is configured to control: acquiring, from the first queue, a fourth event having a fourth order instruction related to the given first parent order; generating a fifth command including a fifth order instruction based on processing of the fourth event; and multicasting, on the command multicast address, the fifth command to the first sequencer; and further comprising controlling, by the at least one processor: receiving, on the command multicast address, the fifth command, performing order management processing with the state machine to indicate the fifth order instruction is related to the given first parent order in a hierarchy of given order instructions for the given first parent order arranged by time of receipt at the first sequencer; generating a fifth event indicating the fifth order instruction based on the order management processing performed based on the fifth order instruction; and multicasting, on the eventmulticast address, the fifth event to the first queuemanager and the second queue manager; and wherein the first queue manager is configured to control: receiving the fifth event from the first sequencer; and adding the fifth event to the first queue. 18. The method of claim 13, further comprising: controlling, by the at least one processor: receiving, on the commandmulticast address, a fourth command including a fourth order instruction related to the parent order from a smart order router as one of the interface processors; performing order management processing with the state machine to update the order state of the parent order in a hierarchy of given order instructions related to the parent order, in which the fourth order instruction is indicated subsequently in the hierarchy to a fifth order instruction related to the parent order of a fifth command generated by the second interface processor based on a fifth event acquired from the first queue; generating a fourth event indicating the fourth order instruction for the parent order in a hierarchy of given order instructions for the parent order; and multicasting, on the event multicast address, the fourth event to the first queue manager and the second queue manager; wherein the first queue manager is configured to control: receiving the fourth event from the first sequencer; and adding the fourth event to the first queue. 19. The method of claim 13, further comprising controlling, by the at least one processor, when the first sequencer is in a backup operating state, receiving a failover notification indicating failure of a given primary sequencer, and automatically responsive to receiving the failover notification, performing a back-up recovery procedure to obtain any event in a given queue of the given primary sequencer missing from the first queue, by controlling broadcasting a retransmission request, on a unicast address, including a global sequence number of a last event stored in the first queue to each re-player of at least the second host server, and to cause the first queuemanager to add eachmissing event obtained to the first queue received from any re- 25 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 player. 20. The method of claim 13, in which the state machine is updated for the given first parent order based on the order instruction, by the at least one processor querying an order table of given parent orders stored in amemory of the first sequencer and indicating given order histories respectively for the given parent orders. 26 EP 4 764 999 A2 5 10 15 20 25 30 35 40 45 50 55 27 EP 4 764 999 A2 28 EP 4 764 999 A2 29 EP 4 764 999 A2 30 EP 4 764 999 A2 31 EP 4 764 999 A2 REFERENCES CITED IN THE DESCRIPTION This list of references cited by the applicant is for the reader’s convenience only. It does not form part of the European patent document. Even though great care has been taken in compiling the references, errors or omissions cannot be excluded and the EPO disclaims all liability in this regard. Patent documents cited in the description • US 62968415

[0001] (19) *EP004764999A3* (11) EP 4 764 999 A3 (12) EUROPEAN PATENT APPLICATION (88) Date of publication A3: 08.07.2026 Bulletin 2026 / 28 (43) Date of publication A2: 24.06.2026 Bulletin 2026 / 26 (21) Application number: 25158908.1 (22) Date of filing: 29.01.2021 (51) International Patent Classification (IPC): G06Q 40 / 04 (2012.01) G06Q 40 / 06 (2012.01) G06Q 10 / 06 (2023.01) G06Q 10 / 10 (2023.01) G06Q 30 / 06 (2023.01) (52) Cooperative Patent Classification (CPC): G06Q 40 / 04; G06Q 40 / 06 (84) Designated Contracting States: AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR (30) Priority: 31.01.2020 US 202062968415 P (62) Document number(s) of the earlier application(s) in accordance with Art. 76 EPC: 21747290.1 / 4 073 724 (27) Previously filed application: 29.01.2021 US PCT / US2021 / 015761 (71) Applicant: CFPH, LLC New York, NY 10022 (US) (72) Inventor: Solodovnik, Aleksey Brooklyn, NY, 11235 (US) (74) Representative: Mzb PartmbB Schloßberg 10 71032 Böblingen (DE) (54) SYSTEM AND METHOD FOR MANAGING AND PROCESSING SEQUENCED EVENTS IN A DISTRIBUTED NETWORK (57) System and method for electronic order man- agement processing may include a sequencer that up- dates a parent order status maintained at the sequencer based on an order instruction, and generates and multi- casts to interface processors of a host server a sequence of events generated based on order instructions and a current order state of the parent order. An event may indicate an order instruction of or related to the parent order, confirmation of completion of a client order or an exchange order of a trade of a portion of the parent order, or an order instruction related to the parent order deter- mined to be in conflict with the current order state. Events may be stored on a queue at a host server according to global sequence numbers assigned at the sequencer, and the interfaceprocessorsmaydetermineanext action for order processing based on the events on the queue. EP 4 76 4 99 9 A 3 Processed by Luminess, 75001 PARIS (FR) 2 EP 4 764 999 A3 5 10 15 20 25 30 35 40 45 50 55 3 EP 4 764 999 A3 5 10 15 20 25 30 35 40 45 50 55 摘要 用于电子订单管理处理的系统和方法可以包括排序器,所述排序器基于订单指令更新在所述排序 器处维护的父订单状态,并且生成基于订单指令和所述父订单的当前订单状态生成的事件序列, 以及将所述事件序列多播至主机服务器的接口处理器。事件可以指示所述父订单的订单指令或与 所述父订单相关的订单指令、所述父订单的一部分交易的客户订单或交易所订单的完成确认、或 者被确定为与所述当前订单状态冲突的与所述父订单相关的订单指令。事件可以按照在所述排序 器处分配的全局序列号存储在主机服务器处的队列中,并且所述接口处理器可以基于所述队列中 的事件确定用于订单处理的下一动作。

Claims

1. A system comprising: a first host server including at least one first processor as a first interface processor, a second interface processor, a third interface processor and a first queue manager; and a first sequencer including at least one second processor configured to control: receiving, on a command multicast address, a command indicating an order instruction related to a parent order from one of the first, second and third interface processors; performing order management processing, to determine an order state of the parent order and update the order state of the parent order to a current order state of the parent order, based on the order instruction, by applying the order instruction to a state machine of the first sequencer indicating an order history for the parent order; generating at least one event based on the order instruction and the current order state of the parent order, in which each of the at least one event includes (i) a header indicating a global sequence number corresponding to a time when the command is received at the first sequencer, a topic identifier indicating a publisher of the command and a topic sequence number for the topic identifier, and (ii) a payload indicating at least a portion of the order instruction; multicasting, on an event multicast address, the at least one event to the first queue manager, a second queue manager of a second host server and a second sequencer; wherein the first queue manager is configured to control: receiving the at least one event from the first sequencer; and adding the at least one event to a first queue of a memory of the first host server; wherein each of the first, second and third interface processors is configured to control: acquiring the at least one event from the first queue, and automatically in response to acquiring the at least one event from the first queue, determining from the at least one event a next action, in which the next action is at least one of (i) transmitting, on the command multicast address, another command indicating another order instruction related to the parent order to the first sequencer, (ii) transmitting, over a communication network, a message to execute a trade related to the parent order to a remote exchange computing device, (iii) transmitting, over the communication network, a trade confirmation to a client computing device, or (iv) updating a memory of a given interface processor such that information related to the parent order stored in the memory of the given interface processor reflects the current order state of the parent order at the state machine of the first sequencer; wherein the first sequencer is configured to control: (A) automatically when a first given order instruction indicated by a first given command, received on the command multicast address, is to place an order for a first portion of a given first parent order of a given client, performing order management processing with the state machine to update an order state of the given first parent order to a current order state of the given first parent order based on the first given command; (B) automatically when a second given order instruction indicated by a single second given command, received on the command multicast address, indicates a trade of a second portion of the given first parent order of the given client has been completed, performing order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order, based on the single second given command, generating a first event as a client order trade confirm that indicates completion of a trade of the second portion of the given first parent order on the remote exchange computing device and a second event as an exchange order trade confirm that indicates completion of the trade of the second portion of the given first parent order on the remote exchange computing device, and multicasting, on the event multicast address, the first event and the second event to the first queue manager and the second queue manager; and (C) automatically when a given third order instruction indicated by a third command, received on the command multicast address, indicates a request to change an order state of the given first parent order, performing the order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order based on the third command, and determine whether the given third order instruction is in conflict with the current order state of the given first parent order, in response to determining that the request to change the order state is in conflict with the current order state of the given first parent order, generating a third event as a client order indicating rejection of the request to change the order state of the given first parent order, such that the third event will be ignored by each of the first, second and third interface processors, and multicasting, on the event multicast address, the third event to the first queue manager and the second queue manager; wherein the first queue manager is configured to control: receiving the first, second and third events from the first sequencer; and adding the first, second and third events to the first queue; wherein the first interface processor is configured to control: acquiring the second event from the first queue and transmitting a command response, over the communication network, to the client computing device confirming execution of the second portion of the given first parent order; and wherein the third interface processor is configured to control: acquiring the first event from the first queue and transmitting a command over the communication network to the remote exchange computing device to execute a trade of the second portion of the given first parent order.

2. The system of claim 1, wherein the order management processing updates the order state of the parent order to indicate the parent order is at least partially filled.

3. The system of claim 1, wherein the order management processing is performed with the state machine to update the order state of the given first parent order to indicate a conflict between the given third order instruction for the given first parent order and the current order state of the given first parent order.

4. The system of claim 1, wherein the order management processing is performed with the state machine to update the order state of the given first parent order to indicate the given third order instruction is invalid.

5. The system of claim 1, wherein the second interface processor is configured to control: acquiring, from the first queue, a fourth event having a fourth order instruction related to the given first parent order; generating a fifth command including a fifth order instruction based on processing of the fourth event; and multicasting, on the command multicast address, the fifth command to the first sequencer; and wherein the first sequencer is configured to control: receiving, on the command multicast address, the fifth command, performing order management processing with the state machine to indicate the fifth order instruction is related to the given first parent order in a hierarchy of given order instructions for the given first parent order arranged by time of receipt at the first sequencer; generating a fifth event indicating the fifth order instruction based on the order management processing performed based on the fifth order instruction; and multicasting, on the event multicast address, the fifth event to the first queue manager and the second queue manager; and wherein the first queue manager is configured to control: receiving the fifth event from the first sequencer; and adding the fifth event to the first queue.

6. The system of claim 1, wherein the first sequencer is configured to control: receiving, on the command multicast address, a fourth command including a fourth order instruction related to the parent order from a smart order router as one of the interface processors; performing order management processing with the state machine to update the order state of the parent order in a hierarchy of given order instructions related to the parent order, in which the fourth order instruction is indicated subsequently in the hierarchy to a fifth order instruction related to the parent order of a fifth command generated by the second interface processor based on a fifth event acquired from the first queue; generating a fourth event indicating the fourth order instruction for the parent order in a hierarchy of given order instructions for the parent order; and multicasting, on the event multicast address, the fourth event to the first queue manager and the second queue manager; wherein the first queue manager is configured to control: receiving the fourth event from the first sequencer; and adding the fourth event to the first queue.

7. The system of claim 1, further comprising the second host server, wherein the second sequencer is of the second host server and configured to control: receiving a failover notification indicating failure of the first sequencer, and automatically responsive to receiving the failover notification, performing a back-up recovery procedure to obtain any event in the first queue missing from a second queue maintained by a second queue manager of the second host server, by controlling broadcasting a retransmission request, on a unicast address, including a global sequence number of a last event stored in an event buffer of the second sequencer to each re-player of the first host server and the second host server, and to cause the second queue manager of the second host server to add each missing event obtained to the second queue thereof received from any re-player of the first host server and the second host server.

8. The system of claim 1, in which the state machine is updated for the given first parent order based on the order instruction, by the at least one second processor querying an order table of given parent orders stored in a memory of the first sequencer and indicating given order histories respectively for the given parent orders.

9. The system of claim 1, wherein the first sequencer is configured to control: automatically when the order management processing determines that the current order state of the given first parent order is the given first parent order is at least partially unfilled based on the first given command such that execution of the first portion of the given first parent order is permissible based on the first given command, generating a fourth event as an exchange order indicating to place an order for the first portion of the given first parent order on the remote exchange computing device, and multicasting, on the event multicast address, the fourth event to the first and second queue managers.

10. The system of claim 1, wherein the first sequencer is configured to control: when the given third order instruction of the third command indicates a request to cancel at least a portion of the given first parent order, performing the order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order based on the third command and determine whether the current order state of the given first parent order is completely filled, in response to determining that the current order state of the given first parent order is completely filled, generating a fourth event as a client order indicating rejection of the request to cancel the at least a portion of the given first parent order, such that the fourth event will be ignored by each of the first, second and third interface processors; and multicasting, on the event multicast address, the fourth event to the first queue manager and the second queue manager.

11. The system of claim 1, wherein the first sequencer is configured to control: when the given third order instruction of the third command indicates a request to amend the given first parent order, performing the order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order based on the third command and determine whether the current order state of the given first parent order indicates an amount of the given first parent order is available to amend without conflicting with a previous order instruction for the given first parent order, in response to determining that the current order state of the given first parent order is in conflict with the given third order instruction to amend the given first parent order, generating a fourth event as a client order indicating rejection of the request to amend the given first parent order, such that the fourth event will be ignored by each of the first, second and third interface processors; and multicasting, on the event multicast address, the fourth event to the first queue manager and the second queue manager.

12. The system of claim 1, in which a command as the parent order is received at the first interface processor over the communication network from the client computing device.

13. A method comprising: controlling, by at least one processor of a first sequencer, receiving, on a command multicast address, a command indicating an order instruction related to a parent order from one of first, second and third interface processors of a first host server, in which the first host server includes at least one second processor as the first, second and third interface processors and a first queue manager; performing order management processing, to determine an order state of the parent order and update the order state of the parent order to a current order state of the parent order, based on the order instruction, by applying the order instruction to a state machine at the first sequencer indicating an order history for the parent order; generating at least one event based on the order instruction and the current order state of the parent order, in which each of the at least one event includes (i) a header indicating a global sequence number corresponding to a time when the command is received at the first sequencer, a topic identifier indicating a publisher of the command and a topic sequence number for the topic identifier, and (ii) a payload indicating at least a portion of the order instruction; multicasting, on an event multicast address, the at least one event to the first queue manager, a second queue manager of a second host server and a second sequencer; wherein the first queue manager is configured to control: receiving the at least one event from the first sequencer; and adding the at least one event to a first queue of a memory of the first host server; wherein each of the first, second and third interface processors is configured to control: acquiring the at least one event from the first queue, and automatically in response to acquiring the at least one event from the first queue, determining from the at least one event a next action, in which the next action is at least one of (i) transmitting, on the command multicast address, another command indicating another order instruction related to the parent order to the first sequencer, (ii) transmitting, over a communication network, a message to execute a trade related to the parent order to a remote exchange computing device, (iii) transmitting, over the communication network, a trade confirmation to a client computing device, or (iv) updating a memory of a given interface processor such that information related to the parent order stored in the memory of the given interface processor reflects the current order state of the parent order at the state machine of the first sequencer; (A) automatically when a first given order instruction indicated by a first given command, received on the command multicast address, is to place an order for a first portion of a given first parent order of a given client, performing order management processing with the state machine to update an order state of the given first parent order to a current order state of the given first parent order based on the first given command; (B) automatically when a second given order instruction indicated by a single second given command, received on the command multicast address, indicates a trade of a second portion of the given first parent order of the given client has been completed, performing order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order, based on the single second given command, generating a first event as a client order trade confirm that indicates completion of a trade of the second portion of the given first parent order on the remote exchange computing device and a second event as an exchange order trade confirm that indicates completion of the trade of the second portion of the given first parent order on the remote exchange computing device, and multicasting, on the event multicast address, the first event and the second event to the first queue manager and the second queue manager; and (C) automatically when a given third order instruction indicated by a third command, received on the command multicast address, indicates a request to change an order state of the given first parent order, performing the order management processing with the state machine to update the order state of the given first parent order to the current order state of the given first parent order based on the third command, and determine whether the given third order instruction is in conflict with the current order state of the given first parent order, in response to determining that the request to change the order state is in conflict with the current order state of the given first parent order, generating a third event as a client order indicating rejection of the request to change the order state of the given first parent order, such that the third event will be ignored by each of the first, second and third interface processors, and multicasting, on the event multicast address, the third event to the first queue manager and the second queue manager; wherein the first queue manager is configured to control: receiving the first, second and third events from the first sequencer; and adding the first, second and third events to the first queue; wherein the first interface processor is configured to control: acquiring the second event from the first queue and transmitting a command response, over the communication network, to the client computing device confirming execution of the second portion of the given first parent order; and wherein the third interface processor is configured to control: acquiring the first event from the first queue and transmitting a command over the communication network to the remote exchange computing device to execute a trade of the second portion of the given first parent order.

14. The method of claim 13, wherein the order management processing updates the order state of the parent order to indicate the parent order is at least partially filled.

15. The method of claim 13, wherein the order management processing is performed with the state machine to update the order state of the given first parent order to indicate a conflict between the given third order instruction for the given first parent order and the current order state of the given first parent order.

16. The method of claim 13, wherein the order management processing is performed with the state machine to update the order state of the given first parent order to indicate the given third order instruction is invalid.

17. The method of claim 13, wherein the second interface processor is configured to control: acquiring, from the first queue, a fourth event having a fourth order instruction related to the given first parent order; generating a fifth command including a fifth order instruction based on processing of the fourth event; and multicasting, on the command multicast address, the fifth command to the first sequencer; and further comprising controlling, by the at least one processor: receiving, on the command multicast address, the fifth command, performing order management processing with the state machine to indicate the fifth order instruction is related to the given first parent order in a hierarchy of given order instructions for the given first parent order arranged by time of receipt at the first sequencer; generating a fifth event indicating the fifth order instruction based on the order management processing performed based on the fifth order instruction; and multicasting, on the event multicast address, the fifth event to the first queue manager and the second queue manager; and wherein the first queue manager is configured to control: receiving the fifth event from the first sequencer; and adding the fifth event to the first queue.

18. The method of claim 13, further comprising: controlling, by the at least one processor: receiving, on the command multicast address, a fourth command including a fourth order instruction related to the parent order from a smart order router as one of the interface processors; performing order management processing with the state machine to update the order state of the parent order in a hierarchy of given order instructions related to the parent order, in which the fourth order instruction is indicated subsequently in the hierarchy to a fifth order instruction related to the parent order of a fifth command generated by the second interface processor based on a fifth event acquired from the first queue; generating a fourth event indicating the fourth order instruction for the parent order in a hierarchy of given order instructions for the parent order; and multicasting, on the event multicast address, the fourth event to the first queue manager and the second queue manager; wherein the first queue manager is configured to control: receiving the fourth event from the first sequencer; and adding the fourth event to the first queue.

19. The method of claim 13, further comprising controlling, by the at least one processor, when the first sequencer is in a backup operating state, receiving a failover notification indicating failure of a given primary sequencer, and automatically responsive to receiving the failover notification, performing a back-up recovery procedure to obtain any event in a given queue of the given primary sequencer missing from the first queue, by controlling broadcasting a retransmission request, on a unicast address, including a global sequence number of a last event stored in the first queue to each re-player of at least the second host server, and to cause the first queue manager to add each missing event obtained to the first queue received from any re-player.

20. The method of claim 13, in which the state machine is updated for the given first parent order based on the order instruction, by the at least one processor querying an order table of given parent orders stored in a memory of the first sequencer and indicating given order histories respectively for the given parent orders.