Columns and types
VARCHAR
- ticker
- underlying
- optionType
DATE
- expirationDate
DOUBLE
- strike
- open
- high
- low
- close
- volume
TIMESTAMP
- timestamp
BIGINT
- transactions
Showing 12 of 18 recorded rows. The complete table is below.
Current logical schema for lake.intraday_options
Inspect the complete lake.intraday_options schema
Scroll sideways to compare all columns. Select a heading to sort.
| ticker | VARCHAR |
| underlying | VARCHAR |
| expirationDate | DATE |
| strike | DOUBLE |
| optionType | VARCHAR |
| timestamp | TIMESTAMP |
| open | DOUBLE |
| high | DOUBLE |
| low | DOUBLE |
| close | DOUBLE |
| volume | DOUBLE |
| transactions | BIGINT |
| implied_volatility | DOUBLE |
| delta | DOUBLE |
| gamma | DOUBLE |
| theta | DOUBLE |
| vega | DOUBLE |
| rho | DOUBLE |
No matching rows. Clear the filter to see all records.
Current logical schema for lake.intraday_options
Query lake.intraday_options 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
Minute-level options bars, roughly one year of history. Requires a literal `timestamp` range. One object per day, so the range decides what is read and an unbounded query is rejected: e.g. `timestamp >= TIMESTAMP '2026-09-01' AND timestamp < TIMESTAMP '2026-09-19'`, with an explicit `underlying` list. For coverage questions (first/last date on file), bound a window or use lake.options_daily.
Bounded intraday options preview
Query example, not executed here. Inspect the actual returned rows and dates before treating it as evidence.
Read each row at its recorded timestamp. ticker identifies the full option contract; underlying identifies the stock. Compare strike, optionType and expirationDate before joining a quote.
SELECT "ticker", "underlying", "timestamp", "expirationDate", "strike", "optionType"
FROM lake.intraday_options
WHERE "underlying" IN ('AAPL')
AND "timestamp" >= TIMESTAMP '2026-09-01'
AND "timestamp" < TIMESTAMP '2026-09-19'
ORDER BY "timestamp", "ticker", "underlying", "expirationDate", "strike", "optionType"
LIMIT 20;Submit the intraday_options 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 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.
python3 -m pip install nexustrade==1.42.0
export NEXUSTRADE_API_KEY="YOUR_LAKE_SCOPED_KEY"
python3 query.py
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-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
Minute-level options bars, roughly one year of history. Requires a literal `timestamp` range. One object per day, so the range decides what is read and an unbounded query is rejected: e.g. `timestamp >= TIMESTAMP '2026-09-01' AND timestamp < TIMESTAMP '2026-09-19'`, with an explicit `underlying` list. For coverage questions (first/last date on file), bound a window or use lake.options_daily.
Minute-grain `options_daily`, with the same `underlying`-not-`ticker` filtering rule. History is roughly one year — do not assume a start date, and do not scan the whole table to find it: check `MIN(timestamp)` inside a bounded window. Always give an explicit `underlying` list and a bounded range.
No comments yet.