Methodology
How we capture odds, compute fair probabilities, and generate signals. The system is designed for transparency — every signal has a verifiable origin.
1. Snapshot capture
Every 5 minutes, a scheduled job polls the w458 API for all upcoming fixtures (status = prematch). For each fixture, we fetch the full markets payload and persist three core markets — 1X2, Asian Handicap, Total Goals — into the OddsSnapshot table. Each row records: fixture, market type, outcome, odds, optional handicap line, timestamp, opening/closing flags, and data source.
2. Implied probability
Raw bookmaker odds include a margin (overround). For a typical 1X2 market with odds 1.92 / 3.50 / 4.20, the sum of inverse odds is ≈ 1.045 — meaning the bookmaker holds a 4.5% margin. We strip this margin in two ways. Proportional method: divide each 1/odds by the total. Shin method: solve numerically for an insider-trader proportion that produces fair probabilities summing to 1. Shin tends to give slightly higher favourite probability (matching observed long-run outcomes) and is our default.
3. Movement features
Once a fixture has ≥3 snapshots per outcome, we compute seven movement features: odds change percentage (opening → current), velocity (change per minute), acceleration (velocity slope), steam move (≥3% change in any 5-minute window), reverse movement (trend reversal exceeding 1% of the extreme), consecutive direction (last 5 snapshots), and time-to-kickoff.
4. Signal scoring
A heuristic rule engine combines those features into a 0-100 score. Steam move adds 25 points. Consistent direction > 2% adds 20. Acceleration adds 15. Sufficient snapshot count adds 10. Optimal time-to-match window (30 minutes to 12 hours) adds 10. Reverse movement subtracts 15. Insufficient snapshots subtract 25. The score maps to five tiers: Strong Bet (≥80), Small Bet (60-79), Watch (40-59), No Bet (20-39), Avoid (<20). Strong Bet requires the bookmaker margin to be below 8% — otherwise it downgrades to Small Bet.
5. Closing line value (CLV)
When a fixture kicks off, we mark the last snapshot of each outcome as closing. Persisted signals (OddsSignal rows) are later joined with closing odds to compute CLV = (odds-at-signal − closing-odds) / closing-odds. A positive average CLV over many signals indicates the system captured better-than-market prices. This is the standard quant betting validation metric. Our backtest page surfaces CLV per rules-version.
6. Rules versioning
The current rule weights are version v1. Any change to the score formula bumps the version and is recorded with every new OddsSignal row. This allows direct A/B comparison of v1 vs v2 CLV and hit-rate over the same fixture set.
7. What this system is not
This is not a machine-learning model. The rules were chosen based on the Sportradar AI Odds Model methodology and validated against published quant-betting research, but they have not been trained on labelled outcomes. CLV validation over the next 6-12 months will determine whether v1 has edge. Until then, the recommendations are signals to investigate — not predictions to act on.