Distribution of electronic market data
11551297 · 2023-01-10
Assignee
Inventors
Cpc classification
H04N7/173
ELECTRICITY
H04L9/00
ELECTRICITY
G06Q40/00
PHYSICS
G06F15/16
PHYSICS
H04N7/20
ELECTRICITY
G06F9/30
PHYSICS
H04J3/26
ELECTRICITY
International classification
G06Q40/04
PHYSICS
H04N7/20
ELECTRICITY
H04N7/173
ELECTRICITY
Abstract
A system and method are provided that, among other things, can reduce the burden on receiving computers, increase data throughput, reduce system failure, and provide components of a scalable and flexible network architecture. Specifically, the system and method provide a multichannel-multicast network environment for use in dynamically assigning data to channels. This configuration is particularly useful in a trading network environment, as it effectively performs channel reassignments in a way not to disturb the receipt of the underlying data. While the example embodiments described herein pertain to electronic trading, the principles of the present invention may be equally applied in other environments where the advantages presented herein are beneficial.
Claims
1. A non-transitory computer readable medium having stored therein instructions executable by a processor, including instructions executable to: transmit a market data feed related to a tradeable object to a receiving computer device over a first communication channel based on tradeable object assignment information; dynamically update the tradeable object assignment information to reassign the tradeable object to a second communication channel based on market data related to the tradeable object; and, in response to updating, transmit the market data feed related to the tradeable object over both the first communication channel and the second communication channel to the receiving computer device to allow the receiving computer device to switch to the second communication channel.
2. The non-transitory computer readable medium of claim 1, wherein the market data used to reassign the tradeable object to the second communication channel comprises historical market data related to the tradeable object.
3. The non-transitory computer readable medium of claim 2, wherein the historical market data comprises historical traded volume data related to the tradeable object.
4. The non-transitory computer readable medium of claim 1, wherein the market data used to reassign the tradeable object to the second communication channel comprises current traded volume data related to the tradeable object.
5. The non-transitory computer readable medium of claim 1, wherein the market data feed is transmitted over both the first communication channel and the second communication channel for a predetermined period of time after the assignment information is updated.
6. The non-transitory computer readable medium of claim 5, wherein the market data feed is not transmitted over the first communication channel after the predetermined period of time expires.
7. The non-transitory computer readable medium of claim 1, wherein the receiving computer device comprises a client device.
8. The non-transitory computer readable medium of claim 1, wherein the processor is located at a gateway.
9. The non-transitory computer readable medium of claim 1, wherein the processor is located at an electronic exchange.
10. The non-transitory computer readable medium of claim 1, wherein the market data feed comprises price data for the tradeable object.
11. The non-transitory computer readable medium of claim 1, wherein the price data comprises a portion of the price data available for the tradeable object.
12. The non-transitory computer readable medium of claim 1, wherein dynamically updating the assignment information is further based on a type of the tradeable object.
13. The non-transitory computer readable medium of claim 1, wherein dynamically updating the assignment information is further based on a news event that affects a market for the tradeable object.
14. The non-transitory computer readable medium of claim 1, further comprising instructions executable to: provide updated assignment information to the receiving computer device.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) Example embodiments are described herein with reference to the following drawings, in which:
(2)
(3)
(4)
(5)
(6)
DETAILED DESCRIPTION OF THE EXAMPLE EMBODIMENTS
(7) The present invention provides, or is related to, a network configuration that, among other things, can reduce the burden on receiving computers, increase data throughput, reduce system failure, and provide components of a scalable and flexible network architecture. The present invention is particularly useful in a trading network environment. A trading network environment is one that distributes time sensitive data to receiving computers, such as price data. However, principles of the present invention may be equally applied in other environments where the advantages presented herein are beneficial. To illustrate aspects of the present invention, a system and method are illustrated in example form using the drawings referred to herein. One of ordinary skill will recognize, however, that such examples may be quickly and readily adaptable using the teachings described herein. Aspects of the present invention are protected by the accompanying claims. Limitations from the patent specification should not be improperly incorporated into the claims unless explicitly stated or otherwise inherently known.
I. Example Network Configuration
(8)
(9) According to
(10) Also according to
(11) According to
(12) Looking at the overall network configuration in
II. Example Channel and Product Assignments
(13)
(14) As shown in
(15) It may also be useful to assign only certain pieces of information to a channel or at least be given a separate product name. For instance, some traders are interested in only the inside market for a particular product. In that instance, it might be useful for the inside market to be assigned a separate channel or given a special product name. In another instance, some traders might be interested in all of the price data available for the particular product. In that instance, it might be useful for the inside market and the other price information to be assigned to the same channel or given a special product name. In this regard, one could assume that “D1, D2, D3, D4, and D5” shown in
(16) Irrespective of the product name or type, each product of the group is dynamically assigned to a channel. As such, one could say the channel/product table in
(17) Additionally, the channel assignments may be based on a hard-coded set of instructions, which cannot be altered by the user, or alternatively, the assignments may be based on user input, or a combination of hard-coded set of instructions and user input. An example of when the channel assignments could be considered hard-coded is when the electronic exchanges, themselves, assign their products to certain channels. This could be a single electronic exchange effort or an effort applied across the entire industry such that product-channel assignments are understood and followed (and perhaps even regulated). Further elaboration on the industry effort might include assigning energy products to channels one through eleven, currency products to channels eleven through fifteen, and so on. Another example of when the channel assignments could be considered hard-coded is when developers (or software vendors) outside of the exchange control their own hard-coded channel assignments.
(18) However, if the system is based on user input, then a graphical user interface can be provided to receive the necessary input. Then, using the graphical user interface, a trader (or some other user) could assign the products to channels or to a sub-set of channels, and even change assignments. While it is preferred that the assignment information remain at least somewhat dynamic in nature, it is also possible to combine some static assignments with dynamic ones, if so desired.
(19) Generally, the rate of dynamic reassignment is based on how channels are assigned. For instance, if the products are assigned based on product type, then the rate of reassignment would more than likely be low as the number of products added to a product type group are generally low. On the other hand, products that are assigned based on trading volume of the products (resulting in lots of price data), then the rate of reassignment might be higher to balance the load more evenly across the channels. More than not, however, it is preferable to balance loads across one or more channels to possibly increase throughput and to reduce downtime due to channel overloading (which can happen with static assignments).
(20) For purposes of illustration, the number of channels in
III. Example Operation
(21) Turning now to
(22) According to one example, master channel 112 could represent a stand-alone device that transmits channel/product information to trading computers 102, 104, 106, and 108. According to another example, master channel 112 could instead represent a component of another system, such as part of switch 110, a gateway, or an electronic exchange. Regardless of where the master channel 112 is situated within the network, it preferably provides channel/product assignments to the receiving computers. Then, the receiving computers use that information to make subscription choices. As stated above, master channel 112 could contain a copy of the channel/product listing, such as in memory, or have access to the channel/product listing. If the system is so designed, master channel 112 may actually generate the channel/product listing, such as by listening to electronic exchanges (if they were to transmit that information), or in an alternative example, by listening in on the price data being transmitted by the electronic exchanges.
(23) If master channel 112 is given the responsibility of generating the assignment information, master channel 112 may then also direct components of the network to transmit data according to the channel/product listing. For instance, master channel 112 could direct a gateway (e.g., 112, 114, and 116 in
(24) According to this snapshot in time, trading computer 102 has currently subscribed to “channels 2 and 3.” It might be that trading computer 102 wishes to trade or view information based on one or all of the products currently assigned to “channels 2 and 3.” Now, once channels have been subscribed to, the trading computer 102 can once again verify if indeed these channels are carrying the desired product information. If the channels are in error, then communication may be made back to switch 110 in an attempt to correct the error. However, this extra step of channel/product verification is not necessary for operation. Assuming the assignments are correct and it is the desired information, switch 110 multicasts information, and in this example—price data, onto the network. Trading computer 102 can then tune into “channel 1” using known means of multicast addressing or some other relevant protocol.
(25) Trading computer 104 has currently subscribed to “channel 7.” Accordingly, switch 110 multicasts information, and in this example—price data relating to products assigned to “channel 7,” onto the network. Trading computer 104 can then tune into “channel 7” using known means of multicast addressing or some other relevant protocol.
(26) Trading computer 106 has currently subscribed to “channels 3 and 6.” Accordingly, switch 110 multicasts information, and in this example—price data relating to products assigned to “channels 3 and 6,” onto the network. Trading computer 106 can then tune into “channels 3 and 6” using known means of multicast addressing or some other relevant protocol. It is useful to note that in this instance, trading computer 106 wishes to receive “channel 3,” which has presumably already been subscribed to by trading computer 102. If the channel has already been subscribed to and the information is already being multicast onto the network, then there is no need for switch 110 to multicast the channel again—hence the advantage of multicasting in this environment. Trading computer 106 can get the assignments from the master channel and can simply tune into “channel 3” on the network.
(27) Trading computer 108 has currently subscribed to “channels 1, 3, and 10.” Accordingly, switch 110 multicasts information, and in this example—price data relating to products assigned to “channels 1, 3, and 10,” onto the network. Trading computer 108 can then tune into “channels 1, 3, and 6” using known means of multicast addressing or some other relevant protocol. It is useful to note again that in this instance, because “channel 3” is presumably already being multicast on the network, then trading computer 108 can get the assignments from the master channel and can simply tune into “channel 3” on the network.
IV. Dynamic Assignment Example
(28)
(29) According to a first example, in a trading environment it could be that “product K” was experiencing high trading volume. As a result, the market was changing rapidly and “product K” needed more bandwidth than was currently given by sharing “channel 3” with “product L.” As such, the system determined that “channel 3” is beginning to reach its predefined limit and “channel 6” had the ability to carry the current load of “product L.” Thus, the change was made and a product was reassigned.
(30) According to a second example, in a trading environment it could be that “product L” was experiencing high trading volume, and not “product K.” As a result, the market was changing rapidly and “product L” needed more bandwidth than was currently given by sharing “channel 3” with “product K.” As such, the system determined that “channel 3” is beginning to reach its predefined limit and “channel 6” had the ability to better carry the current load of “product L.” Thus, the change was made and a product was reassigned.
(31) According to a third example, in a trading environment it could be that “product K” was about to experience high trading volume based on historical data—such at a certain time, “product K” typically trades heavy. As such, whether or not “product K” would actually experience high trading volume on this day, the system determined in advance that “channel 3” would quickly reach its predefined limit based on this historical evidence and also determined that “channel 6” had the ability to better carry the current load of “product L.” Thus, the change was made and a product was reassigned.
(32) According to a fourth example, in a trading environment it could be that the trader behind trading computer 106 and the trader behind trading computer 108 wished only to trade “product L.” Thus, in an effort to reduce the number of multicasts over the network, the system dynamically reassigned “product L” to “channel 6.” The system could then stop multicasting “channel 3.” The change was made and a product was reassigned.
V. Example Network Operation with Dynamic Assignment
(33) Turning to
(34) In the examples illustrated by
(35) If the network was applied in another environment like telecom, then rather than risk the dropping of a call or a message, the old channel (before the change in assignment) and the new channel (after the change in assignment) could be programmed to send the same data simultaneously. That way, subscribing devices can make the channel switch without experiencing a loss of data (or significantly reduced loss of data).
(36) Intelligent logic may be applied to the system to result in further advantages. For instance, the system may dynamically assign products to channels based on what is currently being traded. For instance, if a trader adds a subscription to a product on a channel that no one else on the network trades, then the system might dynamically assign that product to a new channel, so as not to disturb the other trading computers. The system might also dynamically assign products to channels based on an algorithm to reduce bandwidth consumption or system resources. As such, the system may be programmed according to an algorithm to dynamically add channels, reduce channels, change the assignments, and so on to achieve a desired goal (e.g., increasing throughput and/or reducing system failure). While this logic may be applied at any device in the system given the responsibility of assigning products to channels, using the examples above, such logic could be effectively applied at the master channel (112 in
VI. Conclusion
(37) As stated herein, the present invention provides a network configuration that, among other things, can reduce the burden on receiving computers, increase data throughput, reduce system failure, and provide components of a scalable and flexible network architecture. It is understood that systems that utilize aspects of the present invention will not necessarily enjoy all of the same advantages. For instance, application of the teachings described herein to certain systems might increase data throughput, while other applications will result in reduced system failure. As such, it is understood that a later developed system, which utilizes the claimed invention, will read on the presently claimed invention even if the system does not enjoy one or more of the advantages described herein. Moreover, aspects of the present invention may be utilized over a short duration, and therefore, may still read on the claimed invention.
(38) For example, the burden on receiving computers can be reduced because the information, which is communicated over the network, is neatly packaged onto channels that can be dynamically tailored according to certain criteria. The burden on receiving computers can also be reduced by simply reducing the amount of information that is communicated onto the network that requires filtering at the computer, such as by careful product/channel assignments.
(39) System failure can be reduced in some systems by performing appropriate load balancing across many channels. That way, systems will experience overloads or network delays due to large increases in information attempting to pass through a set channel size. Load balancing may also result in increasing overall system throughput.
(40) The example embodiment were illustrated in a trading environment. Specifically, “products” were used and assigned to channels. It should be understood that a “product” (which also refers to a “tradeable object”) refers to anything that can be traded with a price and quantity. It includes, but is not limited to, all types of tradeable events, goods, and financial products. For instance, stocks, options, bonds, futures, currency, and warrants, as well as funds, derivatives and collections of the foregoing, and all types of commodities, such as grains, energy, and metals may be considered tradeable objects. A tradeable object may be “real,” such as products that are listed by an exchange for trading, or “synthetic,” such as a combination of real products that is created by the user. A tradeable object could actually be a combination of other tradeable object, such as a class of tradeable objects.
(41) Although the example programs, processes, methods and system has been described and illustrated in detail, it is clearly understood that the same is by way of illustration and example only and is not to be taken by way of limitation. Since numerous modifications and changes will readily occur to those skilled in the art, it is not desired to limit the invention to the exact construction and operation shown and described, and accordingly, all suitable modifications and equivalents may be resorted to, falling within the scope of the invention.
(42) According to one embodiment, the example system takes the form of a computer program product that is stored on a computer readable storage medium and is executed by a suitable instruction execution system in the computer-based device. The term computer readable medium, as used herein, refers to any medium that participates in providing instructions to processor for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Nonvolatile media includes, for example, optical or magnetic disks, such as storage device. Volatile media includes dynamic memory, such as main memory or RAM (random access memory). Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, and any other memory chip or cartridge, or any other medium from which a computer can read.
(43) According to an alternative embodiment, a hardware embodiment might take a variety of different forms. A hardware embodiment may be implemented as an integrated circuit with custom gate arrays or an application specific integrated circuit (“ASIC”). A hardware embodiment may also be implemented with discrete hardware components and circuitry. In particular, it is understood that the logic structures and method step described in the flow diagrams may be implemented in dedicated hardware such as an ASIC, or as program instructions carried out by a microprocessor or other computing device.