Python SDK for the EverestQuant prediction tournament platform
Project description
everestapi
Python SDK for the EverestQuant prediction tournament platform.
pip install everestapi
Quickstart
from everestapi import EverestAPI
api = EverestAPI(api_key="eiq_your_key")
# Browse the universe
universe = api.get_universe()
# Download training data
api.download_dataset(universe="futures", split="train", output_path="train.parquet")
# Submit predictions
api.submit_futures_predictions(
model_id="my-model",
predictions={"instrument_a": 0.5, "instrument_b": -0.3},
)
# Check scores
scores = api.get_scores(model_id="my-model", days=30)
Or set EVEREST_API_KEY as an environment variable and omit the constructor argument.
Handling your API key. Shell history, terminal recordings, and CI logs may persist any value you
echoor.envfile (gitignored) over inlining in source.
Two tournaments
| Tournament | Universe | Features | Frequency |
|---|---|---|---|
| Alps (Equities) | Large-cap equities | Obfuscated fundamental + technical | Daily |
| Himalayas (Futures) | Global futures | Obfuscated cross-sectional + macro | Weekly |
# Equities
api = EverestAPI(api_key="...", tournament="equities")
api.submit_predictions(model_id="my-eq-model", predictions=[...])
# Futures
api = EverestAPI(api_key="...", tournament="futures")
api.submit_futures_predictions(model_id="my-fut-model", predictions={...})
Key features
Submitting from a file
Both Parquet and CSV are accepted. Parquet is recommended — float precision round-trips cleanly, files compress well, and it matches the format the SDK serves to you (download_dataset returns parquet).
api.submit_predictions_file(
model_name="my-model",
file_path="predictions.parquet", # or "predictions.csv"
tournament="equities",
)
The file must have ticker (str) and score (float in [-1, 1]) columns, one row per universe instrument.
From the CLI:
everestapi submit --model my-model --file predictions.parquet
Data & diagnostics
api.download_dataset(universe="futures", split="train")
api.download_benchmark(universe="futures", split="validation")
api.get_dataset_info(universe="futures")
api.get_diagnostics(model_id="my-model")
api.submit_validation_diagnostics(model_id="my-model", predictions=df)
Serverless compute
# Tier 1 — quick-train with built-in templates
job = api.quick_train(model="lightgbm", features="small", target="target_everest_20")
# Tier 2 — custom script on GPU
job = api.custom_train(script_path="train.py", gpu="A100", max_hours=2.0)
# Wait and download
result = api.wait_for_job(job["job_id"])
api.download_model(job["job_id"], output_path="model.pkl")
Pickle safety. Trained models are returned as pickle files.
pickle.loadis RCE-equivalent: only load.pklfiles from compute jobs you initiated yourself. Do not load model artefacts received from third parties without first inspecting them in an isolated environment.
Staking (USDC)
api.stake(model_id="my-model", amount_usdc=100.0, wallet_address="0x...")
api.get_stake_balance(model_id="my-model")
api.claim_payout(model_id="my-model", round_id="42")
Local evaluation
import pandas as pd
val = pd.read_parquet("futures_validation.parquet")
metrics = EverestAPI.evaluate(predictions, val, target="target_everest_20")
print(metrics) # {"simple_corr": 0.023, "weighted_corr": 0.019, "per_difficulty": {...}}
CLI
everestapi health
everestapi universe
everestapi submit --model my-model --file predictions.parquet # or .csv
Registration
No API key needed to register:
result = EverestAPI().register(name="my-agent", email="agent@example.com")
print(result["api_key"]) # shown once — save it
Context manager
with EverestAPI(api_key="...") as api:
universe = api.get_universe()
# connection pool cleaned up on exit
Requirements
- Python 3.10+
- httpx >= 0.27
Disclaimers
- Not financial advice. EverestQuant tournaments are prediction competitions. Nothing in this SDK or on the platform constitutes investment advice, a solicitation, or a recommendation to buy or sell any financial instrument.
- Testnet / beta. The staking system and compute platform are in beta. Smart contract addresses, API endpoints, and payout mechanics may change without notice.
- API stability. This SDK targets API v1. Breaking changes will be communicated via the platform changelog and will follow semver once the SDK reaches 1.0.
- Data is obfuscated. All features and instrument identifiers served by the API are obfuscated. Attempting to reverse-engineer or de-obfuscate data violates the platform terms of service.
License
MIT — see LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file everestapi-0.2.0.tar.gz.
File metadata
- Download URL: everestapi-0.2.0.tar.gz
- Upload date:
- Size: 28.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81ab53e9faddfb51daad2d3aa8d5068434698b6057279c92e3f78e243d20c0bb
|
|
| MD5 |
8f7c607c984f08498bafffdb777a3663
|
|
| BLAKE2b-256 |
0d3ef481ebe5504341956317311cf8de86d3ba6bd55318ec87bb26f56cf251e6
|
Provenance
The following attestation bundles were made for everestapi-0.2.0.tar.gz:
Publisher:
publish.yml on everestquant/everestapi-public
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
everestapi-0.2.0.tar.gz -
Subject digest:
81ab53e9faddfb51daad2d3aa8d5068434698b6057279c92e3f78e243d20c0bb - Sigstore transparency entry: 1716906951
- Sigstore integration time:
-
Permalink:
everestquant/everestapi-public@02e88016f9616b71bc160d85b005d989abc2abef -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/everestquant
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@02e88016f9616b71bc160d85b005d989abc2abef -
Trigger Event:
push
-
Statement type:
File details
Details for the file everestapi-0.2.0-py3-none-any.whl.
File metadata
- Download URL: everestapi-0.2.0-py3-none-any.whl
- Upload date:
- Size: 25.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8b4865ae4bb34d5ea955c2cb4f0e1c0a7afc266dc7eb56c6d5bb77b1df6505b
|
|
| MD5 |
d445b43b797d7b6af59892d5fb42ae1d
|
|
| BLAKE2b-256 |
fe388cc320115a86e80dcd6e84c44b64405fcc8be3d59c26eb4182f0a3723bbe
|
Provenance
The following attestation bundles were made for everestapi-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on everestquant/everestapi-public
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
everestapi-0.2.0-py3-none-any.whl -
Subject digest:
e8b4865ae4bb34d5ea955c2cb4f0e1c0a7afc266dc7eb56c6d5bb77b1df6505b - Sigstore transparency entry: 1716907025
- Sigstore integration time:
-
Permalink:
everestquant/everestapi-public@02e88016f9616b71bc160d85b005d989abc2abef -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/everestquant
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@02e88016f9616b71bc160d85b005d989abc2abef -
Trigger Event:
push
-
Statement type: