Downloads · 30 days
0
msrishav/wunder-fund-lob-predictorium
wunder-fund-lob-predictorium is a time series forecasting model from msrishav. Use it for the time series forecasting task on the model card, and read the license before you ship it in a product. It is set up for onnxruntime. The card lists the license as mit.
Streaming model for the Wunder Fund "LOB Fairy Predictorium" challenge: predict two anonymized future price-movement targets (t0, t1) from sequences of Limit-Order-Book states, under the official contract — 1 CPU core…
Downloads · 30 days
0
Access
Public
Updated Jun 16, 2026
Repo size
12.1 MB
Likes
0
Public
Click a slice to open those files.
.onnx12.1 MB · 100%
From the Hugging Face model README
Streaming model for the Wunder Fund "LOB Fairy Predictorium" challenge: predict two
anonymized future price-movement targets (t0, t1) from sequences of Limit-Order-Book
states, under the official contract — 1 CPU core, 16 GB RAM, offline, ≤60 min, scored by
Weighted Pearson Correlation (weights |target|, predictions clipped to [-6, 6]),
averaged over the two targets.
Portfolio project on the completed public competition, trained only on the provided data. All scores are local validation (
valid.parquet), not private-leaderboard results. Code: https://github.com/msrishav-28/wunder-fund-LOB-fairy-predictorium
valid.parquet, 1,444 sequences)| Solution | weighted_pearson | t0 | t1 |
|---|---|---|---|
| Provided baseline (vanilla GRU) | 0.2595 | 0.388 | 0.131 |
| This ensemble (per-target weighted blend) | 0.2846 | 0.4163 | 0.1528 |
+0.025 over baseline (+9.7%), ≈3σ. Sequence-bootstrap 95% CI [0.271, 0.301]. Streaming inference reproduces the offline blend exactly; ≈1.1 ms/row on one core → ≈28 min for a 1,500-sequence test set.
p0..p11 bid/ask prices, v0..v11 bid/ask
volumes, dp0..dp3 trade prices, dv0..dv3 trade volumes).[norm, lag1, delta, rolling-mean{5,10,20,40}] (160 or 224 dims; built online, no future leak).(features, h0) → (prediction, h1). State resets per sequence.t0 (which
generalize), uniform average for t1 (weight-fitting overfits the near-noise target). Weights
live in ensemble_config.json.| File | Purpose |
|---|---|
solution.py | Streaming PredictionModel.predict(DataPoint) — the exact inference path |
ensemble_config.json | Global mean/std + per-model ONNX names, input sizes, per-target weights |
*.onnx (×10) | The stateful one-step GRU members |
utils.py | Competition DataPoint + official scorer (unchanged) |
technical_report.md, RESULTS.md, FINDINGS.md | Methodology, experiment ledger, data forensics |
# pip install onnxruntime numpy
# Files (solution.py, utils.py, ensemble_config.json, *.onnx) must sit in one folder.
from utils import DataPoint
from solution import PredictionModel
model = PredictionModel()
# Feed one DataPoint per step in chronological order; reset is automatic on seq_ix change.
# Warm-up steps (0..98) -> returns None; scored steps (99..999) -> np.ndarray shape (2,).
pred = model.predict(DataPoint(seq_ix=0, step_in_seq=99, need_prediction=True, state=state_32))
Local-validation numbers only; the hidden test set is unavailable, so the published public-LB leader (0.3240) cannot be matched-or-claimed and sits above the bootstrap CI. Weighted correlation is a statistical score, not a claim of trading profit. No competition data is redistributed here.
License: MIT (code/weights). Trained solely on the competition-provided dataset.