Как читать xG и не переоценивать один матч
Ожидаемые голы оценивают качество созданных моментов. Они помогают увидеть структуру игры, но не заменяют контекст.
Базовая идея
Каждому удару присваивается вероятность стать голом. Удар с xG 0,10 исторически реализуется примерно в десяти процентах похожих ситуаций. Сумма вероятностей ударов даёт xG команды за матч.
| Ситуация | Примерный xG |
|---|---|
| Дальний удар под давлением | 0,03 |
| Удар из центра штрафной | 0,18 |
| Выход один на один | 0,40 |
| Пенальти | 0,76 |
Почему счёт и xG расходятся
Футбол низкорезультативен, поэтому случайность в одном матче очень велика. Команда может забить дальним ударом и не реализовать два более качественных момента. Это не ошибка xG — модель описывает вероятность до удара, а не обязана повторять фактический счёт.
Сильнее всего xG работает в серии матчей. Один результат — история; выборка — сигнал.
Как суммировать моменты
type Shot = { teamId: string; xg: number };
export function totalXg(shots: Shot[], teamId: string) { return shots .filter((shot) => shot.teamId === teamId) .reduce((total, shot) => total + shot.xg, 0);}Разные провайдеры используют разные признаки: угол, дистанцию, тип передачи, положение вратаря и защитников. Поэтому значения одной и той же атаки могут немного отличаться — сравнивать команды лучше внутри одной модели.