Team: Xplore. Round: Main round (round one). Adaptation-round files will be added below, clearly labeled, before noon; the main-round files stay unchanged.
Inspiration
House Edge asks for the probability of each payout class (0x, 1x, 2x, 5x, 20x) on every test machine's next spin, scored against the simulator's true odds. Each machine's history is a short, noisy sequence, so we wanted a model that learns how payouts evolve over time and borrows strength from the other machines in the same episode.
What it does
For each of the 1,536 test queries it builds a sequence from the ticks before the cutoff (the machine's own payouts, an observed flag, machine type, signal, tick position, and a summary of the other machines at the same tick). Twelve small two-layer GRU models read that sequence, and their softmax outputs are averaged into the five probabilities.
How we built it
- Training data: only the organizers'
trainandvalidationsplits. The validation true probabilities were used as extra soft targets. No test data was used for training or selection. - Model selection without test data: a two-fold cross-fit (train plus half of validation, scored on the other half). Single recipes scored about 50 to 51 of 60; a blend of nine models about 53.7.
- Training: PyTorch on a GPU, with every recipe and seed listed in
training/final_recipes.txt. - Prediction: the trained weights are saved as float64
.npzfiles and run with a plain numpy forward pass (predict.py), with no PyTorch needed. It is deterministic, CPU only, and takes about 65 to 90 seconds.
Reproducibility
entry.zip holds the code, the 12 saved models, README.md, reproduce.json and requirements.txt (numpy==2.5.4). Unpacked in a clean folder, python predict.py --data /data --out /output/submission.csv rebuilds the submitted CSV to within 2e-16 per probability (limit 1e-8). We also checked it in a clean python:3.13-slim container with no network.
Challenges we ran into
- Scores between recipes differ by a point or two, which is close to the noise of a two-fold estimate, so we preferred blends over chasing a single best recipe.
- Making GPU-trained models reproduce exactly meant moving prediction to float64 numpy and checking it against the CSV in a clean container.
What we learned
In our cross-fit, a blend of several small models beat every single recipe (about 53.7 of 60 against 50 to 51), so we shipped an ensemble rather than one model.
Main-round files
submission.csv(1,536 queries, SHA-256721ed2b7c649cbcfc35316111ea95246dc4004c2a93a3722dac3136f12308d5f)entry.zip(code and weights)
Adaptation round (round two) files
The same code and the same 12 training recipes were retrained from scratch on the adaptation kit's train and validation data only (no main-round data or models used at prediction time). The organizer checker reports VALID FORMAT, 1,536 queries. Unpacked in a fresh folder, the adaptation entry.zip rebuilds its CSV to within 2e-16 per probability in about 80 seconds on CPU.
ADAPTATION_ROUND/submission.csv(SHA-256a338c70acdc749a112787b867500b8c89649d0e3a61c5fc20d4048b8935d6cf6)ADAPTATION_ROUND/entry/(contents of the adaptationentry.zip)
Main-round files above are unchanged.
Built during TAMU Datathon 2026 with AI coding assistants (Claude).