Open ten football prediction sites in a tab group. Eight of them quote a win rate somewhere on the landing page. Six quote it without specifying the time window. Four don't link to the source data. Two won't show you their losses if you ask.
This isn't a moral judgment — it's the standard shape of the industry. Predictions are an aspirational product; nobody buys 'we lose 45% of the time' as a marketing tagline. But the prediction-page win rate is the only number on the entire site that matters, and almost every site presents it in a way that makes it unfalsifiable.
Three checks you can run in five minutes
Pick any prediction site quoting a win rate. Try these three:
- Window check — Is the time window specified? '67% win rate' means nothing without a window. Cherry-pick 7 days from any 365-day stretch and most decent models look 70%+ for a week. Look for 'last 30 days', 'last 100 picks', or a date range.
- Loss visibility check — Click into the track record page. Can you see individual losses with date, market, and stake context? Or does the page only show wins and an aggregate? If losses are missing or summarised away, the win rate is non-auditable.
- Confidence label check — What does 'HIGH confidence' actually hit at? A good site shows the hit rate per confidence band (e.g. '70-79% → 71% hit rate over 124 settled'). If the confidence label is undefined, it's a marketing word, not a number.
What goes wrong
Three failure modes, in order of severity:
1. Cherry-picked windows. The aggregate looks fine because the dashboard updates from the most-recent N picks and the operator silently waits for a good streak before updating the homepage stamp. The number on the homepage is real — it's just from a window you'll never see again.
2. Buried losses. The track record exists but losses are filtered out of the default view, or void picks (matches that get postponed) silently count toward the win column. The aggregate looks great because the denominator was quietly trimmed.
3. Undefined confidence. 'HIGH confidence pick' shows up on the surface but the site never publishes what HIGH actually hit at historically. It's a marketing emphasis word with no calibration check.
What Cortex does differently
- Window is always 30 days, stamped on every surface. The homepage hero, the pricing page, the header proof tick — all the same window, all driven by the same query.
- Every settled pick stays on /picks/track-record. Wins, losses, voids. Void picks don't count toward the win rate denominator. We don't graduate losing picks out of the ledger.
- Confidence bands are defined and published. HIGH = 65–100, with a public hit rate per band on the track-record page. If the 70–79 band drifts below 70%, we tighten the publish floor — calibration v3 (May 2026) raised the floor from 60 to 65 after the 60–64 band hit only 44% over 167 settled picks.
- We publish abstain rows. When the model can't find a quantifiable signal it returns one of five named reasons (line_efficient, thin_data, conflicting_signals, small_sample, high_variance) instead of forcing a number. Abstains stay public on the fixture so you can see the calls we didn't make.
Run the checks on us
All three checks above will pass on Cortexscore. The track record is at /picks/track-record. The methodology is at /methodology with a section on what each confidence band means. The publish floor history is documented including the May 2026 audit that drove v3.
Then go run the same three checks on whatever other prediction sites you're using. The ones that don't pass aren't necessarily lying — but they're not telling you the whole shape of the number on their homepage either.