US Futures Trade and Quote
Tick-level trades and best bid/ask quote updates for CME-listed futures, with UTC and Chicago timestamps, an aggressor-side event type and flags; used for microstructure, execution research and backtesting.
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. Row grain is one exchange event for one contract; there is no sequence-number column, so ties within the same millisecond are only ordered by file position. In the 100-row sample (UTCDate, UTCTime, Ticker, TypeMask) repeats; adding Price, Quantity, Orders and Flags makes the sample rows unique, but uniqueness is not guaranteed in full files. UTCDate/UTCTime are the event time in UTC and the daily file is cut at UTC midnight, so a CME overnight session spans two files. LocalDate is a Chicago calendar date: the TAQ and minute-bar samples keep the same LocalDate from 17:00 CT onward (no roll to the next CME trade date). Evening activity that crosses 00:00 UTC (e.g. Sunday 18:00 CST = Monday 00:00 UTC) appears under the next UTCDate with the earlier LocalDate. Aggressor side comes from TypeMask bits 7 (buyer-initiated) and 6 (seller-initiated) and the matching Type label; plain TRADE (mask 34 in samples) means the initiator is unknown. For quotes the same bits denote bid (bit 7) or offer (bit 6). Flags 2 (SHFlag) and 4 (SLFlag) mark session high/low prices; guide Table 6 shows such a row with Quantity 0 and Orders 0 (this dataset's 100-row sample contains none). Filter on Quantity > 0 when counting trades or summing volume. Flag 8 (calculated price, no contracts) must be excluded when building bars.
Coverage
Page: futures traded on US exchanges including CME, CBOT, COMEX and NYMEX, full historical archive plus daily automated updates. Guide: Futures, Spreads and Future Options datasets cover securities listed on US exchanges. Start of history not stated.
Venues (4)
- CME
- CBOT
- COMEX
- NYMEX
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 (11)
- Primary key is inferred; AlgoSeek's guide does not name one.
- Documentation discrepancyGuide field table lists TypeMask as 'Not in use' (integer), yet every sample row populates it and Appendix A defines its 8-bit encoding; treat TypeMask as live.
- Documentation discrepancyGuide field table describes UTCTime/LocalTime as nanosecond timestamps (milliseconds before 2016) in HH:MM:SS.mmm[iiinnn] form; the Timestamps section says HHMMSSZZZ (3-digit ms) and every sample value is a 9-digit HHMMSSmmm string with ms precision.
- Documentation discrepancyGuide calls UTCDate and LocalDate the 'trading date'; its Daily File rule is UTC 00:00-24:00 and LocalDate is the Chicago calendar date of the event (guide Table 1 shows LocalDate 20200127 at 18:00 local, i.e. 00:00 UTC on 2020-01-28; the family's future-options trade-only sample has UTCDate 20230802 with LocalDate 20230801 at 00:01 UTC).
- Documentation discrepancyGuide describes the ticker scheme as ZZZMY/ZZZMY.SXXXX, but its own example (ESZ5 P3600) and the options samples (ESU3 P4450, ESH4 P4600) separate the futures code and option code/strike with a space, not a dot; the year is a single digit.
- Documentation discrepancySecurityID: this guide says 'internal security ID used by algoseek'; the Multiple Depth guide calls the same-named column a 'CME security identifier'. This sample has SecurityID 314863 for ESZ3; other family samples show a 4-digit value (ESU3 = 3445) and 6-digit values, so the scheme is not confirmed as the exchange's.
- Documentation discrepancyGuide Table 6 (GCQ7 maintenance example) shows TypeMask 2, 12, 7 and 5 (aggressor trades carry mask 2), which do not follow the Appendix A encoding (final bit 32, side bits 64/128); Table 1 and the 2023 samples use 161/97/162/98.
- Documentation discrepancyGuide example ZSX3-ZSF3 is described as a Nov 2023 vs Jan 2023 soybean spread, an implausible pairing, which shows the single year digit is ambiguous in tickers.
- Documentation discrepancyGuide Table 2 lists CallPut, Strike, Month and ExpirationYear but marks them options-only; they are absent from this futures sample header and are not included in columns.
- Documentation discrepancyProduct page says Flags carry 'exchange condition codes'; the guide's Flags are implied, session-high/low, calculated-price and opening markers (0/1/2/4/8/16).
- Documentation discrepancyProduct page speaks of bid/ask quotes; the Type label for the ask side is QUOTE SELL (no 'QUOTE ASK' value exists in the guide or samples).
12 columns in delivery order · file or table name fut_taq. Types are ODCS logical types; the format line shows how values are written.
| Column | Type | Key | Description |
|---|---|---|---|
| UTCDate | dateyyyymmdd | Key 1 · Partition · Required | UTC calendar date of the event; the daily file is one UTC day (00:00-24:00). Guide wording: trading date (UTC). Source: vendor guide and sample |
| UTCTime | timeHHMMSSmmm | Key 2 · Required | Event time in UTC, 9 digits HHMMSSmmm with no separators (ms precision in samples), e.g. 220000003 = 22:00:00.003. Unit: ms · Source: vendor guide and sample |
| LocalDate | dateyyyymmdd | Chicago (CT) calendar date of the event; can differ from UTCDate and does not roll at the 17:00 CT session start. Source: vendor guide and sample | |
| LocalTime | timeHHMMSSmmm | Event time in Chicago local time (UTC-6 winter, UTC-5 during DST), same 9-digit HHMMSSmmm layout. Unit: ms · Source: vendor guide and sample | |
| Ticker | string | Key 3 · Partition · Required | Contract ticker, max 20 chars: base symbol + month code + last digit of expiry year (e.g. ESZ3); spreads use a LEG-LEG form. Source: vendor guide and sample |
| SecurityID | stringnumeric string | Instrument identifier. Guide calls it an internal algoseek security ID (the Multiple Depth guide calls it a CME ID). Sample values: 3445, 314863, 634394. Source: vendor guide and sample | |
| TypeMask | integeri64 | Key 4 · Required | Event type as an 8-bit mask: bits 0-4 message type, bit 5 final, bit 6 sell/offer side, bit 7 buy/bid side. Guide's field table says 'Not in use' but Appendix A defines it. Source: vendor guide and sample |
| Type | string · enum (14) | Event type label: quote side, trade with aggressor side, or statistic (opening/settlement/volume/open interest/empty book). Any label may carry an IMPLIED prefix. Source: vendor guide and sample 14 allowed values
| |
| Price | number | Key 5 · Required | Opening, trade, bid/ask or settlement price by event type, 6-decimal string; 0.000000 on empty-book, trade-volume and open-interest rows (sample). Source: vendor guide and sample |
| Quantity | integeri64 | Key 6 · Required | Contracts traded or quoted at this price. SETTLEMENT PRICE rows carry the referenced trade date (yyyymmdd); TRADE VOLUME and OPEN INTEREST rows carry the count (sample). Unit: contracts · Source: vendor guide and sample |
| Orders | integeri64 | Key 7 · Required | Customer orders at the price level. Guide says to ignore it for trades (zero before 2015-11-22, when the feed moved from FAST/FIX to MDP). Unit: count · Source: vendor guide and sample |
| Flags | integer · enum (6)i64 | Key 8 · Required | Condition flag for the event. 2 and 4 mark session high/low rows (Quantity 0 in samples); 8 = calculated price with no contracts; 1 = implied; 16 = opening. Source: vendor guide and sample 6 allowed values
|
- errorrow_count_positivecompleteness
Every delivered partition (trade date, or snapshot) carries at least one row.
rowCount must be greater than 0
- warningprimary_key_uniqueuniqueness
Best-effort key for an event stream: same-timestamp events from one venue can repeat, so duplicates are reported, not rejected.
duplicateValues (properties: UTCDate, UTCTime, Ticker, TypeMask, Price, Quantity, Orders, Flags) must be 0
- errorQuantity_non_negativeaccuracy
Quantity is never negative.
SELECT COUNT(*) FROM {object} WHERE Quantity < 0
Delivery
S3 flat files
AlgoSeek flat-file delivery (the layout the schema below describes).
- Layout:
- Plain-text CSV with a fixed header row, one row per event. By default one file per symbol (contract) per trading day, gzip-compressed (.csv.gz, about 8:1 ratio). Guide example: all events for ESH0 on 2020-01-28 are in one file. A trading day is UTC 00:00-24:00. The guide gives no bucket, path or file-name pattern.
- 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/:trade_date/: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.