Polymarket Bot Tutorial · Глава 21 из 32
Стратегии bot для binary Yes/No markets на Polymarket: standard event contracts, жёстко ограниченное leverage 1x, масштабирование через breadth портфеля, распространённые ошибки (chasing 0.99) и code skeleton.
Что охватывает эта глава
Binary (Yes/No) markets - это основа Polymarket. Большинство стратегий строится именно здесь. В этой главе рассматриваются cap по leverage, ловушка цены 0.99, в которую попадают новички, и pattern breadth-not-size, к которому приходят production bots.
- Что покрывают binary markets
- Cap по leverage 1x (и как масштабироваться в обход него)
- Распространённая ошибка: chasing 0.99 prices
- Portfolio breadth как effective leverage
- Risk на market против risk на portfolio
- Code: сканирование binary markets и размещение sized buys
Что покрывают binary markets
Binary markets - это основа Polymarket: один yes/no вопрос с двумя outcome tokens. "Сможет ли Трамп выиграть выборы 2024 года?" - это binary; "Кто выиграет выборы 2024 года?" с 5 кандидатами - это NegRisk (глава 11).
Два outcome tokens (YES и NO) в binary market в сумме дают 1.0 минус небольшой spread tax. Можно покупать любую сторону; у каждой стороны есть свой order book. Pricing симметричен - покупка YES по 0.40 эквивалентна продаже NO по 0.60 в terms expected payoff.
Большинство не-tournament markets на Polymarket - бинарные: вопросы о погоде, исходы отдельных политических событий, отдельные sports games, single price-target crypto questions. Pattern bot здесь в основном одинаковый.
Cap по leverage 1x и как масштабироваться в обход него
Binary markets на Polymarket имеют leverage 1x: вы тратите $40, чтобы купить 100 shares по 0.40; максимальный payout - $100. Margin и liquidation здесь нет. Capital efficiency ниже, чем у perp futures (глава 24), где доступно 2-25x.
Масштабирование в обход cap 1x означает одно из трёх: (1) размещать больше capital across markets - диверсифицировать, а не lever, (2) циклически использовать capital through resolving markets - capital освобождается при каждом resolution и переходит в следующий market, (3) использовать NegRisk markets, где arb на sum-to-1 может создавать effective synthetic leverage.
Правильная рамка для binary strategy: low-leverage, high-breadth. 50 small positions в 50 markets - типичный профиль зрелого bot, а не 5 big positions в 5 markets.
Распространённая ошибка: chasing 0.99 prices
Самый частый провал binary-bot: купить near-resolution heavy favorite по 0.99, ожидая лёгкий payout в 1 cent при YES resolution.
Математика: при 0.99 вы платите 99c, чтобы выиграть 1c. Failure rate 1% (1 из 100 markets), при котором вы теряете 99c на каждом проигрыше, стирает 99 успешных выигрышей по 1c. Risk-reward ratio на этом экстремуме крайне жёсткое.
Capacity тоже проблема. Order book на 0.99 тонкий; если выставить meaningful size, цена уходит к 0.995 или выше, и без того слабый edge ещё сильнее ухудшается.
Избегайте markets с ценой > 0.92, если у вас нет specific strategy, разработанной под tail-yield arb profile. Большинству binary bots не стоит покупать выше 0.85.
Portfolio breadth как effective leverage
Вы не можете leverage отдельные positions, но можете leverage variance characteristics портфеля, удерживая много uncorrelated bets одновременно.
50 positions по $20 - это $1,000 в работе. Если win rate 55% при economics +3c/-4c, ожидаемый daily PnL равен (0.55 × 3 − 0.45 × 4) × 50 × $0.20 = $1.50 expected, при ограниченной variance. Та же expected return, но намного меньший drawdown, чем у одной позиции на $1,000.
Ограничение: positions должны быть действительно uncorrelated. 50 NFL favorites в один уикенд - это не 50 independent bets; в основном это одна weather-and-favorite bet, коррелирующая между games. Диверсифицируйте по sport, event type, time horizon.
Risk на market против risk на portfolio
Два risk cap, и оба обязательны.
- Per-market: максимум $X на market независимо от edge. Ограничивает катастрофический single-market loss. Типичное значение: $25-100 на market.
- Portfolio: максимальный total capital, размещённый в любой момент времени. Ограничивает total drawdown в периоды неудачи по всему портфелю. Типичное значение: 50-70% wallet balance.
Cap per-market важнее, потому что он ограничивает blast radius любой отдельной bug или ситуации edge-disappears. Portfolio cap - это sanity check; при 50+ positions закон больших чисел обычно удерживает вас в пределах, даже если его нет.
Оба cap должны enforced в code, а не в голове. Bot без enforced caps со временем найдёт конфигурацию, в которой размещает 90% capital в одном market, и потеряет его.
Code: scan binary markets и place sized buys
Reference: scan top-volume binary markets, filter valid setups, place sized FOK buys.
def scan_and_buy():
events = gamma_top_events(limit=50, active=True, closed=False)
for ev in events:
for m in ev.get("markets", []):
if m.get("negRisk"): continue # binaries only
outs = json.loads(m["outcomes"])
prices = [float(p) for p in json.loads(m["outcomePrices"])]
for i, out_name in enumerate(outs):
if not setup_qualifies(m, i, prices[i]): continue
tok = json.loads(m["clobTokenIds"])[i]
size = compute_size(m, prices[i])
if size < 5: continue
place_fok(tok, "BUY", prices[i] + 0.02, size, neg_risk=False)
def setup_qualifies(m, idx, price):
return 0.10 <= price <= 0.85 # avoid extremes
Функция setup_qualifies - это место, где живёт ваша strategy. Wrapper - это просто plumbing.





