How to use this
A short tour of the basketball pages, the radar, and how to read a pick
What this is
A basketball match-analysis and prediction app. It fits a model to each league separately and prices 1818 betting selections across 25 market families for every upcoming fixture. Each side's score is modelled as Normal rather than Poisson — at about a hundred possessions a side the margin is the natural random variable — so the markets that matter are the spread and the total rather than a scoreline.
The sport picker at the very top is the outer choice. Every section under it — Live, Radar, Fixtures, Results, Teams, Model, Track record, Guide — is about basketball and nothing else. Ratings, calibration and track records are never pooled across sports, because a rating only means something against the sides a team actually played.
Start here — three steps
- Open Radar. The carousel at the top holds the best predictions — the strongest selections kicking off in the next 48 hours, best first, one per match. Use ← and → (the buttons, the dots, or your arrow keys) to move through them. Each card shows both clubs with their leading scorer by goals plus expected goals.
- Set three things: how many picks, which leagues, and how far ahead. Ten picks across all leagues is a good start. Choose Today for the day's best, or This week for the week's. Use Back and Next under the table to walk down the ranking beyond the top ten.
-
Read the
Calibratedcolumn, notModel. Calibrated is the number after the model has been corrected by its own track record. It is the honest one.
Using the radar
| Control | What it does | Suggested |
|---|---|---|
| How many picks | Size of the returned list, 1–100. | 10 |
| Minimum confidence | Hides anything the model rates below this. Raising it gives fewer, safer selections; lowering it surfaces longer shots. | 55–65% |
| Look ahead | Today, Next 2 days, This week, or out to two months. Pick Today or This week for the classic "top ten for the day / for the week". Distant fixtures are less reliable — form changes, players move. | This week |
| Back / Next | The list is paginated. With ten picks a page, Next walks you into 11–20, 21–30 and so on, and the numbering continues rather than restarting. Every filter you set is carried along. | — |
| Model | Dixon-Coles (xG) is the statistical model: two ratings per team plus home advantage. AI blend adds a machine-learned model trained on form, rest, squad stability, shot profile and conditions, mixed 45/55 with Dixon-Coles. The blend scores better than either alone in walk-forward testing. | Either — compare them |
| 2nd model column | What the other model makes of the same selection. When both land within 5 points the badge turns green. Two independent methods agreeing is a stronger signal than one being confident. | — |
| Rank by | How the list is ordered. See below — this changes the answer more than anything else on the page. | Signal |
| Markets to scan | Tick any mix of the 25 families, or use Mark all / Clear on the right of the heading to set them in one go. The counter shows how many are active. Leaving every box unticked scans everything, which is the same as ticking them all. | All, or 1X2 + Over/Under |
| Leagues | Which competitions to include. Has its own Mark all / Clear too. | All |
| One pick per match | Stops one fixture filling the whole list. Two picks from the same match are correlated — if the match goes badly, both usually lose together. | On |
| Must beat the base rate | Drops selections that are merely obvious. | On |
The three ranking modes
| Mode | Sorts by | Use it when |
|---|---|---|
| Signal | How much the model disagrees with the base rate, weighted by how likely the pick is to land. | Default. Gives picks that actually say something. |
| Most likely to land | Raw calibrated probability. | You want the safest outcomes and do not care that they are obvious. Expect short prices around 1.05. |
| Biggest edge | Calibrated probability minus base rate. | Hunting for the largest disagreement with the historical norm. |
Why "most likely" can be useless
Reading a pick
| Column | Meaning |
|---|---|
| Model | The raw probability straight from the scoreline distribution. |
| Calibrated | The number that matters. The model corrected by how often it was actually right, out of sample, when it claimed roughly this much for this market. |
| Base rate | How often this selection is simply true in that league, regardless of who is playing. |
| Edge | Calibrated minus base rate, in percentage points. |
| Lift | Calibrated ÷ base rate. 3.0× means three times likelier than
the league norm. This is the quickest read on whether a pick is interesting. |
| Fair odds | 1 ÷ calibrated — the break-even price. Only worth a bet if a bookmaker offers longer than this. |
| Evidence | How many past results back the calibration for this market and confidence band. More is better; a handful means treat it lightly. |
Worked example
City must win by two or more, since Ipswich start a goal up. That happens in 24.2% of league matches generally, but here the model says 72.9% — three times the norm. Break-even price is 1.37, and 245 past results sit behind that confidence band. So: back it only if you can get better than 1.37.
Market families
Every selection comes from one joint distribution over the four half-scores, so they are mutually consistent — HT/FT probabilities add up to the half-time probabilities, which add up to one. The families are grouped here the way a bookmaker groups a match page, under the names the books use; the radar's filter uses the same groups.
Other
Century marks · H1 result · H1 total · H2 result · H2 total · HT/FT · Half time · Handicap · Highest scoring half · Highest scoring quarter · Moneyline · Odd/Even · Overtime · Q1 result · Q1 total · Q2 result · Q2 total · Q3 result · Q3 total · Q4 result · Q4 total · Team total · Total points · Win both halves · Winning margin
How "lead by 2 at any time" is worked out
The other pages
| Page | What it is for |
|---|---|
| Radar | Scan any mix of markets and leagues for the strongest selections. |
| Convert code | Paste a bookmaker's booking code and get the same bet for another bookmaker — same games, markets and picks in that book's own language, with a code where the book can issue one. Nothing on the slip is changed. |
| Fix my bet slip | Paste a booking code and the model judges every leg, offering a better selection on the same fixture where one is weak, then mints a pool ticket you can play anywhere. |
| Fixtures | What is coming up, with home/draw/away bars and expected goals. |
| Results | Past matches with actual score against expected goals. A side well ahead of its xG has been finishing above expectation — often temporary. |
| Teams | Attack and defence ratings per league. Higher attack means more goals scored; lower defence means fewer conceded. |
| Model | How well predictions actually do, and where the model is overconfident. Check this before trusting anything else. |
| Track record | Every past prediction settled against the real result — what the model said against what happened, by market, league and confidence band. |
| Bet slip | Tick picks on the radar and press Build slip to see the combined chance. It refuses to multiply two picks from the same match, because those move together and the product would be wrong. |
On a match page
Shot map — marker size is chance quality; filled markers are goals. Lots of small markers far out means shooting from bad positions.
All markets — all 1818 selections for that fixture, grouped by family.
Appearance
The control at the top right cycles light, dark, and system. System follows your device and keeps following it — including when your machine switches at sunset — so you only need to set it once. The choice is remembered in this browser.
What the badges mean
xG — full expected-goals and shot-level data. The deepest analysis.
results-only — no xG available for that league, so the model
runs on goals alone. Everything still works, but it rests on thinner evidence.
Honest limits
Most recent backtests, each league walked forward so the model only ever saw matches played before the one it predicted:
| Scope | Matches | Log loss | Baseline | Edge | Accuracy |
|---|---|---|---|---|---|
| WNBA | 410 | 0.6178 | 0.6915 | +0.0738 | 65.6% |
| NCAAB | 9031 | 0.5548 | 0.6682 | +0.1134 | 70.5% |
| NCAAW | 8725 | 0.4794 | 0.6782 | +0.1988 | 75.4% |
| NCAAB | 8032 | 0.5510 | 0.6642 | +0.1132 | 70.5% |
| NCAAW | 7724 | 0.4800 | 0.6767 | +0.1968 | 75.4% |
- The site checks itself. A nightly self-check verifies every page still renders cleanly and still has its features, and reports in the footer if not. This codebase is shared with other work, so silent breakage is a real risk.
- Accumulators compound against you. Five legs at 75% is 0.755 = 23.7%, not 75%. The slip page shows the running chance leg by leg.
- This is not a betting edge. Fair odds are break-even. Bookmakers price close to this and add a margin, so most of the time there is no value bet here. Ranking answers most likely to be right, not most profitable — without bookmaker prices the second question cannot be answered at all.
- Probabilities are not certainties. A 75% pick loses one time in four. Ten 75% picks all landing is about 5%.
- Newly promoted sides are excluded. Fixtures where either team has played fewer than 8 matches produce confident-looking nonsense, so they are left out.
- The model has known blind spots. It does not see injuries, suspensions, transfers, fixture congestion, weather or motivation. Check team news before acting on anything here.