Рынки предсказаний — это казино для тех, кто не умеет считать, и золотая жила для тех, кто умеет. Здесь торгуют не активами, а вероятностями будущего. Арбитраж — единственный способ выжать из этих площадок системную прибыль, игнорируя шум новостей.
Математика охоты на спред
Арбитраж на Polymarket или Kalshi строится на поиске «кривых» котировок, когда совокупная стоимость контрактов «Да» и «Нет» не равна 1. Если суммарно вы покупаете исход за $0.95, а выплата при реализации составляет $1.00, ваша доходность — 5.2%. Это «безрисковая» сделка, если исключить риск исполнения (leg risk).
Формула реального профита:Net Profit = (1 - Price_Yes - Price_No) - (Taker Fees + Network Gas)
Если итоговое значение в процентах ниже 2%, вы работаете в убыток из-за стоимости транзакций и времени, потраченного на мониторинг.
Практическая архитектура бота
Забудьте про веб-интерфейс. Вам нужен локальный агент, который опрашивает API площадок напрямую. Ниже представлен рабочий шаблон на Python, который реально забирает данные и считает дельту.
import requests
import time
# Инициализируем сессию для скорости
session = requests.Session()
def get_best_bid_ask(market_id):
"""
Получаем стакан с Polymarket (через их API)
"""
url = f"https://clob.polymarket.com/orderbook/{market_id}"
response = session.get(url).json()
# Возвращаем лучшие цены
return float(response['bids'][0][0]), float(response['asks'][0][0])
def scan_arbitrage(market_yes, market_no):
# Берем цены Ask (покупка)
_, ask_yes = get_best_bid_ask(market_yes)
_, ask_no = get_best_bid_ask(market_no)
total_cost = ask_yes + ask_no
if total_cost < 0.96: # Учитываем 4% на газ и проскальзывание
print(f"!!! АРБИТРАЖ: {total_cost:.4f} !!!")
# Здесь вставляется логика вызова вашего кошелька
else:
print(f"Спред узкий: {total_cost:.4f}")
# Пример ID рынка (нужно менять под актуальные события)
# scan_arbitrage('2187654321', '2187654322')
Скрытые ловушки и профессиональный сленг
- Resolution Delay: Самая частая боль. Рынок может закрыться, но выплата заблокирована из-за спора в UMA оракуле. Ваши средства «заморожены» на срок от 3 до 14 дней. Арбитраж — это всегда работа с оборотным капиталом.
- Order Book Ghosting: На площадках часто висят ордера-призраки. Вы видите цену $0.40, но при попытке купить объем, цена мгновенно прыгает до $0.45. Это работа алгоритмических маркет-мейкеров (AMM), которые защищают свой спред.
- Cross-Platform Skew: На Kalshi цены часто смещены относительно Polymarket из-за разного состава участников. В США (Kalshi) трейдеры агрессивнее хеджируют политические риски, в то время как Polymarket — это дикий рынок крипто-энтузиастов. Сравнивайте корреляцию: если BTC проседает на бирже, Polymarket реагирует быстрее, чем Kalshi.
Таблица операционной эффективности
| Сценарий | Риск | Профитность | Рекомендация |
|---|---|---|---|
| Внутриплатформенный | Низкий | 1-2% | Не стоит затрат энергии |
| Кросс-платформенный | Средний | 3-7% | Оптимально для ботов |
| Опционный хедж | Высокий | 10%+ | Только для профи (нужен капитал) |
Как не потерять всё на старте
Главный совет: не выходите на рынки с малым объемом. Если ликвидность на обеих сторонах менее $50,000, ваш вход в сделку спровоцирует движение цены против вас (slippage). Ищите события с суточным оборотом от $500k.
Технический нюанс: Если вы используете Polygon (Polymarket), никогда не делайте ставку с ценой газа по умолчанию. Если вы торгуете арбитраж, вы конкурируете с MEV-ботами. Используйте maxPriorityFeePerGas выше рыночного уровня, чтобы ваш ордер гарантированно ушел в следующий блок.
Чтобы арбитраж не превратился в медленное сжигание депозита на комиссиях, нужно сместить фокус с «ловли спредов» на «управление исполнением». В этой дисциплине побеждает не тот, кто первым нашел разницу в цене, а тот, чей бот быстрее проходит стадию компиляции транзакции и отправки в мемпул.
Анатомия исполнения: Почему ваш код проигрывает
Проблема большинства скриптов — последовательное исполнение. Вы делаете request на Polymarket, получаете ответ, затем request на Kalshi, считаете, и только потом отправляете транзакции. За это время маркет-мейкеры, использующие WebSocket-потоки и предзагруженные ордера, уже сдвинули стакан.
Как это делают профессионалы:
- WebSocket вместо REST: Полинг (polling) — это вчерашний день. Вы должны держать открытые сокеты для обоих ордербуков. Получение обновления в режиме real-time экономит от 200 до 800 мс.
- Multicall/Batching: Вместо двух транзакций в сеть, используйте смарт-контракт-прослойку. Контракт принимает ваши ордера в одном вызове и выполняет их атомарно. Если одна сторона не исполнилась, контракт откатывает вторую (Revert). Это защищает от «одноногого» арбитража, когда вы купили одну сторону, а вторая стала невыгодной.
Пример оптимизированного исполнения (Solidity-концепт)
Если вы работаете в EVM-сетях, ваш лучший друг — delegatecall. Это позволяет исполнить арбитраж внутри одного атомарного действия.
// Концептуальный фрагмент для исполнения арбитражных ордеров
function executeArbitrage(
address target,
bytes calldata data1,
bytes calldata data2
) external payable {
// Выполнение двух покупок в одном бандле
(bool success1, ) = target.call{value: msg.value / 2}(data1);
(bool success2, ) = target.call{value: msg.value / 2}(data2);
// Если арбитраж не сработал, выходим без потерь
require(success1 && success2, "Arbitrage execution failed - reverting");
}
Малоизвестные тонкости: «Event-Driven» торговля
На рынках предсказаний цена часто «прыгает» не из-за рыночных сил, а из-за изменения статуса оракула или публикации внешней новости.
- Опережающие индикаторы: Если вы торгуете политические рынки, привяжите бота к фиду новостных агентств (через API вроде Bloomberg или специализированные Telegram-скорщики). Цена на Polymarket реагирует на новость за 1–3 секунды до того, как основной массив трейдеров успеет отреагировать. Ваша задача — быть в позиции до того, как новость «отработала» в стакане.
- Синтетический арбитраж: Иногда выгоднее не арбитражить «Да/Нет» напрямую, а использовать фьючерсы. Если вероятность события на рынке предсказаний резко выросла, а фьючерс на соответствующий индекс не сдвинулся — это сигнал, что рынок предсказаний «перегрет». Вы шортите рынок предсказаний и покупаете фьючерс. Когда «хайп» спадет, вы закроете обе позиции с профитом.
Чек-лист перед запуском капитала:
- Газ-бенчмаркинг: Просчитайте стоимость газа при 50 Gwei и 200 Gwei. Если профит арбитража покрывает только 50 Gwei, а сеть загружена — отключайте бота.
- Лимит проскальзывания: Никогда не используйте рыночные ордера (Market Orders) при арбитраже. Только лимитные, выставленные чуть выше лучшего аска. Если цена ушла — лучше пропустить сделку, чем войти в «минусовое» исполнение.
- Анализ «грязных» данных: Некоторые площадки показывают в API «средневзвешенную цену», которая не соответствует реальности в стакане. Всегда парсите asks и bids напрямую, игнорируя колонку last_price.
Арбитраж здесь - это не поиск «грааля», а монотонная работа по математическому преимуществу. Чем меньше эмоций и больше кода, тем выше вероятность, что ваш баланс USDC будет расти быстрее, чем инфляция доллара.