1. Введение: асимметричное устройство односторонних рынков
Один десятичный коэффициент O задаёт порог безубыточности 1/O. По нему нельзя одновременно определить вероятность события и маржу. При O=2.45 вероятность p=0.30 даёт EV=-26.50%, а p=0.50 даёт EV=+22.50%. Обе гипотезы совместимы с наблюдением одной этой цены. Недостающую информацию должны дать модель, другие котировки или данные исходов.
Сначала определите тип рынка. Полную таблицу победителя можно нормировать без lay-котировок, если выигрывает ровно один перечисленный исход и охвачены все возможные победители. Пропущенный участник или отсутствующая категория «другой» делают набор неполным. Несколько игроков могут забить в одном матче, поэтому anytime-события пересекаются и сумма обратных коэффициентов не является оверраундом полного взаимоисключающего рынка. Совпадающая пара да/нет может задавать бинарный рынок. Также должны совпадать допуск игрока, период игры, дополнительное время, автоголы и отмены.
Методы ниже дают условные оценки. Полный рынок сравнения может быть полезен, но не является наблюдаемой истиной. Синтетический противоположный исход добавляет предполагаемую маржу, а не второе наблюдение. Согласие оценок не является независимой проверкой; модельный EV не является измеренным финансовым результатом.
2. Метод 1: проекция через эталонный прокси по шарп-линиям
Полный совпадающий рынок может дать дополнительную информацию. Название площадки не доказывает точность вероятностей. Оценка зависит от цен, полноты рынка, времени наблюдения и предпосылок удаления маржи.
Теоретический механизм переноса
Событие должно точно совпадать с событием прокси, а не просто относиться к тому же игроку или показателю. Полная пара да/нет или исчерпывающая взаимоисключающая таблица могут дать нужные данные. Список пересекающихся anytime-событий нельзя нормировать таким образом.
Показанное уравнение задаёт мультипликативную нормировку полной двусторонней линии. Shin является другой моделью, а не другим названием этого уравнения. Ни одно преобразование не идентифицирует ненаблюдаемую истинную вероятность. Для выбора нужны обоснованные предпосылки и независимая проверка.
Полученная оценка даёт условный EV по розничной цене и относительную ценовую нагрузку. Сравнение не измеряет оверраунд всего розничного рынка или фактический hold оператора.
Относительная ценовая нагрузка
В условном примере нагрузка относительно мультипликативного прокси равна 10.25708985%. Это сравнение одной цены с одной модельной оценкой. Без розничной противоположности суммарный оверраунд не определяется. Вместе с результатом сохраняйте метод и предпосылки, не называя эту величину измеренной маржой.
Оценка по прокси зависит от полной пары исход/противоположность, метода удаления маржи и одинакового расчёта. Показанная формула мультипликативная. Shin является отдельным выбором в коде, с собственным корнем и без незаметной подмены. Поле fair_probability обозначает модельную оценку, а не подтверждённую частоту. Свежесть котировок и совпадение событий проверяются вне этой арифметики.
3. Метод 2: синтетическое дополнение при разных режимах маржи
Когда тот же исход не котирует ни одна эталонная контора (например, ставки на игроков студенческих лиг или специальные рынки национальных турниров), наблюдаемого прокси нет. В таких случаях аналитики строят синтетическое дополнение.
Математический вывод синтетической противоположной линии
Пусть аналитик видит односторонний исход с десятичным коэффициентом и сырой подразумеваемой вероятностью . Предположим, что букмекер ведет эту категорию рынков (например, специальные ставки на игроков европейского футбола) с известной исторической медианной маржой , то есть сумма подразумеваемых вероятностей равна .
При гипотезе пропорциональной маржи подразумеваемая вероятность невыставленного синтетического дополнения должна удовлетворять условию:
Это коэффициент противоположного исхода в принятой модели, а не прогноз фактического предложения букмекера.
Когда синтетическая пара задана, справедливая вероятность получается обычной нормализацией:
Оценка маржи категории рынка ()
Как оценить ? Собрать все двусторонние исходы, которые тот же букмекер публикует в той же спортивной категории в тот же игровой день. Например, если на матч Премьер-лиги выставлено тридцать двусторонних тоталов на игроков (очки, отборы, удары) со средней маржой , это значение будет разумной базой для невыставленных дополнений в этом матче.
При предположении неотрицательного оверраунда m и пропорциональной маржи q2=1+m-q1. Чтобы оба синтетических коэффициента были больше 1, необходимо . Код отклоняет недопустимую противоположность. При положительном m оценка p=q1/(1+m) по построению задаёт EV=-m/(1+m). Это не доказывает фактический отрицательный EV и не восстанавливает реальную маржу. Средняя величина по другим рынкам является входом сценария, перенос которого нужно проверить.
4. Метод 3: межрыночные границы отсутствия арбитража
Границы включения требуют одинаковых событий и правил расчёта. При одинаковых допуске игрока, учёте голов и периоде первый гол игрока предполагает его гол в любой момент. Гол игрока предполагает хотя бы один гол команды. В явно принятой пуассоновской модели последняя верхняя граница равна 1-exp(-lambda). Это связи вероятностей, а не ограничения, непосредственно выведенные из сырых обратных котировок.
Для полного разбиения по первому автору гола нужны все допустимые игроки и применимые категории автогола/отсутствия голов. Anytime-события пересекаются. Нарушение модельной границы означает несогласованность модели или правил, но само по себе не доказывает доступную вилку. Для такого вывода нужен портфель доступных ставок с неотрицательной чистой выплатой в каждом состоянии, включая комиссии, лимиты, округление и отмены.
Хотя бы одно состояние с положительной вероятностью должно давать строго положительную чистую выплату. Для гарантированно положительного результата минимум по всем состояниям должен быть строго положительным.
5. Метод 4: регрессия по исторической линии закрытия
Если есть высокочастотные временные ряды, эконометрический подход моделирует историческое движение цены от открытия до закрытия по множеству односторонних ставок. Пусть означает розничный коэффициент на открытии, а консенсусную цену закрытия у шарп-букмекеров.
Задаем регрессию в логарифмах шансов:
Подбор коэффициентов регрессии даёт оценку выбранного ориентира. Калибровка вне обучения и полезность прогнозов требуют отдельного подтверждения.
Регрессия исторических цен не калибрует вероятности автоматически. Нужны только сведения, доступные в момент решения, хронологическая проверка вне обучения, совпадающие рынки и учёт зависимости. Закрытие может задавать поздний ориентир, но не доступную раньше цену или истину. Калибровку и прогнозные метрики оценивают отдельно; подбор параметров не доказывает калибровку или прибыль.
6. Численный пример: ставки на игроков НБА (тотал очков)
Входы условные: розничный коэффициент 2.45, прокси 2.62/1.54 и предполагаемый оверраунд категории 0.165. Это не наблюдаемые котировки и не измеренная маржа.
Рыночные наблюдения
- Исход: «Джейсон Тейтум наберет 30+ очков» (односторонняя ставка).
- Розничный коэффициент: .
- Категория рынка: предполагаем, что рынки рубежей игроков у этого букмекера имеют маржу .
- Эталонные данные (Pinnacle): полная двусторонняя линия на очки Тейтума:
- Больше 29,5 очков:
- Меньше 29,5 очков:
Шаг 1: снятие маржи через эталонный прокси
Полная пара даёт указанный ниже оверраунд. При расчётах сохраняется полная точность, без деления округлённых промежуточных чисел.
Мультипликативная нормировка даёт следующую модельную оценку вероятности.
Обратная величина является справедливой ценой модели при выбранной нормировке.
Шаг 2: матожидание розничной односторонней ставки
Розничный EV условен: оценка должна адекватно описывать вероятность события.
Отношение обратной розничной цены к оценке означает относительную ценовую нагрузку. Это не оверраунд полного рынка и не фактический hold.
Синтетический сценарий с предполагаемой маржой
Без прокси синтетический метод использует предполагаемый оверраунд 0.165 и пропорциональное распределение. Это другой сценарий.
Обе условные оценки отрицательны, но их совпадение не даёт второго независимого наблюдения. Другая обоснованная вероятность может изменить вывод.
7. Реализация на Python: движок снятия маржи для односторонних рынков
Класс на Python ниже реализует первые два метода (эталонный прокси и синтетическое дополнение), чтобы односторонние ставки можно было проверять автоматически.
import math
def _validate_odds(*odds):
if any(not math.isfinite(o) or o <= 1 for o in odds):
raise ValueError("Require finite decimal odds greater than one.")
class OneWayDevigEngine:
@staticmethod
def devig_via_proxy(retail_odds, proxy_odds_target, proxy_odds_complement,
method="multiplicative"):
"""Assumes exactly matching, exhaustive, mutually exclusive proxy outcomes."""
_validate_odds(retail_odds, proxy_odds_target, proxy_odds_complement)
q = [1/proxy_odds_target, 1/proxy_odds_complement]
total = sum(q)
if method == "multiplicative":
p = q[0]/total
elif method == "shin":
if total < 1-1e-12:
raise ValueError("This Shin example does not support underround.")
if abs(total-1) <= 1e-12:
p = q[0]/total
else:
def probs(z):
return [(2*x*x/total)/(math.sqrt(z*z+4*(1-z)*x*x/total)+z) for x in q]
lo, hi = 0.0, 1-1e-12
for _ in range(100):
mid = (lo+hi)/2
if sum(probs(mid)) > 1:
lo = mid
else:
hi = mid
result = probs((lo+hi)/2)
if abs(sum(result)-1) > 1e-10 or any(not 0 < x < 1 for x in result):
raise ArithmeticError("No numerically valid Shin root.")
p = result[0]
else:
raise ValueError("Unknown devig method; no silent fallback.")
ev = p*retail_odds-1
fair, percent, bps = 1/p, 100*ev, 10000*ev
if not 0 < p < 1 or not all(math.isfinite(x) for x in [fair,percent,bps]):
raise ArithmeticError("Derived proxy results are not finite probabilities/prices.")
return {"method": method, "fair_probability": p, "fair_odds": fair,
"expected_value_percent": percent, "edge_basis_points": bps,
"is_positive_ev": ev > 0}
@staticmethod
def devig_via_synthetic_complement(retail_odds, tier_margin_estimate=0.15):
"""Scenario under an assumed overround and proportional allocation."""
_validate_odds(retail_odds)
q = 1/retail_odds
margin = tier_margin_estimate
if not math.isfinite(margin) or not 0 <= margin < q:
raise ValueError("A valid synthetic decimal complement requires 0<=margin<1/retail_odds.")
p = q/(1+margin)
ev = p*retail_odds-1
fair, complement, percent = 1/p, 1/(1+margin-q), 100*ev
if (not 0 < p < 1 or complement <= 1
or not all(math.isfinite(x) for x in [fair,complement,percent])):
raise ArithmeticError("Synthetic results are not representable as valid finite prices.")
return {"assumed_overround": margin, "fair_probability": p, "fair_odds": fair,
"synthetic_complement_odds": complement,
"expected_value_percent": percent, "is_positive_ev": ev > 0}
Проверка совпадения событий перед расчётом
Для каждого сравнения сохраняйте идентификаторы матча и игрока, время получения цены, тип исхода, порог, валюту и правила расчёта. События «наберёт30 очков или больше» и «тотал больше 29.5» совпадают для целочисленных очков только при одинаковом периоде и одинаковых правилах участия. Тотал больше 30.0 имеет отдельное состояние возврата при ровно 30 очках. Подставлять такую линию в бинарную модель выигрыш/проигрыш без изменения выплат нельзя. Если одна площадка требует выхода в стартовом составе, а другая достаточно короткого участия, их цены также нельзя считать точными противоположностями. Пропуск проверки правил не исправляется более точным поиском численного корня.
После сопоставления рынка запишите выбранный метод и его входные предположения отдельно от результата. В примере 2.45 против 2.62/1.54 величина 10.25708985% является отношением к оценке прокси, а не наблюдаемым оверраундом всей розничной линии. Другой метод удаления маржи может изменить оценку, поэтому сравнивайте выводы при нескольких обоснованных предпосылках. Для исторической проверки разделяйте матчи по времени и учитывайте, что несколько ставок на игроков одного матча могут быть зависимыми. Настройка по будущей цене закрытия не является проверкой доступной ранее стратегии.
8. Проверки модели и границы решения
Одна котировка не задаёт универсального порога маржи 15%. Можно выбрать ограничение экспозиции или неопределённости, но обозначить его как правило решения, а не эмпирический закон. Проверьте чувствительность EV=pO-1: ошибка вероятности delta_p меняет EV на O*delta_p. До интерпретации результата важны свежесть, допуск участника, правила расчёта, комиссии и доступная сумма.
Код требует конечных коэффициентов больше 1 и явно названного метода. Он отклоняет неподдерживаемый Shin underround, неудачный корень и синтетические котировки вне допустимого диапазона. Отдельно проверьте совпадение событий, выбор модели и вероятности вне обучения. Арифметические проверки подтверждают внутреннюю согласованность, а не необходимость заключить ставку.
