US Options Trade Only Minute Bar Guide
US Options Trade Only 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 5
APPENDIX A. FREQUENTLY ASKED QUESTIONS 8
algoseek’s Trade Only 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 Trade Only Minute Bar data files are organized into a single format feed where bars are ordered by the time. The entire trading session includes market hours from 9:30:00 to 16:15:00 EST.
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 trades during the market hour.
algoseek’s options bars are event-based, which means a bar is only created when there was at least one trade event during the bar period. If there is only one trade during the bar period, the event fields will have the same values. For example:
OpenTradePrice = HighTradePrice = LowTradePrice = CloseTradePrice
A bar will not be available for a Call+Strike or Put+Strike option if there is no trade event.
Table 2 describes logics for underlying 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 Only bars for all the AAPL call and put options for every strike on the expiration date March 3, 2020, for the 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 the compressed data.
Table 3 below provides the name, base event, default value, brief description, and data type for each data field (column) in Options Trade Only 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 (time) | 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 in yyyymmdd format |
OpenTradePrice | Trade | decimal | Blank | Price of the first trade |
HighTradePrice | Trade | decimal | Blank | Price of the highest trade |
LowTradePrice | Trade | decimal | Blank | Price of the lowest trade |
CloseTradePrice | Trade | decimal | Blank | Price of the last trade |
UnderOpenBidPrice | Under lying | decimal | Never | Underlying ticker’s NBBO bid price at the time of OpenTradePrice. |
UnderOpenAskPrice | Under lying | decimal | Never | Underlying ticker’s NBBO ask price at the time of OpenTradePrice |
UnderCloseBidPrice | Under lying | decimal | Never | Underlying ticker’s NBBO Bid price at the time of CloseTradePrice |
UnderCloseAskPrice | Under lying | decimal | Never | Underlying ticker’s NBBO Ask price at the time of CloseTradePrice |
VWAP | Trade | decimal | Never | Volume weighted average price |
Volume | Trade | integer | Never | Total number of contracts traded |
TotalTrades | Trade | integer | Never | Total number of trades |
The data starts from the Open Interest publications by the exchanges at 9:30 am to the last published information at 4:15 pm EST. Most options stop trading at 4 pm, while some indexes trade till 4:15 pm.
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.
Single Event: For bars with only one trade 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