US20070192230A1 - Match System that Uses a Non-Indexed Collection of Orders - Google Patents

Match System that Uses a Non-Indexed Collection of Orders Download PDF

Info

Publication number
US20070192230A1
US20070192230A1 US11/276,752 US27675206A US2007192230A1 US 20070192230 A1 US20070192230 A1 US 20070192230A1 US 27675206 A US27675206 A US 27675206A US 2007192230 A1 US2007192230 A1 US 2007192230A1
Authority
US
United States
Prior art keywords
orders
computer
processor
readable medium
match engine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/276,752
Inventor
Paul Meacham
Jacob Doornebos
James Moran
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CME Group Inc
Original Assignee
Chicago Mercantile Exchange Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US11/276,752 priority Critical patent/US20070192230A1/en
Application filed by Chicago Mercantile Exchange Inc filed Critical Chicago Mercantile Exchange Inc
Assigned to CHICAGO MERCANTILE EXCHANGE, INC. reassignment CHICAGO MERCANTILE EXCHANGE, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MORAN, JAMES P., DOORNEBOS, JACOB, MEACHAM, PAUL
Priority to US11/696,555 priority patent/US20070198465A1/en
Publication of US20070192230A1 publication Critical patent/US20070192230A1/en
Priority to US12/125,682 priority patent/US20080222086A1/en
Priority to US12/335,246 priority patent/US8095452B2/en
Priority to US12/536,994 priority patent/US8200563B2/en
Priority to US13/312,445 priority patent/US8244626B2/en
Priority to US13/466,520 priority patent/US8468082B2/en
Priority to US13/543,974 priority patent/US8407133B2/en
Priority to US13/897,077 priority patent/US8812393B2/en
Priority to US14/324,973 priority patent/US20140324666A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24557Efficient disk access during query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Definitions

  • the present invention relates to systems, methods and user interfaces that are utilized in connection with the trading of financial instruments. More particularly, the invention provides mechanisms for matching orders against a non-indexed collection of pending orders.
  • Modern exchanges must process and monitor a large volume of trading data, such as orders for financial instruments.
  • Financial instruments include options contracts, futures contracts, options on futures contracts, interest rate products, securities, equity contracts, etc.
  • Large exchanges are required to process and store large amounts of trading data every second of the trading day.
  • exchange computers upon executing trades, exchange computers must continually access and distribute market data, which is another form of trading data. The distribution of market data facilitates necessary market-driven decisions. Indeed, risk analysis of current and future exposure is vital to ensuring a stable financial exchange. Often large databases are utilized to store and retrieve this trading data.
  • Pending orders may be arranged as a non-indexed collection of data records within one or more computer-readable media.
  • Exemplary computer-readable media include processor cache memories, magnetic memories, hard disk drives, and optical disk drives.
  • Solid-state memory modules allow for rapid queries due to the lack of moving parts, such as those associated with hard disk drives.
  • the physical locations of pending orders stored in a computer-readable medium may correspond to the order in which the pending orders were received at a match engine and the order in which queries are performed. New orders are compared to orders in the non-indexed collection of orders in an attempt to match orders. Order matching may be performed without the speed limitations and overhead associated with indexed order collections.
  • FIG. 1 shows a computer network system that may be used to implement aspects of the present invention
  • FIG. 2 shows a flowchart of one illustrative method of storing trading data in a computing environment according to one aspect of the invention
  • FIGS. 3 a and 3 b illustrates illustrative collections of trading data according to various embodiments of the present invention
  • FIG. 4 illustrates yet another illustrative collection of trading data in accordance with the present invention
  • FIG. 5 illustrates an exemplary graphical user interface that may be used to display market depth information
  • FIG. 6 illustrates one exemplary collection of data arranged in a substantially sequential ordering according to one embodiment of the invention
  • FIG. 7 illustrates a system for matching trades in accordance with an embodiment of the invention
  • FIG. 8 illustrates a method of processing orders with the system shown in FIG. 7 , in accordance with an embodiment of the invention.
  • FIG. 9 illustrates a system for matching trades that uses redundant match engines in accordance with an embodiment of the invention.
  • FIG. 1 An exemplary trading network environment for implementing trading systems and methods is shown in FIG. 1 .
  • An exchange computer system 100 receives orders and transmits market data related to orders and trades to users.
  • Exchange computer system 100 may be implemented with one or more mainframe, desktop or other computers.
  • a computer device uses a 64-bit processor.
  • a user database 102 includes information identifying traders and other users of exchange computer system 100 . Data may include user names and passwords.
  • An account data module 104 may process account information that may be used during trades.
  • a match engine module 106 is included to match bid and offer prices. Match engine module 106 may be implemented with software that executes one or more algorithms for matching bids and offers.
  • a trade database 108 may be included to store information identifying trades and descriptions of trades. In particular, a trade database may store information identifying the time that a trade took place and the contract price.
  • An order book module 110 may be included to compute or otherwise determine current bid and offer prices.
  • a market data module 112 may be included to collect market data and prepare the data for transmission to users.
  • a risk management module 134 may be included to compute and determine a user's risk utilization in relation to the user's defined risk thresholds.
  • An order processing module 136 may be included to decompose delta based and bulk order types for processing by order book module 110 and match engine module 106 .
  • the trading network environment shown in FIG. 1 includes computer devices 114 , 116 , 118 , 120 and 122 .
  • Each computer device includes a central processor that controls the overall operation of the computer and a system bus that connects the central processor to one or more conventional components, such as a network card or modem.
  • Each computer device may also include a variety of interface units and drives for reading and writing data or files.
  • a user can interact with the computer with a keyboard, pointing device, microphone, pen device or other input device.
  • Computer device 114 is shown directly connected to exchange computer system 100 .
  • Exchange computer system 100 and computer device 114 may be connected via a T1 line, a common local area network (LAN) or other mechanism for connecting computer devices.
  • Computer device 114 is shown connected to a radio 132 .
  • the user of radio 132 may be a trader or exchange employee.
  • the radio user may transmit orders or other information to a user of computer device 114 .
  • the user of computer device 114 may then transmit the trade or other information to exchange computer system 100 .
  • Computer devices 116 and 118 are coupled to a LAN 124 .
  • LAN 124 may have one or more of the well-known LAN topologies and may use a variety of different protocols, such as Ethernet.
  • Computers 116 and 118 may communicate with each other and other computers and devices connected to LAN 124 .
  • Computers and other devices may be connected to LAN 124 via twisted pair wires, coaxial cable, fiber optics or other media.
  • a wireless personal digital assistant device (PDA) 122 may communicate with LAN 124 or the Internet 126 via radio waves.
  • PDA 122 may also communicate with exchange computer system 100 via a conventional wireless hub 128 .
  • a PDA includes mobile telephones and other wireless devices that communicate with a network via radio waves.
  • FIG. 1 also shows LAN 124 connected to the Internet 126 .
  • LAN 124 may include a router to connect LAN 124 to the Internet 126 .
  • Computer device 120 is shown connected directly to the Internet 126 . The connection may be via a modem, DSL line, satellite dish or any other device for connecting a computer device to the Internet.
  • One or more market makers 130 may maintain a market by providing constant bid and offer prices for a derivative or security to exchange computer system 100 .
  • Exchange computer system 100 may also exchange information with other trade engines, such as trade engine 138 .
  • trade engine 138 One skilled in the art will appreciate that numerous additional computers and systems may be coupled to exchange computer system 100 . Such computers and systems may include clearing, regulatory and fee systems.
  • computer device 116 may include computer-executable instructions for receiving order information from a user and transmitting that order information to exchange computer system 100 .
  • computer device 118 may include computer-executable instructions for receiving market data from exchange computer system 100 and displaying that information to a user.
  • FIG. 1 is merely an example and that the components shown in FIG. 1 may be connected by numerous alternative topologies.
  • FIG. 2 shows a flowchart of one illustrative method of storing trading data in a computing environment according to one aspect of the invention.
  • a first trading record comprising trading data is received in step 205 .
  • the trading record may be an order received at an exchange, a market data distributed by an exchange or a trade.
  • the trading record may be a record created by an exchange that indicates the state of an order book, orders received and processed, or any other information that may be use by an exchange or entity involved with trading.
  • the trading data may include one or more specific identifiers of an order or trade, including: the time and date of the order or trade, the individual or firm that submitted an order, price information and/or the identification and quantity of financial instruments.
  • the trading record may comprise an order first transmitted from computer device 116 and/or PDA 122 through LAN 124 and/or Internet 126 and may be further processed by order processing module 136 .
  • the trading record received in step 205 may comprise market data distributed by one or more of the modules within Exchange Computer System 100 .
  • a computer-readable medium may include, for example, RAM, flash memory, a hard disk drive, and/or an optical disk (CD ROM, DVD or other optical media).
  • Solid-state memory modules allow for rapid queries due to the lack of moving parts, such as those associated with hard disk drives.
  • the medium is within the Exchange Computer System 100 and may be associated with one or more modules, such as the match engine module 136 .
  • FIG. 3 a illustrates a collection of trading data according to one aspect of the present invention.
  • a memory module 300 such as a RAM or optical disk, may store a plurality of trading records.
  • the trading record stored in step 205 may be visually represented as trading record 305 .
  • a second trading record may be received.
  • the second trading record may be of a fixed length and have substantially the same information as the first trading record received in step 205 .
  • the second trading record may of a different length than the first trading record.
  • the second trading record may have additional fields not present in the first record and may comprise additional data not present in the first record.
  • optional step 225 (explained in more detail below) may be implemented to determine if the trading record comprises more than one field.
  • the second trading record (or a portion thereof) is sequentially stored in relation to the first trading record 305 , wherein the data from the second trading record is stored substantially physically adjacent to the data received from the first trading record 305 .
  • One of the advantages of locating records close to one another is faster reading times.
  • Existing database systems may have data scattered throughout a memory device. Reading data arranged in this manner is time consuming because the reading process has to skip from one physical location to another physical location. For example, a hard disk drive must physically move a reading head from location to location.
  • FIG. 3 a shows one illustrative embodiment where data from the second trading record 310 is stored in a sequential fashion in relation to the data stored from the first trading record 305 .
  • the trading data stored and as represented by 305 and 310 are not associated with an index for locating the data.
  • they may be stored in a substantially sequential ordering.
  • substantially sequential ordering means that data is physically positioned on a computer-readable medium in a direction that a read operation will follow and does not imply that a sort operation is performed on the records or data before storing.
  • data 315 is stored substantially sequential to data 310 , which is stored substantially sequential to data 305 .
  • a reading head may follow a straight path to read records 305 , 310 and 315 .
  • the collection of data as represented by first trading records 305 , 310 and 315 can perform row selection at the same speed as an indexed database. Indeed, in some embodiments, eliminating conventional databases indexes results in queries that have the same speed for all columns in the table. Conventional database typically have an index on every column. This results in deleterious effects on the insertion speed. Conversely, a collection of data organized according to the various embodiments of the present invention allows for rapid insertion speeds and is particularly useful and advantageous in real-time insertion situations, such as those routinely encountered in the trading industry.
  • a computer-readable medium may comprise a plurality of linked drives and/or modules, wherein the data is stored in a sequential fashion as described above.
  • the plurality of drives and/or modules may be at different physical or remote locations.
  • FIG. 3 b shows two distinct physical computer-readable media ( 330 , 335 ) that are configured to store data in a sequential ordering process.
  • first trading record 305 is stored in the first portion of computer-readable medium 330 , sequentially followed by a first portion of second trading record 310 a.
  • the trading record consisting of section 310 a and 310 b is too large to be entirely stored on computer-readable medium 330
  • the second portion of the second trading record 310 b is stored on the first portion of computer-readable medium 335 .
  • Trading record 315 is also stored on computer-readable medium 335 and substantially follows the second portion of the second trading record 310 b.
  • the trading records 305 , 310 , and 315 are sequentially stored on a plurality of computer-readable media are arranged in a sequential order.
  • the computer-readable media, such as computer-readable media 330 and 335 do not have to be physically ordered in sequential manner, but rather must be configured to be sequentially store data.
  • one or more trading records may comprise a plurality of fields.
  • optional step 225 may be implemented to determine if one or more of the trading record comprise more than one field.
  • step 230 may optionally be initiated to parse a first field from one of the trading records. As shown in FIG. 4 , data 405 , which may be similar to trading record 305 is received and it is determined through a process, such as process 225 , that it comprises multiple fields. Optional step 230 may be initiated to parse the data into a plurality of fields.
  • data 405 is parsed into at least three fields, wherein financial instrument data 405 a comprises an identification of the financial instrument, such as an option contract to purchase wheat in June, price data 405 b comprises information on the price of the contract, and quantity data 405 c may comprise information on the quantity, such as quantity of financial instruments.
  • financial instrument data 405 a comprises an identification of the financial instrument, such as an option contract to purchase wheat in June
  • price data 405 b comprises information on the price of the contract
  • quantity data 405 c may comprise information on the quantity, such as quantity of financial instruments.
  • step 235 may be implemented to determine if a field present in received data, such as trading record 405 comprises a new field, wherein upon the detection of a new field, a portion of the computer readable medium may be allocated to store data associated with the new field (step 240 ). While step 225 is shown in relation to receipt of the first trading record, one skilled in the art will realize that the step may be utilized upon receipt of any of the trading records.
  • data associated with a first field of a trading record such as financial instrument data 405 a may be stored in a first location on the computer readable medium (step 245 ).
  • Data associated with other fields of the same record is not stored substantially sequential to financial instrument data 405 a, but may be placed on the computer readable memory at a different location (see exemplary embodiment of step 250 ).
  • it too may be parsed into a plurality of data associated with different fields.
  • FIG. 4 shows trading record 410 subdivided according to the same fields as record 405 .
  • step 250 sequentially stores the data having a matching field ( 410 a comprises information relating to the field of “financial instrument”) on the computer-readable memory, wherein data of the first field 405 a that was initially stored in step 245 is substantially physically adjacent to the data of the first field 410 a that was stored in step 245 .
  • trading records 405 and 410 may also be stored in the same manner.
  • price fields 405 b and 410 b are stored sequentially wherein price data 410 b is substantially sequential to and follows price data 405 b. (see also; quantity data 405 c and 410 c ).
  • the data may be stored sequentially as it is received and in at least one embodiment is stored in real time allowing for the fast storage and manipulation of the data without having to construct and update a database-type index.
  • the illustrated computer-readable memory of FIG. 4 illustrates a single medium, one skilled in the art will realize a plurality of computer readable media could be utilized to achieve the same aspects of the invention.
  • Embodiments of the invention also relate to methods of performing a query on a computer readable medium, such as computer readable mediums having data stored in accordance with several or all of the steps and embodiments discussed in regards to FIGS. 2-4 .
  • the query relates to a method of processing an order received at a match engine.
  • An order for at least one financial instrument may be received at a match engine, which may be implemented, for example, with match engine module 106 .
  • at least one parameter or field may be extracted from the order. Upon extracting the at least one field or parameter, the field(s) that were extracted are compared to fields and/or parameters within a non-indexed collection of data representing pending orders.
  • the comparison may be initiated at the upper starting portion of record 305 and proceed through trading records 305 , 310 , and 315 in a sequential manner based on proximate physical location of the records. Since there is no database-type index, the data within trading records 305 , 310 and 315 may be analyzed from different angles or perspectives at a more rapid pace than utilizing conventional database structures. Indeed, in some situations certain fields of data are unlikely to have data to meet the query being searched. For example, if the query relates to the quantity of financial instrument fields, a query against data located in currency fields is unlikely to yield useful information in many cases. Searching a collection of data arranged such that records or fields are physically located next to one another in a memory module in the direction of a read operation of the search allows for faster query execution when compared to queries performed on indexed databases having records or fields distributed throughout a memory module.
  • the pending orders may be organized as set forth in FIG. 4 , wherein a plurality of trading records are stored wherein matching fields of different trading records, such as trading records 405 and 410 are stored in a substantially sequential fashion without an associated database-like index.
  • price fields 405 b and 410 b are stored sequentially and wherein price field 410 b is substantially sequential to and follows price field 405 b.
  • only data categorized as having certain fields will be queried. This determination may be based on a user-input, an algorithm, or a combination of user preference and a function of one or software applications.
  • a query is directed towards the price of a pending order
  • the comparison of the query and the data stored on the computer readable medium may be initiated at beginning of price data 405 b and proceed in a substantially sequential fashion to price data 410 b and through any additional price data located following price data 410 b.
  • the searching and comparison of the price data within the compared data will be performed without the use of a database-like index and will go in the sequential manner as described above.
  • the individual trading records such as 405 and 410 as well as the individual fields of data such as 405 a and 405 b may be of a fixed length, thereby allowing a user and/or computer device to readily and accurately estimate the time to conduct the query of the trading records and/or individual data fields.
  • the speed at which queries may be performed when trading records are arranged as described above may be taken advantage of for other exchange and trading related activities.
  • a match engine may match trades using aspects of the inventions.
  • trading firms and exchange regulatory or enforcement divisions may wish to recreate the state of a market, such as pending bids and offers, at a given time.
  • One conventional approach includes recording a snapshot of the state of the market for every change in the market. These snapshots require large amounts of storage space, even for data parameters that may not have changed since the last snapshot.
  • FIG. 5 illustrates an exemplary graphical user interface 500 that may be used to display market depth information and allow traders to trade financial instruments. The figure is helpful to aid the reader in understanding the type and amount of information that represents the state of a market.
  • Graphical user interface 500 includes a price and quantity grid 502 .
  • Price and quantity grid 502 may contain five columns.
  • a buy column 504 displays a user's working buy order quantities. As used herein, a user may be a trader. Each user will have different values in this column reflecting their buy order quantity.
  • a hit column 506 displays the market bid quantities. Prices for individual rows are displayed in a price column 508 .
  • a take column 510 displays market ask quantities.
  • a sell column 512 displays a user's working sell order quantities. Individual entries may be color coded to assist users in quickly interpreting the displayed information. For example, entries in buy column 504 and hit column 506 may be in blue and entries in take column 510 and sell column 512 may be in red.
  • a trading firm, exchange or other entity may record trading records in a non-indexed collection of data, as described above.
  • the speed at which such a collection may be queried and processed allows such entities to quickly recreate the state of the market for any time period.
  • an initial state of the market may first be determined and then all of the orders placed at an exchange may be processed in the same manner that they would be processed by an exchange until the desired point in time.
  • graphical user interface 500 shown in FIG. 5
  • All of the incoming orders received at an exchange may be stored sequentially in one or more memory modules as a non-indexed collection of orders such that the physical location of the orders corresponds to the order in which they were received.
  • a computer device may then be programmed to retrieve the orders and recreate the state of the market.
  • Graphical user interface 520 represents the state of a market at some time after the state represented with graphical user interface 500 . If we assume that graphical user interface 500 represents the state that existed at 9:00 on Monday morning and graphical user interface 520 represents the state that existed at 2:00 on the following Wednesday, the state represented with graphical user interface 520 may be recreated by starting with the state representing with graphical user interface 500 and processing orders in the sequential non-indexed collection of orders received until 2:00 on Wednesday.
  • Unlike conventional indexed databases storing and retrieving trading data according to one or more methods of the present invention does not require large quantities of trading data to be executed in batch mode overnight. Indeed, under traditional approaches, large amounts of data could not be adequately analyzed in real-time, thereby preventing many uses of the data.
  • the analysis of the data sequentially stored on the computer readable memory can be continually processed in real-time to monitor activity while new data is being written to the computer readable medium, all without having to create, update, and maintain a space-consuming database index and constant interruption to jump physical locations within the computer readable medium to locate a certain data piece.
  • FIG. 6 illustrates one exemplary sequential non-indexed collection of orders stored on a computer-readable medium 600 .
  • computer readable medium 600 comprises a plurality of orders. Seen at the upper end of computer readable medium 600 is order 605 .
  • Order 605 may be, for example, any of the quantities and/or prices displayed in the price and quantity grid 502 .
  • Order 610 may represent the next order received at an exchange and order 615 may represent the next order received at the exchange.
  • intervals between the receipt of orders 605 , 610 and 615 may not be uniform.
  • Recreating market conditions may be readily accessible by querying methods, for example, as described above. Indeed, by following one or more embodiments of the invention, the analysis of the data sequentially stored on the computer readable memory can be continually processed in real-time to monitor activity while new data is being written to the computer-readable medium, all without having to create, update, and maintain a space-consuming database index and constant interruption to jump physical locations within the computer readable medium to locate a certain data piece.
  • FIG. 7 illustrates a system for matching trades in accordance with an embodiment of the invention.
  • Computer devices 702 , 704 and 706 may be used to transmit orders for financial instruments to a match engine 708 via a network 710 .
  • Network 710 may be implemented at least in part with the Internet, a WAN, a LAN, a phone network or other infrastructure used for exchanging data between computer devices.
  • Incoming orders are received at a processor 712 .
  • Processor 712 may encode incoming orders and transmit them to a shared memory 714 . Encoding may include reducing the size of the order. For example, an order may be received at processor 712 that includes the name of a trading firm. During the encoding process, the trading firm name may be replaced with a number that represents the trading firm.
  • a second processor 716 may be configured to periodically check shared memory 714 for new orders.
  • Processor 716 may include a cache memory 718 that includes one or more order books, such as order book 720 .
  • the physical locations of pending orders stored in cache memory 718 may correspond to the order in which they were received at the match engine. When a new order is received, the order may be compared to orders that are included in order book 720 .
  • the use of two processors 712 and 716 allows for fast operation when matching of trades.
  • processors 712 and 716 may be performed by a single processor. In other embodiments, the functions performed by processors 712 and 716 may be performed by three or more processors.
  • An exemplary processor that may be used with aspects of the invention is an Intel Itanium II, which contains a 9 MB byte cache memory.
  • Another exemplary processor is the AMD Opteron processor, which utilizes HypertransportTM technology.
  • market data may be generated by processor 716 and then transmitted to shared memory 714 .
  • Processor 712 may periodically check shared memory 714 for market data messages. When market data messages are received, processor 712 may format or expand the market data message and then distribute the market data message to trading entities, such as those represented by computer devices 702 , 704 and 706 . Processor 712 may also distribute other information to trading entities, such as acknowledgement messages.
  • a backup processor 722 may include a cache memory 724 that includes an order book 726 .
  • Order book 726 may be synchronized with order book 720 , such that in the event that processor 716 fails, backup processor 722 may resume matching of trades.
  • a synchronization module 728 may be used to synchronize order books 720 and 726 .
  • processor 716 and backup processor 722 transmit information identifying the states of order books 720 and 726 to synchronization module 728 . Synchronization module 728 may then compare the states of the order books and make any adjustments that are necessary.
  • match engine 708 may include several different processors that are configured to match a variety of different trades.
  • Shared memory 714 may group new orders such that each of the processors knows which order to process. For example, a first processor may maintain a first order book and match trades against the first order book and a second processor may maintain a second order book for a different financial instrument and match trades for those financial instruments.
  • Backup processor 722 may be included within match engine 708 .
  • backup processor 722 may be connected to match engine 708 via a local area network or wide-area network.
  • Backup processor 722 may be in a different geographic location than processor 716 .
  • processor 716 may be located within a first premises and backup processor 722 may be located in a different premises to prevent all processors from failing because of a fire or other event at the first premises.
  • Two or more processors may also be geographically distributed and may be configured to process orders originating from different geographic regions. For example, processor 716 may be located in Chicago and may process orders originating in the United States and a second processor may be located in London in may be configured to process orders originating in that region.
  • FIG. 8 illustrates a method of processing orders with the system shown in FIG. 7 , in accordance with an embodiment of the invention.
  • pending orders are stored in a substantially sequential non-indexed collection on a computer readable medium.
  • the computer readable medium may include a cache memory of a processor to facilitate rapid processing of incoming orders.
  • a new order for a financial instrument is received at a match engine.
  • the new order may be encoded in step 806 .
  • Encoding may include reducing the file size of the order and placing the order into a standard format that is recognized by components of the match engine.
  • the encoded order may be stored in a memory module.
  • the memory module may include a RAM memory that is accessible by more than one processor.
  • a processor may periodically check for new orders stored in the memory module.
  • steps 806 and step 810 are performed by different processors.
  • step 812 the new order is compared to the plurality of pending orders arranged in the non-indexed collection of substantially sequential orders. It is then determined whether the new order matches one of the pending orders in step 814 . When the new order does not match one of the pending orders, in step 816 the new order is added to the non-indexed collection of substantially sequential orders. Step 816 may include adding the new order to an existing order book. If the new order does match one of the pending orders, a trade for the matching orders may be executed in step 818 . Finally, in step 820 market data may be formatted and distributed.
  • FIG. 9 illustrates a system for matching trades that uses redundant match engines in accordance with an embodiment of the invention.
  • a first match engine 902 includes a first processor 904 , a shared memory 906 and a second processor 908 .
  • Processor 908 includes a cache memory 910 that may include one or more order books, such as order book 912 .
  • a second match engine 914 includes a first processor 916 , a shared memory 918 and a second processor 920 .
  • Processor 920 includes a cache memory 922 that may include one or more order books, such as order book 924 .
  • the components within match engines 902 and 914 function similar to corresponding components located within match engine 708 (shown in FIG. 7 ).
  • the match system shown in FIG. 9 includes an input gateway 926 .
  • Input gateway 926 receives orders, assigns identifying information to the orders and distributes the orders to match engines 902 and 914 .
  • Input gateway 926 may be implemented with a computer device configured to route data and assign identifying information.
  • computer device 928 may transmit an order for a financial instrument to input gateway 916 via network 930 .
  • Network 930 may be implemented at least in part with a WAN, LAN, phone network or other infrastructure used for exchanging data between computer devices.
  • input gateway 926 may assign an identification number to the order and transmit the order to match engines 902 and 914 .
  • additional match engines may be included and input gateway 926 may transmit orders to some or all of the match engines.
  • match engines 902 and 914 receive orders from input gateway 926 and process those orders in parallel.
  • Match engines 902 and 914 include the same data in order books 912 and 924 and are configured to produce the same results.
  • Output messages from processors 904 and 916 are transmitted to an output gateway 932 .
  • Output gateway 932 may be implemented with a computer device configured to route data.
  • input gateway 926 and output gateway 932 are implemented with the same computer device.
  • Output gateway 932 may include a message memory 934 that stores information identifying messages that have been transmitted by output gateway 932 . At least part of the identifying information may be assigned by input gateway 926 . The identifying information may be used to make sure that data for an event is only distributed once.
  • input gateway 926 may assign and identification number to a new order and then transmit the order to match engines 902 and 914 .
  • Match engines 902 and 914 may process the order in parallel and generate market data messages.
  • the market data messages include the identification number assigned by input gateway 926 .
  • output gateway may be configured to search identification numbers stored in message memory 934 to determine if a corresponding market data messages has been transmitted.
  • the message is distributed to trading entities, such as to computer device 936 via network 938 .
  • the message may be discarded.
  • a new order may be assigned an identification number at input gateway 926 and derivative identification numbers may be assigned to messages associated with that order.
  • a new order may be assigned a 15 digit identification number and an acknowledgment message may be assigned an identification number that consists of the 15 digit identification number followed by a character or number that identifies the type of message. This allows multiple messages associated with a single order to all be assigned unique identification numbers that are related and ensures that match engines 902 and 914 assign the same identification numbers to created messages.
  • output gateway 932 would receive messages from only one match engine and continue to process messages without any failure being apparent to trading entities. In embodiments that include more than two match engines operating in parallel, the failure of one or two match engines would not be apparent to trading entities.
  • Match engines 902 and 914 may be located in the same location or may be distributed to prevent a fire, network failure or other catastrophic event from halting the operation of all match engines.
  • a trader may enter a nonstandard order that contains multiple legs in different markets.
  • the systems shown in FIGS. 7 and 9 may rapidly attempt to match all of the legs of the nonstandard order without incurring reductions in throughput that would be incurred with conventional systems.
  • Match engines 708 , 902 and 914 may be programmed to perform implied pricing functions for nonstandard orders.
  • a trader may provide prices for one or more legs of a nonstandard order.

Abstract

Match engine systems and methods that allow for rapid processing of orders are provided. Pending orders are arranged as a non-indexed collection of orders and may be stored in the cache memory of a processor. The physical locations of pending orders stored in the cache memory may correspond to the order in which they were received at a match engine. New orders are compared to orders in the non-indexed collection of orders in an attempt to match orders.

Description

  • The present application is a continuation-in-part application of U.S. Ser. No. 11/234,697, filed Sep. 23, 2005 and entitled “Non-Indexed In-Memory Data Storage and Retrieval,” the entire disclosure of which is hereby incorporated by reference.
  • FIELD OF THE INVENTION
  • The present invention relates to systems, methods and user interfaces that are utilized in connection with the trading of financial instruments. More particularly, the invention provides mechanisms for matching orders against a non-indexed collection of pending orders.
  • DESCRIPTION OF THE RELATED ART
  • Modern exchanges must process and monitor a large volume of trading data, such as orders for financial instruments. Financial instruments include options contracts, futures contracts, options on futures contracts, interest rate products, securities, equity contracts, etc. Large exchanges are required to process and store large amounts of trading data every second of the trading day. Moreover, upon executing trades, exchange computers must continually access and distribute market data, which is another form of trading data. The distribution of market data facilitates necessary market-driven decisions. Indeed, risk analysis of current and future exposure is vital to ensuring a stable financial exchange. Often large databases are utilized to store and retrieve this trading data.
  • To select and aggregate trading data, conventional databases often use sorts, searches, indexes, and/or disc lookups. These requirements result in substantial chip clock cycles and lead to delayed query results. Current analysis systems utilized to aggregate large quantities of trading data are often executed in batch mode overnight because of the computing resources that are consumed by these activities. Often the aggregation and retrieval of trading data is not efficient enough to allow adequate information to be retrieved within the desired timeframe. Indeed, under traditional approaches, large amounts of trading data cannot be adequately analyzed in real-time, thereby preventing many uses of the data.
  • Prior art attempts to solve these problems have focused on building more intelligent indexes to speed up selection and analysis of the data stored within a database. Yet other systems have attempted to reduce response time to users through the use of precomputed summary data. These and other attempts to more efficiently store and retrieve trading data do not adequately address the problem. For example, precomputed indexes cannot be rapidly adapted for changing user needs or changing data. Additionally, precomputed data requires the user to specify the data that needs to be precomputed. When there is a need to analyze data from different angles or perspectives, these conventional systems fail to deliver results in a rapid fashion.
  • Existing order matching systems have similar drawbacks. As the volume of orders increases, existing order matching systems struggle to compare and match orders in an efficient manner.
  • Therefore, there exists a need in the art for systems and methods that allow for the efficient processing, storage and searching of large amounts of data in a time sensitive manner.
  • SUMMARY OF THE INVENTION
  • Aspects of the invention overcome at least some of the problems and limitations of the prior art by providing systems and methods that allow for the efficient storage and searching of large amounts of data. Pending orders may be arranged as a non-indexed collection of data records within one or more computer-readable media. Exemplary computer-readable media include processor cache memories, magnetic memories, hard disk drives, and optical disk drives. Solid-state memory modules allow for rapid queries due to the lack of moving parts, such as those associated with hard disk drives. The physical locations of pending orders stored in a computer-readable medium may correspond to the order in which the pending orders were received at a match engine and the order in which queries are performed. New orders are compared to orders in the non-indexed collection of orders in an attempt to match orders. Order matching may be performed without the speed limitations and overhead associated with indexed order collections.
  • Of course, the methods and systems disclosed herein may also include other additional elements, steps, computer-executable instructions, or computer-readable data structures. The details of these and other embodiments of the present invention are set forth in the accompanying drawings and the description below. Other features and advantages of the invention will be apparent from the description and drawings, and from the claims.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The present invention may take physical form in certain parts and steps, embodiments of which will be described in detail in the following description and illustrated in the accompanying drawings that form a part hereof, wherein:
  • FIG. 1 shows a computer network system that may be used to implement aspects of the present invention;
  • FIG. 2 shows a flowchart of one illustrative method of storing trading data in a computing environment according to one aspect of the invention;
  • FIGS. 3 a and 3 b illustrates illustrative collections of trading data according to various embodiments of the present invention;
  • FIG. 4 illustrates yet another illustrative collection of trading data in accordance with the present invention;
  • FIG. 5 illustrates an exemplary graphical user interface that may be used to display market depth information;
  • FIG. 6 illustrates one exemplary collection of data arranged in a substantially sequential ordering according to one embodiment of the invention;
  • FIG. 7 illustrates a system for matching trades in accordance with an embodiment of the invention;
  • FIG. 8 illustrates a method of processing orders with the system shown in FIG. 7, in accordance with an embodiment of the invention; and
  • FIG. 9 illustrates a system for matching trades that uses redundant match engines in accordance with an embodiment of the invention.
  • DETAILED DESCRIPTION Exemplary Operating Environment
  • Aspects of the present invention are preferably implemented with computer devices and computer networks that allow users to exchange trading information. An exemplary trading network environment for implementing trading systems and methods is shown in FIG. 1.
  • An exchange computer system 100 receives orders and transmits market data related to orders and trades to users. Exchange computer system 100 may be implemented with one or more mainframe, desktop or other computers. In one embodiment, a computer device uses a 64-bit processor. A user database 102 includes information identifying traders and other users of exchange computer system 100. Data may include user names and passwords. An account data module 104 may process account information that may be used during trades. A match engine module 106 is included to match bid and offer prices. Match engine module 106 may be implemented with software that executes one or more algorithms for matching bids and offers. A trade database 108 may be included to store information identifying trades and descriptions of trades. In particular, a trade database may store information identifying the time that a trade took place and the contract price. An order book module 110 may be included to compute or otherwise determine current bid and offer prices. A market data module 112 may be included to collect market data and prepare the data for transmission to users. A risk management module 134 may be included to compute and determine a user's risk utilization in relation to the user's defined risk thresholds. An order processing module 136 may be included to decompose delta based and bulk order types for processing by order book module 110 and match engine module 106.
  • The trading network environment shown in FIG. 1 includes computer devices 114, 116, 118, 120 and 122. Each computer device includes a central processor that controls the overall operation of the computer and a system bus that connects the central processor to one or more conventional components, such as a network card or modem. Each computer device may also include a variety of interface units and drives for reading and writing data or files. Depending on the type of computer device, a user can interact with the computer with a keyboard, pointing device, microphone, pen device or other input device.
  • Computer device 114 is shown directly connected to exchange computer system 100. Exchange computer system 100 and computer device 114 may be connected via a T1 line, a common local area network (LAN) or other mechanism for connecting computer devices. Computer device 114 is shown connected to a radio 132. The user of radio 132 may be a trader or exchange employee. The radio user may transmit orders or other information to a user of computer device 114. The user of computer device 114 may then transmit the trade or other information to exchange computer system 100.
  • Computer devices 116 and 118 are coupled to a LAN 124. LAN 124 may have one or more of the well-known LAN topologies and may use a variety of different protocols, such as Ethernet. Computers 116 and 118 may communicate with each other and other computers and devices connected to LAN 124. Computers and other devices may be connected to LAN 124 via twisted pair wires, coaxial cable, fiber optics or other media. Alternatively, a wireless personal digital assistant device (PDA) 122 may communicate with LAN 124 or the Internet 126 via radio waves. PDA 122 may also communicate with exchange computer system 100 via a conventional wireless hub 128. As used herein, a PDA includes mobile telephones and other wireless devices that communicate with a network via radio waves.
  • FIG. 1 also shows LAN 124 connected to the Internet 126. LAN 124 may include a router to connect LAN 124 to the Internet 126. Computer device 120 is shown connected directly to the Internet 126. The connection may be via a modem, DSL line, satellite dish or any other device for connecting a computer device to the Internet.
  • One or more market makers 130 may maintain a market by providing constant bid and offer prices for a derivative or security to exchange computer system 100. Exchange computer system 100 may also exchange information with other trade engines, such as trade engine 138. One skilled in the art will appreciate that numerous additional computers and systems may be coupled to exchange computer system 100. Such computers and systems may include clearing, regulatory and fee systems.
  • The operations of computer devices and systems shown in FIG. 1 may be controlled by computer-executable instructions stored on computer-readable medium. For example, computer device 116 may include computer-executable instructions for receiving order information from a user and transmitting that order information to exchange computer system 100. In another example, computer device 118 may include computer-executable instructions for receiving market data from exchange computer system 100 and displaying that information to a user.
  • Of course, numerous additional servers, computers, handheld devices, personal digital assistants, telephones and other devices may also be connected to exchange computer system 100. Moreover, one skilled in the art will appreciate that the topology shown in FIG. 1 is merely an example and that the components shown in FIG. 1 may be connected by numerous alternative topologies.
  • Exemplary Embodiments
  • FIG. 2 shows a flowchart of one illustrative method of storing trading data in a computing environment according to one aspect of the invention. As seen in the figure, a first trading record comprising trading data is received in step 205. The trading record may be an order received at an exchange, a market data distributed by an exchange or a trade. In alterative embodiments of the invention, the trading record may be a record created by an exchange that indicates the state of an order book, orders received and processed, or any other information that may be use by an exchange or entity involved with trading. The trading data may include one or more specific identifiers of an order or trade, including: the time and date of the order or trade, the individual or firm that submitted an order, price information and/or the identification and quantity of financial instruments. The trading record may comprise an order first transmitted from computer device 116 and/or PDA 122 through LAN 124 and/or Internet 126 and may be further processed by order processing module 136. In yet other embodiments, the trading record received in step 205 may comprise market data distributed by one or more of the modules within Exchange Computer System 100. As one skilled in the art will realize, there are numerous other fields that may be included within a trading record.
  • In step 210, at least a portion of the data from the trading record received in step 205 is stored on a computer readable medium. As used herein, a computer-readable medium may include, for example, RAM, flash memory, a hard disk drive, and/or an optical disk (CD ROM, DVD or other optical media). Solid-state memory modules allow for rapid queries due to the lack of moving parts, such as those associated with hard disk drives. In one embodiment, the medium is within the Exchange Computer System 100 and may be associated with one or more modules, such as the match engine module 136. FIG. 3 a illustrates a collection of trading data according to one aspect of the present invention. As seen in the figure, a memory module 300, such as a RAM or optical disk, may store a plurality of trading records. For example, the trading record stored in step 205 may be visually represented as trading record 305. In step 215, a second trading record may be received. The second trading record may be of a fixed length and have substantially the same information as the first trading record received in step 205. Yet in other embodiments, the second trading record may of a different length than the first trading record. Yet in further embodiments, the second trading record may have additional fields not present in the first record and may comprise additional data not present in the first record. In one such embodiment, optional step 225 (explained in more detail below) may be implemented to determine if the trading record comprises more than one field.
  • In step 220, the second trading record (or a portion thereof) is sequentially stored in relation to the first trading record 305, wherein the data from the second trading record is stored substantially physically adjacent to the data received from the first trading record 305. One of the advantages of locating records close to one another is faster reading times. Existing database systems may have data scattered throughout a memory device. Reading data arranged in this manner is time consuming because the reading process has to skip from one physical location to another physical location. For example, a hard disk drive must physically move a reading head from location to location. FIG. 3 a shows one illustrative embodiment where data from the second trading record 310 is stored in a sequential fashion in relation to the data stored from the first trading record 305. Unlike conventional databases, the trading data stored and as represented by 305 and 310 are not associated with an index for locating the data. As additional data and/or trading records are received, they may be stored in a substantially sequential ordering. As used herein “substantial sequential ordering” means that data is physically positioned on a computer-readable medium in a direction that a read operation will follow and does not imply that a sort operation is performed on the records or data before storing. For example, data 315 is stored substantially sequential to data 310, which is stored substantially sequential to data 305. When memory module 300 is implemented with a hard disk drive, for example, a reading head may follow a straight path to read records 305, 310 and 315.
  • While the exemplary embodiment does not have an index as used in conventional databases, the collection of data as represented by first trading records 305, 310 and 315 can perform row selection at the same speed as an indexed database. Indeed, in some embodiments, eliminating conventional databases indexes results in queries that have the same speed for all columns in the table. Conventional database typically have an index on every column. This results in deleterious effects on the insertion speed. Conversely, a collection of data organized according to the various embodiments of the present invention allows for rapid insertion speeds and is particularly useful and advantageous in real-time insertion situations, such as those routinely encountered in the trading industry. Moreover, by providing a collection of data without an associated database-type index, more space is available on the computer readable medium to store data, such as that present in the data of the first trading record and second trading record (305, 310). An increases in data storage may be achieved by eliminating the use of a conventional database-type index. In at least one implementation, the elimination of an index may double the amount of data that may be stored on the computer readable memory.
  • As one skilled in the art will appreciate, a computer-readable medium may comprise a plurality of linked drives and/or modules, wherein the data is stored in a sequential fashion as described above. In at least one embodiment, the plurality of drives and/or modules may be at different physical or remote locations. For example, FIG. 3 b shows two distinct physical computer-readable media (330, 335) that are configured to store data in a sequential ordering process. As seen in the figure, first trading record 305 is stored in the first portion of computer-readable medium 330, sequentially followed by a first portion of second trading record 310 a. Since the trading record consisting of section 310 a and 310 b is too large to be entirely stored on computer-readable medium 330, the second portion of the second trading record 310 b is stored on the first portion of computer-readable medium 335. Trading record 315 is also stored on computer-readable medium 335 and substantially follows the second portion of the second trading record 310 b. In this regard, the trading records 305, 310, and 315 are sequentially stored on a plurality of computer-readable media are arranged in a sequential order. The computer-readable media, such as computer- readable media 330 and 335, do not have to be physically ordered in sequential manner, but rather must be configured to be sequentially store data.
  • As briefly mentioned above, one or more trading records may comprise a plurality of fields. In one such embodiment, optional step 225 may be implemented to determine if one or more of the trading record comprise more than one field. In one embodiment, upon determining that more than one field exists, step 230 may optionally be initiated to parse a first field from one of the trading records. As shown in FIG. 4, data 405, which may be similar to trading record 305 is received and it is determined through a process, such as process 225, that it comprises multiple fields. Optional step 230 may be initiated to parse the data into a plurality of fields. As shown in the figure, data 405 is parsed into at least three fields, wherein financial instrument data 405 a comprises an identification of the financial instrument, such as an option contract to purchase wheat in June, price data 405 b comprises information on the price of the contract, and quantity data 405 c may comprise information on the quantity, such as quantity of financial instruments. As discussed above, more or fewer fields may be utilized in various embodiments of the invention. Indeed, in one embodiment, optional step 235 may be implemented to determine if a field present in received data, such as trading record 405 comprises a new field, wherein upon the detection of a new field, a portion of the computer readable medium may be allocated to store data associated with the new field (step 240). While step 225 is shown in relation to receipt of the first trading record, one skilled in the art will realize that the step may be utilized upon receipt of any of the trading records.
  • In one embodiment, data associated with a first field of a trading record, such as financial instrument data 405 a may be stored in a first location on the computer readable medium (step 245). Data associated with other fields of the same record is not stored substantially sequential to financial instrument data 405 a, but may be placed on the computer readable memory at a different location (see exemplary embodiment of step 250). Upon receiving another trading record, such as trading record 410, it too may be parsed into a plurality of data associated with different fields. For simplicity, FIG. 4 shows trading record 410 subdivided according to the same fields as record 405. As shown in the figure, step 250 sequentially stores the data having a matching field (410 a comprises information relating to the field of “financial instrument”) on the computer-readable memory, wherein data of the first field 405 a that was initially stored in step 245 is substantially physically adjacent to the data of the first field 410 a that was stored in step 245.
  • As seen in FIG. 4, other matching fields of different trading records, such as trading records 405 and 410 may also be stored in the same manner. For example, price fields 405 b and 410 b are stored sequentially wherein price data 410 b is substantially sequential to and follows price data 405 b. (see also; quantity data 405 c and 410 c). The data may be stored sequentially as it is received and in at least one embodiment is stored in real time allowing for the fast storage and manipulation of the data without having to construct and update a database-type index. Moreover, while the illustrated computer-readable memory of FIG. 4 illustrates a single medium, one skilled in the art will realize a plurality of computer readable media could be utilized to achieve the same aspects of the invention.
  • Embodiments of the invention also relate to methods of performing a query on a computer readable medium, such as computer readable mediums having data stored in accordance with several or all of the steps and embodiments discussed in regards to FIGS. 2-4. In one embodiment, the query relates to a method of processing an order received at a match engine. An order for at least one financial instrument may be received at a match engine, which may be implemented, for example, with match engine module 106. In one embodiment, at least one parameter or field may be extracted from the order. Upon extracting the at least one field or parameter, the field(s) that were extracted are compared to fields and/or parameters within a non-indexed collection of data representing pending orders.
  • For example, looking back to FIG. 3 a, where trading records 305, 310 and 315 represent pending orders, the comparison may be initiated at the upper starting portion of record 305 and proceed through trading records 305, 310, and 315 in a sequential manner based on proximate physical location of the records. Since there is no database-type index, the data within trading records 305, 310 and 315 may be analyzed from different angles or perspectives at a more rapid pace than utilizing conventional database structures. Indeed, in some situations certain fields of data are unlikely to have data to meet the query being searched. For example, if the query relates to the quantity of financial instrument fields, a query against data located in currency fields is unlikely to yield useful information in many cases. Searching a collection of data arranged such that records or fields are physically located next to one another in a memory module in the direction of a read operation of the search allows for faster query execution when compared to queries performed on indexed databases having records or fields distributed throughout a memory module.
  • Yet in other embodiments, only distinct portions of trading records may be queried. For example, in one embodiment the pending orders may be organized as set forth in FIG. 4, wherein a plurality of trading records are stored wherein matching fields of different trading records, such as trading records 405 and 410 are stored in a substantially sequential fashion without an associated database-like index. For example, price fields 405 b and 410 b are stored sequentially and wherein price field 410 b is substantially sequential to and follows price field 405 b. According to one embodiment of the invention, only data categorized as having certain fields will be queried. This determination may be based on a user-input, an algorithm, or a combination of user preference and a function of one or software applications.
  • This can be more readily seen when reviewing FIG. 4. If a query is directed towards the price of a pending order, the comparison of the query and the data stored on the computer readable medium may be initiated at beginning of price data 405 b and proceed in a substantially sequential fashion to price data 410 b and through any additional price data located following price data 410 b. The searching and comparison of the price data within the compared data will be performed without the use of a database-like index and will go in the sequential manner as described above. As stated above, the individual trading records, such as 405 and 410 as well as the individual fields of data such as 405 a and 405 b may be of a fixed length, thereby allowing a user and/or computer device to readily and accurately estimate the time to conduct the query of the trading records and/or individual data fields.
  • The speed at which queries may be performed when trading records are arranged as described above may be taken advantage of for other exchange and trading related activities. For example, a match engine may match trades using aspects of the inventions. In another example traders, trading firms and exchange regulatory or enforcement divisions may wish to recreate the state of a market, such as pending bids and offers, at a given time. One conventional approach includes recording a snapshot of the state of the market for every change in the market. These snapshots require large amounts of storage space, even for data parameters that may not have changed since the last snapshot.
  • FIG. 5 illustrates an exemplary graphical user interface 500 that may be used to display market depth information and allow traders to trade financial instruments. The figure is helpful to aid the reader in understanding the type and amount of information that represents the state of a market. Graphical user interface 500 includes a price and quantity grid 502. Price and quantity grid 502 may contain five columns. A buy column 504 displays a user's working buy order quantities. As used herein, a user may be a trader. Each user will have different values in this column reflecting their buy order quantity. A hit column 506 displays the market bid quantities. Prices for individual rows are displayed in a price column 508. A take column 510 displays market ask quantities. And, a sell column 512 displays a user's working sell order quantities. Individual entries may be color coded to assist users in quickly interpreting the displayed information. For example, entries in buy column 504 and hit column 506 may be in blue and entries in take column 510 and sell column 512 may be in red.
  • In accordance with one embodiment of the invention, a trading firm, exchange or other entity may record trading records in a non-indexed collection of data, as described above. The speed at which such a collection may be queried and processed allows such entities to quickly recreate the state of the market for any time period. For example, an initial state of the market may first be determined and then all of the orders placed at an exchange may be processed in the same manner that they would be processed by an exchange until the desired point in time. For example, graphical user interface 500 (shown in FIG. 5) may represent an initial state of a market. All of the incoming orders received at an exchange may be stored sequentially in one or more memory modules as a non-indexed collection of orders such that the physical location of the orders corresponds to the order in which they were received. A computer device may then be programmed to retrieve the orders and recreate the state of the market.
  • Graphical user interface 520 represents the state of a market at some time after the state represented with graphical user interface 500. If we assume that graphical user interface 500 represents the state that existed at 9:00 on Monday morning and graphical user interface 520 represents the state that existed at 2:00 on the following Wednesday, the state represented with graphical user interface 520 may be recreated by starting with the state representing with graphical user interface 500 and processing orders in the sequential non-indexed collection of orders received until 2:00 on Wednesday.
  • Unlike conventional indexed databases storing and retrieving trading data according to one or more methods of the present invention does not require large quantities of trading data to be executed in batch mode overnight. Indeed, under traditional approaches, large amounts of data could not be adequately analyzed in real-time, thereby preventing many uses of the data. Under select embodiments of the invention, the analysis of the data sequentially stored on the computer readable memory can be continually processed in real-time to monitor activity while new data is being written to the computer readable medium, all without having to create, update, and maintain a space-consuming database index and constant interruption to jump physical locations within the computer readable medium to locate a certain data piece.
  • FIG. 6 illustrates one exemplary sequential non-indexed collection of orders stored on a computer-readable medium 600. As seen in the figure, computer readable medium 600 comprises a plurality of orders. Seen at the upper end of computer readable medium 600 is order 605. Order 605 may be, for example, any of the quantities and/or prices displayed in the price and quantity grid 502. Order 610 may represent the next order received at an exchange and order 615 may represent the next order received at the exchange. One skilled in the art will appreciate that intervals between the receipt of orders 605, 610 and 615 may not be uniform.
  • Recreating market conditions may be readily accessible by querying methods, for example, as described above. Indeed, by following one or more embodiments of the invention, the analysis of the data sequentially stored on the computer readable memory can be continually processed in real-time to monitor activity while new data is being written to the computer-readable medium, all without having to create, update, and maintain a space-consuming database index and constant interruption to jump physical locations within the computer readable medium to locate a certain data piece.
  • FIG. 7 illustrates a system for matching trades in accordance with an embodiment of the invention. Computer devices 702, 704 and 706 may be used to transmit orders for financial instruments to a match engine 708 via a network 710. Network 710 may be implemented at least in part with the Internet, a WAN, a LAN, a phone network or other infrastructure used for exchanging data between computer devices. Incoming orders are received at a processor 712. Processor 712 may encode incoming orders and transmit them to a shared memory 714. Encoding may include reducing the size of the order. For example, an order may be received at processor 712 that includes the name of a trading firm. During the encoding process, the trading firm name may be replaced with a number that represents the trading firm.
  • A second processor 716 may be configured to periodically check shared memory 714 for new orders. Processor 716 may include a cache memory 718 that includes one or more order books, such as order book 720. The physical locations of pending orders stored in cache memory 718 may correspond to the order in which they were received at the match engine. When a new order is received, the order may be compared to orders that are included in order book 720. The use of two processors 712 and 716 allows for fast operation when matching of trades. One skilled in the art will appreciate that in an alternative embodiment the functions performed by processors 712 and 716 may be performed by a single processor. In other embodiments, the functions performed by processors 712 and 716 may be performed by three or more processors. An exemplary processor that may be used with aspects of the invention is an Intel Itanium II, which contains a 9 MB byte cache memory. Another exemplary processor is the AMD Opteron processor, which utilizes Hypertransport™ technology.
  • After trades are matched, market data may be generated by processor 716 and then transmitted to shared memory 714. Processor 712 may periodically check shared memory 714 for market data messages. When market data messages are received, processor 712 may format or expand the market data message and then distribute the market data message to trading entities, such as those represented by computer devices 702, 704 and 706. Processor 712 may also distribute other information to trading entities, such as acknowledgement messages.
  • The speed at which processor 716 may process orders and the low-cost of such processors facilitates the use of redundant components and backup mechanisms. For example a backup processor 722 may include a cache memory 724 that includes an order book 726. Order book 726 may be synchronized with order book 720, such that in the event that processor 716 fails, backup processor 722 may resume matching of trades. A synchronization module 728 may be used to synchronize order books 720 and 726. In one embodiment, processor 716 and backup processor 722 transmit information identifying the states of order books 720 and 726 to synchronization module 728. Synchronization module 728 may then compare the states of the order books and make any adjustments that are necessary.
  • In one alternative embodiment, match engine 708 may include several different processors that are configured to match a variety of different trades. Shared memory 714 may group new orders such that each of the processors knows which order to process. For example, a first processor may maintain a first order book and match trades against the first order book and a second processor may maintain a second order book for a different financial instrument and match trades for those financial instruments.
  • Backup processor 722 may be included within match engine 708. Alternatively, backup processor 722 may be connected to match engine 708 via a local area network or wide-area network. Backup processor 722 may be in a different geographic location than processor 716. For example processor 716 may be located within a first premises and backup processor 722 may be located in a different premises to prevent all processors from failing because of a fire or other event at the first premises. Two or more processors may also be geographically distributed and may be configured to process orders originating from different geographic regions. For example, processor 716 may be located in Chicago and may process orders originating in the United States and a second processor may be located in London in may be configured to process orders originating in that region.
  • FIG. 8 illustrates a method of processing orders with the system shown in FIG. 7, in accordance with an embodiment of the invention. First, in step 802 pending orders are stored in a substantially sequential non-indexed collection on a computer readable medium. The computer readable medium may include a cache memory of a processor to facilitate rapid processing of incoming orders. Next, in step 804 a new order for a financial instrument is received at a match engine. The new order may be encoded in step 806. Encoding may include reducing the file size of the order and placing the order into a standard format that is recognized by components of the match engine. Next, in step 808 the encoded order may be stored in a memory module. The memory module may include a RAM memory that is accessible by more than one processor. In step 810, a processor may periodically check for new orders stored in the memory module. In one embodiment, steps 806 and step 810 are performed by different processors.
  • In step 812 the new order is compared to the plurality of pending orders arranged in the non-indexed collection of substantially sequential orders. It is then determined whether the new order matches one of the pending orders in step 814. When the new order does not match one of the pending orders, in step 816 the new order is added to the non-indexed collection of substantially sequential orders. Step 816 may include adding the new order to an existing order book. If the new order does match one of the pending orders, a trade for the matching orders may be executed in step 818. Finally, in step 820 market data may be formatted and distributed.
  • FIG. 9 illustrates a system for matching trades that uses redundant match engines in accordance with an embodiment of the invention. A first match engine 902 includes a first processor 904, a shared memory 906 and a second processor 908. Processor 908 includes a cache memory 910 that may include one or more order books, such as order book 912. A second match engine 914 includes a first processor 916, a shared memory 918 and a second processor 920. Processor 920 includes a cache memory 922 that may include one or more order books, such as order book 924. The components within match engines 902 and 914 function similar to corresponding components located within match engine 708 (shown in FIG. 7).
  • The match system shown in FIG. 9 includes an input gateway 926. Input gateway 926 receives orders, assigns identifying information to the orders and distributes the orders to match engines 902 and 914. Input gateway 926 may be implemented with a computer device configured to route data and assign identifying information. In operation computer device 928 may transmit an order for a financial instrument to input gateway 916 via network 930. Network 930 may be implemented at least in part with a WAN, LAN, phone network or other infrastructure used for exchanging data between computer devices. After receiving the order, input gateway 926 may assign an identification number to the order and transmit the order to match engines 902 and 914. In alternative embodiments of the invention, additional match engines may be included and input gateway 926 may transmit orders to some or all of the match engines.
  • In the embodiment shown, match engines 902 and 914 receive orders from input gateway 926 and process those orders in parallel. Match engines 902 and 914 include the same data in order books 912 and 924 and are configured to produce the same results. Output messages from processors 904 and 916 are transmitted to an output gateway 932. Output gateway 932 may be implemented with a computer device configured to route data. In one embodiment of the invention input gateway 926 and output gateway 932 are implemented with the same computer device. Output gateway 932 may include a message memory 934 that stores information identifying messages that have been transmitted by output gateway 932. At least part of the identifying information may be assigned by input gateway 926. The identifying information may be used to make sure that data for an event is only distributed once. For example, input gateway 926 may assign and identification number to a new order and then transmit the order to match engines 902 and 914. Match engines 902 and 914 may process the order in parallel and generate market data messages. The market data messages include the identification number assigned by input gateway 926. When market data messages are received at output gateway 932, output gateway may be configured to search identification numbers stored in message memory 934 to determine if a corresponding market data messages has been transmitted. When a message is received that includes an identification number not stored in message memory 934, the message is distributed to trading entities, such as to computer device 936 via network 938. When a message is received that includes an identification number that is stored in message memory 934, the message may be discarded.
  • One skilled in the art will appreciate that a variety of different schemes may be used to assign identifying information to data received at input gateway 926 and then filter data at output gateway 932. In one embodiment of the invention a new order may be assigned an identification number at input gateway 926 and derivative identification numbers may be assigned to messages associated with that order. For example, a new order may be assigned a 15 digit identification number and an acknowledgment message may be assigned an identification number that consists of the 15 digit identification number followed by a character or number that identifies the type of message. This allows multiple messages associated with a single order to all be assigned unique identification numbers that are related and ensures that match engines 902 and 914 assign the same identification numbers to created messages.
  • In the event of a failure of one of match engines 902 or 914, output gateway 932 would receive messages from only one match engine and continue to process messages without any failure being apparent to trading entities. In embodiments that include more than two match engines operating in parallel, the failure of one or two match engines would not be apparent to trading entities. Match engines 902 and 914, as well as any additional match engines, may be located in the same location or may be distributed to prevent a fire, network failure or other catastrophic event from halting the operation of all match engines.
  • The speed at which incoming orders may be processed when pending orders are arranged in a substantially sequential non-indexed collection in the cache memory of a processor allows for the processing of many types of orders. Existing match engine systems limit the type of orders that traders may make. For example, it not practical to process an order that does not have a standard format, such as an order to buy four particular contracts and sell six other contracts, because of the time required to match a single novel order having several legs to several different orders.
  • With the system described above the processing of orders can be quickly performed, which allows for many types of orders. For example, a trader may enter a nonstandard order that contains multiple legs in different markets. The systems shown in FIGS. 7 and 9 may rapidly attempt to match all of the legs of the nonstandard order without incurring reductions in throughput that would be incurred with conventional systems. Match engines 708, 902 and 914 may be programmed to perform implied pricing functions for nonstandard orders. Alternatively, a trader may provide prices for one or more legs of a nonstandard order.
  • The present invention has been described herein with reference to specific exemplary embodiments thereof. It will be apparent to those skilled in the art that a person understanding this invention may conceive of changes or other embodiments or variations, which utilize the principles of this invention without departing from the broader spirit and scope of the invention as set forth in the appended claims. For example, aspects of the invention may be applied to data collections that are not related to exchanges or trading. All are considered within the sphere, spirit, and scope of the invention.

Claims (27)

1. A computer-implemented method of matching orders for financial instruments, the method comprising:
(a) receiving at a match engine an order for a financial instrument; and
(b) comparing the order in (a) to a plurality of pending orders arranged in a non-indexed collection of substantially sequential orders located on a computer-readable medium.
2. The method of claim 1, further including:
(i) encoding the order before (b).
3. The method of claim 2, wherein (b) is performed at a first processor and (i) is performed at a second processor.
4. The method of claim 3, further including:
(ii) storing the encoded order in a memory module; and
(iii) at the second processor periodically checking for new orders stored in the memory module.
5. The method of claim 1, wherein (b) is performed at a processor and the computer-readable medium consists of a memory module located within the processor.
6. The method of claim 1, wherein the plurality of orders are stored in a solid-state memory module.
7. The method of claim 1, wherein the comparison is initiated at a commencing location on the computer-readable medium and is conducted in a substantially sequential manner and continues according to the proximate physical location of the plurality of pending orders on the computer-readable medium.
8. The method of claim 1, further including:
(i) formatting and distributing market data.
9. The method of claim 8, wherein (b) is performed at a first processor and (i) is performed at a second processor.
10. The method of claim 1, wherein the plurality of pending orders have a common a fixed length.
11. A match engine configured to match orders for financial instruments, the match engine comprising:
a computer-readable medium containing a non-indexed collection of substantially sequential pending orders; and
a first processor configured to sequentially compare a new order to at least a portion of the orders included in the non-indexed collection of substantially sequential pending orders.
12. The match engine of claim 11, further including:
a second processor configured to receive orders and encode the received orders.
13. The match engine of claim 12, further including:
a memory module coupled to the first processor and the second processor and that stores encoded orders.
14. The match engine of claim 13, wherein the first processor is configured to periodically check for new orders stored in the memory module.
15. The match engine of claim 11, wherein the computer-readable medium consists of a memory module located within the first processor.
16. The match engine of claim 11, wherein the computer-readable medium comprises a solid-state memory module.
17. The match engine of claim 11, wherein the computer-readable medium consists of a memory module having no moving parts.
18. The match engine of claim 11, further including:
a backup computer-readable medium containing a backup copy of the non-indexed collection of substantially sequential pending orders; and
a backup processor configured to sequentially compare a new order to at least a portion of the orders included in the backup copy of the non-indexed collection of substantially sequential pending orders.
19. The match engine of claim 18, wherein the backup computer-readable medium consists of a memory module located within backup processor.
20. The match engine of claim 18, wherein the backup computer-readable medium comprises a solid-state memory module.
21. The match engine of claim 18, wherein the backup computer-readable medium consists of a memory module having no moving parts.
22. The match engine of claim 18, further including a synchronization module that synchronizes the computer-readable medium and the backup computer-readable medium.
23. A system for matching orders for financial instruments, the system comprising:
a first match engine comprising a first computer-readable medium containing a first non-indexed collection of substantially sequential pending orders and a first processor configured to sequentially compare a new order to at least a portion of the orders included in the non-indexed collection of substantially sequential pending orders;
a second match engine comprising a second computer-readable medium containing a second non-indexed collection of substantially sequential pending orders and a second processor configured to sequentially compare a new order to at least a portion of the orders included in the second non-indexed collection of substantially sequential pending orders; and
an output gateway coupled to the first match engine and the second match engine and configured to filter redundant messages.
24. The system of claim 23, further including an input gateway configured to receive orders, assign identifying information and transmit orders to at least one match engine.
25. The system of claim 24 wherein the output gateway filters redundant messages based at least in part on the identifying information assigned by the input gateway.
26. The system of claim 23, wherein the first processor includes a memory that contains the first non-indexed collection of substantially sequential pending orders.
27. The system of claim 23, wherein the second processor includes a memory that contains the second non-indexed collection of substantially sequential pending orders.
US11/276,752 2005-09-23 2006-03-13 Match System that Uses a Non-Indexed Collection of Orders Abandoned US20070192230A1 (en)

Priority Applications (10)

Application Number Priority Date Filing Date Title
US11/276,752 US20070192230A1 (en) 2005-09-23 2006-03-13 Match System that Uses a Non-Indexed Collection of Orders
US11/696,555 US20070198465A1 (en) 2005-09-23 2007-04-04 Live profile
US12/125,682 US20080222086A1 (en) 2005-09-23 2008-05-22 Live profile
US12/335,246 US8095452B2 (en) 2005-09-23 2008-12-15 Live alerts
US12/536,994 US8200563B2 (en) 2005-09-23 2009-08-06 Publish and subscribe system including buffer
US13/312,445 US8244626B2 (en) 2005-09-23 2011-12-06 Live alerts
US13/466,520 US8468082B2 (en) 2005-09-23 2012-05-08 Publish and subscribe system including buffer
US13/543,974 US8407133B2 (en) 2005-09-23 2012-07-09 Live alerts
US13/897,077 US8812393B2 (en) 2005-09-23 2013-05-17 Publish and subscribe system including buffer
US14/324,973 US20140324666A1 (en) 2005-09-23 2014-07-07 Publish and Subscribe System Including Buffer

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/234,697 US8984033B2 (en) 2005-09-23 2005-09-23 Non-indexed in-memory data storage and retrieval
US11/276,752 US20070192230A1 (en) 2005-09-23 2006-03-13 Match System that Uses a Non-Indexed Collection of Orders

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/234,697 Continuation-In-Part US8984033B2 (en) 2005-09-23 2005-09-23 Non-indexed in-memory data storage and retrieval

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US11/696,555 Continuation-In-Part US20070198465A1 (en) 2005-09-23 2007-04-04 Live profile

Publications (1)

Publication Number Publication Date
US20070192230A1 true US20070192230A1 (en) 2007-08-16

Family

ID=37895331

Family Applications (3)

Application Number Title Priority Date Filing Date
US11/234,697 Active 2030-04-04 US8984033B2 (en) 2005-09-23 2005-09-23 Non-indexed in-memory data storage and retrieval
US11/276,752 Abandoned US20070192230A1 (en) 2005-09-23 2006-03-13 Match System that Uses a Non-Indexed Collection of Orders
US12/125,682 Abandoned US20080222086A1 (en) 2005-09-23 2008-05-22 Live profile

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US11/234,697 Active 2030-04-04 US8984033B2 (en) 2005-09-23 2005-09-23 Non-indexed in-memory data storage and retrieval

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/125,682 Abandoned US20080222086A1 (en) 2005-09-23 2008-05-22 Live profile

Country Status (3)

Country Link
US (3) US8984033B2 (en)
EP (1) EP1934918A4 (en)
WO (1) WO2007038229A2 (en)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070073634A1 (en) * 2005-09-23 2007-03-29 Chicago Mercantile Exchange Non-indexed in-memory data storage and retrieval
US20080317051A1 (en) * 2007-06-22 2008-12-25 Dantzig Paul M Methods and System for Highly Ordered Transaction Processing
WO2009045758A1 (en) * 2007-10-02 2009-04-09 Chicago Mercantile Exchange, Inc. Compressed non-indexed data storage
US20090187511A1 (en) * 2005-09-23 2009-07-23 Chicago Mercantile Exchange Inc. Live alerts
US20090299914A1 (en) * 2005-09-23 2009-12-03 Chicago Mercantile Exchange Inc. Publish and Subscribe System Including Buffer
US20100017321A1 (en) * 2008-07-18 2010-01-21 Chicago Mercantile Exchange, Inc. Adaptive Implied Spread Matching
US7783559B1 (en) * 2004-12-28 2010-08-24 Trading Technologies International, Inc. System and method for providing market updates in an electronic trading environment
US20150206239A1 (en) * 2012-07-24 2015-07-23 Boobera Lagoon Technology, Llc Processor and a method for processing a received order
US20180176320A1 (en) * 2016-12-19 2018-06-21 Chicago Mercantile Exchange Inc. Optimization of encoding cycles for object recovery feed
US20190108586A1 (en) * 2017-10-05 2019-04-11 Baton Systems, Inc. Data ingestion systems and methods
US10360629B2 (en) * 2016-12-19 2019-07-23 The Bartley J. Madden Foundation Volume attentive trade liquidity builder
US10504180B2 (en) * 2016-12-19 2019-12-10 The Bartley J. Madden Foundation Volume attentive trade liquidity builder
US10664548B2 (en) 2013-07-12 2020-05-26 Trading Technologies International, Inc. Tailored messaging
US11468511B2 (en) 2010-06-17 2022-10-11 Chicago Mercantile Exchange Inc. Generating implied orders based on electronic requests for quotes
US11941225B1 (en) * 2018-10-04 2024-03-26 United Services Automobile Association (Usaa) Systems and methods for self-directed investing

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070055629A1 (en) * 2005-09-08 2007-03-08 Qualcomm Incorporated Methods and apparatus for distributing content to support multiple customer service entities and content packagers
US20070198465A1 (en) * 2005-09-23 2007-08-23 Chicago Mercantile Exchange, Inc. Live profile
AU2009207280A1 (en) * 2008-01-23 2009-07-30 Superderivatives, Inc. System for generating a customized financial trade article
KR102226721B1 (en) * 2015-10-21 2021-03-11 에스케이텔레콤 주식회사 Method and apparatus for data retrieval
CN109086111B (en) * 2018-07-12 2021-10-08 越信智能科技(深圳)有限公司 Image-text display method and system for transaction interface data

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5719564A (en) * 1996-05-10 1998-02-17 Sears; Lawrence M. Utility meter reading system
US5729742A (en) * 1995-02-27 1998-03-17 International Business Machines Corporation System and method for enabling multiple computer systems to share a single sequential log
US6526512B1 (en) * 1996-05-20 2003-02-25 Ncr Corporation Access key codes for computer resources
US20030055776A1 (en) * 2001-05-15 2003-03-20 Ralph Samuelson Method and apparatus for bundling transmission rights and energy for trading
US6801199B1 (en) * 2000-03-01 2004-10-05 Foliofn, Inc. Method and apparatus for interacting with investors to create investment portfolios
US6981104B2 (en) * 2002-07-12 2005-12-27 Hewlett-Packard Development Company, L.P. Method for conducting checkpointing within a writeback cache
US6993511B2 (en) * 1999-08-05 2006-01-31 Barter Securities Electronic bartering system
US7079023B2 (en) * 2002-10-04 2006-07-18 Sap Aktiengesellschaft Active object identification and data collection
US7444471B1 (en) * 2002-12-30 2008-10-28 Transmeta Corporation Method and system for using external storage to amortize CPU cycle utilization

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210870A (en) 1990-03-27 1993-05-11 International Business Machines Database sort and merge apparatus with multiple memory arrays having alternating access
US5278980A (en) * 1991-08-16 1994-01-11 Xerox Corporation Iterative technique for phrase query formation and an information retrieval system employing same
US5903454A (en) * 1991-12-23 1999-05-11 Hoffberg; Linda Irene Human-factored interface corporating adaptive pattern recognition based controller apparatus
WO1995011487A1 (en) 1993-10-22 1995-04-27 Fdc, Inc. Database using table rotation and bimapped queries
US20030040955A1 (en) 1999-07-02 2003-02-27 The Nasdaq Stock Market, Inc., A Delaware Corporation Market monitoring architecture for detecting alert conditions
US7996296B2 (en) * 1999-07-21 2011-08-09 Longitude Llc Digital options having demand-based, adjustable returns, and trading exchange therefor
US6321212B1 (en) * 1999-07-21 2001-11-20 Longitude, Inc. Financial products having a demand-based, adjustable return, and trading exchange therefor
US7389262B1 (en) * 1999-07-21 2008-06-17 Longitude, Inc. Financial products having demand-based, adjustable returns, and trading exchange therefor
US8126794B2 (en) * 1999-07-21 2012-02-28 Longitude Llc Replicated derivatives having demand-based, adjustable returns, and trading exchange therefor
US7356498B2 (en) * 1999-12-30 2008-04-08 Chicago Board Options Exchange, Incorporated Automated trading exchange system having integrated quote risk monitoring and integrated quote modification services
US20020004774A1 (en) * 2000-03-27 2002-01-10 Tony Defarlo Data analysis system for tracking financial trader history and profiling trading behavior
US8799138B2 (en) * 2000-04-10 2014-08-05 Stikine Technology, Llc Routing control for orders eligible for multiple markets
US6389510B1 (en) * 2000-04-25 2002-05-14 Lucent Technologies Inc. Method and apparatus for caching web-based information
US6845484B1 (en) * 2000-04-27 2005-01-18 International Business Machines Corporation Technique and method which dynamically generates various depth levels of abstracts for text based data sources on demand
US6721729B2 (en) 2000-06-09 2004-04-13 Thanh Ngoc Nguyen Method and apparatus for electronic file search and collection
US6865650B1 (en) 2000-09-29 2005-03-08 Emc Corporation System and method for hierarchical data storage
US6754621B1 (en) 2000-10-06 2004-06-22 Andrew Cunningham Asynchronous hypertext messaging system and method
US20020055886A1 (en) * 2000-11-08 2002-05-09 Converge, Inc. System and method for maintaining and utilizing component cross reference data in an exchange system
US8700781B2 (en) 2001-06-12 2014-04-15 Verizon Business Global Llc Automated processing of service requests using structured messaging protocols
US20030028506A1 (en) 2001-06-29 2003-02-06 Lin Yu Deferred index building systems, methods and computer program products for storing temporally spaced apart bursts of data records in a database
US20030144947A1 (en) * 2001-08-03 2003-07-31 Payne Richard C. Computer-based system for hedging and pricing customized basket exchange swaps
US8195542B2 (en) * 2001-08-21 2012-06-05 The Nasdaq Omx Group, Inc. Web-based issuer support services
US7099935B2 (en) 2001-10-01 2006-08-29 International Business Machines Corporation Dynamically determining whether to process requests synchronously or asynchronously
US7225207B1 (en) * 2001-10-10 2007-05-29 Google Inc. Server for geospatially organized flat file data
US6879987B2 (en) * 2001-10-31 2005-04-12 Inventec Corp. Method for storing records in database or reading the same therefrom
US6907422B1 (en) * 2001-12-18 2005-06-14 Siebel Systems, Inc. Method and system for access and display of data from large data sets
US7334003B2 (en) * 2002-01-11 2008-02-19 First Data Corporation Methods and systems for extracting related information from flat files
US7603300B2 (en) * 2002-11-18 2009-10-13 Sap Aktiengesellschaft Collection and analysis of trading data in an electronic marketplace
US7584192B2 (en) * 2002-11-18 2009-09-01 Sap Aktiengesellschaft Collection and analysis of document traffic in an electronic marketplace
US7047251B2 (en) * 2002-11-22 2006-05-16 Accenture Global Services, Gmbh Standardized customer application and record for inputting customer data into analytic models
US7464055B2 (en) * 2003-03-28 2008-12-09 Chicago Mercantile Exchange System and method for monitoring trades outside of a no-bust range in an electronic trading system
US20050049952A1 (en) * 2003-08-14 2005-03-03 Carter Kevin Todd Stock selection & indexing systems and methods
GB2406660A (en) * 2003-09-30 2005-04-06 Ibm A system for retrieving data from a partially indexed data store
US20050091148A1 (en) * 2003-10-27 2005-04-28 Anthony Rotondo Method and apparatus for synthesizing metrics of stock or share market indices
US20050114405A1 (en) * 2003-11-25 2005-05-26 Microsoft Corporation Flat file processing method and system
GB0328575D0 (en) * 2003-12-10 2004-01-14 Ibm Method and apparatus for browsing a list of data items
US10832321B2 (en) * 2003-12-12 2020-11-10 Gfi Group, Inc. Apparatus, method and system for providing an electronic marketplace for trading credit default swaps and other financial instruments, including a trade management service system
US20060071774A1 (en) * 2004-02-26 2006-04-06 Brown Katherine A Item monitoring system and methods using an item monitoring system
US20070198696A1 (en) 2004-10-06 2007-08-23 Morris Robert P System and method for utilizing contact information, presence information and device activity
JP2006302015A (en) 2005-04-21 2006-11-02 Hitachi Ltd Storage system and data management method
US8984033B2 (en) 2005-09-23 2015-03-17 Chicago Mercantile Exchange, Inc. Non-indexed in-memory data storage and retrieval
US8200563B2 (en) 2005-09-23 2012-06-12 Chicago Mercantile Exchange Inc. Publish and subscribe system including buffer
US20080005294A1 (en) 2006-06-30 2008-01-03 Morris Robert P Method and system for exchanging messages using a presence service
CA2672291A1 (en) 2006-12-14 2008-06-19 Telefonaktiebolaget L M Ericsson (Publ) A method and arrangement for handling a subscription for client data

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5729742A (en) * 1995-02-27 1998-03-17 International Business Machines Corporation System and method for enabling multiple computer systems to share a single sequential log
US5719564A (en) * 1996-05-10 1998-02-17 Sears; Lawrence M. Utility meter reading system
US6526512B1 (en) * 1996-05-20 2003-02-25 Ncr Corporation Access key codes for computer resources
US6993511B2 (en) * 1999-08-05 2006-01-31 Barter Securities Electronic bartering system
US6801199B1 (en) * 2000-03-01 2004-10-05 Foliofn, Inc. Method and apparatus for interacting with investors to create investment portfolios
US20030055776A1 (en) * 2001-05-15 2003-03-20 Ralph Samuelson Method and apparatus for bundling transmission rights and energy for trading
US6981104B2 (en) * 2002-07-12 2005-12-27 Hewlett-Packard Development Company, L.P. Method for conducting checkpointing within a writeback cache
US7079023B2 (en) * 2002-10-04 2006-07-18 Sap Aktiengesellschaft Active object identification and data collection
US7444471B1 (en) * 2002-12-30 2008-10-28 Transmeta Corporation Method and system for using external storage to amortize CPU cycle utilization

Cited By (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7970697B2 (en) 2004-12-28 2011-06-28 Trading Technologies International, Inc. System and method for providing market updates in an electronic trading environment
US8583541B2 (en) 2004-12-28 2013-11-12 Trading Technologies International, Inc. System and method for providing market updates in an electronic trading environment
US20110218904A1 (en) * 2004-12-28 2011-09-08 Trading Technologies International, Inc. System and Method for Providing Market Updates in an Electronic Trading Environment
US10776872B2 (en) 2004-12-28 2020-09-15 Trading Technologies International, Inc. System and method for providing market updates in an electronic trading environment
US10185990B2 (en) 2004-12-28 2019-01-22 Trading Technologies International, Inc. System and method for providing market updates in an electronic trading environment
US11562431B2 (en) 2004-12-28 2023-01-24 Trading Technologies International, Inc. System and method for providing market updates in an electronic trading environment
US7783559B1 (en) * 2004-12-28 2010-08-24 Trading Technologies International, Inc. System and method for providing market updates in an electronic trading environment
US7783558B1 (en) 2004-12-28 2010-08-24 Trading Technologies International, Inc. System and method for providing market updates in an electronic trading environment
US20100274705A1 (en) * 2004-12-28 2010-10-28 Trading Technologies International, Inc. System and Method for Providing Market Updates in an Electronic Trading Environment
US7882018B2 (en) 2004-12-28 2011-02-01 Trading Technologies International, Inc. System and method for providing market updates in an electronic trading environment
US8301546B2 (en) 2004-12-28 2012-10-30 Trading Technologies International, Inc. System and method for providing market updates in an electronic trading environment
US20110093381A1 (en) * 2004-12-28 2011-04-21 Trading Technologies International, Inc. System and method for providing market updates in an electronic trading environment
US11334944B2 (en) 2004-12-28 2022-05-17 Trading Technologies International, Inc. System and method for providing market updates in an electronic trading environment
US8407133B2 (en) 2005-09-23 2013-03-26 Chicago Mercantile Exchange Inc. Live alerts
US20090187511A1 (en) * 2005-09-23 2009-07-23 Chicago Mercantile Exchange Inc. Live alerts
US8200563B2 (en) 2005-09-23 2012-06-12 Chicago Mercantile Exchange Inc. Publish and subscribe system including buffer
US8244626B2 (en) 2005-09-23 2012-08-14 Chicago Mercantile Exchange Inc. Live alerts
US20070073634A1 (en) * 2005-09-23 2007-03-29 Chicago Mercantile Exchange Non-indexed in-memory data storage and retrieval
US8984033B2 (en) 2005-09-23 2015-03-17 Chicago Mercantile Exchange, Inc. Non-indexed in-memory data storage and retrieval
US20090299914A1 (en) * 2005-09-23 2009-12-03 Chicago Mercantile Exchange Inc. Publish and Subscribe System Including Buffer
US8095452B2 (en) 2005-09-23 2012-01-10 Chicago Mercantile Exchange Inc. Live alerts
US20080317051A1 (en) * 2007-06-22 2008-12-25 Dantzig Paul M Methods and System for Highly Ordered Transaction Processing
US9965731B2 (en) * 2007-06-22 2018-05-08 International Business Machines Corporation Highly ordered transaction processing
US11573832B2 (en) 2007-06-22 2023-02-07 International Business Machines Corporation Highly ordered transaction processing
WO2009045758A1 (en) * 2007-10-02 2009-04-09 Chicago Mercantile Exchange, Inc. Compressed non-indexed data storage
US20100017321A1 (en) * 2008-07-18 2010-01-21 Chicago Mercantile Exchange, Inc. Adaptive Implied Spread Matching
WO2011017399A1 (en) * 2009-08-06 2011-02-10 Chicago Mercantile Exchange Inc. Publish and subscribe system including buffer
US11468511B2 (en) 2010-06-17 2022-10-11 Chicago Mercantile Exchange Inc. Generating implied orders based on electronic requests for quotes
US20150206239A1 (en) * 2012-07-24 2015-07-23 Boobera Lagoon Technology, Llc Processor and a method for processing a received order
US11334641B2 (en) 2013-07-12 2022-05-17 Trading Technologies International, Inc. Tailored messaging
US10664548B2 (en) 2013-07-12 2020-05-26 Trading Technologies International, Inc. Tailored messaging
US11687609B2 (en) 2013-07-12 2023-06-27 Trading Technologies International, Inc. Tailored messaging
US11048772B2 (en) 2013-07-12 2021-06-29 Trading Technologies International, Inc. Tailored messaging
US11201941B2 (en) * 2016-12-19 2021-12-14 Chicago Mercantile Exchange Inc. Optimization of encoding cycles for object recovery feed
US10504180B2 (en) * 2016-12-19 2019-12-10 The Bartley J. Madden Foundation Volume attentive trade liquidity builder
US11445044B2 (en) 2016-12-19 2022-09-13 Chicago Mercantile Exchange Inc. Optimization of encoding cycles for object recovery feed
US10360629B2 (en) * 2016-12-19 2019-07-23 The Bartley J. Madden Foundation Volume attentive trade liquidity builder
US20180176320A1 (en) * 2016-12-19 2018-06-21 Chicago Mercantile Exchange Inc. Optimization of encoding cycles for object recovery feed
US10812613B2 (en) * 2016-12-19 2020-10-20 Chicago Mercantile Exchange Inc. Optimization of encoding cycles for object recovery feed
US10817943B2 (en) 2016-12-19 2020-10-27 The Bartley J. Madden Foundation Volume attentive trade liquidity builder
US11695854B2 (en) 2016-12-19 2023-07-04 Chicago Mercantile Exchange Inc. Optimization of encoding cycles for object recovery feed
US20190108586A1 (en) * 2017-10-05 2019-04-11 Baton Systems, Inc. Data ingestion systems and methods
US11941225B1 (en) * 2018-10-04 2024-03-26 United Services Automobile Association (Usaa) Systems and methods for self-directed investing

Also Published As

Publication number Publication date
US20080222086A1 (en) 2008-09-11
WO2007038229A3 (en) 2008-01-10
US8984033B2 (en) 2015-03-17
EP1934918A2 (en) 2008-06-25
US20070073634A1 (en) 2007-03-29
WO2007038229A2 (en) 2007-04-05
EP1934918A4 (en) 2013-10-16

Similar Documents

Publication Publication Date Title
US20070192230A1 (en) Match System that Uses a Non-Indexed Collection of Orders
US8407133B2 (en) Live alerts
US8812393B2 (en) Publish and subscribe system including buffer
US20140089164A1 (en) Trade engine processing of mass quote messages and resulting production of market data
CN105446991A (en) Data storage method, query method and device
US20080086405A1 (en) Template based matching
EP3582112A1 (en) Optimized data structure
US10572940B2 (en) Dataset intersection determination
US20090089071A1 (en) Compressed non-indexed data storage
US20070198465A1 (en) Live profile
Bui et al. Stock market activity and Google Trends: the case of a developing economy
US8572041B2 (en) Representing records
Henker et al. Hephaistos: A Management System for Massive Order Book Data from Multiple Centralized Crypto Exchanges with an Internal Unified Order Book
CN114418771B (en) Data transmission method and related device
Henker et al. Athena: Smart order routing on centralized crypto exchanges using a unified order book
KR20230111788A (en) Method for clustering cryptocurrency wallet addresses and apparatus for same

Legal Events

Date Code Title Description
AS Assignment

Owner name: CHICAGO MERCANTILE EXCHANGE, INC., ILLINOIS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MEACHAM, PAUL;DOORNEBOS, JACOB;MORAN, JAMES P.;REEL/FRAME:017317/0501;SIGNING DATES FROM 20060303 TO 20060310

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION