Prediction Model
The Oracle uses a weighted scoring model to generate conviction scores for each match outcome.
All data comes from the football-data.org API:
Data Point
Source
Importance
/competitions/{code}/standings
/teams/{id}/matches?status=FINISHED
Derived from match results
Calendar (early/mid/late)
For each match, the Oracle computes a conviction score (0-100) for Home Win, Away Win, and Draw:
HomeWinScore = (
homeFormWeight * homeRecentWinRate +
standingsWeight * positionDifference +
h2hWeight * homeH2HWinRate +
homeAdvantage * HOME_BOOST +
goalDiffWeight * homeGoalDifference
)
Away Win score uses the mirror calculation. Draw score fills the remainder (clamped between 15-40).
Weight Configuration
Home form (last 5 results)
The outcome with the highest conviction score becomes the prediction.
Exact Score Generation
The exact score is cosmetic (not used for settlement) and is generated based on team goal averages:
ceil(homeAvgGF) - floor(awayAvgGF * 0.7)
floor(homeAvgGF * 0.7) - ceil(awayAvgGF)
round(avg(homeAvgGF, awayAvgGF)) - same
Typical outputs: 2-1, 3-1 (home), 1-2, 0-2 (away), 1-1, 2-2 (draw).
Analysis Generation
The Oracle uses an LLM to generate a 2-3 sentence analysis:
Style: Confident but analytical
Tone: Sharp sports analyst, not robotic
Content: References specific stats (form, H2H, standings)
Length: Maximum 3 sentences
Very low conviction (< 30 for all)
Predict Draw with disclaimer
Skip prediction, mark as "NO ORACLE"
Cancel prediction, refund all bids
Last updated