Я проиграл 72% сделок на Polymarket — и впервые вышел в плюс
В прошлой статье я рассказывал, как бот на Polymarket сделал 1014 сделок, выиграл 78,8% и всё равно потерял деньги. Финальная цифра того прогона — 1 298 сделок, winrate 80,1%, P&L −$89.98. Это был первый прогон.
Тогда я обещал второй. Добавить один фильтр и посмотреть, что изменится.
Прошло 89 часов. Вот что получилось.
Второй прогон: 47 сделок. Winrate 27,7%. P&L +$2.09.
Статья короткая и про одно: почему эти два числа — winrate и прибыль — живут в разных вселенных. Если у вас есть что-то, где вы оцениваете вероятность события и покупаете его по какой-то цене (опционы, ставки, страхование, воронки маркетинга, любая бинарная классификация) — этот материал про вас.
Что было сломано
В первой статье я разобрал главную ошибку: бот смотрел на winrate, а надо было смотреть на ⟨edge⟩ — разницу между фактическим процентом побед и ценой контракта.
Контракт стоит $0.90 → нужно побеждать в 90% случаев, чтобы выйти в ноль. Побеждаешь в 89% — ты в минусе. При этом winrate формально «высокий».
Бот радостно брал такие контракты сотнями. Стратегия momentum_spike выигрывала 92,6% — и теряла деньги, потому что покупала по $0.88–0.94. Стратегия early_entry выигрывала реже — и тоже в минус. Стратегия contrarian проваливала всё подряд.
Что я сделал
Добавил в код одну проверку. Перед каждой сделкой бот считает: breakeven = цена контрактаedge = оценённая вероятность − breakeven
Если edge меньше 0.02 (меньше двух процентных пунктов запаса) — сделка не открывается. Просто игнорируется.
Всё. Больше ничего не трогал. Те же три стратегии, тот же банкролл, та же модель предсказаний на техническом анализе BTC с Binance WebSocket.
Что произошло за 89 часов
Бот увидел 2 623 потенциальные точки входа.
Открыл 47. Отменил 2 576. Коэффициент отсева — 98,2%.
Из 47 открытых выиграл 13. Winrate 27,7%. Суммарный P&L — плюс $2.09.
Так выглядит «правильный» winrate, когда смотришь не на процент побед, а на edge.
Три стратегии — три разных фильма
early_entry: 21 сделка, winrate 61,9%, P&L +$46.86, средняя цена контракта $0.44. Эта стратегия вытащила весь прогон. 13 побед из 21. Средний edge — почти 10 процентных пунктов. Именно там, где моделька видела преимущество, оно оказалось реальным.
contrarian: 24 сделки, winrate 0%, P&L −$35.22, средняя цена $0.19. Катастрофа. Ноль побед на двух с лишним десятках сделок. И тут интересное: фильтр её почти не тормозил — отклонил всего 14 сделок со средним edge −7,6%. То есть по метрике edge её ставки выглядели разумно. А по результату — все до одной проиграли.
momentum_spike: 2 сделки, winrate 0%, P&L −$9.55, средняя цена $0.46. В первом прогоне она давала 92,6% побед и всё равно была в минусе. Теперь фильтр отсёк 815 её сделок (средний edge −44%, средний breakeven 94%) и пропустил только 2. Обе проиграны. Стратегия больше не генерит сделок — потому что почти всё, что она хочет взять, лежит в зоне «контракт уже дороже, чем шанс».
Вывод по contrarian важнее остальных: модель для неё не предсказывает цену. Она предсказывает шум. Фильтр edge работает только там, где внутренняя оценка вероятности хоть как-то связана с реальностью. У contrarian эта связь, похоже, отрицательная — модель смотрит на признаки разворота и стабильно ошибается. Поэтому стратегию надо не фильтровать, а удалить целиком.
Где деньги лежат на самом деле
Я разбил все прошедшие фильтр сделки по цене контракта.
$0.10–$0.20: 18 сделок, winrate 0%, P&L −$26.17.
$0.30: 13 сделок, winrate 38,5%, P&L +$29.05.
$0.40–$0.50: 12 сделок, winrate 50%, P&L +$4.40.
$0.60: 2 сделки, winrate 100%, P&L +$9.29.
$0.70: 2 сделки, winrate 0%, P&L −$14.50.
Самая очевидная зона — $0.30–$0.60. 27 сделок, 13 побед, суммарно +$42.74. Это и есть сладкое пятно Polymarket при такой модели.
Что по краям.
Ниже $0.30 — модель видит «почти невозможное событие с бонусом», но рынок прав. Все 18 сделок в зоне $0.10–$0.20 проиграны. Ни единой победы. Отрицательный edge 3 к 1.
Выше $0.70 — слишком мало данных, и обе сделки проиграны. Там, где модель уверена на 80%, нужна уверенность не на 80%, а на 85–90%, чтобы перекрыть breakeven. Этой маржи у бота сейчас нет.
Откуда взялся плюс
Честно: общий +$2.09 — это не «winrate 27,7% сработал». Это одна стратегия перебила две другие.
early_entry: +$46.86
contrarian: −$35.22
momentum_spike: −$9.55
Сложи — получится +$2.09.
Если бы я запустил только early_entry, был бы плюс $47. Но даже эта цифра на 21 сделке ещё ничего не значит — статистики мало, я поймал удачный кусок. Вывод здесь другой: фильтр edge работает там, где у модели есть реальное предсказание.
У early_entry оно есть — отсюда 61,9% побед на дешёвых контрактах. У contrarian его нет — 24 сделки, ноль побед, и фильтр её не спасал, потому что отделить несуществующий сигнал от шума фильтр не умеет.
Поэтому правильный вывод из второго прогона — не «winrate 27,7% приносит прибыль». А вот такой: winrate — всё ещё бесполезная метрика, и это второй раз, когда данные это показывают.
Первый раз — WR 80% при минус $90. Второй раз — WR 28% при плюс $2. Оба числа ничего не говорят о том, работает ли бот. Считать надо edge.
Что дальше
По текущим данным второй прогон ещё идёт — осталось около 7 часов из запланированных 96. Финальные цифры могут сместиться на одну-две сделки, но вывод уже очевиден.
План на третий прогон:
1. Убрать contrarian. Стратегия не лечится фильтром. Она лечится удалением.
2. Ограничить цены $0.25–$0.65. Зона, где есть edge. Снаружи — шум.
3. Поднять порог edge с 0.02 до 0.05. Отсев станет ещё жёстче, сделок будет меньше, но каждая — более осмысленная.
4. Запускать дольше. 89 часов × ~0.5 сделки/час — статистика ещё слишком маленькая, чтобы говорить «работает». 47 сделок — это не результат, а гипотеза.
Главный вывод
Первая статья закончилась тезисом: winrate без edge — признак скорого минуса.
Эта заканчивается другим: низкий winrate с положительным edge — признак того, что ты наконец начал видеть рынок.
Бот раньше выигрывал 80% сделок и терял деньги. Теперь он проигрывает 72% и начал зарабатывать. Отличие в том, что он перестал брать лёгкие ставки и начал брать правильные.
Это два разных бота. Один верил в свою непобедимость. Второй научился отказываться от сделки.
Второй ещё ничего не доказал — $2 на 89 часах это не доказательство, а шанс. Но это первый раз, когда шанс появился.
Что забрать из этой истории
Если вам нечего делать с BTC-ботами на Polymarket — это нормально, статья всё равно про вас. Потому что модель «winrate vs edge» работает везде, где вы оцениваете вероятность события и платите за вход цену.
Опционы: премия — это ваш breakeven, прогноз — ваш edge.
Ставки у букмекера: коэффициенты — это breakeven, ваша оценка — edge.
Маркетинг: CAC — это цена контракта, конверсия в LTV — это winrate. Проверять нужно не CAC и не конверсию по отдельности, а их разницу.
ML-классификаторы: точность — это winrate. Цена ошибки и цена пропуска определяют breakeven. Модель с 95% accuracy бывает хуже модели с 65%, если асимметрия потерь перевёрнута.Страхование, факторинг, венчур: та же математика.
Один вопрос, который стоит задавать любой системе со ставками: «Какая минимальная точность нужна, чтобы не уйти в минус, и насколько мы её на самом деле превышаем?» Всё остальное — шум вокруг этого вопроса.
Бот ещё работает, код лежит на сервере, третий прогон начнётся после того, как я напишу в него фильтр по ценовому коридору и выкину contrarian. Результаты — там же.