What it does
A forecaster for the House Edge challenge: from slot-machine logs it predicts the probabilities of the next payout (0x, 1x, 2x, 5x or 20x). It is Python standard library only, has no randomness, and predicts the 1,536 test queries in about 18 seconds on one CPU core.
How we built it
- Lag-pair model. For a machine and a pair of lags (a, b), the win probability depends on whether the outcomes a and b ticks back were equal. At an unknown change point the two cells swap; "no change" is one of the options. The forecast averages over lag pairs and change points.
- Priors learned from the training machines. Cell rates get a mixture of "one high, one low" Beta priors per machine type and signal, with strengths from the method of moments; a machine's two cell logits share an offset.
fit.pylearns the pair prior and payout-size profiles from the round's public train and validation data only. - Round two. One command refits on a new kit, checks its structure (new machine types, longer lags, changed cutoffs), predicts, validates the CSV and builds the ZIP. We rehearsed it on synthetic kits with changed patterns.
Results
The round-two (adaptation) package r2_tuned scores 19.54 / 20 on that round's public validation. Its parameters are refitted on the round-two kit; no main-round data or parameters are reused. Every model change was accepted only if validation improved and a pseudo-query Brier score on training data agreed.
What's in the ZIP
The round-two files: entry.zip (predict.py, fit.py, he_model.py, the fitted params.json, reproduce.json and a README with the exact rerun command; sha256 bc8bb71c8b69a5d6…) and submission.csv (sha256 42c183d3e012f4a6…).
Built With
- bayesian-statistics
- forecasting
- python
