Skip to content

calculations.matches_13_prob_goal_diff

Skellam-distribution probabilities for the goal difference home − away (μ₁ = stats_goals_expected_home, μ₂ = stats_goals_expected_away). Evaluated for k ∈ -7…7; tails are bucketed.

P(X = k) = e^(-(μ₁+μ₂)) · (μ₁/μ₂)^(k/2) · I_|k|(2·sqrt(μ₁·μ₂))

flowchart LR
m9[/matches_9_expected_goals/] --> me[/calculations.matches_13_prob_goal_diff/]
me --> mart[/mart.matches/]
click m9 "/calculations/matches_9_expected_goals/" "Open"
click mart "/mart/matches/" "Open"
ColumnDescriptionFormula
event_idBet365 event identifier.passthrough
event_dateEvent date.passthrough
event_partition_keyClickHouse partition key.passthrough
score_totalActual total goals (carried).passthrough
score_differenceActual goal difference (carried).passthrough
stats_goals_expected_homeExpected home goals.passthrough
stats_goals_expected_awayExpected away goals.passthrough
stats_goals_expected_totalExpected total goals.passthrough
prob_goal_diff_neg3_minusProbability of Δ < −3.round(sum(if(goal_diff < -3, probability, 0)), 4)
prob_goal_diff_neg3Probability of Δ = −3.round(max(if(goal_diff = -3, probability, 0)), 4)
prob_goal_diff_neg2Probability of Δ = −2.round(max(if(goal_diff = -2, probability, 0)), 4)
prob_goal_diff_neg1Probability of Δ = −1.round(max(if(goal_diff = -1, probability, 0)), 4)
prob_goal_diff_0Probability of a draw.round(max(if(goal_diff = 0, probability, 0)), 4)
prob_goal_diff_1Probability of Δ = 1.round(max(if(goal_diff = 1, probability, 0)), 4)
prob_goal_diff_2Probability of Δ = 2.round(max(if(goal_diff = 2, probability, 0)), 4)
prob_goal_diff_3Probability of Δ = 3.round(max(if(goal_diff = 3, probability, 0)), 4)
prob_goal_diff_3_plusProbability of Δ > 3.round(sum(if(goal_diff > 3, probability, 0)), 4)
prob_goal_diff_sumSanity check — should be ≈ 1 within [-7, 7].round(sum(probability), 4)

probability = round(skellam_pmf(stats_goals_expected_home, stats_goals_expected_away, goal_diff), 4) from macros/skellam_pmf.sql.