4 мин.

Решил сделать бота-прогнозиста

Есть у меня бложик о футболе, где я иногда выливаю свои мысли на те или иные события. Хочется высказаться по поводу матча, написал пару постов. Делаю это нерегулярно, трафика мало, но это для себя, поэтому я и не парюсь. И тут мне захотелось реализовать небольшую (как мне казалось, по итогу убил две недели) идейку, сделать анализатор/прогнозёр будущего матча с рекомендуемыми ставками на игру. Собственно, раз захотелось, надо сделать. 

Начал с того, что за основу взял стандартный расчет тотала матча исходя из забитых голов за последние 5 игр. Не буду расписывать как и в чем заключается расчет подробно, в двух словах:  забитые голы (дома умножаются на коэффициент 1,5, гостевые считаются за 1) плюс пропущенные, по той же схеме и среднее арифметическое дальше все решает. Если интересно подробнее, то вот ссылка на гугл таблицу (https://docs.google.com/spreadsheets/d/1LuzvSwmmyfG2KWT3sQGibkJx-xFYFtXdHDnCQt381yg/edit#gid=0), формулы в ячейках все наглядно показывают.

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

Первое что я сделал, это просчитал коэффициент команды от уровня сложности. Коэффициент сложности, насколько сложно забить команде, где, например, гол в ворота Атлетико Мадрид считается за 1,5, а гол Уэске за 0,7. Коэффициент распределялись исходя из пропущенных голов командами в течении всего турнира. Коэффициенты обновляются каждый день после сыгранных матчей. И так же просчитал коэффициент простоты. Когда команда забивает и так очень много, как например Барселона даже в этом сезоне. Эти коэффициенты помогут более развернуто получить картину возможных голов в будущем матче, поскольку у команды могли быть последние матчи с овер простыми, где было забито 3+ голов, но при этом впереди матч с лидером, и там это вряд ли случится.

Получаю уже более ли менее адекватную картину по индивидуальному тоталу и количеству возможных голов в будущем матче. Далее беру в расчет личные встречи и XG. Если по личным встречам все понятно, то с XG было сложнее, как его заюзать в расчете. В итоге использую его для округления полученных индивидуальных тоталов голов. Если XG последних пяти игра больше, нежели забитых голов, то команде фартит и можно округлить в большую сторону, если наоборот, то в меньшую (топорно, но лучше заюзать так, чем не использовать вообще). 

В тексте это звучит просто, но убил на реализацию в целом банальных расчетов 2 дня. Ещё сложнее все было реализовать технически. Поскольку нужно было спарсить таблицу, сделать так, чтобы она постоянно обновлялась, спарсить более чем 1500 матчей, чтобы точно иметь информацию по последним личным встречам команд, и опять написать триггер, который будет обновлять страницу каждый день, чтобы обновлялась информация по матчам, которые сыграны . И далее сделать небольшую форму и вывод данных. Единственно, что осталось кривым, это при одновременном (1-3 секунды) использования формы, на выходе могут появиться данные матча, которые хотел получить твой коллега. Но не думаю, что будет большой трафик на этот анализатор, делал его для себя, чтобы просто реализовать идею. Поэтому не думаю, что в ближайшем обозримом будущем это будет проблемой. (*реализацию технических моментов распишу мб на пикабу в скором времени)

Анализатор работает сейчас только с Ла Лигой, на ней тестировал все, и прыгать на другие лиги, пока не доделаю как следует, не хочу.

Протестировал его на двух турах, в целом в 70-80% попадает в цель, как в описании матча (или как я назвал синопсис будущего матча) и рекомендуемые ставки.

В 30 туре были косяки с повторяемыми рекомендуемыми ставками (предлагал ТБ(1,5) и ТБ(2), результаты. Пока это решил с помощью банальных формул, но в дальнейшем было бы неплохо сравнивать котировки и предлагать наиболее приемлемый вариант. Исключая косяки получились примерно такие же как в предыдущем туре. Предсказать все невозможно, и это меня успокаивало, когда посмотрел на результаты после выходных. https://i.imgur.com/iIVtDmc.png (скриншот результатов 29 тура. В правом столбце коэффициент на момент просчета; светло-серый цвет ставки - возврат, зеленый - победа, красный - проигрыш).

В данный момент, я учитываю при расчете такие факторы (помимо статистики за последние 5 игр):

  • сложность забить команде

  • легкость в реализации голов

  • xG

  • личные встречи

Ещё есть множество факторов, которые я хотел бы засунуть в расчет:

Реклама 18+
  • отсутствие ключевых игроков атаки (процент участия от всех голов команды)

  • котировки букмекеров (что поможет выбирать рекомендуемые ставки более точно)

  • отсутствие ключевых игроков в защите (высчитать исходя из процент пропущенных мячей с игроком и без, и рассчитать его влияние на этот фактор)

  • важность матча для команды (понадобится к концу сезона, когда будет борьба за очки)

Сейчас бот работает, казалось бы, просто. Выбираешь команду 1 и команду 2, и жмякаешь на кнопку "Анализ статистики". Далее попадаешь на небольшое вводное слово, пока идет обработка данных и основной расчет. Нажимаешь на ссылку (единственную на странице) и получаешь пару таблиц последних игр команд, чтобы понимать хоть примерно, какие данные анализировались. И далее сами рекомендации к матчу в таком виде:

Вывод рекомендационной информации к будущему матчу

Буду очень рад, если кто-нибудь подкинет ещё пару-тройку влияющих на матч факторов, которые можно будет учесть при расчетах. Главное, чтобы их можно было из статистики выцепить, ибо прогноз погоды, например, что определенно важно, не тот момент, который можно в расчетах сильно учесть, к сожалению.

Ссылка на бота-прогнозиста - https://eternal.football/получить-прогноз-ла-лига/ (естественно все в свободном доступе, делал для себя, если кому-то это будет полезным, буду рад)