Первая проблема, конечно, решается парсингом. Ходим на условную страницу <здесь могла бы быть реклама вашего букмейкера> и парсим данные раз в час. К сожалению не очень многие букмейкеры дают открытый API, но с помощью кодекса это легко исправить. А вообще мотивация не давать API не очень ясна, ведь сейчас самое время покорять рынок MCP агентов-лудиков.
Вторая проблема решается очень красиво и математично- https://en.wikipedia.org/wiki/Kelly_criterion. Это
https://sci-hub.hlgczx.com/10.1002/j.1538-7305.1956.tb03809.xа, которую нужно ставить, основываясь на истинной вероятностной модели исходов. Такой истинной вероятностной моделью считаем раддар-ноутбук. Для критерия доказана асимптотическая математическая оптимальность скорости роста портфеля. Проще говоря, если играть бесконечное число матчей по этой стратегии и у тебя хороший алгоритм предсказания матчей, то в долгосрочной перспективе будешь обгонять все прочие стратегии. Более того, банк будет расти экспоненциально.
К сожалению, в баскетболе не бесконечное число матчей, так что алгоритм для бота следующий:
1. Подтягиваем коэффициенты и матчи, на которые можно ставить. Мапим к ним оценки вероятностей.
2. Для матчей расcчитываем матожидание профита. Если матожидание меньше 10% ставки- отметаем такой матч. Этот костыль нужен потому, что я хоть и верю в несмещенность раддар-ноутбука, но не верю в его абсолютную непогрешимость. Так что нам нужен тот самый, талебовский, запас надежности.
3. Для матчей, которые остались- ищем новости о командах-участниках. Codex гуглит все последние обновления составов/травмы/трансферы и решает, достаточное ли это основание для изменения шансов на победу. Если достаточное- отметаем.
4. Подтягиваем текущий объем банка и на его основе расчитываем оптимальный объем ставки:
(c * p - 1)
—————— = bet_coef.
(c - 1)
Тут с- коэф бука, p- вероятность из нашей модели и bet_coef- доля банка для ставки
5. Ставим. Если мы на этот матч уже ставили и коэффициенты стали еще более выгодными, то расчитываем сколько еще нужно добавить.
Общий банк был ~40к рублей, так что риск хоть и не слишком большой, но эмоциональную вовлеченность генерящий.
Из интересных происшествий и наблюдений:
1. В какой-то момент бот сам себе сломал метчинг имен и поставил на матч, в котором должен был проиграть. На вопрос 'Ты что, просто решил проиграть?' он честно признался, что ошибся и 'уже ничего не исправить'. Пришлось пересчитывать матожидание и учить бота продавать ставки букмейкеру назад, когда математически выгоднее продать, чем гемблить. Считаем по той же формуле, что в пункте 4 и сравниваем с комиссией за продажу. Она обычно фикс в ~10%, так что можем ограничить ненужный риск.
2. Есть наблюдение, что на 'открытии торгов' коэфы наиболее неэффективны и потом постепенно ползут к оптимальному соотношению. Надо будет в следующем году вам количественное исследование сделать.
3. Иногда выгодно ставить на андердога, потому что именно на него появляется наибольший Edge. Это создает небывалое чувство спокойствия- выиграешь либо в рейтинге на каггле, либо получишь денежную компенсацию.
4. Одновременно может быть несколько матчей, на которые можно эффективно заключить пари. Поэтому важно каждый раз подтягивать размер банка, чтобы добавлять денег в зависимости от исходов матчей. Я решил, что убавлять не нужно, потому что исходы параллельных матчей можно считать независимыми, а значит и вероятность резкого банкротства сильно мала.
5. В постанализе я оценил вероятности того, что бот мог потерять деньги и закончить с банком ниже изначального. Вышло довольно неплохо: тотальный шанс закончить в минус был 15%, а внутридневной порог потери денег опустился ниже 20% всего один раз. И именно потому, что было две большие недооценки андердога со стороны 'рынка'.
Опыт интересный, обожаю истории https://en.wikipedia.org/wiki/Richard_Jarecki. Кажется за попытками дистанцироваться от ставок на спорт, я попал в сети ставок на алгоритмы.