IP Library › Granted Patent US 11,609,782
Granted Patent B2
US 11,609,782 · App. 16/709,571 · Granted Mar 21, 2023

Delayed processing for electronic data messages in a distributed computer system

Inventors: Carl Ahlqvist (Stockholm, SE); Ulf Ahlenius (Bromma, SE); Robert Brouwer (London, GB); Johan Norén (Stockholm, SE)
Assignee: NASDAQ TECHNOLOGY AB
G06F9/466G06F9/546G06F16/2343G06F16/24558G06Q40/04
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 11,609,782
App. No.
16/709,571
Granted
Mar 21, 2023
Kind
B2
Abstract

A computer system is provided that includes a matching engine and a freezing process. The matching engine freezes one side of a two-sided data structure when an order is determined to matchable. The freezing process starts a timer based on the matching determination. Orders that are handled by the matching engine while the side is frozen are added to a queue. When the timer ends, the orders in the queue are processed against those orders that are now resting within the data structure.

Claims (66)

1. A distributed computer system comprising:

electronic memory configured to store a data structure that includes at least two different types of data transaction requests, wherein a first type of data transaction requests is contra-sided to a second type of data transaction requests;

a transceiver configured to receive data transaction requests for processing by the distributed computer system;

a processing system that includes at least one hardware processor, the processing system configured to:

receive, via the transceiver, a first data transaction request that is of the first type of data transaction requests;

determine whether the first data transaction request is matchable against any other data transaction requests that are pending within the data structure and contra-sided to the first data transaction request;

based on determination that the first data transaction request is matchable:

initiate a timer for a time period,

lock the first type of transaction requests from processing against the data structure while the timer is active, and

store the first data transaction request to a queue,

while the timer is active and has yet to expire, process subsequently received data transaction requests that are of the first type and add those subsequently received data transaction requests to the queue; and

as a result of expiration of the timer for the time period, unlock the first type of transaction requests to process against the data structure and process data transaction requests that are included in the queue against a current state of the data structure.

2. The distributed computer system of claim 1 , wherein the processing system is further configured to:

execute a matching engine computer process and a locking computer process, wherein the matching engine computer process handles determination of whether the first data transaction request is matchable against any other data transaction requests that are pending within the data structure and contra-sided to the first data transaction request, wherein the locking computer process handles initiation of the timer for the time period.

3. The distributed computer system of claim 2 , wherein the matching engine computer process and the locking computer process are separate computer processes.

4. The distributed computer system of claim 3 , wherein the matching engine computer process and the locking computer process are executed by the same computing device.

5. The distributed computer system of claim 1 , wherein the processing system is further configured to:

receive, via the transceiver, a second data transaction request that is of the first type of data transaction requests; and

based on the first type of transaction requests being locked from processing against the data structure, add the second data transaction request to the queue.

6. The distributed computer system of claim 5 , wherein the second data transaction request is not matchable when added to the queue.

7. The distributed computer system of claim 5 , wherein the second data transaction request is a request to modify an existing data transaction request that is already stored in the data structure.

8. The distributed computer system of claim 5 , wherein the processing system is further configured to:

receive, via the transceiver, a third data transaction request that is of the first type of data transaction requests; and

while, the first type of transaction requests are locked from processing against the data structure and determination that the third data transaction request is a request to cancel an existing data transaction request that is already stored in the data structure, cancel the existing data transaction request prior to unlocking of the type of transaction requests from processing.

9. The distributed computer system of claim 1 , wherein the processing system is further configured to:

receive, after the first data transaction request is received and while the first type of transaction requests is locked from processing against the data structure, a second data transaction request that is of the second type of data transaction requests, wherein the second data transaction request is a request to modify an existing data transaction request that is stored in the data structure; and

prior to processing the first data transaction request upon unlocking, modify at least one value of the existing data transaction request by processing the second data transaction request.

10. The distributed computer system of claim 9 , wherein, upon unlocking the first type of transaction requests to process against the data structure, the first data transaction request is determined to be matchable against the existing data transaction request for which the at least one value was modified based on the processing of the second data transaction request.

11. The distributed computer system of claim 1 , wherein all of the data transaction requests that are included in the queue when the type of transaction requests are unlocked for processing are given the same timestamp.

12. A method implemented on a computer system, the method comprising:

storing, to non-transitory computer memory of a computer system, a data structure that includes at least two different types of data transaction requests, wherein a first type of data transaction requests is contra-sided to a second type of data transaction requests;

receiving data transaction requests for processing by the computer system, the data transaction requests including at least a first data transaction request that is of the first type of data transaction requests;

determining whether the first data transaction request is matchable against any other data transaction requests that are pending within the data structure and contra-sided to the first data transaction request;

based on determination that the first data transaction request is matchable:

starting a timer for a time period,

locking the first type of transaction requests from processing against the data structure while the timer is active, and

adding the first data transaction request to a queue,

while the timer is active and has yet to expire, process subsequently received data transaction requests that are of the first type and add those subsequently received data transaction requests to the queue; and

as a result of expiration of the timer for the time period, unlocking the first type of transaction requests to process against the data structure and process data transaction requests that are included in the queue against a current state of the data structure.

13. The method of claim 12 , further comprising:

executing a matching engine computer process and a locking computer process,

wherein determining whether the first data transaction request is matchable against any other data transaction requests that are pending within the data structure and contra-sided to the first data transaction request is handled by the matching engine computer process,

wherein the timer for the time period is handled by the locking computer process.

14. The method of claim 13 , wherein the matching engine computer process and the locking computer process are separate computer processes that are executed on the same computing device.

15. The method of claim 12 , further comprising:

receiving a second data transaction request that is of the first type of data transaction requests; and

based on the first type of transaction requests being locked from processing against the data structure, adding the second data transaction request to the queue.

16. The method of claim 15 , wherein the second data transaction request is not matchable when added to the queue.

17. The method of claim 15 , wherein the second data transaction request is a request to modify an existing data transaction request that is already stored in the data structure.

18. The method of claim 15 , further comprising:

receiving a third data transaction request that is of the first type of data transaction requests; and

while, the first type of transaction requests are locked from processing against the data structure and determination that the third data transaction request is a request to cancel an existing data transaction request that is already stored in the data structure, cancelling the existing data transaction request prior to unlocking of the type of transaction requests from processing.

19. The method of claim 12 , further comprising

receiving, after the first data transaction request is received and while the first type of transaction requests is locked from processing against the data structure, a second data transaction request that is of the second type of data transaction requests, wherein the second data transaction request is a request to modify an existing data transaction request that is stored in the data structure; and

prior to processing the first data transaction request upon unlocking, modifying at least one value of the existing data transaction request by processing the second data transaction request,

wherein, upon unlocking the first type of transaction requests to process against the data structure, matching the first data transaction request to the existing data transaction request for which the at least one value was modified.

20. A non-transitory computer readable storage medium storing a computer executable instructions for use with a computer system, the stored instructions comprising instructions that cause the computer system to:

store, to electronic memory of the computer system, a data structure that includes at least two different types of data transaction requests, wherein a first type of data transaction requests is contra-sided to a second type of data transaction requests;

receive data transaction requests, the data transaction requests including a first data transaction request that is of the first type of data transaction requests;

determine whether the first data transaction request is matchable against any other data transaction requests that are pending within the data structure and contra-sided to the first data transaction request;

based on determination that the first data transaction request is matchable:

initiate a timer for a time period,

lock the first type of transaction requests from processing against the data structure while the timer is active, and

store the first data transaction request to a queue,

while the timer is active and has yet to expire, process subsequently received data transaction requests that are of the first type and add those subsequently received data transaction requests to the queue; and

as a result of expiration of the timer for the time period, unlock the first type of transaction requests to process against the data structure and process data transaction requests that are included in the queue against a current state of the data structure.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 14, 2021
From: AHLQVIST, CARL; AHLENIUS, ULF; NORÉN, JOHAN
To: NASDAQ TECHNOLOGY AB
Reel/Frame 058381/0402 →
Continuity (2)
Provisional Application 62783330 · Dec 21, 2018
Related Publication 20200201670A1 · Jun 25, 2020
Cited By (2)
US 12,462,304 US 12,541,795