US OPRA Options Contracts Security Master
Contract-level reference record of every listed and delisted OPRA option contract. One row per option contract (ASID) with contract tickers, root and underlying tickers over time, call/put, strike, expiration, trade-date ranges and, for non-standard (adjusted) contracts, deliverable components and settlement terms.
How to use it
Effective-dated contract reference data. Adjusted (non-standard) contracts carry a modified deliverable; use the OCC settlement details rather than the standard 100-share multiplier for them.
Typical use
Contract identity, lifecycle, and adjusted-deliverable handling for US-listed options.
Limitations
Vendor-curated reference data: rows can be restated when AlgoSeek learns of a late or corrected event, so land each delivery as a snapshot rather than overwriting history. Contract identity: ASID is the persistent key. ContractTickers holds OSI-style tickers (root + yymmdd + C/P + strike x 1000 in 8 digits, e.g. AAPL251219C00270000, SPXW261218C04640000; root not space-padded in samples). Strike column is the decimal strike in USD per share. To map bar/OI/analytics rows (Ticker, CallPut, Strike, expiration) to ASID, build the OSI-style ticker or match root + type + strike + expiry within ContractTradeDates. Effective dating: ContractTradeDates lists a 'start:end' period for each root-ticker period of the contract; end 29991231 means still active. OptionRootTickers, ContractTickers and ContractTradeDates are aligned by ';'. StartTradeDate is the contract's first trade date. NonStandardTradeDates lists the periods when the contract traded under a non-standard (adjusted) root. Adjustment / deliverable semantics: for non-standard options (IsStandard = N) the delivery columns describe the adjusted deliverable, one ';'-separated group per non-standard root period and one space-separated entry per component. Guide Table 1 example: BABA contract with root BABA2 has TotalDelivComponents 2, DeliveryComponents 'BABA USD', SettlementMethod 'CNS MON', StrikePercent '100 0', DeliverableUnits '100 100', CashAmount '0.000000 0.950000'. Available only from 2018.
Coverage
All listed and delisted OPRA options on stocks, ETFs, ETNs, indexes etc. Guide: contains data from 2010 to present, historical coverage back to 2007, quality not guaranteed before OSI (2010-05-17); deliverable/settlement details only for non-standard options from 2018. Page says 2015 to present.
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 (8)
- Documentation discrepancyHistory start: page says 2015 to present; guide says data from 2010 to present, covers history back to 2007, and files by year start in 2007. Quality is not guaranteed before OSI (2010-05-17).
- Documentation discrepancyGuide Table 1/2 name the column 'Expiration'; the published sample header uses 'ExpirationDate'.
- Documentation discrepancyASID doc type is integer here but string in the options (root) Security Master guide.
- Documentation discrepancyTotalDelivComponents, DeliveryComponents, SettlementMethod, StrikePercent, DeliverableUnits and CashAmount are typed as semicolon/space-delimited strings, not numeric columns; guide Table 2 has 'tricker' typos and column names wrap across lines.
- Documentation discrepancySample is a per-year file for ticker PLCE only (100 standard contracts); all delivery/settlement columns and NonStandardTradeDates are blank there, so the multi-valued formats come only from guide Table 1 (BABA example).
- Documentation discrepancySample ContractTradeDates starts 20250102 for 84 of 100 contracts whose StartTradeDate is earlier (e.g. 20230911), and UnderTradeDates is 20250102:20251231 for every row while active contracts end 29991231; the ranges in year files appear clipped to the file year, which the guide does not state.
- Documentation discrepancyGuide intro says dataset 'contains' options from 2010 but also 'covers historical data back to 2007'.
- Documentation discrepancyGuide columns match the 19-column sample header exactly, in the same order (apart from Expiration naming).
19 columns in delivery order · file or table name opt_contr_sec_master. Types are ODCS logical types; the format line shows how values are written.
| Column | Type | Key | Description |
|---|---|---|---|
| ASID | integeri64 | Key 1 · Required | algoseek unique option contract identifier; unchanged through the life of the contract Missing values: Never · Source: vendor guide and sample |
| ContractTickers | stringOSI-style ticker: root + yymmdd + C/P + 8-digit strike x 1000; ';' separates successive tickers | Required | All option contract tickers used for the contract; several when the root ticker changed Missing values: Never · Source: vendor guide and sample |
| ContractTradeDates | stringstart:end periods separated by ';', end 29991231 = active | Start and end date of each root-ticker period for this contract Missing values: Never · Source: vendor guide and sample | |
| StartTradeDate | dateyyyymmdd | First trade date of the option contract Missing values: Never · Source: vendor guide and sample | |
| ExpirationDate | dateyyyymmdd | Expiration date of the option contract (guide table names this column Expiration) Missing values: Never · Source: vendor guide and sample | |
| Type | string · enum (2) | Required | Option type, C = Call or P = Put Missing values: Never · Source: vendor guide and sample 2 allowed values
|
| Strike | number | Required | Fixed price at which the contract can be exercised, per share of underlying Unit: USD · Missing values: Never · Source: vendor guide and sample |
| OptionRootTickers | string';'-separated list | Required | Option root tickers used by the contract, in order; multiple when the root changed (e.g. BABA;BABA2) Missing values: Never · Source: vendor guide and sample |
| UnderASID | integeri64 | algoseek unique security identifier of the underlying equity Missing values: Blank · Source: vendor guide and sample | |
| UnderTickers | string';'-separated list | Underlying tickers used, multiple when the underlying ticker changed Missing values: Blank · Source: vendor guide and sample | |
| UnderTradeDates | stringstart:end periods separated by ';', end 29991231 = active | Start and end dates for each underlying ticker Missing values: Blank · Source: vendor guide and sample | |
| TotalDelivComponents | string';'-separated list per non-standard root period | Total delivery components for the non-standard root; non-standard options from 2018 only Missing values: Blank · Source: vendor guide and sample | |
| DeliveryComponents | stringspace-separated components, ';' between root periods | Components of delivery for the non-standard root; USD = US dollar cash; non-standard options from 2018 only Missing values: Blank · Source: vendor guide and sample | |
| SettlementMethod | string · enum (2)space-separated within a period, ';' between periods | How exercise/assignment is settled per component: MON = cash, CNS = continuous net settlement Missing values: Blank · Source: vendor guide and sample 2 allowed values
| |
| StrikePercent | stringspace-separated within a period, ';' between periods | Percentage of the strike allocated to each settlement component Unit: percent · Missing values: Blank · Source: vendor guide and sample | |
| DeliverableUnits | stringspace-separated within a period, ';' between periods | Per-contract deliverable units of cash, stocks, bonds or currencies for each component Missing values: Blank · Source: vendor guide and sample | |
| CashAmount | stringspace-separated decimals (6 places), ';' between periods | Per-contract cash amount allocated upon settlement for each component Unit: USD · Missing values: Blank · Source: vendor guide and sample | |
| IsStandard | string · enum (2) | Required | Whether the contract is standard Missing values: Never · Source: vendor guide and sample 2 allowed values
|
| NonStandardTradeDates | stringstart:end periods separated by ';' | Start and end dates for each non-standard option root ticker period Missing values: Blank · 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: ASID) must be 0
Delivery
S3 flat files
AlgoSeek flat-file delivery (the layout the schema below describes).
- Layout:
- Two aggregation options with identical fields: per-year CSV files opt_contr_sec_master_yyyy.csv.gz (yyyy from 2007 to present) or one file opt_contr_sec_master.csv.gz for all years. Gzip-compressed (uncompressed about 10x larger). One row per option contract.
- Compression:
- gzip
- Access:
- Bucket access is granted per subscription; bucket names arrive with license provisioning.
REST API
AlgoSeek Datasets REST API (X-API-KEY header; JSON, CSV or gzipped CSV). Returns AlgoSeek's normalized API layout, which differs from the flat-file columns in this contract's schema.
https://api.algoseek.com/v1/data/us-equity-opt-ref/contr-sec-master
- Authentication:
- X-API-KEY header issued by AlgoSeek
- Response formats:
- json, csv, csv_gzip
- Pagination:
- offset + limit; tick endpoints take trade_date and identifier (Ticker or ASID) in the path
Service levels
- History starts
- 2007-01-01
- 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.