Explore more topics
Market-data lake

lake.intraday_options_quotes dataset schema

Column types and research semantics for NexusTrade’s lake.intraday_options_quotes dataset. Read the supported schema before submitting a bounded SQL query.

Query name
lake.intraday_options_quotes
Storage partition
day
Columns
7
Jump to a section

Columns and types

VARCHAR

  • ticker

DATE

  • date

BIGINT

  • minute_ns

DOUBLE

  • bid_price
  • ask_price

INTEGER

  • bid_size
  • ask_size

Current logical schema for lake.intraday_options_quotes

Inspect the complete lake.intraday_options_quotes schema
ColumnType
tickerVARCHAR
dateDATE
minute_nsBIGINT
bid_priceDOUBLE
ask_priceDOUBLE
bid_sizeINTEGER
ask_sizeINTEGER

Current logical schema for lake.intraday_options_quotes

Query lake.intraday_options_quotes using the column names and types below. The query validator and engine use this logical catalog; a field absent from an older shard returns typed NULL.

What this table contains

Raw OPRA NBBO at (ticker, minute) grain, whether or not a trade printed — use for spread studies, where trade-grain sources under-sample wide quotes. Requires a literal `date` range and a `ticker` filter. ~1 GiB and ~289M rows per day, one object per day, so the range decides what is read: e.g. `date BETWEEN DATE '2026-09-15' AND DATE '2026-09-19'`; unbounded queries are rejected. Coverage starts 2022-03-07. For coverage questions, bound a window or use lake.options_daily (completed session-boundary NBBO).

Inspect one actual option contract NBBO

Query example, not executed here. The dates and filters define the proposed research scope; returned rows and current coverage must be checked in your workspace.

First retrieve a contract ticker from a bounded options_daily query for the desired underlying and dates. Copy that full ticker into the literal before submitting this template. ticker here identifies the contract, not AAPL as an underlying. Bid and ask describe the quoted book; minutes without trades can still appear.

SQL
-- Replace the literal below with a contract ticker returned by options_daily.
SELECT ticker, date, minute_ns, bid_price, ask_price, bid_size, ask_size
FROM lake.intraday_options_quotes
WHERE ticker = 'REPLACE_WITH_COVERED_OCC_TICKER'
  AND date >= DATE '2026-09-15'
  AND date < DATE '2026-09-19'
ORDER BY date, minute_ns
LIMIT 20;

Submit the intraday_options_quotes example and read back its parts

Run the exact SQL through the Python SDK

Save this page's SQL as query.sql and the runner below as query.py. Use a registered key with lake scope from Developers. The runner submits the displayed intraday_options_quotes query once, saves its operation, waits on that same ID, saves the returned manifest and downloads its Parquet parts.

This submission has not been executed for the reference page. Inspect the SQL, dates and resource limits before running it. Reuse the request key only for this identical SQL and limits; use a new key when changing them.

Shell
python3 -m pip install nexustrade==1.42.0
export NEXUSTRADE_API_KEY="YOUR_LAKE_SCOPED_KEY"
python3 query.py

Python
import json
from pathlib import Path
from nexustrade import NexusTradeClient

# Save the SQL displayed on this page as query.sql.
sql = Path("query.sql").read_text()
client = NexusTradeClient.from_environment()
operation = client.create_lake_query(
    {"query": sql, "limits": {"timeoutSeconds": 30, "maxRows": 50,
                              "maxResultBytes": 1048576}},
    idempotency_key="reference-intraday_options_quotes-20261012-v1",
)
Path("query-operation.json").write_text(json.dumps(operation, indent=2))
finished = client.wait_for_lake_query(operation["id"])
if finished["status"] != "completed":
    raise RuntimeError(finished)
manifest = client.get_lake_query_manifest(operation["id"])["result"]
Path("query-manifest.json").write_text(json.dumps(manifest, indent=2))
print(json.dumps(manifest, indent=2))
for part in manifest["parts"]:
    Path(f"query-{part['part']}.parquet").write_bytes(
        client.download_lake_query_part(operation["id"], part["part"], max_bytes=1048576)
    )

Coverage and timing

Inspect source coverage and timing before using the rows

Raw OPRA NBBO at (ticker, minute) grain, whether or not a trade printed — use for spread studies, where trade-grain sources under-sample wide quotes. Requires a literal `date` range and a `ticker` filter. ~1 GiB and ~289M rows per day, one object per day, so the range decides what is read: e.g. `date BETWEEN DATE '2026-09-15' AND DATE '2026-09-19'`; unbounded queries are rejected. Coverage starts 2022-03-07. For coverage questions, bound a window or use lake.options_daily (completed session-boundary NBBO).

Inspect the returned source dates and nullable fields. For an event-based strategy, use its public availability date to place the observation on the research timeline.

Discussion

Sign in or create a free account to join the discussion.

No comments yet.