US Futures Trade and Quote Minute Bar Guide
US Futures Trade and Quote Minute Bar 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 5
algoseek’s Futures, Spreads, and Futures Options Trade and Quote Minute Bar datasets contain high-quality intraday information-rich one-minute bar data for all securities listed on US exchanges. The data includes event-based bars designed for quantitative trading, backtesting, machine learning, and other advanced applications.
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 on the following link: http://www.cmegroup.com/trading/products/.
The volume of futures varies from contract to contract. Some contracts, for example, ES front month, have multiple events per millisecond, and some contracts don’t have any type of event (i.e. bid, ask, or trade) for 24 hours.
algoseek’s futures bars are event-based, which means a bar is only created when there is at least one event during a bar period. The three types of events (bid, ask, and trade) don’t always happen together during a bar period. For example, there could be three bids, but neither trades nor asks for a minute.
There are Implied Bid and Ask Quotes for some futures based on spread relationships (e.g., Crude Oil CL futures). However, these are ignored when building the bars. Only real bid and ask quotes are included.
Some futures have calculated prices that are not based on actual trades, and these are not included in bars. Only trades of the actual futures are included.
If the specified futures contract has a daily break, you may see bars with the bid or ask events that the exchange published during the break period. For example, Silver Futures (SI) has a daily hour break from 4 pm to 5 pm Central Time.
These bid or ask events are published by the exchange to indicate the expected price after the daily halt.
A bar file is only created if there is at least one of the following conditions apply within 24 hours:
If there is only one type of event during the bar period, the event fields will have the same values. For example:
OpenBidPrice = HighBidPrice = LowBidPrice = CloseBidPrice
OpenBidSize = HighBidSize = LowBidSize = CloseBidSize
OpenBidTime = HighBidTime = LowBidTime = CloseBidTime
Bars are created only if there is a trade or quote event during the minute. For illiquid futures with no trades or quotes on a given trade date, there will be no bar data file. Some very illiquid futures may even not have any trades or quotes for weeks at a time.
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. By default, data is organized into one file per symbol per trading day. For example, all events for ticker ESH0 on Jan 28, 2020, 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 below provides the name, base event, default value, brief description, and data type for each data field (column) in the Futures TAQ Minute Bar CSV file. Table column “Missing” indicates a default behavior in case the data field value is not present or cannot be calculated. The column value “Never” means that the data field value is always present.
Table 1: CSV File Fields Schema
Field | Base Event | Type (Format) | Missing | Description |
Ticker | - | string | Never | Symbol name for a specific contract |
UTCDate | - | string (yyyymmdd) | Never | UTC trade date |
UTCTimeBarStart | - | string (time) | Never | For minute bars, the format is HH:MM. For second bars, it is HH:MM:SS. |
LocalDate | - | string (yyyymmdd) | Never | Local trade date based on local Chicago time. |
LocalTimeBarStart | - | string (time) | Never | Local time in Chicago including daylight saving time changes |
CallPut | - | string | Never | Option type (Call or Put) displayed as "C" or "P". Note: available only in Future Options dataset |
Strike | - | integer | Never | A fixed price for buying or selling underlying outright future contract. Note: available only in Future Options dataset |
Month | - | string | Never | A code for the expiration month for the option contract (as a single letter). Note: available only in Future Options dataset |
ExpirationYear | - | integer | Never | The expiration year of the option contract. Note: available only in Future Options dataset |
OpenBidTime | Quote | string (timestamp) | Blank | Time of first bid |
OpenBidPrice | Quote | decimal | Blank | Opening bid price |
OpenBidSize | Quote | integer | Blank | Opening bid Size |
OpenAskTime | Quote | string (timestamp) | Blank | Time of first ask |
OpenAskPrice | Quote | decimal | Blank | Opening ask price |
OpenAskSize | Quote | integer | Blank | Opening ask size |
OpenTradeTime | Trade | string (timestamp) | Blank | Time of first trade |
OpenTradePrice | Trade | decimal | Blank | Price of first trade |
OpenTradeSize | Trade | integer | Blank | Number of contracts of first trade |
HighBidTime | Quote | string (timestamp) | Blank | Time of highest bid price |
HighBidPrice | Quote | decimal | Blank | Highest bid price |
HighBidSize | Quote | integer | Blank | Bid size of highest bid price |
HighAskTime | Quote | string (timestamp) | Blank | Time of highest ask price |
HighAskPrice | Quote | decimal | Blank | Highest ask price |
HighAskSize | Quote | integer | Blank | High ask size |
HighTradeTime | Trade | string (timestamp) | Blank | Time of highest trade |
HighTradePrice | Trade | decimal | Blank | Price of highest trade |
HighTradeSize | Trade | integer | Blank | Number of contracts of highest trade |
LowBidTime | Quote | string (timestamp) | Blank | Time of lowest bid |
LowBidPrice | Quote | decimal | Blank | Lowest bid price |
LowBidSize | Quote | integer | Blank | Bid Size of lowest bid price |
LowAskTime | Quote | string (timestamp) | Blank | Time of lowest ask price |
LowAskPrice | Quote | decimal | Blank | Lowest ask price |
LowAskSize | Quote | integer | Blank | Lowest ask size |
LowTradeTime | Trade | string (timestamp) | Blank | Time of lowest trade |
LowTradePrice | Trade | decimal | Blank | Price of lowest trade |
LowTradeSize | Trade | integer | Blank | Number of contracts of lowest trade |
CloseBidTime | Quote | string (timestamp) | Blank | Time of last bid |
CloseBidPrice | Quote | decimal | Blank | Price of last bid in bar |
CloseBidSize | Quote | integer | Blank | Size of Last bid in bar |
CloseAskTime | Quote | string (timestamp) | Blank | Time of last ask |
CloseAskPrice | Quote | decimal | Blank | Price of last ask in bar |
CloseAskSize | Quote | integer | Blank | Size of last ask in bar |
CloseTradeTime | Trade | string (timestamp) | Blank | Time of last trade |
CloseTradePrice | Trade | decimal | Blank | Price of last trade |
CloseTradeSize | Trade | integer | Blank | Number of contracts of last trade |
MinSpread | Quote | decimal | Blank | Minimum Bid-Ask spread size: this requires both a bid and ask during the minute. If the spread is negative, then it is 0. |
MaxSpread | Quote | decimal | Blank | Maximum Bid-Ask spread size: This requires both a bid and ask during the minute. |
VolumeWeightPrice | Trade | decimal | Blank | Trade Volume weighted average price:
|
TotalRegularQuotes | Quote | integer | Blank | Number of Regular Bid/Ask quotes. This remains blank if there are no bid or ask events. Implied quotes are ignored for bar creation. |
BuyAggressorTrades | Trade | integer | 0 | Number of trade where type is “Trade Aggressor at Buy” |
SellAggressorTrades | Trade | integer | 0 | Number of trade where type is “Trade Aggressor at Sell” |
NoAggressorTrades | Trade | integer | 0 | Number of trades where exchanges do not publish the Trade Aggressor Side |
BuyAggressorQuantity | Trade | integer | 0 | Sum of trade contracts where type is“Trade Aggressor at Buy” |
SellAggressorQuantity | Trade | integer | 0 | Sum of trade contracts where type is“Trade Aggressor at Sell” |
NoAggressorQuantity | Trade | integer | 0 | Sum of trade contracts where exchanges do not publish the Trade Aggressor Side |
Volume | Trade | integer | 0 | Total number of contracts traded |
TotalTrades | Trade | integer | 0 | Total number of trades |
Time Bar Start Format: One-second bar 13:03:02 is from a time greater than 13:03:01 to 13:03:02. One-minute bar 11:04 is from time greater than 11:04 to less than 11:05.
VolumeWeightPrice: the volume-weighted price is calculated as a sum of all individual trade volumes divided by the total number of shares traded
((Trade1_Shares x Trade1_Price) + (Trade2_Shares x Trade2_Price) + ...) / TotalShares
The timestamps are all in Coordinated Universal Time (UTC). However, each bar also includes fields “LocalDate” and “LocalTimeBarStart” in Chicago local time, which is in the Central Standard Time (CST) zone.
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.
Given that UTC varies by five or six hours from Chicago local time, the “LocalDate” field can be different from the “UTCDate” field. Chicago Winter Time is UTC –6 hours, and Summer Daylight Saving Time (DST) is UTC –5 hours.
For example, UTCTimeBarStart time 01:30 (1:30 a.m. UTC) with UTC date 2017-08-15 will have LocalDate 2017-08-14, and LocalTimeBarStart 20:30 (8:30 p.m. CST) due to the 5-hour difference during Daylight Saving Time.
Note: Excel will automatically try to convert millisecond timestamps into Excel time and will fail. Please make sure to convert the millisecond timestamps to text when importing.