US Futures Trade and Quote Minute Bar
One-minute event-based bars for CME-listed futures combining quote and trade activity: bid/ask/trade open-high-low-close with times and sizes, spreads, VWAP and aggressor-side trade counts.
How to use it
UTCDate/UTCTime are the event time in UTC and files cover UTC calendar days, so one CME overnight session spans two files and Sunday-evening trading lands under Monday's UTCDate. LocalDate/LocalTime are Chicago clock time and do not roll at the 17:00 CT session open; derive the exchange trade date yourself. The ticker is one contract month (e.g. ESZ3), not a continuous series; roll explicitly. Aggressor side comes from TypeMask bits 7 (buy) and 6 (sell); a plain TRADE means the initiator is unknown. Rows flagged as calculated (Flags 8) are not trades.
Typical use
Futures backtesting, roll research, and intraday microstructure on CME Group venues.
Limitations
Delivered as recorded from the source feed: AlgoSeek does not remove crossed or locked quotes, bad prints, or out-of-sequence packets unless contracted to. Consumers own cleaning. Bars are event-based: a row exists only for a minute with at least one regular quote or trade. TAQ bars can therefore have Volume 0 and TotalTrades 0 with all trade fields blank (most sample rows); do not assume a row for every minute, and do not forward-fill without stating it. Bar window: UTCTimeBarStart is the UTC minute start; all Open/High/Low/Close time columns are UTC and fall inside that minute in the sample. Local fields are Chicago time, so LocalDate can differ from UTCDate (guide example: UTC 2017-08-15 01:30 = local 2017-08-14 20:30). Open/High/Low/Close are computed separately for bids, asks and trades: High/Low are by price, each with its own time and size; Open/Close are first/last event in the bar. If a bar has only one event of a kind, Open=High=Low=Close for price, size and time. Implied bid/ask quotes (e.g. crude oil spread-implied) are ignored when building bars, and calculated trade prices that are not real trades are excluded; only real quotes and actual trades count.
Coverage
Page: CME-listed futures contracts, 50+ fields per bar, full historical archive plus daily automated updates. Guide: Futures, Spreads and Futures Options bars for securities listed on US exchanges. Start of history not stated.
Venues (1)
- CME
Answers to common questions
- What time zone are the timestamps in?
- UTC, with LocalDate/LocalTime fields in US Central (Chicago) time.
- Which file holds a Sunday-evening CME session?
- The Monday UTCDate file; files are UTC calendar days.
Usage constraints
- Licensed vendor data: never export raw rows to a tenant-local destination or include them verbatim in a public artifact; serve only through entitlement-checked platform reads.
- Do not treat the vendor's `Ticker` as a stable identity across time; join on an AlgoSeek security key (SecId or ASID, which are distinct) or the platform symbol mapping.
Known issues (8)
- Primary key is inferred; AlgoSeek's guide does not name one.
- Documentation discrepancyGuide says UTCTimeBarStart/LocalTimeBarStart are HH:MM for minute bars (HH:MM:SS for second bars); the minute-bar sample shows HH:MM:SS (e.g. 22:00:00).
- Documentation discrepancyIn the 10 sample bars that have trades, the aggressor columns for sides with no trades are blank, not 0 as the guide's Missing column states.
- Documentation discrepancyGuide's note says a one-minute bar 11:04 covers times greater than 11:04 to less than 11:05, and a one-second bar 13:03:02 covers times greater than 13:03:01 up to 13:03:02 (end-labelled), which conflicts with the column name BarStart; in the sample every event time lies in [start, start+60 s) (offsets 0.003 s to 59.961 s), i.e. a start-labelled window.
- Documentation discrepancyGuide VolumeWeightPrice note speaks of shares and 'TotalShares' (equity wording); for futures the weights are contracts.
- Documentation discrepancyMinSpread/MaxSpread are blank in 2 sample bars (UTCTimeBarStart 23:14:00, 23:30:00) that do have both an open bid and an open ask, although the guide only says a bid and an ask are required and negative spreads become 0; the exact rule is undocumented.
- Documentation discrepancyGuide Table 1 lists CallPut, Strike, Month and ExpirationYear as options-only fields; they are absent from this futures sample header and are not included in columns.
- Documentation discrepancyGuide intro says 'bar file' is created if there are 3 or more quotes or 1 or more trades within 24 hours, while elsewhere saying a bar is created whenever a trade or quote event occurs in the minute; the per-bar minimum is therefore not precisely stated (sample quote counts range from 4 to 136).
53 columns in delivery order · file or table name fut_taq_1min. Types are ODCS logical types; the format line shows how values are written.
| Column | Type | Key | Description |
|---|---|---|---|
| Ticker | string | Key 1 · Partition · Required | Contract symbol: base symbol + month code + last digit of expiry year (e.g. ESZ3). Missing values: Never · Source: vendor guide and sample |
| UTCDate | dateyyyymmdd | Key 2 · Partition · Required | UTC trade date of the bar (the UTC calendar day of the bar start). Missing values: Never · Source: vendor guide and sample |
| UTCTimeBarStart | timeHH:MM:SS (sample); guide says HH:MM for minute bars | Key 3 · Required | UTC start of the one-minute bar, HH:MM:SS in the sample (guide says HH:MM for minute bars). Sample events fall in [start, start+60 s). Missing values: Never · Source: vendor guide and sample |
| LocalDate | dateyyyymmdd | Required | Chicago calendar date of the bar start (guide: local trade date); differs from UTCDate when UTC is 5-6 h ahead of the date. Missing values: Never · Source: vendor guide and sample |
| LocalTimeBarStart | timeHH:MM:SS (sample); guide says HH:MM for minute bars | Chicago local start time of the bar (DST-aware), same layout as UTCTimeBarStart. Missing values: Never · Source: vendor guide and sample | |
| OpenBidTime | timeHH:MM:SS.mmm (UTC) | UTC time of the first bid quote in the bar. Missing values: Blank · Source: vendor guide and sample | |
| OpenBidPrice | number | Price of the first bid quote in the bar. Missing values: Blank · Source: vendor guide and sample | |
| OpenBidSize | integeri64 | Size of the first bid quote in the bar. Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| OpenAskTime | timeHH:MM:SS.mmm (UTC) | UTC time of the first ask quote in the bar. Missing values: Blank · Source: vendor guide and sample | |
| OpenAskPrice | number | Price of the first ask quote in the bar. Missing values: Blank · Source: vendor guide and sample | |
| OpenAskSize | integeri64 | Size of the first ask quote in the bar. Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| OpenTradeTime | timeHH:MM:SS.mmm (UTC) | UTC time of the first trade in the bar. Missing values: Blank · Source: vendor guide and sample | |
| OpenTradePrice | number | Price of the first trade in the bar. Missing values: Blank · Source: vendor guide and sample | |
| OpenTradeSize | integeri64 | Contracts in the first trade of the bar. Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| HighBidTime | timeHH:MM:SS.mmm (UTC) | UTC time of the highest bid price in the bar. Missing values: Blank · Source: vendor guide and sample | |
| HighBidPrice | number | Highest bid price in the bar. Missing values: Blank · Source: vendor guide and sample | |
| HighBidSize | integeri64 | Bid size at the highest bid price. Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| HighAskTime | timeHH:MM:SS.mmm (UTC) | UTC time of the highest ask price in the bar. Missing values: Blank · Source: vendor guide and sample | |
| HighAskPrice | number | Highest ask price in the bar. Missing values: Blank · Source: vendor guide and sample | |
| HighAskSize | integeri64 | Ask size at the highest ask price. Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| HighTradeTime | timeHH:MM:SS.mmm (UTC) | UTC time of the highest-priced trade in the bar. Missing values: Blank · Source: vendor guide and sample | |
| HighTradePrice | number | Price of the highest trade in the bar. Missing values: Blank · Source: vendor guide and sample | |
| HighTradeSize | integeri64 | Contracts in the highest-priced trade. Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| LowBidTime | timeHH:MM:SS.mmm (UTC) | UTC time of the lowest bid price in the bar. Missing values: Blank · Source: vendor guide and sample | |
| LowBidPrice | number | Lowest bid price in the bar. Missing values: Blank · Source: vendor guide and sample | |
| LowBidSize | integeri64 | Bid size at the lowest bid price. Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| LowAskTime | timeHH:MM:SS.mmm (UTC) | UTC time of the lowest ask price in the bar. Missing values: Blank · Source: vendor guide and sample | |
| LowAskPrice | number | Lowest ask price in the bar. Missing values: Blank · Source: vendor guide and sample | |
| LowAskSize | integeri64 | Ask size at the lowest ask price. Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| LowTradeTime | timeHH:MM:SS.mmm (UTC) | UTC time of the lowest-priced trade in the bar. Missing values: Blank · Source: vendor guide and sample | |
| LowTradePrice | number | Price of the lowest trade in the bar. Missing values: Blank · Source: vendor guide and sample | |
| LowTradeSize | integeri64 | Contracts in the lowest-priced trade. Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| CloseBidTime | timeHH:MM:SS.mmm (UTC) | UTC time of the last bid quote in the bar. Missing values: Blank · Source: vendor guide and sample | |
| CloseBidPrice | number | Price of the last bid quote in the bar. Missing values: Blank · Source: vendor guide and sample | |
| CloseBidSize | integeri64 | Size of the last bid quote in the bar. Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| CloseAskTime | timeHH:MM:SS.mmm (UTC) | UTC time of the last ask quote in the bar. Missing values: Blank · Source: vendor guide and sample | |
| CloseAskPrice | number | Price of the last ask quote in the bar. Missing values: Blank · Source: vendor guide and sample | |
| CloseAskSize | integeri64 | Size of the last ask quote in the bar. Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| CloseTradeTime | timeHH:MM:SS.mmm (UTC) | UTC time of the last trade in the bar. Missing values: Blank · Source: vendor guide and sample | |
| CloseTradePrice | number | Price of the last trade in the bar. Missing values: Blank · Source: vendor guide and sample | |
| CloseTradeSize | integeri64 | Contracts in the last trade of the bar. Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| MinSpread | number | Smallest bid-ask spread in the bar; needs both a bid and an ask in the minute; a negative spread is reported as 0. Missing values: Blank · Source: vendor guide and sample | |
| MaxSpread | number | Largest bid-ask spread in the bar; needs both a bid and an ask in the minute. Missing values: Blank · Source: vendor guide and sample | |
| VolumeWeightPrice | number | Trade volume-weighted average price: sum(size x price) / total contracts traded in the bar. Missing values: Blank · Source: vendor guide and sample | |
| TotalRegularQuotes | integeri64 | Count of regular bid/ask quotes in the bar; implied quotes are ignored; blank if the bar has no bid or ask events. Unit: count · Missing values: Blank · Source: vendor guide and sample | |
| BuyAggressorTrades | integeri64 | Number of trades in the bar typed 'Trade Aggressor at Buy'. Unit: count · Missing values: 0 · Source: vendor guide and sample | |
| SellAggressorTrades | integeri64 | Number of trades in the bar typed 'Trade Aggressor at Sell'. Unit: count · Missing values: 0 · Source: vendor guide and sample | |
| NoAggressorTrades | integeri64 | Number of trades where the exchange does not publish the aggressor side. Unit: count · Missing values: 0 · Source: vendor guide and sample | |
| BuyAggressorQuantity | integeri64 | Sum of contracts in trades typed 'Trade Aggressor at Buy'. Unit: contracts · Missing values: 0 · Source: vendor guide and sample | |
| SellAggressorQuantity | integeri64 | Sum of contracts in trades typed 'Trade Aggressor at Sell'. Unit: contracts · Missing values: 0 · Source: vendor guide and sample | |
| NoAggressorQuantity | integeri64 | Sum of contracts in trades where the aggressor side is not published. Unit: contracts · Missing values: 0 · Source: vendor guide and sample | |
| Volume | integeri64 | Total contracts traded in the bar. Unit: contracts · Missing values: 0 · Source: vendor guide and sample | |
| TotalTrades | integeri64 | Total number of trades in the bar. Unit: count · Missing values: 0 · Source: vendor guide and sample |
- errorrow_count_positivecompleteness
Every delivered partition (trade date, or snapshot) carries at least one row.
rowCount must be greater than 0
- errorprimary_key_uniqueuniqueness
The declared primary key is unique within each delivered partition (one file or table snapshot).
duplicateValues (properties: Ticker, UTCDate, UTCTimeBarStart) must be 0
- errortrade_high_ge_lowaccuracy
HighTradePrice is never below LowTradePrice in the same row.
SELECT COUNT(*) FROM {object} WHERE HighTradePrice IS NOT NULL AND LowTradePrice IS NOT NULL AND HighTradePrice < LowTradePrice - errorbid_high_ge_lowaccuracy
HighBidPrice is never below LowBidPrice in the same row.
SELECT COUNT(*) FROM {object} WHERE HighBidPrice IS NOT NULL AND LowBidPrice IS NOT NULL AND HighBidPrice < LowBidPrice - errorask_high_ge_lowaccuracy
HighAskPrice is never below LowAskPrice in the same row.
SELECT COUNT(*) FROM {object} WHERE HighAskPrice IS NOT NULL AND LowAskPrice IS NOT NULL AND HighAskPrice < LowAskPrice - warningvwap_within_rangeaccuracy
VWAP (sum(price*shares)/sum(shares)) lies within the bar's trade range.
SELECT COUNT(*) FROM {object} WHERE VolumeWeightPrice > HighTradePrice OR VolumeWeightPrice < LowTradePrice - errorCloseAskSize_non_negativeaccuracy
CloseAskSize is never negative.
SELECT COUNT(*) FROM {object} WHERE CloseAskSize < 0 - errorCloseBidSize_non_negativeaccuracy
CloseBidSize is never negative.
SELECT COUNT(*) FROM {object} WHERE CloseBidSize < 0 - errorCloseTradeSize_non_negativeaccuracy
CloseTradeSize is never negative.
SELECT COUNT(*) FROM {object} WHERE CloseTradeSize < 0 - errorHighAskSize_non_negativeaccuracy
HighAskSize is never negative.
SELECT COUNT(*) FROM {object} WHERE HighAskSize < 0 - errorHighBidSize_non_negativeaccuracy
HighBidSize is never negative.
SELECT COUNT(*) FROM {object} WHERE HighBidSize < 0 - errorHighTradeSize_non_negativeaccuracy
HighTradeSize is never negative.
SELECT COUNT(*) FROM {object} WHERE HighTradeSize < 0 - errorLowAskSize_non_negativeaccuracy
LowAskSize is never negative.
SELECT COUNT(*) FROM {object} WHERE LowAskSize < 0 - errorLowBidSize_non_negativeaccuracy
LowBidSize is never negative.
SELECT COUNT(*) FROM {object} WHERE LowBidSize < 0 - errorLowTradeSize_non_negativeaccuracy
LowTradeSize is never negative.
SELECT COUNT(*) FROM {object} WHERE LowTradeSize < 0 - errorOpenAskSize_non_negativeaccuracy
OpenAskSize is never negative.
SELECT COUNT(*) FROM {object} WHERE OpenAskSize < 0 - errorOpenBidSize_non_negativeaccuracy
OpenBidSize is never negative.
SELECT COUNT(*) FROM {object} WHERE OpenBidSize < 0 - errorOpenTradeSize_non_negativeaccuracy
OpenTradeSize is never negative.
SELECT COUNT(*) FROM {object} WHERE OpenTradeSize < 0 - errorTotalTrades_non_negativeaccuracy
TotalTrades is never negative.
SELECT COUNT(*) FROM {object} WHERE TotalTrades < 0 - errorVolume_non_negativeaccuracy
Volume is never negative.
SELECT COUNT(*) FROM {object} WHERE Volume < 0 - warningclose_quote_not_crossedaccuracy
Closing NBBO is rarely crossed; AlgoSeek ships crossed quotes as-is, so this only warns.
SELECT COUNT(*) FROM {object} WHERE CloseBidPrice > 0 AND CloseAskPrice > 0 AND CloseBidPrice > CloseAskPrice
Delivery
S3 flat files
AlgoSeek flat-file delivery (the layout the schema below describes).
- Layout:
- Plain-text CSV with a fixed header row, gzip-compressed (.csv.gz, about 8:1). By default one file per symbol (contract) per trading day (guide example: ESH0 on 2020-01-28). A file exists only if the contract had enough activity that day; no bucket, path or file-name pattern is given.
- Compression:
- gzip
- Access:
- Bucket access is granted per subscription; bucket names arrive with license provisioning.
REST API
AlgoSeek Datasets REST API (X-API-KEY header; JSON, CSV or gzipped CSV). Returns AlgoSeek's normalized API layout, which differs from the flat-file columns in this contract's schema.
https://api.algoseek.com/v1/data/us-futures/taq-1min/:identifier
- Authentication:
- X-API-KEY header issued by AlgoSeek
- Response formats:
- json, csv, csv_gzip
- Pagination:
- offset + limit; tick endpoints take trade_date and identifier (Ticker or ASID) in the path
Service levels
- Update frequency
- Daily
- Retention
- Bounded by the license term
- Retention of landed copies is bounded by the AlgoSeek license; purge on termination.
- History starts
- Not stated in the vendor documentation
Service levels describe the vendor feed as documented. They are draft values, not a commitment by AlphaSwarm.
Data Contract Editor · read-only preview — edits are not saved
Open-source Data Contract Editor (MIT). Changes stay in this browser tab: Cancel restores the published contract, and Download copy saves your edited YAML to your device only.
Contracts follow the Open Data Contract Standard (Bitol, LF AI & Data).
Vendor names are trademarks of their owners.