Блог им. romanz
0x6031b6eed1c97e853c6e0f03ad3ce3529351f96dПривет. Я знаю, что многие из вас следили за моим публичным P&L: +$868 862 за четыре месяца на коротких крипто-Up/Down рынках Polymarket. И многие написали мне один и тот же вопрос — «почему ты не торгуешь с 20 февраля?». Эта статья — детальный ответ. Я расскажу:
Ничего секретного — просто чистая математика и микроструктура.
Распространённое заблуждение: «раз он зарабатывает на BTC Up/Down рынках, значит у него хорошая модель направления крипты». Это неверно. Я делал прямо противоположное.
Моя стратегия — это дельта-нейтральный merge-арбитраж. Если упрощать в одно предложение:
На бинарном рынке я покупал обе стороны (Up и Down) одновременно так, чтобы их совокупная стоимость была меньше $1, а потом сразу обменивал пару на $1.
Никакого предсказания. Я зарабатывал на структурных дисбалансах в стакане, которые периодически возникали из-за неосторожных тейкеров.

Свойство CTF: Up + Down = $1 USDC всегда, в любой момент, до резолюции. Это арифметика самого контракта — комплект из одной Up и одной Down доли можно в любой момент «склеить» в $1 USDC через функцию mergePositions(). Это как двойник долларовой банкноты, разрезанной на две половинки: каждая по отдельности торгуется свободно, но вместе всегда = $1.
Соответственно, если в рынке кто-то продаёт Up за $0.49, а кто-то другой одновременно продаёт Down за $0.50 — я могу:
— Купить 1 Up за $0.49
— Купить 1 Down за $0.50
— Сжечь оба токена через merge() → получить $1.00 обратно
Чистая прибыль: $0.01 (1 % за минуты), без какого-либо ценового риска. Просто потому, что цены в стакане временно ушли в сумму ниже единицы.
В теории эффективный рынок должен мгновенно зашить Up + Down = $1. На практике на Polymarket-крипте это не так, потому что:
Именно эту разницу я и собирал — раз за разом, тысячи раз в час.
Пусть в моменте я могу взять Up по средневзвешенной цене pU и Down по pD. Покупаю по N долей каждой стороны, потом merge-ю их в N USDC. Профит на одну пару:

а суммарный за итерацию:

То есть алгоритм выгоден, только если pU + pD < 1. На моих 48 рынках за последний день торговли совокупная стоимость пары распределилась так:

То есть в среднем я собирал пару за $0.99 и сжигал её за $1. Маржа на пару — 0.81 % в среднем или 0.0081 USDC. Звучит мизерно — потому что мизерно. Вся стратегия держалась на двух вещах:

Это не «защита от больших проигрышей». Это математически оптимальный размер для дельта-нейтрального арбитража. Объясню почему.
Маржа за пару — около 0.008 USDC:

Но между первым и вторым ордером проходит ненулевое время Δt. За это время цена базового актива (BTC) может уйти, и зеркальная сторона может подорожать. Если я уже купил Up за $0.49, а пока выставлял Down, цена Down ушла с $0.50 до $0.55 — я больше не выйду в плюс.
Размер S моей сделки определяет ожидаемый slippage σ при тейке встречной ноги:

При размере S = $10 и типичной глубине стакана крипто-рынков ($100–500 USDC на лучшем уровне) σ ≪ π, и я в плюсе. При S = $100 — σ съедает всю маржу. Поэтому $10 — это асимптотический потолок, выше которого стратегия из дельта-нейтральной превращается в направленную.

Параллельно я получал ребейт от Polymarket за maker-сторону тех же ордеров (когда меня тейкали другие), что давало дополнительный +0.05–0.10 % к каждой паре. Но об этом ниже.
С учётом всего, мой ожидаемый профит за окно T секунд раскладывается на спред, maker-rebate, taker-fee и газ:

где:
Ключевой момент: до 5 января 2026 в этой формуле f = 0. Полностью. Polymarket не брал taker-fee на крипто-рынках. Газ был копеечный, ребейт — нулевой (но и за тейк не платили). Я мог собирать спред 1 − pU − pD = 0.008 — и это было всё, чистая прибыль.
С 5 января всё изменилось. И именно поэтому мы здесь.
Polymarket поэтапно перевёл крипто-рынки на платную модель (changelog):
Кривая комиссий выглядит так:

Ключевые цифры из официальной документации:

Формула, которую публикует сама платформа:

где C — количество акций, p — цена. Пик при p = 0.5, симметричен относительно 50¢.
Подставим в формулу. Пусть пара стоит $0.99 (типичная для меня), цена сторон ~$0.50 каждая. Тогда:
Итого: +0.010 − 0.036 = −0.026 USDC на пару. Стратегия из плюсовой стала минусовой — жёстко, без вариантов.

Зелёные столбцы — то, как я зарабатывал. Красные — что осталось от той же стратегии после введения комиссий. Любой рынок дороже $0.97 за пару теперь убыточен — а такие рынки составляли 18 из 48 моих рынков (там я держал направление). На «дешёвых» парах ($0.93-0.95) маржа осталась положительной, но их было всего 3 штуки в день.
Кто-то скажет: «Полу́чи maker-rebate (20 % от fees в крипто-категории) — и стратегия снова в плюсе».
Теоретически да. Если обе ноги исполняются как maker:

При тех же pU = pD = 0.5: 0.010 + 0.20 · 0.036 − g ≈ +0.017 USDC. Лучше, чем «до» по марже!
Но есть две причины, почему это не работает в реальности:
Я попробовал этот режим неделю-другую — и каждое утро находил, что бот за ночь сделал 50 сделок и потратил больше газа, чем заработал. После 20 февраля я просто остановил инстансы.

Чтобы было понятно, насколько резким был эффект:

С 6 марта (fees на 1h, 4h, 1d) даже теоретическая возможность исчезла. С 30 марта — про любой рынок крипты можно забыть.
Что характерно — это случилось не только со мной. По моим наблюдениям:
Это не случайность. Это сознательное решение Polymarket: они написали в своём ченджлоге, что цель fees — «защитить ликвидность от latency arbitrage». Перевод: их раздражали именно мы. Раз мы не платили fees, наша скорость и количество сделок были «бесплатным» съеданием их пользователей-ритейлеров. Они закрыли эту лазейку.
Я их понимаю. С точки зрения долгосрочного здоровья платформы — это правильное решение. С точки зрения моего бизнеса — это смерть стратегии.
Несколько раз я слышал предложения «адаптируйся». Объясню по пунктам, почему адаптация бессмысленна:
«Уйди в категории без fees — например, геополитику.» Геополитические рынки на Polymarket — это рынки с резолюцией через дни-недели-месяцы, не минуты. Дельта-нейтральный арбитраж там тоже работает (та же Up + Down = $1), но капитал заморожен в десятки раз дольше. ROI/время становится в сотни раз хуже. Кроме того, ликвидность тоньше, а оракул-риски (риск спорной резолюции) — выше. Не моя ниша.
«Перейди на Kalshi.» Kalshi — это регулируемая CFTC-биржа в США с обязательным KYC, отдельным API, фиксированной комиссией $0.01–0.07 за контракт и ограничениями на размер позиций. Технически другой мир. Кроме того, законодатели обсуждают Prediction Markets Are Gambling Act, который может вообще запретить event-контракты на CFTC-платформах. Слишком регуляторно нестабильно.
«Переделай в чистый предсказательный бот.» Это не «адаптация», это другая стратегия. Чтобы делать direction-trading на 5–15 минутных BTC-рынках, нужна предсказательная модель с эджем выше 1.8 % после комиссии — то есть AUC > 0.55 на классификации цен. У меня такой модели нет, и строить её — задача на 6 месяцев. Если бы я хотел этим заниматься, я бы изначально пошёл на Binance, а не на Polymarket.
«Жди пока fees отменят.» Не отменят. Это не временная мера. Полный roadmap Polymarket — расширение fees на ВСЕ категории кроме геополитики. К концу марта это уже почти реальность.
Если коротко — продолжаю торговать ботами на Polymarket-другие стратегии, алгоритмы пока живые, но это вопрос времени.
Спасибо всем, кто следил. Я никуда не пропадаю — буду писать про то, что строю дальше.
— gabagool22 апрель 2026
Без бутылки тут никак)
Выходит все что писали про вашу стратегию в интернете были только неверными догадками трейдеров, целые сообщества создавались по изучению вашей стратегии))) Оказалось все гениально и просто.
Можете почитать тут на западном форуме один программист месяцы потратил на определение механики и альфы вашей логики www.reddit.com/r/PredictionsMarkets/comments/1r7oylh/4_months_reverseengineering_gabagool22_what_i/
Мой друг, Вы абсолютно правы — вопрос нетривиальный, и статья намеренно его обходит, потому что ответ сложнее, чем базовая арбитражная логика.
Почему ASK(Up) + ASK(Down) < 1 вообще возможен
Polymarket использует CLOB (Central Limit Order Book) — обычную биржевую книгу заявок, а не AMM. Это принципиально. В CLOB каждый маркетмейкер выставляет свои лимитные заявки независимо:
Маркетмейкер А выставил SELL на Up по $0.49 — 40 секунд назад
Маркетмейкер Б выставил SELL на Down по $0.50 — 25 секунд назад
Эти ордера висят в книге независимо друг от друга. Платформа не проверяет в режиме реального времени, что ASK(Up) + ASK(Down) ≥ $1. Никакого on-chain ограничения нет. За это время цена BTC двинулась, оба маркетмейкера ещё не успели обновить котировки — окно открыто.
Сумма двух ask-цен < 1 — это не нарушение никакого инварианта, это просто стечение двух несинхронизированных устаревших ордеров. После того как бот их обе сбивает, окно закрывается. Но пока рынок движется, такие окна появляются снова и снова — именно поэтому бот работал на частоте 48.6 сделок/мин.
Вы правы в том, что это главная операционная проблема стратегии. У меня решение было реализовано через несколько уровней защиты, о которых я не хочу распространяться публично, так как это конкурентная информация.
Вы правы в том, что полностью безостаточная стратегия невозможна при CLOB. Это фундаментальный execution risk любой multi-leg арбитражной стратегии. Настоящий ответ не «как избежать остатка», а «как сделать так, чтобы ожидаемый убыток от остатка был меньше ожидаемой прибыли от успешных пар»:

При $10, скорости < 100 мс и 28 000+ итерациях это неравенство выполнялось — до тех пор, пока комиссии не сделали π_pair отрицательным, и тогда весь расчёт рассыпался.
Фишка в том, что у Poly два стакана на бинарный исход. Т.е вместо одного стакана с bid/ask на ставку Bitcoin вырастет, тут два отдельных стакана: Up — вырастет, Down — упадет. Причем стаканы независимые, платформа не матчит их между собой.
Т.е автор одновременно покупал и Up, и Down в моменты, когда появлялась рыночная неэффективность и сумма цен этих двух исходов была меньше 1. Дальше он просто вызывал метод смарт-контракта merge, который закрывал позицию Up + Down и возвращал ему 1.
Разница между тем, за сколько покупалось Up + Down, и тем, сколько получечно обратно через merge, была прибылью.
Привет, легенда. Советую присмотреться к блокчейну solana, проинвестировать туда, так сказать.
Вот человек на полимаркете polymarket.com/profile/@0xe1d6b51521bd4365769199f392f9818661bd907 сделал $600k за месяц, на тех же почти крипторынках и комиссии не смущают.
Кстати, будут какие-то пруфы что ты действительно Gabagool22 ?
Мы мониторим всех топовых трейдеров на полимаркете, так же как и меня мониторят.
Трейдер polymarket.com/profile/@0xe1d6b51521bd4365769199f392f9818661bd907 не является исключением, его стратегия нам известна, в принципе сейчас мы по ней и работаем как и 80% наших конкурентов.
Роман, привет!
Как делаете бэктесты для своих ботов на Polymarket? Именно симуляцию исполнения ордеров — очереди, частичное исполнение и вот это вот все, что в live режиме обычно сильно отличается от paper trading
Александр Лисов,
Приветствую. Вопрос интересный, думаю написать развернутую статью в ближайшее время, исходя из опыта 90% трейдеров не понимают как тестировать, допускают ошибки, на реале сливают депозит.
У меня несколько симуляторов разрабатывались под определенную стратегию. Если базовый принцип то симулятор работает не по потоку трейдов, а по полной L2-книге — snapshot каждые 250 мс.
Ключевые механики, без которых paper врёт вдвое-трое:
— FIFO queue. Maker-лимитка получает позицию в очереди, реальные тейки из истории едят с головы. Без этого fill-rate завышен в 3–5 раз.
— Частичные fill-ы. Остаток ордера сохраняет queue position; при cross — снимается.
— Латентность из реальных замеров (p50/p95/p99). Решение принято по одной книге, исполнение происходит по другой.
— Adverse selection penalty. Если за 500 мс после fill цена прошла через уровень против меня — штраф 0.5·tick. Иначе maker-PnL завышен в 1.5–2 раза.
— Self-impact. Мои тейки удаляют объём из книги до следующего snapshot.
Перед запуском: walk-forward (не random split), стресс-тесты на волатильные дни, shadow mode 7–14 дней (бот считает ордера на live, но не шлёт), затем canary 1% размера. Расхождение модели с реалом >15% = что-то не учтено.
Если после всех поправок Sharpe > 2 на out-of-sample — можно запускать. Если коротко то как то так.
Василий Петров,
Пробовал, в декабре 2025 — НФЛ-плейофф и НБА live. Идея та же: купить YES + NO на момент, когда сумма < $1.00. Свернул через 2 недели.
Три причины:
1. Adverse selection в разы хуже, чем на крипте. В лайв-спорте против тебя стоят синдикаты с прямым видеосигналом со стадиона (low-latency feeds типа BetGenius, Sportradar). Они видят пас или фол на 1.5–4 секунды раньше публичного API Polymarket. Если твоя maker-лимитка исполнилась — это почти гарантированно потому, что они уже знают результат розыгрыша, а ты ещё нет. Toxic-fill rate был ~70% против ~30% на крипте.
2. Ликвидность фрагментирована. На BTC-5m в каждый момент торгуется один глобальный рынок с глубиной $200–500 на лучшем уровне. В НБА live — десятки микрорынков (на каждый next-score, quarter winner, total points), у каждого глубина $20–50. Размер $10 уже двигает цену, $100 невозможно засунуть. Стратегия не масштабируется.
3. Дискретность событий ломает дельта-нейтральность. Крипта движется непрерывно — между моими двумя ордерами цена меняется плавно. В спорте между ними может произойти гол / тачдаун / удаление, и YES прыгает с $0.50 на $0.85 за миллисекунду. Я успевал купить YES за $0.49, а NO в момент исполнения уже стоил $0.60 — пара = $1.09 при минусе по обеим сторонам. Это не slippage, это разрыв, который никакой queue management не страхует.
Вывод по спорту: базовый merge-арбитраж не работает. Что может работать — направленные стратегии на медленных рынках (тотал матча, ML-предматчевый), но это уже не моя зона. Там нужны ML-модели на статистике, которые я не строил.
Сейчас даже эту нишу убили комиссии (с 30 марта 2026 fees распространены почти на все категории, включая спорт). Так что вопрос риторический — экосистема в целом схлопнулась для дельта-нейтральных стратегий