Numerai is a data science tournament where you build machine learning models on obfuscated financial data to predict the stock market. Models can be staked with the NMR cryptocurrency to earn rewards. Together, staked models across the tournament control Numerai's hedge fund.
Sign up to Numerai.
Build a machine learning model on the obfuscated dataset and upload your predictions via the website or API.
Stake NMR on your model to earn or lose NMR based on your performance relative to Numerai's custom targets.
Automate the weekly upload of your predictions and grow the value of your stake over time.
In the provided
id corresponds to a stock with a set of obfuscated
target represents future performance. Rows are grouped into
eras that represent different points in time.
Your goal is to train a machine learning model to predict the
target given new
Below is an example how to train a model on the
training_data to make predictions on the
import pandas as pdfrom xgboost import XGBRegressor# training data contains features and targetstraining_data = pd.read_csv("numerai_training_data.csv").set_index("id")# tournament data contains features onlytournament_data = pd.read_csv("numerai_tournament_data.csv").set_index("id")feature_names = [f for f in training_data.columns if "feature" in f]# train a model to make predictions on tournament datamodel = XGBRegressor(max_depth=5, learning_rate=0.01, \n_estimators=2000, colsample_bytree=0.1)model.fit(training_data[feature_names], training_data["target"])# submit predictions to numer.aipredictions = model.predict(tournament_data[feature_names])predictions.to_csv("predictions.csv")
Every Saturday at
18:00 UTC, a new
round begins and new
tournament_data is released. Submit your predictions to Numerai to enter the tournament.
The submission deadline is
Monday 14:30 UTC. Late submissions will not be eligible for payouts.
Your submission is scored on the
correlation between your predictions and the true targets. The higher the correlation the better.
# method='first' breaks ties based on order in arrayranked_predictions = predictions.rank(pct=True, method="first")correlation = np.corrcoef(labels, ranked_predictions)[0, 1]
Your submission will also be scored on your metamodel contribution or
See the metamodel contribution section for details.
stake on your submission to start earning
payouts. You can either stake on
corr plus mmc.
You can start participating in Numerai without staking to learn more about the tournament and about your model(s)' performance. When you feel confident in your model(s), you can attach some stake to it. The minimum stake value is 0.01 NMR.
burn a percentage of your stake based on the score you are staking on. For example, if you stake
100 NMR on
correlation and your score was
+0.05, then you will earn
5% of 100NMR = 5NMR. The maximum you can earn or burn is
25% of your stake each round.
corr_payout = stake * clip(corr, -0.25, 0.25)mmc_payout = stake * clip(corr + mmc, -0.25, 0.25)
See the staking and payouts section for details.
Each submission will receive daily updated scores starting from the first Thursday after the submission deadline to the Wednesday 4 weeks after. For example, if you made the blue submission on
Sun 7th, you will receive your first score on
Thur 11th and your final score on
Wed 7th of the next month.
If you staked on your submission, you will also receive daily updates on your payouts. But only your final score and final payout will count.
rank on the leaderboard is based on your
reputation, which is a weighted average of your
correlation scores over the past 20 rounds.
See the reputation section for details.
Find us on RocketChat for questions, support, and feedback!