Getting Started
Numerai is a data science tournament. Numerai provides a free, high-quality dataset. You build machine learning models on it. Numerai scores the performance of these predictions over time. If you stake NMR on your predictions, you earn (or burn) NMR based on your scores.
Numerai also operates a hedge fund. Only staked predictions are combined into an ensemble, called the "Meta Model", that the hedge fund uses to make trades. Numerai only makes money from these predictions when the predictions are correct, so we have to align our incentives via staking.
Sign up and go through our official onboarding for a full suite of tutorials.
Data
Each row in the dataset represents a stock at a point in time. The features describe attributes of the stock known at that time, and the target measures future stock performance.
Classic v6 data is available. v6 submissions and model uploads open with the round starting November 6; until then, continue using your existing v5 live model. The example below prepares a v6 model and does not submit it early.
Run the full Classic v6 notebook in Google Colab, or use this short example:
Install numerapi, pandas, pyarrow and lightgbm first.
import json
from numerapi import NumerAPI
import pandas as pd
VERSION = "v6.0"
napi = NumerAPI()
napi.download_dataset(f"{VERSION}/features.json")
with open(f"{VERSION}/features.json") as f:
metadata = json.load(f)
# feature_country is text; this example uses numeric features.
features = [f for f in metadata["feature_sets"]["small"] if f != "feature_country"]
assert features, "The small feature set has no numeric features"
napi.download_dataset(f"{VERSION}/train.parquet")
training_data = pd.read_parquet(
f"{VERSION}/train.parquet",
columns=["numerai_ticker", "date", "target"] + features,
).dropna(subset=["target"])
assert not training_data.empty, "The training file has no mature target rows"
training_data = training_data.sample(n=min(200_000, len(training_data)), random_state=7)See the Data section for more details.
Modeling
Your objective is to build machine learning models to predict the target given the features. In v6, target aliases target_jupiter_60, which looks 60 business days ahead. Exclude rows whose targets have not matured, as the example above does. You can use any language or framework that you like.
Here is an example model in Python using LightGBM:
import lightgbm as lgb
model = lgb.LGBMRegressor(
n_estimators=300,
learning_rate=0.05,
max_depth=5,
num_leaves=2 ** 5 - 1,
colsample_bytree=0.1,
verbosity=-1
)
model.fit(
training_data[features],
training_data["target"]
)See the Models section for more examples.
Submissions
Each day (Tuesday through Saturday), new live data is released. This represents the current state of the stock market. You must generate live predictions and submit them to Numerai. You are asked to submit a prediction value for each id in the live data.
This is what a submission might look like:

A sample submission
Here is how to generate and save predictions while preserving the live stock identifiers. Upload v6 predictions only when submissions open on November 6, 2026. To upload, first create an API key and set its environment variables.
# Reuse the trained model, features, VERSION and napi from above.
napi.download_dataset(f"{VERSION}/live.parquet")
live_features = pd.read_parquet(
f"{VERSION}/live.parquet", columns=["numerai_ticker"] + features
).set_index("numerai_ticker")
live_predictions = model.predict(live_features[features])
submission = pd.Series(
live_predictions, index=live_features.index
).rank(pct=True).to_frame("prediction")
submission.to_csv("submission.csv")
# Only after v6 submissions open: authenticate and upload.
# napi = NumerAPI() # reads NUMERAI_PUBLIC_ID and NUMERAI_SECRET_KEY
# napi.upload_predictions("submission.csv", model_id="your-model-id")Behind the scenes, Numerai combines the predictions of all models into the Stake-Weighted Meta Model, which in turn is fed into the Numerai Hedge Fund for trading.
See the Submissions section for more details and examples.
Scoring
Submissions are scored against two primary metrics:
- Correlation (
CORR): Your model's correlation to the target. - Meta Model Contribution (
MMC): Your model's contribution to the Meta Model's performance.
Each round records its scoring target and timeline: 20-day rounds resolve after 4 weeks and 60-day rounds resolve after 12 weeks. Check the latest round for its active score configuration.
See the Scoring section for more details.
Staking
Generally, you should start the tournaments without staking. You can predict and get scored for free. When you are ready and confident in your model's performance, you are allowed to stake on it with NMR - Numerai's utility token. Each round, you stake on a submission. After that round's configured scoring period, models with positive scores are rewarded with more NMR, while those with negative scores have a portion of their staked NMR burned (destroyed such that no one, not even Numerai, can access it).
Staking serves two important functions:
- "Skin in the game" allows Numerai to trust the quality of staked predictions. Otherwise, users could submit trash and never be punished.
- Payouts and burns continuously improve the weights of the Meta Model. Just like the weights of a neural network can be tuned with training data.
See the full Staking section for more details.
FAQ
See the FAQ for answers to the questions new users ask most often.
Support
Find us on Discord for questions, support, and feedback!

