Methodology
Last updated: 22 May 2026
This page explains, in plain English, exactly how Edgewise turns live bookmaker prices into a probability, a recommended pick, and an auditable track record. If you want the raw numbers, the public audit lives at /audit/public.
1. Data sources
- Prices: Live decimal odds from a panel of licensed Australian bookmakers, refreshed continuously via The Odds API (sportsbook-grade feed).
- Scores: Final scores ingested daily from the same provider's
/scoresendpoint into ourhistorical_scorestable for reconciliation. - Coverage: AFL, NRL, and selected Australian thoroughbred racing meetings. We do not consume insider data, tipsters, or anything that isn't publicly available.
2. Fair price & market-implied probability
For each fixture, we take the median best-of-book decimal price and remove the bookmaker overround (the "vig") proportionally. This produces a market-implied probability: what the wider market thinks the chance of each outcome is, after stripping out the house margin. This is the canonical sharp benchmark used by every quantitative betting fund.
3. Model probability
Our model probability blends three signals, all derived from public market data:
- Consensus across books — disagreement between bookmakers is where mis-pricing lives.
- Line-movement velocity — sharp money moves lines; we measure how fast and how far each line has moved since open.
- Recency-weighted form — a decayed-form factor per team.
The output is a single probability for each side, clamped to [0.01, 0.99] to avoid pathological staking and to keep the model honest at the extremes.
4. Edge detection
"Edge" is the gap between our model probability and the market-implied probability, expressed in percentage points (pp). A pick is surfaced to the AFL / NRL / Edge Scanner pages when edge is positive after vig removal and at least one book offers the price at or above the fair value. The consensus favourite per fixture — not the underdog with the largest edge — is what gets auto-logged to the public track record. This is deliberate: it prevents the system from gaming its own win-rate by only logging long-shot picks that rarely settle.
5. Reconciliation
Once the final score lands in our score-ingest pipeline (or, for races, the result feed), reconciliation runs server-side and writes a row to prediction_results with status won / lost / void, the final score, and the profit in units assuming a flat 1-unit stake at the logged price. Draws and pushes settle as void at 0u. Reconciliation is idempotent — re-running it never changes an already-settled row.
6. Metrics we publish
- Win rate — wins / (wins + losses). Voids excluded. Intuitive but on its own can be misleading because price matters.
- ROI (1u flat) — total profit / total stake at flat 1-unit stakes. The honest single number.
- Brier score — mean squared error between model probability and actual outcome (1 for a win, 0 for a loss). Lower is better; 0.25 is a coin-flip baseline. Measures calibration, not direction.
- CLV proxy — average (model probability − market-implied probability) at log time. A persistent positive value means we are routinely beating the closing line, which is the single strongest predictor of long-run edge in published academic literature.
- Equity curve — cumulative units over time at flat stakes. The shape matters more than the endpoint.
- Calibration plot — predicted vs actual win rate, bucketed by 10pp bands. Dots on the diagonal = a well-calibrated model.
7. What we deliberately don't do
- No back-tested or retro-fitted picks ever appear in the public track record.
- No pick is ever edited or deleted after the fact. The track record uses Postgres
created_at DEFAULT now()as its immutable timestamp. - No personalised tips, no "lock of the day", no inducements.
- No bet placement — we never route users to a bookmaker via an affiliate link tied to bet volume.
8. Known limitations
- Models can be wrong, especially in low-sample sports or early in a season.
- "Edge" assumes the offered price will still be available when you act. Lines move.
- Even a +EV pick can lose any given match — variance is high and bankrolls must reflect that.
- CLV proxy is computed against the market price at log time, not the true closing line. Closing-line CLV is on the roadmap.
9. Independent verification
The full audit dataset is publicly readable via /audit/public and as JSON at /api/public/audit.json. Anyone — including independent statisticians, journalists, and prospective investors — can replay every metric on this page from the raw rows.