Руками выставлять линию нельзя — это работа на 50 операторов. Парсим из источника. Доход — не «выигрыши казино», а математическая маржа на каждом исходе.
TheOddsAPI / Sportradar / Wiki-feed
каждые 30 сек pull → upsert в БД
/events, /event/:id, /bet
пользователь видит и ставит
Групповой этап ЧМ. Прогноз: фаворит — Англия, но и сюрпризы бывают.
Аналитика рынка (ELO-рейтинги, рынки Pinnacle, букмекерский консенсус) даёт оценку:
«Справедливые» (fair) коэффициенты — это 1 / вероятность:
При таких кэфах ставка по 1000 на каждый исход даёт ровно 3000 → 3000: бук работает в ноль. Так нельзя.
Каждая вероятность «вздувается» на 7% — кэфы становятся ниже:
Новые кэфы (то, что покажет WebApp):
Допустим люди ставят пропорционально настоящим шансам. Считаем выплаты:
| Исход | Поставлено | Наш кэф | Выплата, если выиграет | Профит |
|---|---|---|---|---|
| Швеция | 250 000 ₽ | × 3.74 | 935 000 ₽ | +65 000 ₽ |
| Ничья | 280 000 ₽ | × 3.34 | 935 200 ₽ | +64 800 ₽ |
| Англия | 470 000 ₽ | × 1.99 | 935 300 ₽ | +64 700 ₽ |
| Итого собрано | 1 000 000 ₽ | — | ~935 000 ₽ | +65 000 ₽ (6.5%) |
При любом исходе мы платим ~935k из 1M, в кармане ~65k. Это и есть overround — теоретическая маржа букмекера.
Игрок видит П2 · 1.99, тапает — выбор уходит в купон (slip store).
Вводит 100 USDT → POST /bets. Сервер: валидирует кэф (защита от смены), баланс ≥ 100.
В одной DB-транзакции: balance −= 100, создаётся BetTicket(stake=100, odd=1.99, payout=199), статус OPEN.
Кэф двигается → у нас уже зафиксирован odd=1.99 на тикете. Игроку не страшно.
Фид присылает «Англия 2–1». Движок проходит по тикетам с этим event_id, считает каждую ногу.
Если выиграл: balance += 199, статус WON, в TG пушится «Ставка выиграла, +199».
~5–7% «вшито» в каждый кэф. На любой паре исходов в долгую — наш +.
Игроки тяготеют к фаворитам и over-тоталам. Если фаворит проигрывает — наша маржа в разы выше теоретической.
Видим дисбаланс книги — двигаем линию. Кэф на популярную сторону снижается, на противоположную растёт.
Стимулируют ставить чаще и больше. Больше турновер = больше маржи. Это тот же ход что в казино.
Маржа 7% работает в долгую. На старте, когда народу мало — каждая большая ставка двигает наш PnL. Книга «кривая» — мы держим однонаправленный риск.
3 игрока, все на Англию @ 1.99. Других ставок нет.
| Игрок | Ставка | Если Англия 🏆 | Если нет |
|---|---|---|---|
| A | 500 USDT | −995 | +500 |
| B | 300 USDT | −597 | +300 |
| C | 200 USDT | −398 | +200 |
| Итого | 1 000 USDT | −990 | +1 000 |
Если Англия (вероятность ~47%) побеждает — мы теряем 990 USDT при собранном турновере 1k. Это unbalanced book: вся ликвидность на одной стороне.
50–100 USDT на исход / юзер / матч. Никто не разорит книгу за один тап. Sharps — индивидуальные ограничения или закрытие.
После большой ставки на Англию опускаем её кэф 1.99 → 1.70, Швецию поднимаем 3.74 → 4.50. Следующие ставки переманиваются на другую сторону → книга балансируется.
Если книга очень кривая — сами ставим на underbet-сторону у Pinnacle / Betfair Exchange. Срезаем variance в обмен на часть маржи.
Дисбаланс > порог → автоматически закрываем приём. После ребалансировки линии или окончания подозрительного эпизода открываем снова.
casino_bank — отдельно от пользовательских балансовАутсайдеры выигрывают много подряд. Решение: лимиты на ставку и достаточный bankroll (минимум 50k маржевых на старте).
Сравнивают нашу линию с Pinnacle, ставят на отклонения. Решение: персональные лимиты, мониторинг паттернов, закрытие при подозрении.
Фид прислал странный кэф / неверный результат. Решение: валидация при импорте + ручной override в админке.
В РФ — букмекерская деятельность лицензируется. На крипто-проекте часто работают через офшор (Кюрасао, Анжуан) или через partner-license model.
Чанк 5a (1–2 дня): заменяем хардкод в api_sports/data/catalog.py на DB-таблицы Sport/League/Event/Market/Outcome + админка через тот же API (роуты под ADMIN_ID). Settlement руками.
Чанк 5b (2–3 дня): подключаем TheOddsAPI (бесплатный план: 500 запросов/мес — хватит на тест). Cron каждые 60 сек дёргает upcoming + scores, делает upsert в наши таблицы. Авто-settlement при поступлении результата.
В сумме: ~3–5 дней до полноценного автоматизированного букмекера с pre-match линией на 70 лиг. Live добавим отдельно когда трафик оправдает $100/мес на BetsAPI.
DREAM Sportsbook · Elite Club · Internal Doc