--- tags: - numerai - tabular-regression - finance - lightgbm - catboost - weekly-model pipeline_tag: tabular-regression --- # 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: ```bash pip install -r requirements.txt ``` Download the files and run inference on the public Numerai live and benchmark-model frames: ```python 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: ```bash 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.