Статья написана в пользовательском блоге — редакция Партнеркина не вносит изменения в текст. Вся орфография, пунктуация и содержание сохранены Подробнее про пользовательские блоги и о том, как зарабатывать до 3 000 ₽ за статью 😎
23 апреля 2019 7 5770

MyBetHelper: как мы создали сайт, посвященный рекомендациям по ставкам на футбол

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

Во-первых, как я поняла, сайт просто выкладывает предикшены матчей, основанные на определенных алгоритмах. Все. Нет ни регистрации, ни подписки на рекомендации (хотя в Terms and Conditions говорится про Member Account).

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

Ну а в-третьих, сайт охватывает только футбол и только некоторые страны (Англия, Испания, Италия, Германия, Франция). Есть неплохая возможность создать подобный сайт для русского пользователя. А дальше вы и сами все знаете :) Ладно, переходим к самой истории. 

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

Поскольку я работаю инженером-программистом в компании, где машинное обучение — основа бизнеса, я решил возродить тот самый проект и попробовать, как многие любят говорить, «победить букмекеров». Спустя пару лет сайт наконец «открыл свои двери» — mybethelper.com. Вот наша история. 

Оцениваем свои возможности
По началу нам казалось невозможным сделать сайт, который бы смог предугадывать исходы футбольных матчей. Но на самом деле есть веские причины полагать обратное. 

Никто не будет спорить, что букмекерские конторы вкладывают огромные деньги в получение больших объемов данных и различные статистические модели. Но даже при таких раскладах они умудряются допускать ошибки. Для примера возьмем 2002 год, когда William Hill щедро предложил 200/1 на победу двухкратного чемпиона мира по прыжкам на лыжах с трамплина. Другие букмекеры в тот же день предлагали куда меньше — 10/1. В итоге тот самый атлет победил, чем сильно ударил по карману компании William Hill.

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

Мы стали еще сильнее углубляться в тему и потихоньку стали замечать определенные закономерности. Например, конкуренция среди букмекеров, которая сильно срезает прибыль каждой компании. Это видно невооруженным взглядом. Взять ту же Премьер-Лигу Англии — команды из большой четверки всегда привлекают любителей сделать ставку. В связи с этим, букмекерам приходится идти на уступки и предлагать хорошие коэффициенты. 

Еще одна забавная тендеция. Чем выше ставка, тем выше выручка букмекера. По этой причине разумнее ставить на стабильных фаворитов, нежели искать андердогов. 

Имея относительно небольшой багаж знаний, мы решили, что пора осуществлять задуманное. 

Выбираем технологический стек
Для работы нам понадобилось 2 элемента: система, отвечающая за сбор информации и построение алгоритмов прогнозирования и непосредственно сам сайт, куда мы будем публиковать результаты. 

Для удобства и простоты мы решили использовать один и тот же язык для обоих элементов — Python (легко изучать + огромное количество библиотек). Учитывая относительно небольшой объем данных, которым мы будем манипулировать, мы выбрали Scikit-Learn для машинного обучения и Scrapy для сканирования результатов матчей и истории букмекеров из онлайн-источников. 

На бумаге это все казалось идеальным планом, но была одна неувязочка — я не знал Python и прежде никогда не делал сайты. Тут и началось самое интересное. 

От записок на бумаге до готового сайта
Я был хорошо знаком с C# и Java, поэтому изучение Python далось быстро. Дополнительно я смотрел лекции Andrew Ng на Ютуб. Спустя некоторое время я был готов к тому, чтобы начать пачкать свои руки. 

Многие опытные ученые скажут, что 20% любого проекта, связанного с data science, приходится на построение и настройку моделей прогнозирования, а 80% — на нудную, но необходимую работу по сбору и приведению данных в нужный вид. Наш проект не стал исключением. Пришлось собирать публичные данные, представленные в разных форматах (PDF, XML, HTML, JSON) и искать способы автоматического сопоставления команд из разных источников. Например, в одной конторе команда значится как Man U, в другой — Man United, в третьей — Manchester United и тд. 

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

Немного математики
Изначально мы не были уверены, какой алгоритм будет лучше всего для нашего проекта, поэтому мы решили рассмотреть ставки как проблему классификации. При таком подходе нам достаточно предсказать 1 из 3 правильных вариантов: победа хозяев, победа гостей или ничья. 

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

Погружаясь в разные алгоритмы (Метод k-ближайших соседей, логит-регрессия, random forests, искусственная нейронная сеть), мы поняли всю прелесть Scikit-Learn. 

Одной из фич, которую мы использовали, стала система рейтингов Эло. Если вкратце, то это метод расчёта относительной силы игроков в играх, в которых участвуют двое игроков. Часто используется в шахматах, но можно применять и в других видах спорта. С помощью рейтинга Эло мы рассчитали силу каждой из команд, начиная с 1990. Таким образом наши модели заметно прибавили в эффективности. 

Чтобы дать вам представление о прогностической силе одной только переменной Elo, приведем связь между гипотетической моделью, использующей только Elo, и результатами тех же игр. 

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

Например, сплошная прямая линия НЕ следует диагонали, то есть наблюдения и прогнозы лишь немного отличаются друг от друга. Когда простая модель предсказывает 20% домашних побед, на самом деле мы наблюдаем около 25% из них. Это может заставить нас проигнорировать потенциальные интересные ставки. Или, что еще хуже, может заставить нас сделать ставку на гостей, веря в 80% шансов на ничью или победу, в то время как на самом деле этот шанс составляет только 75%. Мы можем потерять больше, чем ожидалось, и наша прибыль мгновенно сократится.

В итоге, потратив огромное время на разработку фукнций и моделей, мы нашли свой первый прибыльный алгоритм, предлагающий окупаемость инвестиций 4,79% с начала сезона. 

Больше статистики можно найти тут

Время выходить в онлайн
Именно после этого мы решили, что пора делиться своими прогнозами и создавать сайт. Создав пилотную версию сайта, я понял, что frontdev определенно не для меня (хотя на компьютерах выглядело довольно сносно). 

Интерактива на сайте не было, поэтому пришлось нанимать парочку разработчиков, чтобы исправить ситуацию. С тех пор мы сделали не мало, чтобы сайт был приличным на вид и полезным в использовании. 

Было интересно наблюдать за статистикой сайта, когда к нам приходили первые пользователи. Хотя про наш сайт было написано совсем немного статей на разных форумах. 

Небольшие итоги и выводы
Что я извлек из этого опыта:

  • Не нужно останавливаться после создания продукта. Всегда есть над чем работать. 
  • Идеальных продуктов не существует. Не теряйте времени и создавайте то, что приходит вам в голову. В сети полно информации, поэтому информационный голод вас точно не настигнет. 
  • Даже с небольшой командой людей, занимающихся сайтом после основной работы, можно создать неплохой продукт. Главное — оставаться мотивированным. 
Как вам статья?
seoonly.ru Ответить
сайт бодрый
24 апреля 2019, 06:39 0
Вопрос Ответить
Так а с чего деньги идут? Вы ставите ставки по своей системе? Куда заносить бабки?))) Отпишите плиз
24 апреля 2019, 12:47 0
Как я поняла, разработчики этого сайта - альтруисты)) Они просто выкладывают возможные результаты матчей. Еще пишут, что если бы пользователи ставили по их рекомендациям с начала сезона, то могли бы с 100$ заработать 3500$. В общем, не до конца сама понимаю, как они монетизируют его))
26 апреля 2019, 12:16 0
Игорь Ответить
А предсказаний на ничьи не делаете? А то зашел смотрю только победа 1 или 2 команды.
25 апреля 2019, 12:59 0
Да, там только шанс на победу какой либо из команд))
26 апреля 2019, 12:17 0
Хорошая статья!

Нашел ссылку на оригинал, если кому интересно:

https://medium.com/@4rnau...

26 апреля 2019, 10:29 0
Арно - создатель MyBetHelper Ответить
Всем привет я Арно, создатель mybethelper.com и автор поста Medium.

Я очень рад что mybethelper.com Вас заинтересовал!

По поводу монетизации - ее пока нет. Я работал над этим сайтом ради забавы и уже рад позитивному результату (+3000€ с начала последнего сезона). Я думаю о монетизации, но у меня нет еще конкретных мыслей по этому поводу.

И еще, я в ближайшем будущем добавлю прогнозирование Российского Чемпионата ?

04 мая 2019, 23:29 0

Топовая партнерка 1xSlots