Skip to content
V85 Model Lab

V85 Model Lab

Forecasting against a market that's hard to beat.

Every Saturday, Sweden's biggest trotting game, V85, asks you to pick the winner in eight races. I built a system that estimates every horse's chance of winning, compares it with how the crowd bets, and tests it like a trading model: no peeking at the future, and an uncertainty range on every number.

The Model Lab may take a few seconds to wake up.

V85 gain vs the crowd
+0.9 %

better than the crowd at pricing V85 winners, on 600 V85 races. 95 % range +0.1 % to +1.8 %.1

Races tested
1,038

walk-forward, 11‑Oct‑2025 to 7‑Oct‑2026, on 130 race days, with no peeking at the future.

Crowd weight on favourites
0.82

Below 1 means the crowd overbets them. 95 % range 0.74 to 0.91, on 1,038 races.1

Read with care. The backtest uses the crowd's final betting %, which a prediction made before the betting stop cannot see, so these numbers are optimistic. The sealed live test below is the honest check.

What I found. The crowd is good, but it has a habit.

  1. The crowd is hard to beat.

    A model that sees only form trails the crowd's betting %: its gain is −10.9 % (95 % range −13.3 % to −8.4 %, on 1,038 races).

  2. But it has a habit.

    The crowd bets too much on favourites. Correcting that gives a small, measurable edge on V85.

  3. The backtest is optimistic.

    It uses the final betting %. So every round from 10‑Oct‑2026 is a sealed live test, and since 17‑Oct‑2026 each round's prediction is published as a hash before the betting stop.

The result so far. Small, but the range stays above zero.

Gain against the crowd, added up race by race. Above zero means the model priced the winners better.

Nats per race, added up over 600 V85 races on 75 race days. 95 % range per race +0.002 to +0.032. It uses the crowd's final betting %, so it is optimistic.

Read with care. On all 1,038 races, V86 and V75 included, the gain is +0.5 %, 95 % range −0.1 % to +1.2 %: smaller, and the range includes zero.

The live test. Sealed before every round.

Since 17‑Oct‑2026, each round's prediction is hashed once and pushed to GitHub 15 minutes before the betting stop, then revealed after the round, so anyone can check it was fixed in advance.

So far: 1 sealed round, 8 races. That is too few to tell; a 95 % range comes after 4 rounds.

The Model Lab. Every number, open to check.

How it's built.

  • Python
  • LightGBM
  • walk-forward backtests with day-level bootstrap
  • conditional-logit value test
  • experiment registry
  • leakage tests per feature family
  • Streamlit
  • 190+ pytest tests

Go deeper.