Method and System for Low Latency Basket Calculation
First Claim
1. A method of processing data, the method comprising:
- streaming data through a processor, the data comprising a message, the message corresponding to a value for an element;
retrieving stored data based on the message, the retrieved data corresponding to a basket, the basket having the element as a member; and
computing a net value for the basket based on the retrieved data and the message;
wherein the retrieving step and the computing step are performed by the processor as the data streams through the processor.
6 Assignments
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).
267 Citations
99 Claims
-
1. A method of processing data, the method comprising:
-
streaming data through a processor, the data comprising a message, the message corresponding to a value for an element; retrieving stored data based on the message, the retrieved data corresponding to a basket, the basket having the element as a member; and computing a net value for the basket based on the retrieved data and the message; wherein the retrieving step and the computing step are performed by the processor as the data streams through the processor. - 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. A system for processing data, the system comprising:
a processor configured to (i) receive a stream of data, the data comprising at least one message, the message corresponding to a value for an element, (ii) retrieve stored data based on the message, the retrieved data corresponding to a basket, the basket having the element as a member, and (iii) compute a net value for the basket based on the retrieved data and the message. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54)
-
55. A method of processing data, the method comprising:
performing a plurality of basket calculation operations on a bit stream using a processor as the bit stream streams through the processor to thereby compute a plurality of net basket values. - View Dependent Claims (56, 57, 58, 59, 60)
-
61. An apparatus for computing a value pertaining to a net asset value (NAV) for a basket, the apparatus comprising:
a firmware pipeline configured to (i) receive a message comprising price information for a financial instrument and an identifier for the financial instrument, (ii) determine a plurality of baskets in which the financial instrument is a member based at least in part on the financial instrument identifier, and (iii) compute a delta contribution to a new NAV for each of the plurality of baskets. - View Dependent Claims (62, 63, 64, 65, 66, 67, 68)
-
69. A method for processing financial market data, the method comprising:
-
processing a stream of financial market data using a coprocessor to compute a net asset value for a financial instrument basket as the financial market data streams through the coprocessor; and detecting an arbitrage condition in connection with the basket based on the computed net asset value. - View Dependent Claims (70, 71, 72, 73, 74)
-
-
75. A method for processing data, the method comprising:
-
receiving a stream of data, the data comprising a value for an element; determining a basket which pertains to the element; and calculating a value applicable to the determined basket based at least in part on the element value; and wherein the determining step is performed by a first module in a pipeline; and wherein the calculating step is performed by a second module in the pipeline. - View Dependent Claims (76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87)
-
-
88. A method of administering a plurality of tables corresponding to a plurality of baskets, the method comprising:
-
storing a plurality of pointers in a first table, each pointer being indexed by an identifier for a financial instrument; storing a plurality of header blocks in a second table, the header blocks being indexed by the pointers, each header block being associated with a financial instrument, each header block comprising a plurality of basket identifiers for the baskets and a plurality of weight values corresponding to the baskets, the basket identifiers and weight values being stored in the table as a plurality of pairs, each weight value defining a weight for a financial instrument in the basket corresponding to the basket identifier that is paired with that weight value. - View Dependent Claims (89, 90, 91, 92)
-
-
93. A method for computing a basket value, the method comprising:
-
receiving a delta event, the delta event comprising a basket identifier for a basket, a price delta with respect to a financial instrument, the financial instrument being a member of the basket, and a weight value that represents a weight of the financial instrument within the basket; and retrieving a divisor value for the basket based on the basket identifier; computing a net asset value (NAV) for the basket according to a delta calculation approach based on the delta event and the divisor value. - View Dependent Claims (94)
-
-
95. An apparatus for computing a basket value, the apparatus comprising:
a processor configured to (i) receive a delta event, the delta event comprising a basket identifier for a basket, a price delta with respect to a financial instrument, the financial instrument being a member of the basket, and a weight value that represents a weight of the financial instrument within the basket, (ii) retrieve a divisor value for the basket based on the basket identifier, and (iii) compute a net asset value (NAV) for the basket according to a delta calculation approach based on the delta event and the divisor value.
-
96. A basket association method, the method comprising:
-
receiving a bit stream, the bit stream being representative of a message pertaining to a financial instrument, the message comprising a symbol identifier for the financial instrument and a global exchange identifier (GEID) for an exchange which pertains to the message; performing a lookup in a first table based on the symbol ID to retrieve a record from the first table; determining a pointer from the retrieved record; determining an index value from the retrieved record based on the GEID; performing a lookup in the second table based on the pointer and the index value to retrieve basket association data pertaining to each basket of which the financial instrument is a member; and outputting a bit stream that is representative of the retrieved basket association data.
-
-
97. A basket association apparatus, the apparatus comprising:
a processor configured to (i) receive a message pertaining to a financial instrument, the message comprising a symbol identifier for the financial instrument and a global exchange identifier (GEID) for an exchange which pertains to the message, (ii) perform a lookup in a first table based on the symbol ID to retrieve a record from the first table, (iii) determine a pointer from the retrieved record, (iv) determine an index value from the retrieved record based on the GEID, (v) perform a lookup in the second table based on the pointer and the index value to retrieve basket association data pertaining to each basket of which the financial instrument is a member, and (vi) output the retrieved basket association data.
-
98. A method of reporting updated basket values to a client, the method comprising:
-
receiving a bit stream, the bit stream being representative of a basket event, the basket event comprising a basket identifier for a basket and an updated net asset value (NAV) for the basket; retrieving a reference value for the basket based on the basket identifier; determining a dissimilarity between the retrieved reference value and the updated NAV; retrieving a trigger threshold value for the basket based on the basket identifier; comparing the dissimilarity with the retrieved trigger threshold value to thereby determine whether the updated NAV is to be reported to the client; and delivering a bit stream that is representative of the updated NAV to the client in response to a determination by the comparing step that the updated NAV should be reported to the client.
-
-
99. An apparatus for reporting updated basket values to a client, the apparatus comprising:
a processor configured to (i) receive a basket event, the basket event comprising a basket identifier for a basket and an updated net asset value (NAV) for the basket, (ii) retrieve a reference value for the basket based on the basket identifier, (iii) determine a dissimilarity between the retrieved reference value and the updated NAV, (iv) retrieve a trigger threshold value for the basket based on the basket identifier, (v) compare the dissimilarity with the retrieved trigger threshold value to thereby determine whether the updated NAV is to be reported to the client, and (vi) report the updated NAV to the client in response to a determination that the updated NAV should be reported to the client.
Specification