Numerai Weekly Champion v4

This repository publishes the exact model bundle currently used by Noptus' validated Numerai submission pipeline. It is intended as a reproducible research artifact and a starting point for ensemble-diversity work—not as investment advice or a promise of tournament performance.

Current release

  • Release: v4-20260801-180455
  • Verified live round: 1333
  • Data schema: Numerai v5.2
  • Inputs: 780 medium features plus 8 public benchmark-model columns
  • Components: two benchmark-aware LightGBM models, six multi-target LightGBM models, one residual LightGBM model, and one CatBoost model
  • Bundle size: approximately 142 MiB
  • SHA-256: 79db5f41f3506e8e10a8b96c60a927f6a9ca202e49e03304ceaa9d304116b8d9

The bundle was promoted over the previous local champion on a 57-era untouched holdout:

Metric v4 previous champion
Mean Numerai CORR 0.010453 0.001821
Sharpe 0.7712 0.1499
Positive-era consistency 75.44% 52.63%
Maximum drawdown proxy -0.01360 -0.02329

These are historical offline measurements, not live-performance guarantees. The model remains experimental, can decay under regime change, and should not be used to make financial decisions.

Load and predict

Install the pinned runtime dependencies:

pip install -r requirements.txt

Download the files and run inference on the public Numerai live and benchmark-model frames:

from huggingface_hub import hf_hub_download
import joblib
import pandas as pd

from inference import predict_ranked

repo_id = "Noptus/numerai-weekly-v4"
model_path = hf_hub_download(repo_id, "ensemble_v4.pkl")
bundle = joblib.load(model_path)

live = pd.read_parquet("live.parquet")
benchmarks = pd.read_parquet("live_benchmark_models.parquet")
benchmark_columns = [c for c in benchmarks.columns if c != "era"]
live = live.join(benchmarks[benchmark_columns], how="left")

submission = pd.DataFrame(
    {"prediction": predict_ranked(live, bundle)},
    index=live.index,
)
submission.index.name = "id"
submission.to_csv("predictions.csv")

The included command-line entry point performs the same base inference:

python inference.py \
  --model ensemble_v4.pkl \
  --live live.parquet \
  --benchmarks live_benchmark_models.parquet \
  --output predictions.csv

The production system derives several slot-specific submissions by applying different feature and benchmark neutralization settings after this base ensemble. Those operational credentials and live submissions are intentionally excluded.

Reproducibility and safety

manifest.json records the source revision, metric split, dependency versions, and hashes. Numerai datasets, target labels, live predictions, API credentials, and staking information are not included.

The checkpoint uses Python pickle serialization because it contains native LightGBM and CatBoost estimators. Pickle can execute code while loading: verify the SHA-256 and load only artifacts you trust. Reconstructing the component estimators in native, non-pickle formats is planned for a later release.

Research context

Three subsequent frozen-prediction experiments did not displace this champion:

  • extra tree families were highly redundant with the core (pairwise prediction correlations 0.81–0.94);
  • equal and shrinkage weighting lost to purged walk-forward coordinate ascent;
  • a raw-magnitude residual stack lost to the existing rank blend.

Negative results are retained because they narrow the useful next step: seek genuinely different input signal—currently the official v5.3 feature families—rather than adding more tree implementations over the same v5.2 inputs.

License and use

No explicit model or software license has been selected for this first release. Numerai data and benchmark-model files are governed by their own terms and are not redistributed here. Verify the applicable terms before reuse or redistribution.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support