Model Uploads
Model uploads are a simple and free way to automate your daily submissions. You upload a .pkl file with your trained model and we handle generating and submitting the predictions for you. You don't need to worry about reliability, infrastructure, scheduling, etc. You just focus on data science.
See the Classic v6 notebook for training, evaluation and a complete model-upload prediction function.
Classic v6 availability
Classic v6 data is available. v6 submissions and model uploads open with the round starting November 6, 2026. Before that round, use your existing v5–v5.3 live model. v5–v5.3 live data and hosted model support end on November 6; retrain on v6 for the changed stock universe.
Select v6.0 as Dataset Version for this notebook. If it is not listed, v6 model uploads are unavailable; do not upload its pickle against a v5 dataset version.
How it works
1. Trained Model
Train with the requirements from the Numerai Predict environment matching your Python version. Each py3.X directory contains that runtime’s requirements.txt. Select the same Python version when uploading your pickle. Later minor versions or patches of the listed packages must remain compatible with that environment.
Anything not listed is not available, but we do take requests over on Discord.
2. Prediction Pipeline
Wrap your model in a function that takes live features and outputs ranked predictions aligned to the input row index. Reuse the same numeric feature_cols and column order used in training; exclude the text column feature_country:
# Wrap your model with a function that takes live features and returns live predictions
def predict(
live_features: pd.DataFrame,
live_benchmark_models: pd.DataFrame
) -> pd.DataFrame:
live_predictions = model.predict(live_features[feature_cols])
submission = pd.Series(live_predictions, index=live_features.index).rank(pct=True)
return submission.to_frame("prediction")This is the only way for Numerai to properly run your model for you. A pickle without a predict function with this signature fails.
3. Cloudpickle
Pickle your function with the cloudpickle library and upload the pickle file to Numerai:
# Use the cloudpickle library to serialize your function
import cloudpickle
p = cloudpickle.dumps(predict)
with open("predict.pkl", "wb") as f:
f.write(p)This library is used in other computing frameworks like Dask and Ray and allows you to easily run your local Python code remotely in the cloud. The main benefit of using cloudpickle over the standard pickle library is that it serializes your local context along with your code. This makes it very convenient to package up code developed locally in any environment.
In the example above, our predict function references model and feature_cols defined in the global scope. Cloudpickle is smart enough to correctly serialize both model and feature_cols by value so that they are also available when Numerai runs this function.
4. Upload the Pickle
Upload your Model on the Submissions page (the Upload Model button on the right):

Select your pickle file, set the Python version you used, then click Upload.
While the upload is in progress, the dialog cannot be dismissed by clicking outside it, pressing Escape, or using the close button. It closes automatically after a successful upload. If the upload fails, you can retry or close the dialog.

Numerai executes your model to generate a live submission for the current round:

If this succeeds, a block appears in the "submissions" column grid, you can review the execution logs for your model, and Numerai generates diagnostics over the validation dataset for your model:

Once diagnostics complete, you can also view the diagnostics for this model:

5. Running Daily
Once uploaded, Numerai runs your model every day to generate and submit live predictions for you. If everything is working correctly, you see the latest submission cycle through these 4 statuses:
- Pending: Numerai is provisioning the cloud resources to run your model
- Running: Numerai is now running your model
- Validating: Numerai has run your model and is now validating your submission
- Success: Numerai has accepted your submission
If there was a problem, you see 2 possible statuses:
- Error: Numerai has encountered an unexpected error running your model and the team investigates it.
- Failed: Your model failed to run. Please check the logs and re-upload a working model. Examples of model failures include:
- Python or dependency version mismatch
- Invalid submission
- Out of memory
- Timeout
6. Disabling the Pickle
If, at any point, you would like to disable your uploaded model:
Visit the Submissions Page
Click the Model Upload button:

In the "Settings" tab, select "Disable"

FAQ
How do I view my uploaded model's logs?
On the Submissions Page, click the upload status or View logs for your model. The log modal loads the latest job for the selected upload, including failed validation jobs. Reopening the modal refreshes the job lookup.
If the job has not been created yet, is queued, or its log stream is not ready, the modal waits for logs and refreshes the job's status and failure message. If no job appears while waiting, it displays "No jobs have been created for this upload."
What versions of Python/packages work?
Select the Python version used to train and pickle your model. The upload dialog lists the available runtimes; check that its selection matches your training environment.
For package versions, use the matching runtime directory in Numerai Predict.
Can my model access the internet?
No, we do not give your model internet access.
What are the Mem / CPU limitations?
By default, we provision each model a machine with 1 CPU and 4GB of RAM, and allow a runtime of up to 10 minutes (does not include time spent queueing).
LightGBM Benchmarks:
- 20K trees using the small feature set runs in under 1 minute
- 90K trees using the full feature set runs in under 6 minutes
Can I still upload predictions manually?
No, once you upload your model, you can no longer upload submissions via the API.
Can I have a webhook on my model?
No, to avoid race conditions after you upload your model, you cannot configure any webhooks on it. Disable any existing compute configuration before uploading your model.
Does Numerai have full access to my trained model?
Yes, Numerai has access to and can unpickle your trained model. If you are not comfortable with this, you should consider using another automation solution.
Does re-uploading a model affect my scores or history?
No. Uploading a new .pkl only changes the predictions generated from that point forward. It does not reset, clear, or otherwise alter your model's existing scores, payouts, reputation, or round history - nothing does. If you want to start from zero, create a new model and upload to that instead. See Your history is permanent.
Can I re-download my pickled model?
Yes, on the submissions page, on the right, click the Cloud Icon > "Settings" > "Download"


Terms of service
Numerai reserves the right to disable your model for any reason, including (but not limited to) security, abuse, account inactivity, poor performance, etc.
Numerai tries its best to support your usage of this feature, but ultimately it is still your responsibility to make sure your submission pipeline is set up properly. We do not guarantee that your model submits 100% of the time.
Numerai is not responsible for the gains or losses you experience due to the performance of your uploaded model. You are solely responsible for the performance of the model.

