Methodology
Last updated: 5 May 2026 · Version 1.0
Plain-English summary: KiqIQ runs a transparent Poisson / xG core as the probability engine — every number traces back to inputs you can see and question. Sat on top of that core is an AI analyst layer that explains the bet, stress-tests the assumptions, runs what-if scenarios, and surfaces market angles. The math is auditable; the AI is the analyst — not the oracle.
1. The probability engine
Every probability KiqIQ outputs comes from a Poisson distribution over expected goals. Given home xGλh and away xG λa, we compute:
- P(home scores n goals) =
(λh^n × e^(-λh)) / n!for n = 0, 1, 2, ..., 6 - Same for away. Joint scoreline probability = product of independent Poissons.
- Sum over the matrix: P(home win), P(draw), P(away win), P(BTTS), P(Over/Under each line)
Poisson is well-established as a baseline football model. Its weakness — assuming goal independence — shows up most in tactical pinch-points (red cards, stoppage-time shifts), but at the match-level it produces calibrated probabilities for the major markets.
Why a hybrid Poisson + AI analyst stack?
Black-box ML predictors fit historical results well but are hard to question, easy to overfit, and produce outputs that can't be reproduced by hand. We took the opposite bet: keep the probability engine transparent (Poisson with explicit xG inputs and a home-advantage multiplier), and put the language model on top, not underneath. The AI's job is to explainthe probability, not generate it — to stress-test the assumptions, run what-if scenarios, and translate numbers into market angles. When we get a prediction wrong, you can trace it back to a specific xG input you disagreed with — not to a hidden weight in someone's neural net.
2. Inputs
The Poisson engine needs xG values for both teams. KiqIQ uses public data sources — we don't produce our own event data:
- FBref / Understat — rolling 5-game xG for/against (Opta-derived)
- API-Football — live in-play xG during matches (active when an `API_FOOTBALL_KEY` is configured; falls back to mock data otherwise)
- League baselines — KiqIQ-curated league averages for tournament-mode adjustment (in Euros, AFCON, World Cup, etc.)
Data quality is your responsibility:if your xG inputs are stale, biased, or from an unreliable source, the Poisson output will be wrong. The model can't fix bad inputs.
3. Adjustments
Raw xG from public sources is calibrated to club football. KiqIQ applies explicit adjustments for specific contexts:
Home advantage multiplier
- Default (club football):
×1.10–1.20 - Tournament hosts:
×1.30–1.40(Euros, AFCON, World Cup) - Mexico CDMX matches (altitude + crowd):
×1.40
Tournament-mode discount
- Euros:
×0.85–0.90(group stage), additional×0.95for elite-vs-elite knockouts - AFCON:
×0.80–0.85(most defensive) - World Cup:
×0.85–0.90 - Copa América:
×0.85
Venue adjustments
- High altitude (Mexico City 2,250m, La Paz 3,640m, Quito 2,850m): visitor xG penalty
×0.85–0.55depending on altitude - Extreme heat / humidity (Miami, Atlanta in summer): visitor fitness penalty
×0.95
Player-availability adjustments
KiqIQ's Tactical What-If Simulatorapplies historical with/without-player xG deltas (e.g. Manchester City's xG drops ~25% without Haaland). The current implementation is a curated lookup for high-impact players in major leagues. As historical event data accumulates we extend the lookup; the underlying methodology (with/without-player xG delta) does not change.
4. Knockout-stage extensions
For knockout football, the model extends to handle extra time and penalty shootouts:
- P(shootout) = P(draw at 90) × tournament-specific multiplier (WC ×0.45, Euros ×0.50, AFCON ×0.55, Copa ×0.55)
- Shootout outcome: underdog wins 52% (favourite 48%) — empirical baseline from 30+ years of major tournament data
- Extra time outcome: favourite wins 55-60% if it goes to ET
- Combined "to qualify" = P(win in 90) + P(go to ET) × P(win ET) + P(go to shootout) × P(win shootout)
See the penalty shootout strategy guide for the full derivation.
5. EV calculation
Once we have a probability P from the Poisson engine, expected value against a bookmaker price O is:
EV = (P × O) − 1
Positive EV means our model thinks the bet has long-run value. Negative EV means the bookmaker has the edge. We report EV in percent terms (e.g. +5%) and flag bets >3% post-margin in the value bet feed.
6. Confidence levels
Not every prediction has equal confidence. KiqIQ classifies predictions:
- High — mid-tier league fixture, both teams' rolling 5-game xG samples are stable, no major team-news disruption, market settled
- Moderate — international tournament fixture, late-stage knockout, or domestic cup
- Low — derbies with motivation overrides, fixtures with confirmed major team-news disruption, knockout single-leg ties between unfamiliar opponents
- No bet — already-qualified or already-eliminated fixtures, post-trophy dead rubbers, friendlies, fixtures with insufficient xG data
7. Sample size
Probability is a long-run concept. A model giving a 60% home win probability is correct on average if 60 of every 100 such fixtures end in home wins. The other 40 are not "model failures" — they are the model working as designed.
Realistic timescales for assessing a betting strategy:
- Bare minimum — 100 bets to detect a large edge (10%+ EV) at 95% confidence
- Reasonable — 500 bets to detect a typical edge (3-5% EV) at 90% confidence
- Robust — 1,000+ bets across markets and seasons before claiming a strategy works
See the sample size guide for the full statistics.
8. Accuracy reporting — our commitment
What we publish — and when. Accuracy is meaningful only at sample size. Once a market accumulates ≥100 logged predictions, KiqIQ publishes the full accuracy ledger for that market in /changelog and the live status dashboard at /status. Until then, individual predictions ship with a stated confidence band rather than a fabricated accuracy figure.
- Brier score per market (1X2, BTTS, Over/Under, AH)
- Calibration curves: predicted probability vs actual frequency, by confidence band
- ROI by market vs bookmaker close
- CLV (closing line value) trend
- Per-league accuracy breakdown
We commit to publishing accuracy results regardless of whether they validate the model. A model that quietly hides its losers is not a model — it's a marketing tool.
9. What KiqIQ explicitly does not do
- Tipster-style "today's winners" — KiqIQ surfaces probabilities, not picks
- Promised win rates — every prediction is probabilistic and uncertainty is acknowledged
- Black-box ML — every output is reproducible from documented inputs and rules
- Insider information — KiqIQ has no privileged access to team news, lineups, or referee assignments
- Match-fixing detection — outside scope; any unusual market movement is for the user to interpret
10. Limitations
Be honest about where the model is weakest:
- Cup ties between unfamiliar opponents (xG samples don't apply across competitions cleanly)
- Derbies and high-emotion fixtures (motivation effects override xG)
- Pre-determined fixtures (already-qualified, end-of-season dead rubbers)
- Red-card and weather scenarios (Poisson assumes uniform conditions)
- Very short-priced markets (typically <1.20) where bookmaker margin dominates
- New tournament formats with no historical baseline (e.g. World Cup 2026 R32 — flagged in our content)
11. Getting deeper
- How KiqIQ thinks — the framework summarised in 6 pillars
- Expected Value Explained — the EV calculation in full
- How to model a football match — Poisson worked example
- Variance in Betting — why short-term P&L is a poor signal
- Poisson Calculator — try it yourself
12. Document changes
We log every methodology change in our changelog. Material changes that affect prediction outputs are flagged on the relevant guide pages and announced via launch list.
Related: How KiqIQ Thinks · EV · Variance · Changelog