Очередной футбольной сезон заканчивается. Самое время вернуться к вопросам справедливости. Давайте попробуем её измерить? Ну хотя бы в футболе.

Какова роль случая в спорте? Действительно ли плей-офф - это лотерея? Портит ли нам впечатление от игры новая схема розыгрыша лиги чемпионов?

Давайте построим много-много графиков и закроем уже этот гештальт.

С чего начать?

Начнём с таких простых тезисов.

  1. В футболе высок фактор случайности. То есть результат любого матча имеет вероятностный характер.

  2. Считаем, что случайные факторы (погода, настроение, перепады формы, отскоки мяча) распределены симметрично относительно команд, т.е. не бывает хронически “везучих” и “невечучих” команд на долгой дистанции. Я знаю, что со мной поспорят болельщики любой команды. И я буду рад реальным контрпримерам.

  3. В футболе высок и фактор навыка (умения, мастерства, класса).

  4. Этот фактор можно обобщить каким-то числом, которое показывает, насколько одна команда сильнее другой.

  5. Это число означает наиболее вероятный вариант развития событий (максимум распределения вероятности). Но возможны и вероятны и другие.

  6. Кроме фактора разницы в классе на развитие матча влияет дисперсия (и связанная с ней волатильность). Это мера того, насколько широк разброс случайности результатов возможен. Она не зависит от класса команд (но может зависеть от их игрового стиля). А ещё она зависит от внешних условий (погода, качество поля, характер судейства, наличие VAR или дополнительных арбитров)

  7. Чем лучше условия, тем величина дисперсии ниже. Если дворовой команде из Омска нужно играть против мадридского “Реала”, то на разбитом газоне в снег ночью у них шансов на положительный результат немного больше, чем на “Бернабеу” в солнечный день при соблюдении всех лигачемпионских стандартов

  8. Разность в классе определяет разницу забитых и пропущенных мячей в матче (+1 или -4), а не общий счёт. Например, разница в 200 пунктов означает +2, но какой именно счёт 2-0, 3-1 или 6-4 - зависит не от класса команд, а других качеств (возможно, игрового стиля).

Все эти тезисы можно собрать в функцию, которая может симулировать футбольные матчи с учётом относительной силы команд и фактора случайности.

Пример работы функции. Встреча команд с разбросом в силе примерно равным командам Манчестер Сити и Брентфорд. В среднем, конечно, одна сильнее другой. Правая часть графика - больше повезло фаворитам, левая - андердогам.
Чуть-чуть про дисперсию
И прямое следствие прошлого графика. Если вы не фаворит, то вам надо пытаться максимально бустить дисперсию

Справедливость на дистанции

Если с одним матчем понятно, то теперь давайте возьмём набор команд и представим на секунду, что их настоящая сила а) нам известна, б) не меняется.

И пусть они сыграют турниры по разных схемам, а мы посмотрим, что из этого выйдет.

Кто у нас будет подопытными кроликами?

Начнём вот с таких:

Набор команд для первого эксперимента с турнирными системами. Как видите, команды распределены попарно: две команды близки друг к другу по силе, а между соседними группами - пропасть.

Случайный турнир

Начнём со случайного турнира.

Как это? Очень просто: выбираем случайную пару команд и они играют. Потом ещё одну. И ещё. Всё сводим в турнирную таблицу. Ключевой показатель: среднее количество очков за матч.

Это ужасный формат. Кто-то может сыграть больше игр, кто-то - меньше. Кому-то попадутся соперники слабее, кому-то сильнее. Как мы помним, в таком турнире вероятность сенсации самая большая.

Сколько игр поставить? Ну, допустим, по аналогии с игрой на вылет, по 3 игры на команду, т.е. 24 матча всего.

Итак, что же мы получим?

Случайный турнир. Матчи команд
Случайный турнир. Итоговая таблица
  • Дикий разброс числа игр, большая разница в числе набранных очков. И, тем не менее, сильные вверху, слабые - внизу.

  • Реал сыграл лучше Сити (хотя у нас он чуть-чуть слабее)

  • Галатасараю не повезло с календарём (две игры против Сити и одна - против Реала),

  • Порту - наоборот, повезло, сыграл с обоими аутсайдерами.

Но на этом всё.

Вроде и случайный турнир, а не такая уж и лотерея, не находите?

Игра на вылет

Это более классический формат, в него играют и часто. Игру на вылет часто критикуют за высокий фактор случайности. Посмотрим, что выйдет у нас.

У этого формата существует параметр: посев - кто с кем на каком этапе играет. Я реализовал два варианта: в каждом раунде случайные противники и классический посев (в нашем случае, это первая команда играет против пятой, вторая - против шестой и так далее).

А ещё есть фактор ничьих. После них нужно играть дополнительное время и бить серию пенальти. В этой модели мы примем, что вероятность пройти серию пенальти не зависит от сил команды и всегда равно 50%. Лотерея так лотерея. Я понимаю, что это не так, но для нашей модели так заложить вполне логично и достаточно.

Начнём со случайного посева.

Турнир на вылет со случайным посевом. Матчи команд

И у нас две лучшие команды встретились в финале!

Только одна ничья, лидер (Порту) не смог справиться с более слабой командой (Галатасарай) и проиграл по пенальти.

При "спортивном" посеве почти та же картина, но более показательна.

Турнир на вылет с посевом по рейтингу. Матчи команд

На каждом этапе есть явный лидер, который справился с андердогом без проблем. В финале те же лица. И даже результат тот же.

Круговой турнир

Пришло время сыграть "всем со всеми". Формат, который считается эталоном справедливости. Проблема в нём только в том, что он долгий. И именно поэтому я список матчей прикладывать не буду, только итоговую турнирную таблицу.

Круговой турнир. Итоговая таблица

Неожиданностей действительно мало. Но вот Галатасарай смог подняться аж на третье место (по посеву он пятый). Ну и фан-клубу Месси явно не повезло. Они слабее конкурента, но не так, чтобы не забить ни одного гола за 14 матчей.

Общая картина похожа на то, что мы можем видеть в реальных чемпионатах.

Швейцарская система

Это то, что хотели сделать с Лигой Чемпионов, но не смогли.

Формат сложный, общий принцип: "по возможности, ты играешь с соседом по турнирной таблице". Выиграл - получил противника сильнее, проиграл - слабее. Но много раз играть с одним и тем же противником нельзя.

Считается, что эта система более справедлива, чем плей-офф, но играется значительно быстрее, чем "круговик".

Высокая наука говорит, что для 8 команд достаточно трёх туров.

Оптимальное число туров для того, чтобы расставить N команд для первых k мест

Давайте их сыграем.

Швейцарская система. Итоговая таблица

И вот у нас первая сенсация! Порту обошёл Сити и опередил Реал по доп показателям! Фан-клуб Роналдо тоже невероятно высоко.

Результат выглядит более случайным, чем у случайного турнира. Как думаете, почему?

Комбинированная система

Это та система, по которой проводилась раньше лига чемпионов и до сих пор проводятся чемпионаты мира и Европы: сначала круговой турнир, но в малых группах, потом игра на вылет.

На всякий случай, сделал и формат "швейцарка + плей-офф". Так мало где играют, но вообще может быть весело.

Все перепетии смотреть не будем, посмотрим, кто дошёл до полуфиналов.

Комбинированная система. Классика: 2 группы + на вылет. Участники полуфиналов и финалов

3 и 4 места посева не вышли из группы. В финале наши частые гости.

Комбинированная система. Упоротый: одна группа на 8 команд, 4 лучшие выходят в полуфинал.

Никаких сенсаций: лучшие 4 вышли из группы. Две лучшие в финале.

Комбинированная система. Лига Чемпионов здорового человека: швейцарка + на вылет

Порту не вышел из группы. Две лучшие в финале.

Индекс справедливости

А как же так, аналитика, big data? Как можно какие-то выводы делать по одному турниру? Тем более ладно бы живые люди, им играть много сложно. Но симуляцию чего б не запустить на много-много матчей и турниров.

Сейчас мы так и будем делать. Для этого надо было глазами посмотреть на то, что код для симуляции различных форматов работает так, как мы этого ждём. А вот теперь начнём настоящие танцы.

Во-первых, 8 команд - это не серьёзно. Теперь у нас будет 32 команды. Полюбившаяся нам восьмёрка останется, дальше добавятся какие-то более-менее случайные команды из ЭЛО-рейтинга.

Что мы делаем дальше? Заставляем виртуальных футболистов играть друг с другом в разных форматах 10 тысяч раз. Кажется, статистика должна накопиться.

Но дальше самое интересное. Ну вот сыграли они, как мы будем оценивать полученный результат?

Во-первых, мы его нарисуем. Сделаем таблицу в стиле opta, в которой у нас будут команды и ожидаемые места. И покажем, как часто та или иная команда занимала определённое место.

Тепловая карта, которая показывает вероятность команды занять то или иное место. Пример для кругового турнира. Выборка на 100 симуляциях

Как это читать? Интер в 30% турниров занял третье место. В 2% ему катастрофически не повезло, занял восьмое, в 3% случаев, наоборот, повезло, стал чемпионом.

Хорошо видно, что мы подобрали команды парами. Но и разброс результатов тоже хорошо виден.

А теперь самое главное. Мы сейчас эту таблицу одним числом опишем!

Команды у нас в турнире связаны. Если Реал занял первое место, то Сити его уже не занимает. Везение одного означает невезение другого. Это значит, что на справедливость влияют только вероятности команд занять своё место по посеву, т.е. только диагональ этой таблицы.

Вместо 1024 чисел у нас есть 32, сильно лучше. А как одно получить? Можно просто усреднить. Я "взвешенно" усреднил, посчитал, что предсказание первого место всё-таки чуть-чуть важнее точного предсказания последнего.

И вуаля, у нас есть одно число, которое является индексом спортивной справедливости турнира. Если индекс равен 100%, то это скукота, никаких шансов на сенсации. Если индекс равен 0%, то это значит, что сила команд никак не влияет результат. У рассматриваемой нами таблички индекс равен 42%: точность прогноза мест варьируется от 57% до 9%.

Сравнение систем

Теперь, когда у нас есть индекс справедливости, мы можем делать много-много симуляций и сравнивать турнирные системы между собой.

Абсолютно случайное распределения для 8 команд индекс оценит в 12,5% (вероятность занять любое место одинаковая, 1/8=0,125). Когда в турнире играет больше команд, шансы каждой логично уменьшаются. Если команд 32, то для случайно перемешанных команд индекс покажет число, близкое к 3%. Именно это число возьмём за основу. Форматы наших турниров должны показать индекс выше 3%.

Как думаете, как будут распределены индексы у разных форматов?

Кроме индекса справедливости вывел ещё и чуть более интепретируемую метрику - шансы фаворита занять первое место.

Сравнение турнирных систем для 32 команд после проведения 100 000 симуляций для каждой

Моделирование подтвердило наши интуитивные представления.

Есть хороший формат (круговик), который более чем в два раза более справедлив, чем другие.

Другие форматы больше чем в два раза лучше, чем просто случайный набор матчей. А вот разница форматов между собой не такая уж и большая. Например, добавление группового этапа улучшает меру справедливости по сравнению с обычной игрой на вылет всего на 24%.

У вас ещё остались вопросы, почему у Манчестер Сити с момента прихода шейхов только одна победа в Лиге Чемпионов, зато 8 побед в чемпионате Англии?

А как же баланс

Целый ряд сильных игроков, в том числе Родриго Касканте попросили меня обсудить ещё один аспект.

Да, мы смогли оцифровать справедливость. Да, мы поняли, что не так уж и важно упарываться по формату. Но всё-таки, хочется иметь хороший турнир и не играть бесконечное количество матчей, как в круговике.

Можно ли найти какой-то формат, оптимальный как по справедливости, так и по числу игр?

Самое простое - это разделить наш "индекс справедливости" на число игр в турнире. Типа, да, признаём, "круговик" у нас в 2,9 раз более справедлив, чем случайный турнир, но игр пришлось сыграть в 3,2 раза больше. Получается, не так уж и круто.

Сравнение турнирных систем с учётом числа игр

По этому показателю, ожидаемо, с отрывом будет лидировать игра на вылет. Очень мало игр, зато все - самый сок.

И, на самом деле, особо опций не так много. Единственный формат, в котором можно попробовать найти оптимум - это швейцарская система. Там можно менять число туров произвольно. Возможно, где-то баланс сойдётся.

Оказалось, теоретики не дураки. Та самая формула, по которой нужно считать число матчей - она как раз про баланс справедливости и числа матчей.

При увеличении числа туров индекс справедливости швейцарки не растёт, а при очень большом - может и упасть. Внимательное чтение логов помогает объяснить почему. При большом числе туров лидеры уже сыграли друг с другом, начинаются поиски оптимального соперника, который находится всё ниже и ниже. И это перестаёт быть той "швейцаркой", что мы знаем (играешь против тех, кто играет примерно как ты) и начинается быть больше похожим на случайный турнир. А вес первого и последнего тура одинаковый. Вот индекс и падает.

Так что никакой волшебной таблетки. Кто сказал МакМагон?

Другие материалы по теме из Котелка: