US Future Options Trade and Quote Minute Bar
One-minute event-based bars for CME-listed options on 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; LocalDate/LocalTime are Chicago clock time. The ticker is '<futures contract> <C|P><strike>' (e.g. 'ESU3 P4450'); the underlying is that futures contract month, not the spot index.
Typical use
Options-on-futures pricing and flow research 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 future options 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.
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 this sample no bar has a trade (Volume and TotalTrades are 0), and all six aggressor columns are blank in all 100 bars, whereas the guide's Missing column says 0.
- 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.019 s to 59.974 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 3 sample bars (UTCTimeBarStart 22:38:00, 22:43:00, 22:47: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/ExpirationYear after LocalTimeBarStart; this sample places them right after UTCDate (before UTCTimeBarStart), as in the trade-only minute-bar guide. Sample header order was followed.
- 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 2 to 59).
57 columns in delivery order · file or table name fut_opt_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 | Option ticker: futures-style code, a space, then C/P and strike (e.g. 'ESH4 C4800'). 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 |
| CallPut | string · enum (2) | Option type, C (call) or P (put). Guide: available only in the Future Options dataset. Missing values: Never · Source: vendor guide and sample 2 allowed values
| |
| Strike | integeri64 | Option strike: fixed price for buying or selling the underlying outright future, in the future's price units. Missing values: Never · Source: vendor guide and sample | |
| Month | string · enum (12)single-letter CME month code | Option expiration month as a single-letter code (CME month codes, per the table the guide links). Missing values: Never · Source: vendor guide and sample 12 allowed values
| |
| ExpirationYear | integeri64 | Option expiration year as a four-digit number. 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.
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.