Specify the player event
| Field | Example question |
|---|---|
| Market | First, anytime, last, two or more? |
| Period | Regulation time or another scope? |
| Participation | Must the player start, appear or play a minimum time? |
| Scoring credit | How are own goals and later corrections handled? |
| Dead heat | Can ties affect the market? |
| Data source | Which official or provider record settles? |
Betfair's football rules and DraftKings' soccer rules are current operator examples with player-market conditions. Preserve the accepted rule rather than applying one participation convention to every operator.
Build the probability in layers
Estimate squad inclusion, start probability, minutes distribution, team scoring distribution, player's share of scoring opportunities, penalty role and the requested timing event. Opta's xG explanation describes shot-level chance quality for one provider, but player xG alone does not include future minutes or lineup probability.
Goals per appearance can be distorted by substitutions, penalties, opponent mix and small samples. Use chronological held-out validation and retain uncertainty around every layer.
Worked cross-match illustration
Suppose two players in different matches have complete anytime-scoring probabilities of 0.35 and 0.30. Under an explicit independence assumption:
Joint probability = 0.35 * 0.30 = 0.105, or 10.50%
If the players share a match, team, competition outcome, weather, or common model inputs, marginal multiplication can be wrong. OpenStax's independence rule applies to the complete player events.
Settlement reconciliation
Archive confirmed lineups, substitutions, official scorers, goal times, own-goal decisions, disallowed goals, market period and final operator settlement. Keep non-participant and void states in the dataset instead of deleting them.
Expected value needs every state and its net payoff under OpenStax's framework. First-goalscorer and anytime products have different event spaces and should not share one evaluation table.
Next step
Use First Goalscorer Betting for the next part of this topic.
Decompose the player probability
Represent an anytime-scorer probability as a sequence of conditional events rather than one opaque rate:
P(scores) = P(appears) * P(scores given appearance)
Opta's xG definition describes shot-chance inputs rather than future participation. A fuller player model can condition on starting, minutes, team goal states and penalty role, while OpenStax's probability partitions require mutually exclusive participation paths to cover the complete event.
Use boundary tests derived from the operator participation rules and probability relationships:
- A confirmed non-participant maps to the documented void or loss state, not an invented zero-minute forecast result.
- A player with zero modelled appearance probability has zero modelled scoring probability.
- First-goalscorer probability cannot exceed anytime-scorer probability under compatible periods.
- The sum of named first-scorer probabilities plus no scorer and Other must equal one.
The inequalities follow from OpenStax's probability intersections. Preserve an Other scorer so the model does not allocate all probability to a displayed shortlist.
Continue learning
- Next guide: Half-Time Result Accumulators
- Related guide: La Liga Accumulators
Assumptions and limitations
The probabilities are illustrative. Player roles and minutes can change after team news, scorer attribution can be corrected, and same-match player legs are often strongly dependent.

