Модели · 6 минут

Как читать xG и не переоценивать один матч

Ожидаемые голы оценивают качество созданных моментов. Они помогают увидеть структуру игры, но не заменяют контекст.

Базовая идея

Каждому удару присваивается вероятность стать голом. Удар с xG 0,10 исторически реализуется примерно в десяти процентах похожих ситуаций. Сумма вероятностей ударов даёт xG команды за матч.

Ситуация Примерный xG
Дальний удар под давлением 0,03
Удар из центра штрафной 0,18
Выход один на один 0,40
Пенальти 0,76

Почему счёт и xG расходятся

Футбол низкорезультативен, поэтому случайность в одном матче очень велика. Команда может забить дальним ударом и не реализовать два более качественных момента. Это не ошибка xG — модель описывает вероятность до удара, а не обязана повторять фактический счёт.

Сильнее всего xG работает в серии матчей. Один результат — история; выборка — сигнал.

Как суммировать моменты

match-xg.ts
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);
}

Разные провайдеры используют разные признаки: угол, дистанцию, тип передачи, положение вратаря и защитников. Поэтому значения одной и той же атаки могут немного отличаться — сравнивать команды лучше внутри одной модели.