IP Library › Granted Patent US 9,959,572
Granted Patent B2
US 9,959,572 · App. 15/055,144 · Granted May 1, 2018

Coordinated processing of data by networked computing resources

Inventors: Philip Iannaccone (New York, NY); Walter Michael Pitio (Morganville, NJ); Robert Park (New York, NY); John Schwall (New York, NY); Richard Steiner (Wyckoff, NJ); Allen Zhang (Princeton, NJ); Thomas L. Popejoy (New York, NY); Daniel Aisen (New York, NY); Bradley Katsuyama (New York, NY)
Assignee: ROYAL BANK OF CANADA
G06Q40/04G06Q10/06H04L41/0631H04L43/0864H04L43/10H04L67/1095H04L67/325H04L43/16H04L47/283
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 9,959,572
App. No.
15/055,144
Granted
May 1, 2018
Kind
B2
Abstract

Systems, methods, and computer-readable media for coordinating processing of data by multiple networked computing resources include monitoring data associated with a plurality of networked computing resources, and coordinating the routing of data processing segments to the networked computing resources.

Claims (43)

1. A system for coordinating processing of data by multiple networked computing resources, the system comprising at least one processor configured to:

receive from one or more data sources signals representing instructions for execution of a plurality of data processes executable by a plurality of networked computing resources, the data processes representing a proposed trade in a financial interest;

obtaining data associated with available liquidity of the financial interest at each of the plurality of networked computing resources;

divide each of the plurality of data processes into a plurality of data processing segments, each data processing segment divided from a single data process to be routed to at least one of the plurality of networked computing resources;

based at least partly on latencies in execution of prior data processing requests routed by the system to each of the plurality of networked computing resources, determine a plurality of timing parameters, each of the plurality of timing parameters to be associated with a corresponding one of the plurality of data processing segments;

based on the timing parameters and the available liquidity at each of the plurality of networked computing resources associated with each of the plurality of data processes, determine a timing sequence for routing the data processing segments for all of the plurality of data processes, the timing sequence determined to cause synchronized execution of the plurality of data processing segments by the plurality of networked computing resources; and

route the plurality of data processing segments to the plurality of corresponding networked computing resources based on the timing sequence.

2. The system of claim 1 , wherein dividing the at least one data process into a plurality of data processing segments comprises:

selecting to which of the plurality networked computing resources at least one of the plurality of data processing segments is to be routed; and

for each of the selected networked computing resources, determining a size of the corresponding at least one data process processing segments.

3. The system of claim 2 wherein the selection and the size determination are based at least partly on the available liquidity and a distribution of historical execution latencies associated with the plurality of computing resources.

4. The system of claim 3 , wherein the at least one processor is configured to:

when the distribution for a particular networked computing resource is a multimodal distribution:

the plurality of data processing segments include at least two data processing segments to be routed to the particular networked computing resource based on the multimodal distribution, and

determine the timing parameters for the at least two data processing segments based on the multimodal distribution.

5. The system of claim 3 , wherein dividing the at least one data process into a plurality of data processing segments comprises dividing the at least one data process into at least two data processing segments to be routed to the same networked computing resource; wherein the at least one processor is configured to determine the timing parameters for each of the at least two data processing segments.

6. The system of claim 3 , wherein the selection and the size determination are a function of the variance of the distributions of historical execution latencies for the plurality of networked computing resources.

7. The system of claim 1 wherein the at least one processor is configured to determine whether liquidity in addition to posted available liquidity is historically available at a particular networked computing resource; and wherein dividing the at least one data process includes dividing the at least one data process into at least two data processing segments to be routed to the particular networked computing resource, the at least two data processing segments having timing parameters to target the posted available trade liquidity and the additional liquidity.

8. A method for coordinating processing of data by multiple networked computing resources, the method comprising:

receiving from one or more data sources signals representing instructions for execution of a plurality of data processes executable by a plurality of networked computing resources, the data processes representing a proposed trade in a financial interest;

obtaining data associated with available liquidity of the financial interest at each of the plurality of networked computing resources;

dividing each of the plurality of data processes into a plurality of data processing segments, each data processing segment divided from a single data process to be routed to at least one of the plurality of networked computing resources;

based at least partly on latencies in execution of prior data processing requests routed by the system to each of the plurality of networked computing resources, determining a plurality of timing parameters, each of the plurality of timing parameters to be associated with a corresponding one of the plurality of data processing segments;

based on the timing parameters and the available liquidity at each of the plurality of networked computing resources associated with each of the plurality of data processes, determining a timing sequence for routing the data processing segments for all of the plurality of data processes, the timing sequence determined to cause synchronized execution of the plurality of data processing segments by the plurality of networked computing resources; and

routing the plurality of data processing segments to the plurality of corresponding networked computing resources based on the timing sequence.

9. The method of claim 8 , wherein dividing the at least one data process into a plurality of data processing segments comprises:

selecting to which of the plurality networked computing resources at least one of the plurality of data processing segments is to be routed; and

for each of the selected networked computing resources, determining a size of the corresponding at least one data process processing segments.

10. The method of claim 9 wherein the selection and the size determination are based at least partly on the available liquidity and a distribution of historical execution latencies associated with the plurality of computing resources.

11. The method of claim 10 , wherein

when the distribution for a particular networked computing resource is a multimodal distribution:

the plurality of data processing segments include at least two data processing segments to be routed to the particular networked computing resource based on the multimodal distribution, and

the method comprises determining the timing parameters for the at least two data processing segments based on the multimodal distribution.

12. The method of claim 10 , wherein dividing the at least one data process into a plurality of data processing segments comprises dividing the at least one data process into at least two data processing segments to be routed to the same networked computing resource; wherein the method comprises determining the timing parameters for each of the at least two data processing segments.

13. The method of claim 10 , wherein the selection and the size determination are a function of the variance of the distributions of historical execution latencies for the plurality of networked computing resources.

14. The method of claim 8 wherein the method comprises determining whether liquidity in addition to posted available liquidity is historically available at a particular networked computing resource; and wherein dividing the at least one data process includes dividing the at least one data process into at least two data processing segments to be routed to the particular networked computing resource, the at least two data processing segments having timing parameters to target the posted available trade liquidity and the additional liquidity.

15. A non-transitory computer-readable medium having stored thereon instructions which when executed by at least one processor, configure the at least one processor to:

receive from one or more data sources signals representing instructions for execution of a plurality of data processes executable by a plurality of networked computing resources, the data processes representing a proposed trade in a financial interest;

obtaining data associated with available liquidity of the financial interest at each of the plurality of networked computing resources;

divide each of the plurality of data processes into a plurality of data processing segments, each data processing segment divided from a single data process to be routed to at least one of the plurality of networked computing resources;

based at least partly on latencies in execution of prior data processing requests routed by the system to each of the plurality of networked computing resources, determine a plurality of timing parameters, each of the plurality of timing parameters to be associated with a corresponding one of the plurality of data processing segments;

based on the timing parameters and the available liquidity at each of the plurality of networked computing resources associated with each of the plurality of data processes, determine a timing sequence for routing the data processing segments for all of the plurality of data processes, the timing sequence determined to cause synchronized execution of the plurality of data processing segments by the plurality of networked computing resources; and

route the plurality of data processing segments to the plurality of corresponding networked computing resources based on the timing sequence.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2016
From: PITIO, WALTER MICHAEL; IANNACCONE, PHILIP
To: ROYAL BANK OF CANADA
Reel/Frame 037880/0942 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2016
From: PARK, ROBERT; KATSUYAMA, BRADLEY; STEINER, RICHARD; AISEN, DANIEL; ZHANG, ALLEN; SCHWALL, JOHN; POPEJOY, THOMAS L
To: ROYAL BANK OF CANADA
Reel/Frame 037881/0323 →
Continuity (6)
Continuation In Part 12796139 · Jun 8, 2010
Provisional Application 61285375 · Dec 10, 2009
Provisional Application 62126106 · Feb 27, 2015
Provisional Application 62126120 · Feb 27, 2015
Provisional Application 62132063 · Mar 12, 2015
Related Publication 20160182331A1 · Jun 23, 2016