Method and system for low latency basket calculation
DCFirst Claim
Patent Images
1. A method of processing data, the method comprising:
- streaming financial market data through a field programmable gate array (FPGA), the financial market data comprising a plurality of messages that are associated with a plurality of financial instruments, wherein the messages comprise price information about the financial instruments, the FPGA having a pipeline deployed thereon, the pipeline including a first hardware module and a second hardware module, wherein the second hardware module is downstream from the first hardware module;
the first hardware module determining a plurality of financial instrument baskets which pertain to the financial instruments based on the messages;
the first hardware module writing a plurality of delta events to a delta event buffer in response to a plurality of the streaming financial market data messages, wherein each delta event comprises (1) data indicative of a basket determined by the first module, (2) data indicative of a price delta for the financial instrument pertaining to that determined basket, and (3) data indicative of a weight for that financial instrument within that determined basket;
the second hardware module reading the delta events from the delta event buffer;
the second hardware module computing a plurality of net asset values (NAVs) for the determined baskets with respect to the read delta events using a delta calculation approach that is based on a contribution of the price information for the financial instruments to the NAVs,the second hardware module comprising;
a plurality of parallel computing paths, each computing path comprising NAV compute logic such that the computing paths are configured to simultaneously compute a plurality of different new NAVs for the determined baskets according to the delta calculation approach; and
wherein the second hardware module computing step comprises;
the second hardware module (1) accessing a plurality of memory tables that store a plurality of divisors and data values pertaining to old NAVs in association with a plurality of the baskets, and (2) retrieving divisors and data values pertaining to old NAVs from the memory tables for the determined baskets; and
the parallel computing paths simultaneously computing, via their respective NAV compute logic, a plurality of different new NAVs for the determined baskets according to the delta calculation approach using, for each determined basket, (1) the weight and price delta for the financial instrument pertaining to that determined basket, (2) the retrieved divisor for that determined basket, and (3) the retrieved data value pertaining to the old NAV for that determined basket; and
the first hardware module and the second hardware module operating together in a pipelined manner as the financial market data streams through the FPGA to perform the determining and computing steps simultaneously such that the determining step determines at least one financial instrument basket pertaining to a financial instrument represented by a message of the streaming financial market data while the computing step computes the new NAVs for a determined basket pertaining to a financial instrument represented by a previous message of the streaming financial market data.
6 Assignments
Litigations
0 Petitions
Accused Products
Abstract
A basket calculation engine is deployed to receive a stream of data and accelerate the computation of basket values based on that data. In a preferred embodiment, the basket calculation engine is used to process financial market data to compute the net asset values (NAVs) of financial instrument baskets. The basket calculation engine can be deployed on a coprocessor and can also be realized via a pipeline, the pipeline preferably comprising a basket association lookup module and a basket value updating module. The coprocessor is preferably a reconfigurable logic device such as a field programmable gate array (FPGA).
459 Citations
103 Claims
-
1. A method of processing data, the method comprising:
-
streaming financial market data through a field programmable gate array (FPGA), the financial market data comprising a plurality of messages that are associated with a plurality of financial instruments, wherein the messages comprise price information about the financial instruments, the FPGA having a pipeline deployed thereon, the pipeline including a first hardware module and a second hardware module, wherein the second hardware module is downstream from the first hardware module; the first hardware module determining a plurality of financial instrument baskets which pertain to the financial instruments based on the messages; the first hardware module writing a plurality of delta events to a delta event buffer in response to a plurality of the streaming financial market data messages, wherein each delta event comprises (1) data indicative of a basket determined by the first module, (2) data indicative of a price delta for the financial instrument pertaining to that determined basket, and (3) data indicative of a weight for that financial instrument within that determined basket; the second hardware module reading the delta events from the delta event buffer; the second hardware module computing a plurality of net asset values (NAVs) for the determined baskets with respect to the read delta events using a delta calculation approach that is based on a contribution of the price information for the financial instruments to the NAVs, the second hardware module comprising; a plurality of parallel computing paths, each computing path comprising NAV compute logic such that the computing paths are configured to simultaneously compute a plurality of different new NAVs for the determined baskets according to the delta calculation approach; and wherein the second hardware module computing step comprises; the second hardware module (1) accessing a plurality of memory tables that store a plurality of divisors and data values pertaining to old NAVs in association with a plurality of the baskets, and (2) retrieving divisors and data values pertaining to old NAVs from the memory tables for the determined baskets; and the parallel computing paths simultaneously computing, via their respective NAV compute logic, a plurality of different new NAVs for the determined baskets according to the delta calculation approach using, for each determined basket, (1) the weight and price delta for the financial instrument pertaining to that determined basket, (2) the retrieved divisor for that determined basket, and (3) the retrieved data value pertaining to the old NAV for that determined basket; and the first hardware module and the second hardware module operating together in a pipelined manner as the financial market data streams through the FPGA to perform the determining and computing steps simultaneously such that the determining step determines at least one financial instrument basket pertaining to a financial instrument represented by a message of the streaming financial market data while the computing step computes the new NAVs for a determined basket pertaining to a financial instrument represented by a previous message of the streaming financial market data. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59)
-
-
60. A system for processing data, the system comprising:
-
a field programmable gate array (FPGA) for processing streaming financial market data, the streaming financial market data comprising a plurality of messages that are associated with a plurality of financial instruments, wherein the messages comprise price information about the financial instruments, the FPGA having a pipeline deployed thereon, the pipeline comprising a basket association lookup hardware module and a downstream basket value updating hardware module, the FPGA further comprising a delta event buffer; and a memory accessible to the FPGA, wherein the memory comprises a plurality of memory tables that store a plurality of divisors and data values pertaining to a plurality of old net asset values (NAVs) in association with a plurality of financial instrument baskets; the basket association lookup hardware module configured to (1) determine a plurality of financial instrument baskets which pertain to the financial instruments based on the messages, and (2) write a plurality of delta events to the delta event buffer in response to a plurality of the streaming financial market data messages, wherein each delta event comprises (1) data indicative of a basket determined by the basket association lookup module, (2) data indicative of a price delta for the financial instrument pertaining to that determined basket, and (3) data indicative of a weight for that financial instrument within that determined basket; the basket value updating hardware module configured to (1) read the delta events from the delta event buffer, and (2) compute a plurality of NAVs for the determined baskets with respect to the read delta events using a delta calculation approach that is based on a contribution of the price information for the financial instruments to the NAVs, the basket value updating module hardware comprising; a plurality of parallel computing paths, each computing path comprising NAV compute logic such that the computing paths are configured to simultaneously compute a plurality of different new NAVs for the determined baskets according to the delta calculation approach; wherein the basket value updating hardware module is further configured to retrieve divisors and data values pertaining to old NAVs from the memory tables for the determined baskets; and wherein the parallel computing paths are configured to simultaneously compute, via their respective NAV compute logic, a plurality of different new NAVs for the determined baskets according to the delta calculation approach using, for each determined basket, (1) the price delta for the financial instrument pertaining to that determined basket, (2) the retrieved divisor for that determined basket, and (3) the retrieved data value pertaining to old NAV for that determined basket; and wherein the basket association lookup hardware module and the basket value updating hardware module are arranged in a pipelined manner such that the basket association lookup hardware module and the basket value updating hardware module are configured to operate simultaneously, wherein the basket association lookup hardware module is configured to determine a financial instrument basket pertaining to a financial instrument represented by a message of the streaming financial market data while the basket value updating hardware module is configured to compute the new NAVs for a determined basket pertaining to a financial instrument represented by a previous message of the streaming financial market data. - View Dependent Claims (61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103)
-
Specification