IP Library › Granted Patent US 12,288,107
Granted Patent B2
US 12,288,107 · App. 17/662,980 · Granted Apr 29, 2025

Delayed processing for electronic data messages in a distributed computer system

Inventors: John Vaccaro (New York, NY); Charles Mack (Madison, NJ); Andrey Tsiporukha (Brooklyn, NY); Tal Cohen (Melville, NY); Andrew Oppenheimer (New York, NY); Kyle Prem (Hartsdale, NY)
Assignee: NASDAQ, INC.
G06F9/546G06F16/9024G06Q40/04H04L49/901H04L67/1029G06F2209/547G06F2209/548
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,288,107
App. No.
17/662,980
Granted
Apr 29, 2025
Kind
B2
Abstract

A distributed computer system is provided. The distributed computer system includes at least one sequencer computing node and at least one matcher computing node. Electronic data messages are sequenced by the sequencer and sent to at least matcher computing node. The matcher computing node receives the electronic data messages and a reference value from an external computing source. New electronic data messages are put into a pending list before they can be acted upon by the matcher. A timer is started based on a comparison of the reference value (or a calculation based thereon) to at least one attribute or value of a new electronic data message. When the timer expires, the electronic data message is moved from the pending list to another list—where it is eligible to be matched against other, contra-side electronic data messages.

Claims (55)

1. A distributed computer system comprising:

a memory configured to store a data structure that includes a plurality of data transaction requests;

a processing system comprising instructions that, when executed by at least one hardware processor including in the processing system, cause the at least one hardware processor to perform operations comprising:

receiving a first data transaction request that includes a first value for a first parameter;

delaying activating a timer for the first data transaction request until at least a first condition is satisfied;

activating the timer for the first data transaction request based on satisfaction of the first condition;

during a time period in which the timer for the first data transaction is not expired, performing a first instance of a matching process between at least two different data transaction requests, wherein the first instance of the matching process does not take into account at least the first data transaction request; and

subsequent to expiration of the timer for the first data transaction request, performing a second instance of the matching process that takes into account the first data transaction request using a matching value that is a midpoint value between a pair of reference values, wherein subsequent to expiration of the timer for the first data transaction request the first data transaction request is associated with a second status.

2. The distributed computer system of claim 1 , wherein the operations further comprise:

obtaining at least one of the pair of reference values; and

wherein satisfaction of the first condition includes having the first value of the first data transaction request satisfy the at least one of the pair of reference value.

3. The distributed computer system of claim 2 , wherein the pair of reference values are based on or indicative of a current state of the data structure that includes at least two different types of data transaction requests.

4. The distributed computer system of claim 3 , wherein the pair of reference values are further based on external data received from at least one external computer system.

5. The distributed computer system of claim 1 , wherein the matching value for the first data transaction request is adjusted based on how the pair of reference values change over time.

6. The distributed computer system of claim 1 , wherein the data structure includes a pre-pending list, a pending list, an executable list, and a passive list,

wherein the first data transaction request is placed into the pre-pending list until the first condition is satisfied,

wherein the first data transaction request is placed into the pending list while the timer is activated,

wherein the first data transaction request is placed, after expiration of the timer, into the passive list in response to determination that the first value does not satisfy the first condition,

wherein the matching process performs the matching process by taking in account those data transaction requests that are in the executable list.

7. The distributed computer system of claim 1 , wherein the operations further comprise:

after activation of the timer for the first data transaction request and before expiration of the timer for the first data transaction request, adjusting the timer for the first data transaction request based on determination that the first value does not satisfy the first condition.

8. The distributed computer system of claim 7 , wherein the operations further comprise:

resetting the timer and only restarting the timer upon determination that the first value satisfies the first condition;

pausing the timer until determination that the first value satisfies the first condition; and

canceling the timer.

9. The distributed computer system of claim 1 , wherein the first data transaction request is only included into an instance of the matching process based on complete expiration of the timer for the first data transaction request.

10. The distributed computer system of claim 1 , wherein each one of a plurality of received data transaction requests is associated with a respective timer prior to being eligible to be included within an instance of the matching process, wherein different lengths of timers are used for different ones of the plurality of received data transaction requests.

11. The distributed computer system of claim 1 , further comprising:

a plurality of computing nodes, which include at least one sequencer node and a plurality of matcher nodes, the sequencer node configured to sequence electronic data messages that are distributed across the distributed computer system, the matcher nodes configured to perform matching processes, wherein a first matcher node of the plurality of matcher nodes is configured to perform the matching process, and wherein each of the plurality of computing nodes comprise at least one hardware processor.

12. The distributed computer system of claim 11 , wherein the first matcher node is configured to store a plurality of different data structures for each one of a plurality of different resource identifiers, wherein different matching processes are performed using each one of the plurality of different data structures for the first matcher node,

wherein electronic data transaction requests for each of the plurality of different resources identifiers that have active timers are stored in the same data structure,

wherein the matcher node is configured to, in response to expiration of a given timer for a corresponding electronic data transaction request, move the corresponding electronic data transaction request to a corresponding one of the plurality of different data structures that is associated with the resource identifier of the corresponding electronic data transaction request.

13. A method performed on a distributed computer system that includes memory, a transceiver, and at least one processor coupled to the memory and the transceiver, the method comprising:

storing a data structure that includes a plurality of data transaction requests;

receiving a first data transaction request that includes a first value for a first parameter;

delaying activating a timer for the first data transaction request until at least a first condition is satisfied;

activating the timer for the first data transaction request based on satisfaction of the first condition, wherein while the timer is active the first data transaction request is associated with a first status;

during a time period in which the timer for the first data transaction is not expired, performing a first instance of a matching process between at least two different data transaction requests, wherein the first instance of the matching process does not take into account at least the first data transaction request; and

subsequent to expiration of the timer for the first data transaction request, performing a second instance of the matching process that takes into account the first data transaction request using a matching value that is a midpoint value between a pair of reference values, wherein subsequent to expiration of the timer for the first data transaction request the first data transaction request is associated with a second status.

14. The method of claim 13 , further comprising:

obtaining at least one of the pair of reference values; and

wherein satisfaction of the first condition includes having the first value of the first data transaction request satisfy the at least one of the pair of reference value.

15. The method of claim 13 , wherein the matching value for the first data transaction request is adjusted based on how the pair of reference values change over time.

16. The method of claim 13 , further comprising:

after activation of the timer for the first data transaction request and before expiration of the timer for the first data transaction request, adjusting the timer for the first data transaction request based on determination that the first value does not satisfy the first condition.

17. The method of claim 13 , wherein each one of a plurality of received data transaction requests is associated with a respective timer prior to being eligible to be included within an instance of the matching process, wherein different lengths of timers are used for at least some of the plurality of received data transaction requests.

18. The method of claim 13 , further comprising:

comparing the first value that is included with the first data transaction request to another value that is derived from at least some of the plurality of data transaction requests that are pending, wherein the first condition is based on comparing the first value.

19. A non-transitory computer readable storage medium storing computer executable instructions for use with a computer system that includes at least one processor, memory, and a transceiver, the memory configured to store a data structure that includes a plurality of data transaction requests, the stored computer executable instructions comprising instructions that cause the computer system to perform operations including:

receiving a first data transaction request that includes a first value for a first parameter;

delaying activating a timer for the first data transaction request until at least a first condition is satisfied;

activating the timer for the first data transaction request based on satisfaction of the first condition, wherein while the timer is active the first data transaction request is associated with a first status;

during a time period in which the timer for the first data transaction is not expired, performing a first instance of a matching process between at least two different data transaction requests, wherein the first instance of the matching process does not take into account at least the first data transaction request; and

subsequent to expiration of the timer for the first data transaction request, performing a second instance of the matching process that takes into account the first data transaction request using a matching value that is a midpoint value between a pair of reference values, wherein subsequent to expiration of the timer for the first data transaction request the first data transaction request is associated with a second status.

20. The non-transitory computer readable storage medium of claim 19 , wherein each one of a plurality of received data transaction requests is associated with a respective timer prior to being eligible to be included within an instance of the matching process, wherein different timer lengths are used for at least some of the plurality of received data transaction requests.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 21, 2023
From: VACCARO, JOHN; MACK, CHARLES; TSIPORUKHA, ANDREY; COHEN, TAL; OPPENHEIMER, ANDREW; PREM, KYLE
To: NASDAQ, INC.
Reel/Frame 063048/0336 →
Continuity (4)
Continuation 16746600 · Jan 17, 2020
Continuation 15997232 · Jun 4, 2018
Provisional Application 62534050 · Jul 18, 2017
Related Publication 20220269550A1 · Aug 25, 2022
References Cited (38)
US 9996879B2 · Djurdjevic et al. · 2018 [cited by applicant]
US 10049404B2 · Weiss et al. · 2018 [cited by applicant]
US 10127615B1 · Givot · 2018 [cited by applicant]
US 20060015441A1 · Burkhardt · 2006 [cited by examiner]
US 20080021994A1 · Grelewicz et al. · 2008 [cited by applicant]
US 20100312716A1 · Lane · 2010 [cited by examiner]
US 20110320335A1 · Gorelik · 2011 [cited by examiner]
US 20120123925A1 · Daley et al. · 2012 [cited by applicant]
US 20130204759A1 · Lutnick · 2013 [cited by examiner]
US 20140095371A1 · Galinov et al. · 2014 [cited by applicant]
US 20140279348A1 · Petersen · 2014 [cited by examiner]
US 20150066727A1 · Wepsic et al. · 2015 [cited by applicant]
US 20150073967A1 · Katsuyama et al. · 2015 [cited by applicant]
US 20150081512A1 · Crutchfield et al. · 2015 [cited by applicant]
US 20150302441A1 · Katsuyama et al. · 2015 [cited by applicant]
US 20150310549A1 · Alderucci et al. · 2015 [cited by applicant]
US 20150341422A1 · Färnlöf et al. · 2015 [cited by applicant]
US 20150356679A1 · Schmitt · 2015 [cited by applicant]
US 20160055581A1 · Katsuyama et al. · 2016 [cited by applicant]
US 20160283599A1 · Zonabend · 2016 [cited by examiner]
US 20170004563A1 · Noviello et al. · 2017 [cited by applicant]
US 20170046783A1 · Hosman et al. · 2017 [cited by applicant]
US 20170103460A1 · Golubovsky et al. · 2017 [cited by applicant]
US 20170124649A1 · Schonberg · 2017 [cited by examiner]
US 20180276751A1 · Kavanagh et al. · 2018 [cited by applicant]
US 20190005582A1 · Kapur et al. · 2019 [cited by applicant]
Extended European Search Report for Application No. EP18835905.3, 12 pages, dated Nov. 20, 2020. [cited by applicant]
Communication pursuant to Article 94(3) EPC, for Application No. EP18835905.3, 18 pages, dated Sep. 2, 2021. [cited by applicant]
Summons to attend oral proceedings pursuant to Rule 115(1) EPC, for Application No. EP18835905.3, 14 pages, dated May 18, 2022. [cited by applicant]
Notification from the International Bureau for International Application No. PCT/US2018/035969, one page, mailed Aug. 2, 2019. [cited by applicant]
Notification from the International Bureau for International Application No. PCT/US2018/035969, 109 pages, mailed Aug. 2, 2019. [cited by applicant]
Third Party Observation issued in International Application No. PCT/US2018/035969, four pages, dated Jul. 26, 2019. [cited by applicant]
Securities and Exchange Commission Filing by NYSE MKT LLC for a proposed rule change, File No. SR-2017-05, https://www.nyse.corn/publicdocs/nyse/rnarkets/nyse-arnerican/rule-filings/filings/2017/NYSEMKT-2017-05.pdf, dat… [cited by applicant]
Securities and Exchange Commission, Release No. 34-80700, File No. SR-NYSEMKT-2017-05, https://www.sec.gov/rules/sro/nysernkt/2017/34-80700.pdf, dated May 16, 2017, (19 pages: pp. 34-52). [cited by applicant]
Trader Update, Subject “NYSE MKT transition to NYSE American”, https://www.nyse.corn/publicdocs/nyse/rnarkets/nyse-arnerican/Pillar_Update_NYSE_Arnerican_March_2017.pdf, Mar. 6, 2017, (two pages: pp. 53-54). [cited by applicant]
Specification for U.S. Pat. No. 10,127,615, “System And Method For Delaying An Executable Instruction That Would Otherwise Be Executable Immediately Upon Arrival At An Executing System” submitted with third-party observ… [cited by applicant]
International Preliminary Report on Patentability for International Application No. PCT/US2018/035969, 5 pages, mailed Nov. 20, 2019. [cited by applicant]
Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or Declaration in Application No. PCT/2018/035969 dated Aug. 27, 2018 (29 pages). [cited by applicant]