Explore more topics
Market-data lake

lake.index_prices dataset schema

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

Query name
lake.index_prices
Storage partition
year
Columns
8
Jump to a section

Columns and types

VARCHAR

  • ticker
  • name

TIMESTAMP

  • date

DOUBLE

  • open
  • high
  • low
  • close
  • volume

Current logical schema for lake.index_prices

Inspect the complete lake.index_prices schema
ColumnType
tickerVARCHAR
nameVARCHAR
dateTIMESTAMP
openDOUBLE
highDOUBLE
lowDOUBLE
closeDOUBLE
volumeDOUBLE

Current logical schema for lake.index_prices

Query lake.index_prices 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

Daily levels for non-tradable indices and benchmarks: VIX, SPX, NDX, DJI, RUT, SKEW, VVIX, TNX, USDBROAD. Market-regime and volatility context.

Inspect VIX levels in a bounded window

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.

Each row is one saved VIX observation. Read close as an absolute index level, and inspect date before using it as a regime input. Nullable OHLC or volume fields are unnecessary for this task.

SQL
SELECT ticker, name, date, close
FROM lake.index_prices
WHERE ticker = 'VIX'
  AND date >= TIMESTAMP '2026-09-01'
  AND date < TIMESTAMP '2026-09-19'
ORDER BY date
LIMIT 20;

Submit the index_prices 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 index_prices 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-index_prices-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

Daily levels for non-tradable indices and benchmarks: VIX, SPX, NDX, DJI, RUT, SKEW, VVIX, TNX, USDBROAD. Market-regime and volatility context.

These are index LEVELS, not equities — never join them against `sec_daily_ohlc` as if they were tickers.

`VIX` close is the absolute Cboe index level: 18.5 means 18.5, not 18.5%. `SPX` is the S&P 500 index level, not the SPY ETF price. `NDX` is the Nasdaq-100 level and `DJI` the Dow.

`TNX` follows Cboe convention: the 10-year Treasury yield times ten, so 47.5 means a 4.75% yield. `USDBROAD` is the Fed broad trade-weighted dollar index (Jan-2006 = 100) and is NOT ICE's DXY — do not compare it to DXY levels.

`DJI` before 2003-09 and `RUT` before 2020-11 are back-extended from DIA/IWM scaled at the splice, measured to 0.117-0.167% mean error. Fine for regime signals, not for precise level math.

`open`, `high`, `low` and `volume` are nullable — VIX carries no volume. `close` is always populated.

For a 5-day VIX rate of change: `(close - LAG(close, 5) OVER (PARTITION BY ticker ORDER BY date)) / LAG(close, 5) OVER (PARTITION BY ticker ORDER BY date) * 100`.

Discussion

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

No comments yet.