The starting values are an example. The basic Poisson model treats the two teams' goals as independent; real matches have slightly more low-scoring draws than it predicts.
The same calculation in Python
from math import exp, factorial
def pmf(k, lam):
return lam ** k * exp(-lam) / factorial(k)
home_xg, away_xg = 1.45, 1.10
home = [pmf(k, home_xg) for k in range(11)]
away = [pmf(k, away_xg) for k in range(11)]
p_home = sum(home[i] * away[j] for i in range(11) for j in range(11) if i > j)
p_draw = sum(home[i] * away[i] for i in range(11))
p_away = 1 - p_home - p_draw
print(f"Home {p_home:.1%} Draw {p_draw:.1%} Away {p_away:.1%}")
Where the expected goals come from — and how to fit them to real results — is explained in Build a Poisson Football Model in Python.
18+ only. Models do not guarantee results. See our Responsible Gambling page.