US Options Continuous Trade and Quote Minute Bar
Same 60-field one-minute options TAQ bar as the regular minute bar, but gap-free: during market hours every contract gets a bar each minute, and when no new quote arrives the prevailing NBBO bid/ask is carried forward into the bar. Built from OPRA consolidated trades and top-of-book quotes.
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. KEY DIFFERENCE vs regular variant: per the guide, bars are continuous during market hours (up to 16:15:00 ET), so a bar is emitted every minute even when the contract has no bid, ask or trade event; outside market hours bars are event-based. The guide does not say whether contracts with no quote state at all, or equity options between 16:00 and 16:15, also get bars. Samples only show 09:30 bars. Carry-forward: if the NBBO bid/ask does not change in a minute, the prevailing NBBO (price, size and original event time) is carried in, so Open = High = Low = Close for that side and the time fields show the older event time. OpenBid*/OpenAsk* are the NBBO in force at bar open (not the first update inside the bar); CloseBid*/CloseAsk* are the NBBO in force at bar close. High/Low still span updates within the bar and the carried-in opening state. A 0.0000 price with size 0 (and a pre-open timestamp) appears in the sample for Open/Low bid and ask: this looks like a no-quote or empty-book state carried in. It makes MinSpread 0.0000 and MaxSpread equal to the ask in those rows, so treat spread statistics there with care.
Coverage
US listed options from the OPRA consolidated feed (16 options exchanges); guide intro names options on equities, ETFs, ETNs and ADRs. History start date is not stated.
Venues (1)
- OPRA consolidated feed (16 options exchanges; individual venues not named)
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.
- Update cadence and publication latency are not stated in the guide; confirm with AlgoSeek (or GET /v1/meta/datasets/{id}/status).
- Documentation discrepancyTimeBarStart: guide says HH:MM for minute bars; the sample delivers HH:MM:SS ('09:30:00').
- Documentation discrepancyGuide intro says the whole session is 9:30:00-16:15:00 ET and the Time Range section says data starts at 9:30, yet the Continuous Bars section says bars are event-based during pre- and post-market hours, implying bars outside 09:30-16:15.
- Documentation discrepancySample OpenBidTime/OpenAskTime/LowBidTime/LowAskTime are 09:25:xx, i.e. before the 09:30 bar start, because the pre-open NBBO state is carried forward; the guide's 'data starts at 9:30' wording does not reflect this.
- Documentation discrepancyGuide Table 3 describes CloseAskPrice as 'NBBO bid price at bar close' (copy-paste slip); treated as the ask.
- Documentation discrepancyGuide Table 3 intro calls it the 'Options TAQ Minute Bar CSV file' (copied from the regular guide); its Time Range says 'Most options stop trading at 16:00 ET' whereas the regular guide says '16 ET'.
- Documentation discrepancyGuide lists 'No Quote Bid/Ask NB' as included quote events (not in the regular guide); sample shows these as 0.0000 price / 0 size quotes with pre-open timestamps.
- Documentation discrepancyUnder* fields: Table 2 title says 'First and Last Event' but the text says NBBO at the millisecond of the open/close of the bar. Comparing samples with the regular bar (second sample row) shows UnderClose equals the underlying quote at the end of the minute, not at the contract's last event, so the bar-boundary reading is correct.
- Documentation discrepancyGuide TOC lists Appendix A (FAQ) on page 12 but the PDF text ends on page 10.
- Documentation discrepancyGuide columns match the 60-column sample header exactly, in the same order.
60 columns in delivery order · file or table name opt_ctaq_1min. 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 of the bar Missing values: Never · Source: vendor guide and sample |
| TimeBarStart | timeHH:MM:SS | Key 2 · Required | Start of the one-minute bar; guide says HH:MM, sample delivers HH:MM:SS (09:30:00) Missing values: Never · Source: vendor guide and sample |
| Ticker | string | Key 3 · Partition · Required | Symbol name; sample shows the underlying/root (AAPL). Root vs underlying for index or adjusted roots is not stated Missing values: Never · Source: vendor guide and sample |
| CallPut | string · enum (2) | Key 4 · Required | Option type, C = Call or P = Put Missing values: Never · Source: vendor guide and sample 2 allowed values
|
| Strike | number | Key 5 · Required | Fixed price at which the option can be exercised, quoted per share of underlying Unit: USD · Missing values: Never · Source: vendor guide and sample |
| ExpirationDate | dateyyyymmdd | Key 6 · Required | Expiration date of the option contract Missing values: Never · Source: vendor guide and sample |
| OpenBidTime | timeHH:MM:SS.mmm | Time of the NBBO bid in force at bar open; carried forward, so it can precede the bar start Missing values: Blank · Source: vendor guide and sample | |
| OpenBidPrice | number | NBBO bid price in force at bar open (current as of bar start) Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| OpenBidSize | integeri64 | Size of the NBBO bid in force at bar open Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| OpenAskTime | timeHH:MM:SS.mmm | Time of the NBBO ask in force at bar open; carried forward, so it can precede the bar start Missing values: Blank · Source: vendor guide and sample | |
| OpenAskPrice | number | NBBO ask price in force at bar open (current as of bar start) Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| OpenAskSize | integeri64 | Size of the NBBO ask in force at bar open Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| OpenTradeTime | timeHH:MM:SS.mmm | 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 Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| OpenTradeSize | integeri64 | Contracts in the first trade in the bar Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| HighBidTime | timeHH:MM:SS.mmm | Time of the highest NBBO bid price in the bar Missing values: Blank · Source: vendor guide and sample | |
| HighBidPrice | number | Highest NBBO bid price in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| HighBidSize | integeri64 | Size at the highest NBBO bid Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| HighAskTime | timeHH:MM:SS.mmm | Time of the highest NBBO ask price in the bar Missing values: Blank · Source: vendor guide and sample | |
| HighAskPrice | number | Highest NBBO ask price in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| HighAskSize | integeri64 | Size at the highest NBBO ask Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| HighTradeTime | timeHH:MM:SS.mmm | 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 Unit: USD · 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 | Time of the lowest NBBO bid in the bar Missing values: Blank · Source: vendor guide and sample | |
| LowBidPrice | number | Lowest NBBO bid price in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| LowBidSize | integeri64 | Size at the lowest NBBO bid Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| LowAskTime | timeHH:MM:SS.mmm | Time of the lowest NBBO ask in the bar Missing values: Blank · Source: vendor guide and sample | |
| LowAskPrice | number | Lowest NBBO ask price in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| LowAskSize | integeri64 | Size at the lowest NBBO ask Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| LowTradeTime | timeHH:MM:SS.mmm | 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 Unit: USD · 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 | Time of the NBBO bid in force at bar close Missing values: Blank · Source: vendor guide and sample | |
| CloseBidPrice | number | NBBO bid price in force at bar close Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| CloseBidSize | integeri64 | Size of the NBBO bid in force at bar close Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| CloseAskTime | timeHH:MM:SS.mmm | Time of the NBBO ask in force at bar close Missing values: Blank · Source: vendor guide and sample | |
| CloseAskPrice | number | NBBO ask price in force at bar close (guide text mislabels it as a bid) Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| CloseAskSize | integeri64 | Size of the NBBO ask in force at bar close Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| CloseTradeTime | timeHH:MM:SS.mmm | 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 Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| CloseTradeSize | integeri64 | Contracts in the last trade in the bar Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| UnderOpenBidPrice | number | Underlying NBBO bid at the millisecond of the bar open Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| UnderOpenAskPrice | number | Underlying NBBO ask at the millisecond of the bar open Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| UnderCloseBidPrice | number | Underlying NBBO bid at the millisecond of the bar close Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| UnderCloseAskPrice | number | Underlying NBBO ask at the millisecond of the bar close Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| MinSpread | number | Minimum bid-ask spread in the bar; sample shows 0.0000 when a 0/0 no-quote state is carried in Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| MaxSpread | number | Maximum bid-ask spread in the bar; sample values can equal the ask when the carried bid is 0.0000 Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| CancelSize | integeri64 | Contracts of trades canceled during this bar; the canceled trades may have occurred any time since the open Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| VolumeWeightPrice | number | Volume-weighted average trade price in the bar Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| NBBOQuoteCount | integeri64 | Number of NBBO bid and ask quote updates in the bar Unit: count · Missing values: 0 · Source: vendor guide and sample | |
| TradeAtBid | integeri64 | Contracts traded at or below the NBBO bid (late prints can be below the bid) Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| TradeAtBidMid | integeri64 | Contracts traded strictly between the NBBO bid and the mid-point Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| TradeAtMid | integeri64 | Contracts traded exactly at the NBBO mid-point Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| TradeAtMidAsk | integeri64 | Contracts traded strictly between the NBBO mid-point and the ask Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| TradeAtAsk | integeri64 | Contracts traded at or above the NBBO ask Unit: contracts · Missing values: Blank · Source: vendor guide and sample | |
| TradeAtCrossOrLocked | integeri64 | Contracts traded while the NBBO was locked (bid = ask) or crossed (bid > ask) Unit: contracts · Missing values: Blank · 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 | |
| FinraVolume | integeri64 | Contracts traded off the public exchanges and reported as FINRA; relation to Volume not stated Unit: contracts · 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: Date, TimeBarStart, Ticker, CallPut, Strike, ExpirationDate) 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 - errorCancelSize_non_negativeaccuracy
CancelSize is never negative.
SELECT COUNT(*) FROM {object} WHERE CancelSize < 0 - 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 - errorFinraVolume_non_negativeaccuracy
FinraVolume is never negative.
SELECT COUNT(*) FROM {object} WHERE FinraVolume < 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 - errorNBBOQuoteCount_non_negativeaccuracy
NBBOQuoteCount is never negative.
SELECT COUNT(*) FROM {object} WHERE NBBOQuoteCount < 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 fixed header, gzip-compressed (uncompressed about 7x larger). One file per underlying ticker per trading day per option chain (ticker + expiration date). Bars ordered by time. Bucket/path naming not stated.
- Compression:
- gzip
- Access:
- Bucket access is granted per subscription; bucket names arrive with license provisioning.
Service levels
- 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.