Methodology
How the probabilities are sourced, what “locked” actually means at the database level, exactly how we score a call, and how to check any single prediction yourself — timestamps, ledger row and result.
Where the numbers come from
Probabilities from a third-party model; context, not a guarantee.Every probability and predicted score shown on a match page is sourced from an established third-party football model — never our own guess, and always labelled as such. Alongside it, we quietly log a simple in-house Elo rating on every fixture, but we never show it and never let it influence the displayed call. Over time the ledger lets us compare the two honestly; we’d only ever promote the in-house model if it earns its place on the scored record.
Locked at kickoff
Every prediction is timestamped when it’s published, and again when it locks — at the fixture’s kickoff. Locking isn’t a policy we promise to follow; it’s enforced by the database itself. A trigger on the predictions table rejects any update to the probabilities, the predicted score, the model version or the source once the row’s locked_athas passed. Only the scoring fields (final score, result, Brier score, log loss, scored-at) may still be written, and only after full time. If a prediction is ever published after its own kickoff, it’s marked void and excluded from the scored record — integrity over coverage.
How we score a call
Once a match finishes, every locked prediction is scored with two proper scoring rules — mathematical penalties for how well the whole probability distribution matched what actually happened, not just whether we picked the winner.
Brier score
BS = (p_home − y_home)² + (p_draw − y_draw)² + (p_away − y_away)²
where y is 1 for the outcome that happened and 0 for the other two. 0 is a perfect call, 2 is a confidently wrong one. We report the mean across every scored prediction.
Log loss
LL = −ln(p_correct)
where p_correct is the probability we assigned to the outcome that actually happened, clipped to [1e-12, 1 − 1e-12] so it can never blow up. This punishes confident wrong calls much harder than Brier does — saying 95% and being wrong costs a lot more than saying 40% and being wrong.
Calibration
We bucket every probability we’ve ever assigned into ten bands (0–10%, 10–20%, … 90–100%) and compare the average probability we predicted in each band to how often that outcome actually happened. Well-calibrated means the two columns roughly agree — our “70%” calls should come in around 70% of the time, not 40% or 95%. See the live table on the ledger.
Why misses stay visible
Most tipster sites quietly delete or reframe their losses. We can’t — the immutability trigger above means a scored prediction’s original probabilities can never be edited, and we never remove a scored row from the ledger. Every miss counts fully in the mean Brier score and log loss, forever. That’s the whole point: a track record you can verify is worth more than one you have to take on trust.
Audit any call yourself
Every match page shows the full paper trail for its call: when it was published, when it locked (always kickoff), and — once the match finishes — when it was scored. Pick any fixture from the matches list, check those timestamps against its kickoff time, then find that same prediction’s row, Brier score and log loss on the full ledger. Nothing about a scored call lives anywhere else, and nothing is summarised away.
Analysis and probabilities only — not betting advice. Outcomes are uncertain; we do not guarantee results and we do not claim to beat the market.