US Options Trade and Quote Minute Bar Guide
US Options Trade and Quote Minute Bar Guide
version 1.5 (Apr 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.
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 price agreed by 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 the market hours.
algoseek’s options bars are event-based, which 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 is only one bid, or ask, or trade, during the bar period, the event fields will have the same values. For example:
OpenBidPrice = HighBidPrice = LowBidPrice = CloseBidPrice
OpenBidSize = HighBidSize = LowBidSize = CloseBidSize
OpenBidTime = HighBidTime = LowBidTime = CloseBidTime
If there are no events, then there will not be any bars for a Call+Strike or Put+Strike option at all.
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 first option bid, ask, or trade event. |
UnderOpenAskPrice | Underlying security NBBO ask price at millisecond time of first option bid, ask, or trade event. |
UnderCloseBidPrice | Underlying security NBBO bid price at millisecond time of last option bid, ask, or trade event. |
UnderCloseAskPrice | Underlying security NBBO ask price at millisecond time of last option bid, ask, or trade event. |
There can be one or more of these events in a bar. Each bar will show the underlying ticker’s bid/ask price at the millisecond time of the first and last events for the bar. If there is only one event in the bar then this data will be the same.
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 first bid |
OpenBidPrice | Quote | decimal | Blank | NBBO Price of the first bid |
OpenBidSize | Quote | integer | Blank | Open bid size |
OpenAskTime | Quote | string (timestamp) | Blank | Time of the first ask |
OpenAskPrice | Quote | decimal | Blank | NBBO price of the first ask |
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 last bid |
CloseBidPrice | Quote | decimal | Blank | NBBO price of the last bid |
CloseBidSize | Quote | integer | Blank | Size of the last bid |
CloseAskTime | Quote | string (timestamp) | Blank | Time of the last ask |
CloseAskPrice | Quote | decimal | Blank | NBBO price of the last ask |
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 ticker’s NBBO bid price at millisecond time of the first option Bid, Ask, or Trade event. |
UnderOpenAskPrice | Under lying | decimal | Blank | Underlying ticker’s NBBO ask price at millisecond time of the first option Bid, Ask, or Trade event. |
UnderCloseBidPrice | Under lying | decimal | Blank | Underlying ticker’s NBBO bid price at millisecond time of the last option Bid, Ask, or Trade event. |
UnderCloseAskPrice | Under lying | decimal | Blank | Underlying ticker’s NBBO ask price at millisecond time of the last option Bid, Ask, or Trade event. |
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 ET, while some indexes trade till 16:15 ET.
Event timestamp is in milliseconds, ET. 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