Algorithm transparency

How Football Intelligence Predicts Matches

Last updated 2026‑05‑31·Version 14.9· hello@footballinteligence.com

Full disclosure of the statistical model behind every prediction on this platform — we publish this for YMYL transparency and so anyone can verify the math. The model is mathematically grounded; it is not magic. There are no guarantees, only probabilities. See the AI football analysis calculator in action →

Data sources & league coverage

Football Intelligence ingests historical and live match data from three primary providers:

SourceUsed forUpdate frequency
apifootball.comLive scores, events, standings, bookmaker odds snapshotsReal-time, every 30 s
football-data.orgHistorical results, Poisson seed index, fixturesDaily refresh
Odds aggregatorLive bookmaker odds across 40+ sportsbooks for value detectionReal-time on demand

Leagues covered. Premier League, La Liga, Bundesliga, Serie A, Ligue 1, UEFA Champions League, Europa League, Conference League, Eredivisie, Primeira Liga, Ekstraklasa, Scottish Premiership, Belgian Pro League.

The Poisson distribution model

The Poisson distribution is a discrete probability distribution that expresses the probability of a given number of events (goals) occurring in a fixed interval, given a known average rate λ (lambda). Maher (1982) and Dixon & Coles (1997) showed that goals in football closely follow independent Poisson processes for each team.

The core formula:

P(k goals) = (λ^k × e^−λ) / k! Where: λ = expected goals (lambda) — the mean predicted by the model k = number of goals (0, 1, 2, 3 …) e = Euler's number ≈ 2.71828 k! = factorial of k

By computing P(home_goals = i) and P(away_goals = j) for all i, j from 0–7, we generate a full 8×8 scoreline probability matrix. Summing the appropriate cells gives home win probability (Σ cells where i > j), draw probability (Σ diagonal), and away win probability (Σ cells where j > i).

Attack strength & defensive record

For each team playing at home, we compute two relative indices from their season-to-date results:

attack_home = (goals_scored_at_home / home_games) / league_avg_home_goals defense_home = (goals_conceded_at_home / home_games) / league_avg_away_goals attack_away = (goals_scored_away / away_games) / league_avg_away_goals defense_away = (goals_conceded_away / away_games) / league_avg_home_goals

These indices measure performance relative to the league average. A value of 1.0 means average; above 1.0 means better than average in that role.

Lambda calculation for a domestic match:

λ_home = attack_home(H) × defense_away(A) × league_avg_home_goals λ_away = attack_away(A) × defense_home(H) × league_avg_away_goals

League averages are maintained in a calibration table updated each season. Example: Premier League home 1.53, away 1.19; Bundesliga home 1.72, away 1.28.

Bayesian regularisation

Raw attack and defense indices are unreliable when a team has played few matches (e.g. early in the season). We apply Bayesian regularisation — shrinkage toward the prior mean of 1.0:

index_regularised = (raw_index × n + prior_mean × α) / (n + α) Where: n = number of matches played (min 6, max 14 in sample window) α = regularisation weight = 1 prior_mean = 1.0 (league average)

This ensures teams with fewer than 6 matches do not generate extreme predictions. The sample window caps at 14 games to keep the index recency-weighted.

Home advantage weighting

Home advantage is encoded in the separate home and away league averages used as multipliers. We do not apply a fixed additive home-advantage constant; the multiplicative structure naturally captures the league-specific home edge through the league_avg_home_goals parameter, calibrated from 5+ seasons of historical data per competition.

European competition adjustments

For Champions League and Europa League matches, teams come from different domestic leagues with different strength levels. We normalise using the UEFA country coefficient ranking (5-year method):

LeagueStrength factor
Premier League1.10
La Liga1.06
Bundesliga1.03
Serie A0.98
Ligue 10.93
Primeira Liga0.84
Eredivisie0.81

Each team's domestic lambda is scaled by the ratio of their league's strength factor. European matches use neutral-ground averages (home 1.40, away 1.18) as the baseline, reflecting the reduced home advantage in two-legged European ties.

Scoreline probability matrix

Using λ_home and λ_away, we compute P(i, j) for all scorelines i ∈ [0,7] and j ∈ [0,7]. From the 8×8 matrix we derive:

Fair decimal odds are computed as the inverse of the probability: fair_odds = 1 / probability. Unlike bookmaker odds, these contain no overround margin.

Value betting detection

A value bet exists when a bookmaker's offered decimal odds are higher than the fair odds derived by our model:

implied_probability = 1 / bookmaker_odds model_probability = P(outcome) from Poisson matrix value_edge = (model_probability − implied_probability) / implied_probability × 100% Value bet condition: bookmaker_odds > fair_odds (i.e. value_edge > 0%)

We fetch live odds from 40+ sportsbooks and display the highest available odds for each market. Only bets with a positive value edge are surfaced. An edge of 5% or more is generally considered meaningful for long-term profitability — smaller edges sit within model uncertainty.

Bookmaker odds are not fair odds. A typical 1X2 market carries an overround of 5–8%. The "fair" prices we publish strip that margin out using the matrix derived above. Comparing fair prices to fair prices is meaningless — the edge appears only against actual bookmaker quotes.

Kelly Criterion stake calculator

The Kelly Criterion (Kelly, 1956) is a mathematical formula for the theoretically optimal fraction of a bankroll to stake on a bet with known edge and odds:

Kelly% = (odds × model_probability − 1) / (odds − 1) Example: Bookmaker odds = 2.50 (implied probability 40%) Model probability = 48% Kelly% = (2.50 × 0.48 − 1) / (2.50 − 1) = 0.20 / 1.50 = 13.3% of bankroll

We display both Full Kelly and Half-Kelly (50% of the calculated fraction). Use Half-Kelly or lower, because:

  1. No model has perfect probability estimation — model error pulls actual edge below the calculated value.
  2. Full Kelly leads to high variance and bankroll drawdowns even with a genuine edge.
  3. The Kelly formula assumes independent bets and a long-run perspective.

Maximum recommended stake. Never exceed 5% of your bankroll on a single bet, regardless of what the Kelly formula returns. Treat Half-Kelly as a ceiling, not a target.

Risk tiers — data-driven pick filtering

After a value pick survives the Kelly and edge gates, it is classified into one of three risk tiers using historical-ROI bands derived from a 380-pick analysis. Picks that historically lost money in their (market × odds) band are rejected by the algorithm and never reach users — even if the raw value calculation is positive.

The tiers below reflect only the (market × odds) bands that survive our historical-ROI filter, not every theoretically positive-EV calculation. The percentages below are hit-rate (how often a pick wins), not profit — a high-hit-rate, low-odds tier can still be net-negative on ROI. See our published accuracy & losses for the honest, settled numbers.

Low   Highest historical win rate (~63%)

Medium   Solid edge with moderate variance (~50% WR)

High   Long-odds edge, higher variance (~30% WR, high payout)

Rejected   Never published

Each tier is calibrated against historical settled picks. Bands are reviewed quarterly and adjusted when sample size and observed ROI justify it. Public dashboard cards "Low + Medium" show the recommended-tier ROI and exclude the speculative High tier from the headline number.

Claude Sonnet AI layer — SportGPT

SportGPT is a conversational AI assistant powered by Claude Sonnet 4.6 (Anthropic). It receives the Poisson model output for a specific match as context and answers natural-language questions about probability breakdowns, form analysis, staking recommendations, and market interpretation.

SportGPT does not independently calculate probabilities — it interprets and explains the outputs of the Poisson model. The AI layer adds natural-language reasoning, contextual knowledge (injuries, team news, head-to-head from training data), and personalised staking advice based on the user's bankroll and risk profile.

Model: Anthropic claude-sonnet-4-6·Context window: up to 20 messages of history (Elite plan)·Temperature: 0.7 (balanced reasoning).

Model limitations & accuracy

We are direct about what the model cannot do:

Football Intelligence displays model accuracy metrics and a settled-pick history so users can evaluate actual performance over time. We do not cherry-pick results or hide losses.

Legal disclaimer

Football Intelligence is an educational and informational tool. Nothing on this platform constitutes financial advice, investment advice, or a recommendation to place any bet. All statistical outputs are for analytical purposes and carry inherent uncertainty.

Sports betting is regulated differently across jurisdictions. It is your responsibility to ensure that sports betting is legal in your country before using this information. This service is strictly for users aged 18 and over.

Sports betting involves significant financial risk. You may lose money. Never bet more than you can afford to lose. If gambling is causing you harm:

Questions about the methodology? Email hello@footballinteligence.com.

Embed our statistical picks widget on your site

Display today's model-generated football picks on your blog or site for free — no signup required. The widget updates daily, shows match confidence from our Poisson model, and links back to the full analysis.

For informational purposes only. 18+. Not financial or betting advice. Always gamble responsibly.

Small embed (380×290)

<iframe
  src="https://footballinteligence.com/widget/picks?limit=3&accent=00e5a0&compact=true"
  width="380"
  height="290"
  frameborder="0"
  scrolling="no"
  title="Statistical football picks — Football Intelligence"
  loading="lazy"></iframe>

Large embed (600×400)

<iframe
  src="https://footballinteligence.com/widget/picks?limit=5&accent=00e5a0"
  width="600"
  height="400"
  frameborder="0"
  scrolling="no"
  title="Statistical football picks — Football Intelligence"
  loading="lazy"></iframe>

Optional URL parameters: lid=PL,CL (league filter), accent=00e5a0 (hex colour), limit=310, compact=true.

Today's top AI predictions — live data

Generated by the Poisson model described above. Open the full value calculator →

Loading predictions… open full app →

18+ · Not financial advice · Value betting guide