Tournament data.
- Features
- 178
- Targets
- 15
- Splits
- 3
What you are modelling
Hedge-fund-grade futures data: engineered market features plus alternative data, point-in-time correct, and encoded so you can model it without knowing what any column is.
The splits
Train and validation are labelled. The live split ships with its target columns blanked: one trading day, replaced every weekday before the round opens.
| Split | Expeds | Rows | Instruments | Targets |
|---|---|---|---|---|
| Train | 6,522 | 468,236 | 44 → 92 | Labelled |
| Validation | 1,392 | 125,931 | 89 → 92 | Labelled |
| Live2026-10-09 | 1 | 89 | 89 | Targets blanked |
The features
Every feature is ranked into 10 bins inside its own exped, so a 9 is the top band that day and a 0 is the bottom, rather than a level you can compare across days. There are no units and no outliers to clip. A separate -1 marks a value that was not available.
The targets
Each target takes 5 levels shaped as a bell, so half of every exped sits in the middle and the tails are thin. All 15 are distinct columns. Only target_everest is graded.
target_everestThe column your submission is scored against.
target_Anghomartarget_Ayachitarget_Azurkitarget_Bougafertarget_Ghattarget_Gourzatarget_Ighiltarget_Iglitarget_Meltsenetarget_Saghrotarget_Tarhattarget_Timesguidatarget_Tiskiouinetarget_TougrouteHow it is encoded
The research panel behind this release carries named instruments and real-valued columns. What you download is the same table after three transforms, and none of them runs backwards.
The research panel, with illustrative column names rather than the real ones.
| row | instrument | date | carry_3m | rv_20d | oi_chg_5d | cot_net_spec | fwd_ret_20d |
|---|---|---|---|---|---|---|---|
| 0 | Gold futures | 2011-04-18 | 0.0042 | 13.80 | -0.0044 | -0.08 | 0.0058 |
| 1 | Crude oil futures | 2011-04-18 | -0.0093 | 28.31 | 0.0517 | 0.62 | -0.0341 |
| 2 | Corn futures | 2011-04-18 | 0.0067 | 19.04 | -0.0122 | 0.14 | 0.0031 |
Values are ranked inside their own exped and cut into 10 equal bins.
Column names are replaced with codenames that carry no meaning.
Every row takes a fresh id each day, so an id never names an instrument.
Real rows from exped_3264, exactly as the file holds them.
| row | id | exped | feature_Imi | feature_Ras | feature_Rif | target_everest |
|---|---|---|---|---|---|---|
| 0 | 96000702d65f760f | exped_3264 | 5 | 6 | 4 | 0.50 |
| 1 | 3cf2776623f8813d | exped_3264 | 6 | 8 | 2 | 0.50 |
| 2 | fadfc61f018fcc08 | exped_3264 | 7 | 1 | 0 | 0.25 |
Available datasets · Himalayas / Futures
Column definitions
| Column | Type | Description |
|---|---|---|
| id | string | opaque row identifier: the parquet index; submit it verbatim |
| exped | string | period identifier for the cross-section |
| data_type | string | train | validation | live |
| feature_... (x178) | int | uniform bins {0..9}; -1 where unavailable |
| target_everest | float | 5 levels, bell (graded) |
| target_... (15 total) | float | the tree's own target block; only the graded column above scores |
Pull data from your terminal
import os
from everestapi import EverestAPI
client = EverestAPI(api_key=os.environ["EIQ_API_KEY"])
train = client.download_dataset(universe="futures", split="train")
live = client.download_dataset(universe="futures", split="live")curl -H "X-API-Key: $EIQ_API_KEY" \
https://api.everesteer.ai/api/v1/futures/data/train \
-o train.parquet{
"mcpServers": {
"everesteer": {
"command": "python",
"args": ["-m", "eiq_platform.mcp.server"],
"env": {
"EIQ_API_KEY": "YOUR_API_KEY",
"EIQ_BASE_URL": "https://api.everesteer.ai"
}
}
}
}Quick Start
Python SDK
pip install everesteer-api
from everestapi import EverestAPI
client = EverestAPI(api_key="YOUR_API_KEY")
# Understand the data
schema = client.get_dataset_schema()
# Train a model (~60s, ~$0.02) -- returns artifacts, doesn't submit/host
job = client.train(model="lightgbm", features="small")
result = client.wait_for_job(job["id"])
# Download the predictions the job produced
preds_url = client.get_job_predictions_url(job["id"])
# Submit to the tournament, and separately host the model
client.submit_futures_predictions(model_id="my-model", predictions={"EIQ_F001": 0.42})
client.upload_model(model_id="my-model", file_path="model.pkl")MCP Config (Claude Code / Cursor)
{
"mcpServers": {
"everesteer": {
"command": "python",
"args": ["-m", "eiq_platform.mcp.server"],
"env": {
"EIQ_API_KEY": "YOUR_API_KEY",
"EIQ_BASE_URL": "https://api.everesteer.ai"
}
}
}
}REST API (curl)
# Get dataset schema
curl -s https://api.everesteer.ai/api/v1/data/v1/schema | jq .
# Download training data (fetch https://api.everesteer.ai/api/v1/data/versions for the current <version> value)
curl -o train.parquet https://api.everesteer.ai/api/v1/data/download/<version>/futures/train
# Submit predictions
curl -X POST https://api.everesteer.ai/api/v1/predictions \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model_id": "my-model", "predictions": [...]}'