Моделирование футбольных матчей
-
Очень интересно.
-
DimOK, а вы в свое время делали такого ботика по футболу, который пишет линию/бьет чужую прематч линию (пиннакла, например)?
Удавалось побить прематч пиннакла?
Казалось, что счастье рядом, но пока вижу у себя -3% с оборота по историческим данным, что упирается в маржу.Пытаюсь подобрать такие веса забиваемости/пропускаемости команды в прошлых домашних/гостевых матчах, чтобы попасть:
- в линию пиннакла (сложно, результаты хуже, физического смысла не вижу)
- в счета прошлых матчей
Ищу суммарную ошибку по всем матчам сезона и выбираю такие параметры, чтобы ошибка была минимальна.
Не подскажите, верным ли путем иду, есть ли какие-то секреты, идеи, которыми готовы поделиться?
-
Марафон заплатил, форум они читают, что ли?
@tverreus Вы, мне кажется, ерундой занимаетесь, а именно оптимизируете свою модельку под прошлое. Разумеется, путём различных фильтраций вы подстроите модель так, чтобы она показывала прибыль на прошлой выборке, но что это будет означать? Это будет означать, что выборка, совершенно случайно, отклонилась от линии букмекеров в сторону, допустим, тотала меньше. Ну не забивали, пустые стадионы, коронавирусы - тысячи причин, по которым результативность была ниже. Вы этот факт нащупаете, в процессе подбора весов, и затем радостно включите на реальные матчи, с чего вы взяли, что там это отклонение сохранится? А если вы думаете, что ваша модель отражает объективную реальность - какие параметры у неё на входе? Вы уверены, что счетов матчей достаточно? Вам не кажется, что сейчас уже имеет смысл анализировать составы, статистики по всем высшим лигам уже года два навалом?
И вообще, даже если идти вашим путём, то генерировать "линию пиннакля", наверное, лучше. Потому что тогда ваша модель (отбросим все замечания выше, предположим, что она работает) будет такой же, как у букмекеров и вы сможете мониторить отклонения от их линии (например в домашнем матче перегрузили фаворита) и радостно влезать против. Другое дело, что могут перегружать фаворита не просто так, а опять же, по травме ключевых игроков у гостей или низкой мотивации или чём угодно.
Изучайте крипту, короче, ну или делайте модель футбольную с анализом каждого игрока и взаимосвязей между ними. В такое я верю, в анализ счетов - нет.
-
@dimok Наверное, я до всего дойду постепенно.
Сомневаюсь, что кто-то пишет линию на средние и говнолиги по игрокам. Поэтому сначала хочу научиться строить линию, которая бьет низшие чемпионаты, которую букмекер пишет по тем же исходным данным, что и я.
Наперёд отвечая, что не заработать денег - в первую очередь, хочу заработать опыт и обрести понимание процессов.
Не в первый раз от вас слышу, что плохо строить модель под прошлые данные. Так под что её еще строить? Будущего не знает никто, в том числе и букмекер. Под что подгонять и настраивать модель?
И еще по поводу перехода на игроков. По большому счету, переход на игроков даст лишь свою оценку МО индивидуального тотала команды и ничего более. -
@tverreus В футбол играют 11 человек. Каждый состав уникален. Каждый состав против другого состава - это уникальная игра. То есть в идеале будет работать модель, которая оценивает КПД каждого игрока, их совместимость на поле и выдаёт - какого результата добьётся.
Иногда можно на основе предыдущих матчей этого же состава оценить силу команды и силу другой команды.
Но как исторические данные могут влиять? Футбол меняется, правила меняются, физическая подготовка совершенствуется, скорости становятся быстрее, поле начинают делить на несколько частей, в некоторых частях обязаны быть игроки, который успешно играют на подборах, чтобы начать вторую волну атаки. В Ливерпуль приглашается тренер для вбрасывания аутов, после этого Ливерпуль быстрее разыгрывает мяч и забивает после аутов, так как они на секунду раньше сконцентрированы, чем соперник.
Влияют только недавнее прошлое
-
Я понимаю процесс игры, я понимаю про логичность модели.
Я пока не лезу в лайв, я хочу научиться получать осмысленные циферки для прематча.
Беру турнирную таблицу, которая отражает данные из прошлого, и конкретный матч из будущего.
Оцениваю забиваемость команды в прошлых матчах, поздним матчам больший вес, смотрю на дома/в гостях и соответствующим матчам больший вес, смотрю на соперников в прошлых матчах, кому забивали, от кого пропускали.
Смотрю на будущий матч, смотрю на забиваемость/пропускаемость каждой команды. Вычисляю МО инд тотала каждой команды. Складываю. Получаю МО матча, достаю из него тотал 2.5, смотрю кефы пинки, вижу различия в свою пользу, делаю ставку. -3% с оборота имею.Представим, что у нас 4 лига Англии и нет игроков, либо они все равнозначны. Вопрос в том, туда ли я смотрю, достаточно ли смотреть на дома/гости, прошлые матчи или нужно включить в модельку что-то еще.
-
Пользователь @tverreus написал в Сегодня вчерашнее завтра:
Оцениваю забиваемость команды в прошлых матчах, поздним матчам больший вес
Матчи с разными соперниками, поэтому для верной оценки нужно ещё понимать, что это были за соперники, а у вас данных мало. И всё... дальнейшее смысла не имеет, база неверная.
-
Пользователь @dimok написал в Сегодня вчерашнее завтра:
Пользователь @tverreus написал в Сегодня вчерашнее завтра:
Оцениваю забиваемость команды в прошлых матчах, поздним матчам больший вес
Матчи с разными соперниками, поэтому для верной оценки нужно ещё понимать, что это были за соперники, а у вас данных мало. И всё... дальнейшее смысла не имеет, база неверная.
Как-то вы быстро ярлыки навешиваете, не давая шанса развить мысль. Конечно, я учитываю забиваемость / пропускаемость прошлых соперников.
Есть ли что-то, что я упускаю? -
@tverreus бк в худшем случае использует всё тоже самое + маржа и как вы собрались их обыграть?
-
Пользователь @tverreus написал в Сегодня вчерашнее завтра:
Конечно, я учитываю забиваемость / пропускаемость прошлых соперников.
А как вы её учитываете, ведь чтобы верно её учесть нужно смотреть на уровень соперников этих соперников.
-
Пользователь @dimok написал в Сегодня вчерашнее завтра:
Пользователь @tverreus написал в Сегодня вчерашнее завтра:
Конечно, я учитываю забиваемость / пропускаемость прошлых соперников.
А как вы её учитываете, ведь чтобы верно её учесть нужно смотреть на уровень соперников этих соперников.
Offense-Defense Method для футбола самый популярный способ например http://users.dimi.uniud.it/~massimo.franceschet/teaching/datascience/network/od.html
А в данном труде с десяток методов ещё описано:
https://ru1lib.org/book/2345630/3c4088
там под американские виды спорта естественно, но на футболе, теннисе тоже адекватно позволяет оценить силы соперников. -
Прогресс не стоит на месте, я уже не гожусь совсем :(
-
@rowdy Спасибо за информацию.
Если я не ошибаюсь, первая статья "плохая", получаем какие-то циферки по индексу забиваемости/пропускаемости, но не смотрим на давность прошедших матчей, все прошедшие матчи одинаковы по значимости. Т.е. модель для ранжирования по какому-то принципу подходит, но для предсказания будущего на основе прошлого, думаю, не очень.Можете подсказать главы книги, на которые стоит обратить внимание в первую очередь?
-
@tverreus да, давность не учитывается, эту проблему решил тем, что считаю все матчи за последний год как глобальное значение, потом последние 25/15/7 (чем больше диапазонов, тем лучше), и уже по индексам видно актуальную форму команд, можно усреднить и сравнивать итоговые значения, можно на график вывести кривую.
Последние 2-3 матча нет смысла считать, слишком неточно будет.
Обратить внимание в первую очередь на алгоритмы методов, в инете уже есть и много готовых реализаций.
Букмекеры, кстати, используют что-то типа ELO, иногда поражает насколько точно ставят линию по этой системе.
Допустим вчера был матч, ELO показывал 52% на 48%, вижу практически равную линию, первые минимальный фаворит.
ODM показал 77% на 23% и в итоге первая команда выиграла 3-0. Причем там и на глаз было видно, что первые намного сильней.
То есть эту линию явно не человек вручную составлял. На биг маркетах конечно подобных ошибок меньше. -
@rowdy Сходу не нашел про ЭЛО для футбола в применении к конкретному мачту. Вроде бы, это больше про рейтинг.
Как это применить к МО индивидуального тотала?И что такое ODM?
-
@TverReus ODM - Offence-Defence Method
В книге стр. 54 - в ELO вычисляются сначала 2 рейтинга, затем по формуле делается сравнение.
Пример для рейтингов 1670 и 1600:1 / (1 + 10^((1670 - 1600)/400) = 0.4
число 400 как константа, влияет на чувствительность
Получаем оценку сил команд как 60% на 40%По индвидиуальным тоталам всё непросто, общие намного легче, но в любом случае нужно исходить из линии.
Допустим разберем матч: West Ham 3 - 2 Liverpool https://www.flashscore.com/match/0S6SM1kDПо моей модели (считаются голы за последний год + 25/15/7 последних и усредняются):
Забивают в ср.: [1.69, 2.43]
Пропускают в ср.: [1.23, 0.91]
ср. общий тотал: 3.13ТБ 2.5/3 можно смело брать, учитывая ещё что 62% матчей пробивают ТБ 2.5
А вот по индивидуальным сложно понять, могут и по 2 гола обе забить, а может быть легко счет 1-2.
То есть силу команд можно объективно оценить усреднением, а в случае числа голов - это усреднение плохо предскажет счет.Вот ещё матч Everton 0 - 0 Tottenham https://www.flashscore.com/match/6o5CQqjl/
Забивают в ср.: [1.47, 1.46]
Пропускают в ср.: [1.35, 1.41]
ср. общий тотал: 2.84По соотношению голов четкую ничью можно предсказать, то есть силу оценили объективно, и ТБ, но голов не было, по общему тоталу 2.5 там стата 50 на 50, можно без сомнений пропустить тоталы.
Учитывая рейтинг ELO [0.47, 0.53] и другие тоже перевеса Тотенхему сильно не дают, то ничью или 1X можно тащить.
В целом индивидуальными тоталами не занимаюсь, ближе к рандому это. -
Чего-то вижу много плохого в рассуждениях.
МО тотала 3.13 дает 0.395 / 0.605 вероятности для тотала 2,5 (меньше / больше)
Смотрим на коэффициенты букмекера по вашей ссылке 2,72 / 1,49
Проверяем валуйность:
ТМ 1,72 * 0,395 - 0,605 = 0,0744 (Валуй)
ТБ 0,49 * 0,605 - 0,395 = -0,09855 (Не валуй)
Если уж и ставить здесь по вашей модели, то только на ТМИ пока не понимаю, как достать вероятность ничьи из ЭЛО, где она там?
-
И пока не понимаю, как достать вероятность ничьи из ЭЛО, где она там?
Ничьи в футболе это отдельная песня, очень сложно их считать, если для побед без ничьей нормальное распределение худо-бедно работает, то ничьи по нормальному распределению постоянно завышаются.
-
Почему нормальное? Вроде бы, все сходятся к мнению, что распределение голов в футболе подчиняется закону Пуассона. Оно и проще, один параметр вместо двух.
Я решил вопрос с ничьей и умею увеличивать вероятность / занижать кеф. -
Пуассон - это нормальное дискретное распределение, оно не работает в футболе для разницы индивидуальных тоталов (форы), но работает почему-то для суммы (тоталы). Вы можете завышать/занижать коэффициент, но в матчах с разными фаворитами это будет работать по-разному, то есть корректировать надо по-разному, в зависимости от силы фаворита. И это уже совсем не Пуассон.
Не работает оно потому, что результат матча очень сильно зависит от того, забьёт ли слабая команда первой, после чего встанет автобусом у себя на поле, это катастрофически влияет на ничью.
А вообще давно это было, я всё забыл :( Но что-то мне подсказывает, что если эти темы работали 10 лет назад, когда статистики по игрокам не было вообще, то они, по идее, не должны работать сейчас, когда статистики не меньше, чем для бейсбола. Кто-то же её посчитал, значит кто-то на ней наживает, как умеет, а значит чтобы наживать - надо посчитать не хуже.
-
@tverreus Насчет того матча я не смотрел валуй, просто описывал логику об индивидуальных тоталах вообще-то.
А на общие тоталы в целом стратегия такая:Сначала смотрю стату по ТБ/ТМ и стату по профиту (то есть какой итог будет, если каждый матч ставить на это 1 юнит) и усредняю стату Б/М и профит, так более корректно считаю.
И если получилось, что 62% матчей команд на ТБ идут, а кф дают 1.49 (67%)- естественно я не буду ставить ТМ и пытаться ловить меньшую вероятность, и ТБ тоже не буду ставить, т.к. не валуй.Дальше смотрю тренды кэфов, на примере этого матча по тоталу 2.5, делаю запрос в БД по истории кэфов: если кф на ТБ был между 1.4-1.6:
когда Вест Хэм дома: [19, 11], 'profit': [-1.51, -1.09], 'record_pct': [0.63, 0.37], 'profit_pct': [0.5, 0.5], 'sum': [0.56, 0.44]
когда Ливерпуль на выезде: [61, 27], 'profit': [2.26, -19.16], 'record_pct': [0.69, 0.31], 'profit_pct': [0.57, 0.43], 'sum': [0.63, 0.37]Сумасшедший тренд Ливерпуля 61-27 на ТБ 2.5, можно рассмотреть ТБ 3.
Ищу тренды на ТБ 3 если был кф. ~ 1.72, отсекая возвраты.
когда Вест Хэм дома: [3, 3], 'profit': [-3.84, -2.19], 'record_pct': [0.5, 0.5], 'profit_pct': [0.36, 0.64], 'sum': [0.43, 0.57]
когда Ливерпуль на выезде: [14, 14], 'profit': [-10.63, -4.74], 'record_pct': [0.5, 0.5], 'profit_pct': [0.43, 0.57], 'sum': [0.47, 0.54]Брать конечно можно по чуйке, но ТБ 3 за кф 1.72 на дистанции уже не профитно.
После трендов кэфов смотрю на стату команд, а именно количество атак, ударов (с flashscore).
Как в баскетболе: быстрое владение у команд - слонность к ТБ, медленное - ТМ.
Если команды играют так, что мяч от ворот до ворот летает, в центре не держится, то логично, исходя с этого можно проценты к ТБ накидывать.
Точной формулы я пока не вывел, но среднюю командную стату считаю и на глаз смотрю.
И только в последнюю очередь смотрю числа по средним голам, эти сильно усредненные показатели необъективны в плане конечного счета. Букмекеры выставляют линию исходя из этих чисел, поэтому найти валуй там обычно невозможно.По ничьям надо смотреть статистику по лиге, в среднем в ничью футболе играют 25% матчей (данные из базы по 1.8 млн матчей), поэтому в нормальном распределении они завышаются, т.к. должно быть 33%.
Есть чемпионаты где 35-40% матчей в ничью заканчивается, и самом собой есть ничейные команды, там и ищется валуй.
По рейтингу ELO, если значения близкие, то часто ничья, учитывая другие ничейные факторы естественно, те же средние голы, статитику команд (удары, число атак).
Я тестировал как-то модель чисто на ничьи, уверенный плюс на дистанции можно делать, но дорабатывать ещё нужно. -
Дальше смотрю тренды кэфов, на примере этого матча по тоталу 2.5, делаю запрос в БД по истории кэфов: если кф на ТБ был между 1.4-1.6
почему 1,4-1,6 а не 1,37-1,58 или 1,3-1,7? гадалово какое-то
на глаз смотрю
проценты к ТБ накидывать
с одной стороны о каких-то моделях разговор, с другой предлагается на глаз что-то смотреть и "накидывать", так дойдем до того что надо проверить может форвард главный травмирован и скинуть проценты к ТБ, это уже не строгая модель а тыканка какая-то на глазок
Есть чемпионаты где 35-40% матчей в ничью заканчивается, и самом собой есть ничейные команды, там и ищется валуй.
в таких чемпионатах и коэффициенты на ничью соответственные
По рейтингу ELO, если значения близкие, то часто ничья
что значит "часто"? насколько часто?
-
Пользователь @kava написал в Моделирование футбольных матчей:
с одной стороны о каких-то моделях разговор, с другой предлагается на глаз что-то смотреть и "накидывать", так дойдем до того что надо проверить может форвард главный травмирован и скинуть проценты к ТБ, это уже не строгая модель а тыканка какая-то на глазок
В нелинейной системе какие могут быть строгие модели?
Футбольные матчи это не покер, где компьютер может все споты просчитать и выдать сбалансированную стратегию.
Там человеческий фактор, и чтоб не было тыканки в любом случае надо разбираться в командах и игроках, куда тыкаешь.
Если у вас есть строгие модели - предлагайте. А я описал свои наработки. Как всё описать четкой формулой пока не выявил.почему 1,4-1,6 а не 1,37-1,58 или 1,3-1,7? гадалово какое-то
Можно и 1,37-1,58 - никто не мешает, результат изменится не сильно.
Можно проверять не по командам, а по лигам, полет фантазии...
Смысл в самом анализе кэфов.
Цель - совершать плюсовые действия, и данная проверка показывает насколько плюсово было данное действие в прошлом.
Опять же система нелинейна, какое отношение данные тренды могут иметь к будущему матчу? Вообще никакого, это новое событие.что значит "часто"? насколько часто?
на выборке из 10000 матчей, где был рейтинг ELO 50 на 50 получается околонулевой ROI, и это уже сильное отклонение от рандома.
-
@rowdy Извиняюсь, но у вас написана ересь, на что вам и указал @kava .
Где есть математика и модель, нет никакой чуйки, нет никаких трендов и прочей псевдостатистики.@DimOK Я по-другому объясняю и описываю завышенную вероятность ничьи. У каждой команды есть результативность (МО) в моменте и эта результативность зависит от текущей разницы в счете.
По моим оценкам при текущей ничьей результативность каждой команды минимальна.
При появлении разницы в счете в 1 гол усиливается проигрывающий, при появлении разницы в счете в 2 гола чуть усиливаются и выигрывающий, и проигрывающий, при разнице в 3 усиливается уже только выигрывающий...
Степень усиления каждой команды при различных разницах - уже настройки модели.
Т.е. в каждый момент времени результативность каждой команды распределена по Пуассону, но вот эта результативность не статична.
Данная модель дает отличное попадание в любую ничью, в том числе во что-то псевдо-договорное 1х2 5-1,5-5 Т2,5 1,9-1,9.Хочу лишь научиться грамотно доставать МО команд, а этим никто не делится, к сожалению...
Кстати, вы так и не ответили, вы били прематч пинку по футболу? -
Пользователь @tverreus написал в Моделирование футбольных матчей:
@DimOK Я по-другому объясняю и описываю завышенную вероятность ничьи. У каждой команды есть результативность (МО) в моменте и эта результативность зависит от текущей разницы в счете.
Отличное решение, говорю же, против молодёжи сложно.