Columns and types
VARCHAR
- symbol
- asset_class
- sector
- industry
- exchange
VARCHAR[]
- industry_tags
BOOLEAN
- is_active
DATE
- listing_date
- delisted_date
Current logical schema for lake.backtest_tickers
Inspect the complete lake.backtest_tickers schema
Scroll sideways to compare all columns. Select a heading to sort.
| symbol | VARCHAR |
| asset_class | VARCHAR |
| sector | VARCHAR |
| industry | VARCHAR |
| industry_tags | VARCHAR[] |
| exchange | VARCHAR |
| is_active | BOOLEAN |
| listing_date | DATE |
| delisted_date | DATE |
No matching rows. Clear the filter to see all records.
Current logical schema for lake.backtest_tickers
Query lake.backtest_tickers 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
Backtest corpus: metadata for each symbol a corpus run traded. Join `symbol` against the `lake.backtest_runs.tickers` list. `industry_tags` is VARCHAR[].
Inspect the symbols traded by recorded runs
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.
Array membership joins a symbol to the run universe. A run can yield several rows, so these are run-symbol observations rather than independent experiment counts.
WITH eligible_runs AS (
SELECT *
FROM lake.backtest_runs
WHERE author_type <> 'optimizer'
QUALIFY ROW_NUMBER() OVER (
PARTITION BY experiment_id
ORDER BY created_at DESC, backtest_uuid
) = 1
)
SELECT r.backtest_uuid, r.start_date, r.end_date, t.symbol,
t.asset_class, t.sector, t.industry
FROM eligible_runs r
JOIN lake.backtest_tickers t ON list_contains(r.tickers, t.symbol)
ORDER BY r.created_at DESC, r.backtest_uuid, t.symbol
LIMIT 20;Submit the backtest_tickers 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 backtest_tickers 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-backtest_tickers-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
The logical view is backed by canonical manifest-resolved data. Query this name rather than guessing a physical database collection or object-storage path.
Backtest corpus: metadata for each symbol a corpus run traded. Join `symbol` against the `lake.backtest_runs.tickers` list. `industry_tags` is VARCHAR[].
No comments yet.