Sportsbook · Mental Model

Откуда кэфы, куда уходит
каждый USDT

Руками выставлять линию нельзя — это работа на 50 операторов. Парсим из источника. Доход — не «выигрыши казино», а математическая маржа на каждом исходе.

Откуда коэффициенты

Источник
Цена/мес
Что даёт
Подходит
BetsAPI / Goalserve
$50–500
Pre-match + Live · итоги · стриминг
Когда нужен in-play и больше лиг
Sportradar / Betradar
$10k+
WebSocket push · settlement · лицензии лиг
Промышленный букмекер
Скрейп Pinnacle/Bet365
$0
Линия настоящих буков, но TOS-серая зона
Для арбитражников, не для оператора
Своя админка
$0
Полный контроль, но узкая линия
Уникальные/промо ивенты + Override настроек

Поток данных

1

Источник

TheOddsAPI / Sportradar / Wiki-feed

2

Cron-парсер

каждые 30 сек pull → upsert в БД

3

Наш API

/events, /event/:id, /bet

4

WebApp

пользователь видит и ставит

Пример: Швеция — Англия

Групповой этап ЧМ. Прогноз: фаворит — Англия, но и сюрпризы бывают.

Шаг 1. Истинные вероятности

Аналитика рынка (ELO-рейтинги, рынки Pinnacle, букмекерский консенсус) даёт оценку:

25%
28%
47%
Швеция — 25% Ничья — 28% Англия — 47% · Сумма = 100% (fair)

«Справедливые» (fair) коэффициенты — это 1 / вероятность:

П1 · Швеция
4.00
25.00%
X · Ничья
3.57
28.00%
П2 · Англия
2.13
46.95%

При таких кэфах ставка по 1000 на каждый исход даёт ровно 3000 → 3000: бук работает в ноль. Так нельзя.

Шаг 2. Бук добавляет маржу 7%

Каждая вероятность «вздувается» на 7% — кэфы становятся ниже:

26.75
29.96
50.29
+7%
26.75% (× 1.07) 29.96% 50.29% маржа = overround · Сумма = 107%

Новые кэфы (то, что покажет WebApp):

П1 · Швеция
3.74
↓ с 4.00
X · Ничья
3.34
↓ с 3.57
П2 · Англия
1.99
↓ с 2.13

Шаг 3. Турновер 1 000 000 ₽

Допустим люди ставят пропорционально настоящим шансам. Считаем выплаты:

Исход Поставлено Наш кэф Выплата, если выиграет Профит
Швеция 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 — теоретическая маржа букмекера.

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

Жизнь одной ставки

1

Тап в WebApp

Игрок видит П2 · 1.99, тапает — выбор уходит в купон (slip store).

2

Сумма + Сделать ставку

Вводит 100 USDT → POST /bets. Сервер: валидирует кэф (защита от смены), баланс ≥ 100.

3

Атомарная транзакция

В одной DB-транзакции: balance −= 100, создаётся BetTicket(stake=100, odd=1.99, payout=199), статус OPEN.

4

Матч идёт

Кэф двигается → у нас уже зафиксирован odd=1.99 на тикете. Игроку не страшно.

5

Финал → Settlement

Фид присылает «Англия 2–1». Движок проходит по тикетам с этим event_id, считает каждую ногу.

6

Зачисление + Push

Если выиграл: balance += 199, статус WON, в TG пушится «Ставка выиграла, +199».

Где берётся наш доход

Основное

Overround (маржа)

~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: вся ликвидность на одной стороне.

4 рычага риск-менеджмента

№1 · Простой

Лимиты на ставку

50–100 USDT на исход / юзер / матч. Никто не разорит книгу за один тап. Sharps — индивидуальные ограничения или закрытие.

№2 · Главный

Скользящие кэфы

После большой ставки на Англию опускаем её кэф 1.99 → 1.70, Швецию поднимаем 3.74 → 4.50. Следующие ставки переманиваются на другую сторону → книга балансируется.

№3 · Продвинутый

Hedging (lay off)

Если книга очень кривая — сами ставим на underbet-сторону у Pinnacle / Betfair Exchange. Срезаем variance в обмен на часть маржи.

№4 · Экстренный

Suspend маркета

Дисбаланс > порог → автоматически закрываем приём. После ребалансировки линии или окончания подозрительного эпизода открываем снова.

Что зашьём в наш API

Что может пойти не так

Variance

Чёрная серия

Аутсайдеры выигрывают много подряд. Решение: лимиты на ставку и достаточный bankroll (минимум 50k маржевых на старте).

Sharp игроки

Арбитражники

Сравнивают нашу линию с 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