US Futures Multiple Depth Guide
US Futures Multiple Depth Guide
version 2.2 (Jul 2021)
We are here to help you do great things with our market and reference data. For questions, feedback, and other concerns, you may reach our team of experts using the following contact information:
algoseek customer support
support@algoseek.com
(+1) 646 583 1832
algoseek sales
sales@algoseek.com
(+1) 646 583 1832
DATA ORGANIZATION AND FILE FORMAT 4
TIMESTAMP AND MAINTENANCE PERIODS 7
This document describes the format for algoseek’s Futures and Spreads Market Depth data from US exchanges. The data includes 10 levels of the order book for all bids and asks (including sizes).
The contract specifications such as underlying asset, the quantity of the asset or contract size, expiration months, delivery location, and the delivery date upon execution can be found on the US futures products list, which is available at the following link: http://www.cmegroup.com/trading/products/.
algoseek's service allows clients to query data by date for each trading session which spans an entire week. The dates of the session are cut using UTC time. For example, all messages with UTC timestamp for 2014-03-12 will be posted under the 2014-03-12 date.
It is also possible to have multiple snapshots for the same millisecond resolution of very actively traded instruments as updates are delivered upon completion of the incremental FIX batch book update transaction. The book snapshots allow the seamless carryover of the previous day’s book into the new day past midnight in UTC. Hence, if a client wishes to download the session for the whole week, they will get a consistent book spanning the entire week.
algoseek provides Futures market data in plain-text CSV files. The first row of the CSV file is a fixed header, and then rows of data corresponding to individual events (see Table 1). By default, data is organized into one file per symbol per trading day. For example, all events for ticker GEH3 on Sep 9, 2019, are stored in one CSV file.
Due to the large data size, CSV files are gzip-compressed (having a csv.gz extension) with a compression ratio of about 8:1.
Table 1. Sample Futures Multiple Depth Data
LocalDate | Local Time | Ticker | Side | Flags | Depth | L1 Price | L1 Size | L1 Orders | L2 Price | L2 Size | L2 Orders |
2019 0922 | 190000000 | GEH3 | B | 1 | 2 | 98.490 | 1204 | 0 | 98.485 | 2973 | 0 |
2019 0922 | 190000000 | GEH3 | S | 1 | 2 | 98.500 | 163 | 0 | 98.505 | 5479 | 0 |
2019 0922 | 190000116 | GEH3 | S | 1 | 2 | 98.500 | 163 | 0 | 98.505 | 5480 | 0 |
2019 0922 | 190001217 | GEH3 | S | 1 | 2 | 98.500 | 163 | 0 | 98.505 | 5483 | 0 |
2019 0922 | 190001224 | GEH3 | S | 1 | 2 | 98.5000 | 163 | 0 | 98.505 | 5482 | 0 |
2019 0922 | 190016609 | GEH3 | S | 1 | 2 | 98.500 | 163 | 0 | 98.505 | 5478 | 0 |
2019 0922 | 190016609 | GEH3 | S | 1 | 2 | 98.500 | 163 | 0 | 98.505 | 5474 | 0 |
2019 0922 | 190016609 | GEH3 | S | 1 | 2 | 98.500 | 163 | 0 | 98.505 | 5470 | 0 |
Note: SecurityID and data fields for levels 3-10 are not shown on the table.
Each row has 10 levels for Price, Size and Orders columns but there will only be data for the number of Depth levels. In means that if Depth = 5, then columns for levels 6-10 will be filled with zeros.
Table 2 (below) provides the name, description, and data type for each data field (column) in a Futures Multiple Depth dataset.
Table 2: CSV File Fields Schema
Field | Type (Format) | Description |
UTCDate | string (yyyymmdd) | the month, day, and year that the transaction has been made |
UTCTime | string (HHMMSSmmm) | the trade time in Coordinated Universal Time (UTC) format |
LocalTime | string (yyyymmdd) | the trade time in Central Standard Time (CST) format |
LocalDate | string (HHMMSSmmm) | the trade date based on the current local time |
Ticker | string | the name of the instrument with a maximum of 20 characters |
SecurityID | integer | CME security identifier |
Side | string | B (Buy) or S (Sell) side of the book |
Flags | integer | may be implied (1) or regular book (0) |
Depth | integer | number of levels being shown in the book for this instrument |
L1Price | decimal | level 1 price |
L1Size | integer | number of contracts on level 1 |
L1Orders | integer | number of orders on level 1 |
L2Price | decimal | level 2 price |
L2Size | integer | number of contracts on level 2 |
L2Orders | integer | number of orders on level 2 |
L3Price | decimal | level 3 price |
L3Size | integer | number of contracts on level 3 |
L3Orders | integer | number of orders on level 3 |
L4Price | decimal | level 4 price |
L4Size | integer | number of contracts on level 4 |
L4Orders | integer | number of orders on level 4 |
L4Price | decimal | level 4 price |
L4Size | integer | number of contracts on level 4 |
L4Orders | integer | number of orders on level 4 |
L4Price | decimal | level 5 price |
L4Size | integer | number of contracts on level 5 |
L4Orders | integer | number of orders on level 5 |
L6Price | decimal | level 6 price |
L6Size | integer | number of contracts on level 6 |
L6Orders | integer | number of orders on level 6 |
L7Price | decimal | level 7 price |
L7Size | integer | number of contracts on level 7 |
L7Orders | integer | number of orders on level 7 |
L8Price | decimal | level 8 price |
L8Size | integer | number of contracts on level 8 |
L8Orders | integer | number of orders on level 8 |
L9Price | decimal | level 9 price |
L9Size | integer | number of contracts on level 9 |
L9Orders | integer | number of orders on level 9 |
L10Price | decimal | level 10 price |
L10Size | integer | number of contracts on level 10 |
L10Orders | integer | number of orders on level 10 |
The “Flags” field marks a regular or implied event. An Implied Quote is based on relationships between futures contracts. It is not the actual price of the Futures' bid or ask but is rather implied from another trade (e.g., as part of a spread). It is often away from the current regular bid or ask value. To learn more about implied orders, see for example http://www.cmegroup.com/confluence/display/EPICSANDBOX/Implied+Orders
The field “Depth” or the number of levels shown in algoseek’s Futures Multiple Depth dataset depends on the type of instrument. It may contain the value 1, 2, 5, or 10 wherein 10 is the maximum depth, the standard number of possible levels in all instruments. However, the field will be filled with 0 if a level is left unused.
The ticker represents the name of the instrument with a maximum of 20 characters. It is a combination of the product code and an expiration month and year code. It may also include a code for spread type.
The general symbology scheme for Futures is ZZZMY, where ZZZ is the base symbol, M is the expiration month code and Y is the last digit of the expiration year.
Some sample tickers:
Use the link below to match the expiration month code with the corresponding month https://www.cmegroup.com/month-codes.html. The expiration year code corresponds to the last digit of the year.
Each symbol has one file per contract on each trading day containing quotes, trades, open interest, settlement prices, etc. A trading day means UTC time from 00:00 to 24:00.
The field “UTCTime'' contains timestamps based on a 24-hour system and follows an HHMMSSZZZ format wherein HHMMSS represents 2-digit values for hours, minutes, and seconds, while ZZZ indicates a 3-digit millisecond value.
The field “LocalTime” reflects the current time in Chicago (CST). During winter, the local timestamp is adjusted to UTC –6 and is changed to UTC –5 during daylight saving time (DST). For example, an algoseek Futures timestamp of 181514415 is 18:15:14.415 UTC. During daylight saving time, this converts to 13:15:14.415 CST.