US Options Trade and Quote Continuous Minute Bar Guide
US Options Trade and Quote Continuous Minute Bar Guide
version 1.1 (Nov 2022)
We are here to help you do great things with our market and reference data. For questions, feedback, and other concerns, you may reach our team of experts using the following contact information:
algoseek customer support
support@algoseek.com
(+1) 646 583 1832
algoseek sales
sales@algoseek.com
(+1) 646 583 1832
DATA ORGANIZATION AND FILE FORMAT 7
APPENDIX A. FREQUENTLY ASKED QUESTIONS 12
algoseek’s Trade and Quote (TAQ) Minute Bar dataset for US Options on Equity, ETF, ETN, and ADRs is based on the top-of-book quotes (bids and asks) and all trades from the Options Pricing Authority (OPRA) feed, which includes the consolidated last sale and quotation information from the 16 option exchanges that the Securities and Exchange Commission has approved.
All TAQ Minute Bar data files are organized into a single format feed where bars are ordered by time. The entire trading session includes market hours from 9:30:00 to 16:15:00 ET.
This version of the Options TAQ 1-minute bar dataset is continuous. This means that NBBO quotes are carried forward from the previous bars where possible (see subsections “Continuous Bars” and “Carrying Forward of Current NBBO Bid/Ask” in the next section “MINUTE BAR CALCULATIONS”).
Quotes are calculated from the National Best Bid Offer (NBBO) using:
The bars do not include the following quote events:
Please see the table below for the trade events that are excluded.
Table 1: Excluded Trades
Trade Condition | Description |
A | Previously reported |
B | Reported late and out of sequence |
C | Transaction last reported and now canceled |
F | Late report of opening and out of sequence |
G | Transaction only one reported for day and is to be canceled |
N | Transaction is at the price agreed by the floor personal |
O | Cancel of stopped transaction |
T | Benchmark trade |
Options activity varies from contracts with multiple events per millisecond (e.g. SPY in-the-money Options), to contracts without any bid or ask event during market hours.
algoseek’s options bars are continuous during market hours (up to 16:15:00 ET), which means there will always be a bar even if there are no events during the bar period. During pre- and post-market hours bars are event-based. It means a bar is only created when there was at least one event during the bar period. The three types of events (bid, ask and trade) don’t always happen together during a bar period. For example, there could be three bids, but neither trades nor asks for a minute.
If there are no changes to the Bid/Ask in the NBBO during a bar period, the current NBBO Bid/Ask from the previous bar period will be carried forward and all Bid/Ask values will remain the same from Open to Close. For example:
OpenBidPrice = HighBidPrice = LowBidPrice = CloseBidPrice = Current NBBO Bid price carried from the previous bar period
OpenBidSize = HighBidSize = LowBidSize = CloseBidSize = Current NBBO Bid size carried from the previous bar period
OpenBidTime = HighBidTime = LowBidTime = CloseBidTime = Current NBBO Bid time carried from the previous bar period
Table 2 describes the logic for underlying security quotes.
Table 2. Underlying Bid/Ask of the First and Last Event
Field | Description |
UnderOpenBidPrice | Underlying security NBBO bid price at millisecond time of the open bar |
UnderOpenAskPrice | Underlying security NBBO ask price at millisecond time of the open bar |
UnderCloseBidPrice | Underlying security NBBO bid price at millisecond time of the close bar |
UnderCloseAskPrice | Underlying security NBBO ask price at millisecond time of the close bar |
The bid/ask price is the NBBO price of the underlying asset at the millisecond time of the event.
algoseek provides Options market data in plain-text CSV files. Data files have fixed headers on top and rows of data corresponding to individual bars. Data is organized with one file per ticker per trading day per ticker and per option chain (ticker+expiration date). It means, for example, that trade and quote bars for all the AAPL call and put options for every strike on the expiration date March 3, 2020 for trading date February 27, 2020 are consolidated in one file. Due to the large dataset size, each CSV file is gzip-compressed, so the uncompressed data is on average 7 times larger than compressed.
Table 3 below provides the name, base event, default value, a brief description, and data type for each data field (column) in the Options TAQ Minute Bar CSV file. Table column “Missing” indicates a default behavior in case the data field value is not present or cannot be calculated. The column value “Never” means that the data field value is always present.
Table 3: CSV File Fields Schema
Field | Base Event | Type (Format) | Missing | Description |
Date | - | string (yyyymmdd) | Never | Trading date in yyyymmdd format |
TimeBarStart | - | string (HH:MM) | Never | Start Time of the Bar. For minute bar format is HH:MM. For second bar format is HH:MM:SS. |
Ticker | - | string | Never | Symbol name |
CallPut | - | string | Never | Option type (Call or Put) displayed as “C” or “P” |
Strike | - | decimal | Never | Fixed price for buying or selling an option contract |
ExpirationDate | - | string (yyyymmdd) | Never | Expiration date of option contract in yyyymmdd format |
OpenBidTime | Quote | string (timestamp) | Blank | Time of the NBBO bid price as of bar open |
OpenBidPrice | Quote | decimal | Blank | NBBO bid price as of bar open, (e.g. current price as of bar start) |
OpenBidSize | Quote | integer | Blank | Open bid size |
OpenAskTime | Quote | string (timestamp) | Blank | Time of the NBBO ask price as of bar open |
OpenAskPrice | Quote | decimal | Blank | NBBO ask price as of bar open, (e.g. current price as of bar start) |
OpenAskSize | Quote | integer | Blank | Open ask size |
OpenTradeTime | Trade | string (timestamp) | Blank | Time of the first trade |
OpenTradePrice | Trade | decimal | Blank | Price of the first trade |
OpenTradeSize | Trade | integer | Blank | Number of contracts of the first trade |
HighBidTime | Quote | string (timestamp) | Blank | Time of highest NBBO bid price |
HighBidPrice | Quote | decimal | Blank | The highest NBBO bid price |
HighBidSize | Quote | integer | Blank | Size of the highest bid price |
HighAskTime | Quote | string (timestamp) | Blank | Time of the highest NBBO ask price |
HighAskPrice | Quote | decimal | Blank | The highest NBBO ask price |
HighAskSize | Quote | integer | Blank | Size of the highest ask price |
HighTradeTime | Trade | string (timestamp) | Blank | Time of the highest trade |
HighTradePrice | Trade | decimal | Blank | Price of the highest trade |
HighTradeSize | Trade | integer | Blank | Number of contracts of the highest trade |
LowBidTime | Quote | string (timestamp) | Blank | Time of the lowest bid |
LowBidPrice | Quote | decimal | Blank | The lowest NBBO bid price of bar |
LowBidSize | Quote | integer | Blank | The lowest bid size |
LowAskTime | Quote | string (timestamp) | Blank | Time of the lowest ask |
LowAskPrice | Quote | decimal | Blank | The lowest NBBO ask price of bar |
LowAskSize | Quote | integer | Blank | The lowest ask size |
LowTradeTime | Trade | string (timestamp) | Blank | Time of the lowest trade |
LowTradePrice | Trade | decimal | Blank | Price of the lowest trade |
LowTradeSize | Trade | integer | Blank | The lowest trade’s number of contracts |
CloseBidTime | Quote | string (timestamp) | Blank | Time of the NBBO bid price as of bar close |
CloseBidPrice | Quote | decimal | Blank | NBBO bid price at bar close |
CloseBidSize | Quote | integer | Blank | Size of the last bid |
CloseAskTime | Quote | string (timestamp) | Blank | Time of the NBBO ask price as of bar close |
CloseAskPrice | Quote | decimal | Blank | NBBO bid price at bar close |
CloseAskSize | Quote | integer | Blank | Size of the last ask |
CloseTradeTime | Trade | string (timestamp) | Blank | Time of the last trade |
CloseTradePrice | Trade | decimal | Blank | Price of the last trade |
CloseTradeSize | Trade | integer | Blank | Number of contracts of the last trade |
UnderOpenBidPrice | Under lying | decimal | Blank | Underlying security NBBO bid price at millisecond time of the open bar |
UnderOpenAskPrice | Under lying | decimal | Blank | Underlying security NBBO ask price at millisecond time of the open bar |
UnderCloseBidPrice | Under lying | decimal | Blank | Underlying security NBBO bid price at millisecond time of the close bar |
UnderCloseAskPrice | Under lying | decimal | Blank | Underlying security NBBO ask price at millisecond time of the close bar |
MinSpread | Quote | decimal | Blank | Minimum bid-ask spread size. This may be 0 if the market was crossed during the bar. Note: This requires both a bid and an ask quote during the bar period. |
MaxSpread | Quote | decimal | Blank | Maximum bid-ask spread in a bar. Note: This requires both a bid and an ask quote during the bar period. |
CancelSize | Trade | integer | Blank | The total number of reported contracts canceled during this bar. The canceled trades may have occurred at any time since the open. |
VolumeWeightPrice | Trade | decimal | Blank | Trade Volume weighted average price. |
NBBOQuoteCount | Quote | integer | 0 | The number of bid and ask NBBO quotes during the bar period. |
TradeAtBid | Quote Trade | integer | Blank | Sum of the number of contracts that occurred at or below the bid (a trade reported/printed late can be below current bid). |
TradeAtBidMid | Quote Trade | integer | Blank | Sum of the number of contracts that occurred between the bid and the mid-point: (Trade Price > NBBO Bid) & (Trade Price < NBBO Mid) |
TradeAtMid | Quote Trade | integer | Blank | Sum of the number of contracts that occurred at the mid. TradePrice = NBBO MidPoint |
TradeAtMidAsk | Quote Trade | integer | Blank | Sum of the number of contracts that occurred between the mid and the ask: (Trade Price > NBBO Mid) & (Trade Price < NBBO Ask) |
TradeAtAsk | Quote Trade | integer | Blank | Sum of the number of contracts that occurred at or above the ask. |
TradeAtCrossOrLocked | Quote Trade | integer | Blank | Sum of the number of contracts during the bar period when national best bid/offer is locked or crossed. Locked is when bid = ask Crossed is when bid > ask |
Volume | Trade | integer | 0 | Total number of contracts traded |
TotalTrades | Trade | integer | 0 | Total number of trades |
FinraVolume | Trade | integer | 0 | Number of contracts traded off the public exchanges and these are reported as FINRA |
The data starts from the Open Interest publications by the exchanges at 9:30 to the last published information at 16:15 ET. Most options stop trading at 16:00 ET, while some indexes trade till 16:15 ET.
Event timestamp is in milliseconds, ET. The field format is HH:MM:SS.mmm where
HH: Hour
MM: Minute
SS: Seconds
mmm: Milliseconds
For example, 09:31:01.723
Time Bar Start Format: One-second bar 13:03:01 is from time greater than 13:03:01 to 13:03:02. One-minute bar 11:04 is from time greater than 11:04 to less than 11:05.
Empty Fields: An empty field has no value and is shown as blank. For example, if there are no trades during the bar period, the field OpenTradeTime will be blank, but the field “Volume” measuring the total number of contracts traded in the bar will be “0”. Look at the “Missing” column above for each field to see if a field always has a value and if it will be zero or blank when there’s no value.
No Bid/Ask/Trade OHLC: During a bar timeframe, there may not be a change in the NBBO or an actual trade. For example, there can be a bar with open/high/low/close bid/ask but no trade open/high/low/close.
Single Event: For bars with only one trade, one NBBO bid, or one NBBO ask the open/high/low/close price, size and time will be the same.
VolumeWeightPrice: a volume-weighted price is calculated as a sum of a dollar volume for all trades divided by the total number of shares traded
((Trade1_Shares x Trade1_Price) + (Trade2_Shares x Trade2_Price) + ...) / TotalShares