US Options Trade and Quote GTH
Tick-level trades and top-of-book quote updates for Cboe index options (SPX, VIX, XSP, RUT families) traded in the overnight Global Trading Hours session. One row per event, with a numeric event mask and a text action.
How to use it
Identify a contract by underlying, expiration, strike and call/put. Most options tick files carry no underlying/root column: the underlying comes from the file path or API identifier, so keep it alongside every row you land. Strikes and prices are plain decimals (not scaled). EventType is a bit field: low 4 bits message type, 16 cancel, 32 call, 64 NBBO, 128 buy/bid side. Check OCC special settlements before comparing prices across a corporate action.
Typical use
Options pricing, volatility, and flow research on US-listed equity and index options.
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. Contract identity per row = ExpirationDate + StrikePrice + CallPut; the root/underlying (SPX vs SPXW, VIX vs VIXW, XSP, RUT vs RUTW) is NOT in the sample rows (guide lists a Ticker column) and must come from the Ticker column if delivered or from the file name/path. No OSI/OCC symbol column exists. StrikePrice and Price are plain decimals in dollars/index points (StrikePrice 4555 = SPX 4555), not scaled by 1000; the contract multiplier is not in the file. EventType decoding verified on the sample: 228 = 128 buy side + 64 NBBO + 32 call + 4 FirmQuote (Side B); 100 = 64 + 32 + 4 (Side A). Bit 4 (16) marks a cancelled prior trade/quote; no cancel rows appear in the sample, so its on-wire pattern is unverified. Action 'FQ NB' = FirmQuote with NBBO flag. Quote rows are per side: a bid and an ask update appear as separate rows (EventType 228 then 100).
Coverage
Index options with a GTH session: guide lists SPX, SPXW, XSP, VIX, VIXW, RUT and RUTW (RUT/RUTW added to GTH on 2026-02-09); the product page names SPX, VIX, XSP and RUT. Extended GTH session started 2021-11-21 (business date 2021-11-22); AlgoSeek coverage starts 2023-01-09. Source is the Cboe GTH trade-and-quote data, all events from Cboe (CB).
Venues (1)
- CB (CBOE)
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 (15)
- Primary key is inferred; AlgoSeek's guide does not name one.
- Documentation discrepancyGuide field table lists a Ticker column (after Timestamp); the sample header and rows have no Ticker, so the underlying/root is not in the row.
- Documentation discrepancyGuide intro gives the GTH session as 20:00:00-09:15:00 ET, then says it runs until 09:25 (09:15 before 2024-08-26); product page says 20:00:00-09:25:00. Treated as 09:25 current / 09:15 historical.
- Documentation discrepancyGuide labels Date 'Trading date', but the sample has Date=20230801 on rows stamped 21:56-21:57 with expiry 20230802; the Date is the calendar date of the evening, not the following business date the session belongs to. No after-midnight rows in the sample to show the rollover.
- Documentation discrepancyGuide file-layout example uses AAPL options on 2020 dates; GTH covers only index options from 2023-01-09, so the example is boilerplate from the equity-option guides.
- Documentation discrepancyGuide says 'one file per option contract per trading day' but the example consolidates all strikes/types of an expiration in one tar file.
- Documentation discrepancyGuide says the data comes from the OPRA feed; the product page says it is sourced from the Cboe GTH trade and quote feed.
- Documentation discrepancyGuide says quotes are top-of-book bids/asks, but every sample quote row carries the NBBO flag ('FQ NB') and the Exchange is always CB; non-NBBO quote rows are not shown.
- Documentation discrepancyGuide documents EventType as 'string' ('Byte code'); sample values are decimal integers rendered as text (100, 228).
- Documentation discrepancyConditions table in the guide is headed 'Trade Message Types'; the sample's Conditions values are 'A' on quote rows, which only matches the quote-condition table (eligible for automatic execution), not the trade code A (CANC).
- Documentation discrepancyGuide Table 6 says bits 0-3 are a '3-bit' message type, but bits 0-3 are 4 bits and Table 7 runs to value 11.
- Documentation discrepancyGuide Table 7 names message type 10 'UnderlyingValueSell' while Table 3 names the matching action 'UnderlyingValueSale'.
- Documentation discrepancyGuide Table 7 has no type 12 (Indicative); Table 3 lists action 'I' = Indicative Value and 'IN' = Invalid with no message-type value. The AlgoSeek decoder convention assigns 12 = Indicative.
- Documentation discrepancyGuide describes Quantity as 'Underlying asset quantity'; sample values (1..3444, quote sizes) behave as option contract counts.
- Documentation discrepancyGuide expands OPRA as 'Options Pricing Authority' while the product pages say 'Options Price Reporting Authority'.
13 columns in delivery order · file or table name opt_taq_gth. Types are ODCS logical types; the format line shows how values are written.
| Column | Type | Key | Description |
|---|---|---|---|
| Date | dateyyyymmdd | Key 1 · Partition · Required | Trading date, yyyymmdd. In the GTH sample it is the calendar date of the evening events (20230801 with 21:xx times, next-day expiry); behaviour after midnight is not shown. Source: vendor guide and sample |
| Timestamp | timeHHMMSSmmm | Key 2 · Required | Event time in US Eastern clock time to the millisecond, no date part; keep as text (Excel mangles it). Evening rows are 20:00-23:59; early-morning rows run to 09:25. Source: vendor guide and sample |
| CallPut | string · enum (2)C | P | Key 3 · Required | Option type: C for call, P for put. Source: vendor guide and sample 2 allowed values
|
| StrikePrice | number | Key 4 · Required | Strike price of the contract in dollars (index points for index options), e.g. 4555 or 202.5. Unit: USD · Source: vendor guide and sample |
| ExpirationDate | dateyyyymmdd | Key 5 · Required | Expiration date of the option contract in yyyymmdd. Source: vendor guide and sample |
| EventType | integeri64 | Key 6 · Required | Numeric byte mask: bits 0-3 message type, bit 4 cancel, bit 5 call, bit 6 NBBO, bit 7 buy/bid side. Action is its text form. Source: vendor guide and sample |
| Action | string · enum (14)space-separated tokens, e.g. 'FQ NB', 'T' | Text form of EventType: message-type token plus NB when the NBBO bit is set (e.g. 'FQ NB'). Side is a separate column. Source: vendor guide and sample 14 allowed values
| |
| Side | string · enum (2)B | A | blank | Side of the book for quote events: B bid, A ask. Blank for trade events. Missing values: Empty for trade events (guide) · Source: vendor guide and sample 2 allowed values
| |
| Price | number | Trade price for trades; bid or ask price (per Side) for quote events. Option premium per underlying unit. Unit: USD · Source: vendor guide and sample | |
| Quantity | integeri64 | Event size: traded size for trades, quote size for quotes. Guide says 'underlying asset quantity'; values behave as contract counts. Unit: contracts · Source: vendor guide and sample | |
| Exchange | string · enum (1)2-letter code | Key 7 · Required | Venue code. The guide states all GTH events come from Cboe (CB). Source: vendor guide and sample 1 allowed values
|
| Conditions | string · enum (39)single character (space is a valid value) | Single-character trade condition (Table 4) on trade rows or quote condition (Table 5) on quote rows; sample quote rows show 'A' (eligible for automatic execution). Source: vendor guide and sample 39 allowed values
| |
| Ticker | string | Symbol name (underlying/root) per the guide table. Not present in the sample header or sample rows. Source: vendor guide only |
- 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: Date, Timestamp, CallPut, StrikePrice, ExpirationDate, EventType, Exchange) 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; one row per event. Guide: one file per option contract per trading day, with the example of all calls and puts of one expiration for one trading date consolidated 'in one tar file'; each contract CSV is gzip-compressed (about 7x expansion). No bucket/path/file-name pattern is given. Sample rows are a single contract (one CallPut/Strike/Expiration).
- Compression:
- gzip
- Access:
- Bucket access is granted per subscription; bucket names arrive with license provisioning.
Service levels
- History starts
- 2023-01-09
- First trade date of the vendor history.
- Update frequency
- Daily
- Retention
- Bounded by the license term
- Retention of landed copies is bounded by the AlgoSeek license; purge on termination.
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.