Polymarket Bot Tutorial · Глава 11 из 32

Как работают рынки NegRisk с multiple outcomes на Polymarket: механика sum-to-1, флаг negRisk в CLOB orders, почему YES legs в NegRisk не взаимозаменяемы и лучшие практики исполнения.

Что покрывает эта глава

Рынки NegRisk - это механизм Polymarket для mutually exclusive multi-outcome событий: кандидаты на выборах 2024 года, победитель Premier League, tournament brackets. Большинство bots с первой попытки обрабатывают их неправильно, потому что размещение order требует флага, который silently dropped, если его не указать. В этой главе мы разбираем механику и production code path.

  • Что означает NegRisk (mutually exclusive Yes legs)
  • Почему сумма YES остается около 1 USD
  • Параметр neg_risk при размещении order
  • Хеджирование across NegRisk legs
  • Когда NegRisk arb работает (и когда нет)
  • Граничные случаи resolution
  • Code: размещение NegRisk order

Что означает NegRisk (mutually exclusive Yes legs)

NegRisk (сокращение от "negative risk") - это механизм Polymarket для событий с несколькими mutually exclusive outcomes: только один может resolve YES. Presidential Election 2024 была одним событием с NegRisk: позиция Trump-YES и позиция Harris-YES не могут обе принести payout.

Под капотом: у одного NegRisk event есть один parent question_id и N child markets, у каждого свой YES/NO. Exchange enforces sum-to-1 across the YES legs при resolution - ровно один resolves to 1.0, а остальные to 0.0.

С точки зрения bot, YES leg каждого outcome торгуется как отдельный token, со своей book и price. Флаг negRisk при размещении order (ниже) направляет trade в NegRisk-specific exchange contract; если его не указать, order отправится в standard CTF exchange и silently fails to settle correctly.

Почему сумма YES остается около 1 USD

Arbitrageurs постоянно удерживают сумму YES prices across all NegRisk legs примерно на уровне ≈ 1.0. Если Trump-YES стоит 0.55, Harris-YES - 0.40, и других серьезных candidates нет, недостающие 0.05 - это примерно implied probability "any other outcome." Когда недостающая доля превышает implied tail probability, возникает arb opportunity: buy all YES legs proportionally, sum to less than 1.0, зафиксировать разницу.

На практике arb очень конкурентный - visible discount обычно составляет 1-2 cents на liquid events и исчезает в течение минут после открытия. Кроме того, arb ограничен liquidity: можно lock in $1k discount, но не $20k.

Большинство bots не занимаются NegRisk arb; они торгуют отдельные legs и им нужно просто корректно учитывать флаг negRisk для execution.

Параметр neg_risk при размещении order

В CLOB v2 SDKs размещение order принимает flags object с boolean negRisk. Значение должно соответствовать типу market:

// Node (CLOB v2)
await client.createAndPostOrder(
  { tokenID, price: 0.45, size: 10, side: Side.BUY },
  { tickSize: '0.01', negRisk: true },   // <-- TRUE for NegRisk
  OrderType.FOK
);

Флаг также является параметром в daemon op signature, который используют большинство production bots:

{ op: 'buy', tokenID, price, size, neg_risk: true, order_type: 'FOK' }

Source of truth: market.negRisk из Gamma API. Всегда читайте его; никогда не hardcode. Рынок BTC-up/down - это negRisk: false (binary); рынок победителя турнира - это negRisk: true (multi-outcome). Перепутать это значит отправить order в неправильный exchange и получить transfer failures при settlement.

Хеджирование across NegRisk legs

Если у вас есть Trump-YES по 0.50 и вы хотите hedge против проигрыша Trump, внутри NegRisk есть два варианта.

Buy competing NO leg (например, Harris-NO по 0.45). Это pays out, если Harris проиграет, а значит в том числе и при победе Trump. Asymmetric - payoff при победе Trump, но worthless, если Trump проиграет третьему candidate.

Buy all competing YES legs в соответствующих пропорциях. Если ваш portfolio полностью сбалансирован across NegRisk legs, exposure хеджировано: ровно один leg принесет payout. Это synthetic-cash position.

Hedging instrument, который работает не так, как ожидается: NO leg в вашем existing market. Trump-NO коррелирует с другими YES legs, но не идеально - если resolution это "Other", и ваш Trump-YES, и ваш Trump-NO оба уходят в 0. NegRisk legs - это не pure binaries.

Когда NegRisk arb работает (и когда нет)

NegRisk arb "sum to less than 1.0" работает, когда выполняются три условия.

  1. Все legs liquid: у каждого leg, который нужно купить, есть как минимум $1k depth по нужной цене. Arb требует одновременно hit multiple books; один illiquid leg ломает всю сделку.
  2. Spread достаточно узкий: cumulative spread-tax across all legs должна быть меньше discount. Пять legs со spread 0.5c каждый - это 2.5c cost; если discount 1.5c, arb отрицательный.
  3. Вы можете удерживать до resolution: NegRisk arb - это settlement arb. Вы получаете payout, когда parent event resolves; если это через 6 месяцев, ваш capital locked.

Для 95% bots NegRisk arb - не стратегия. Остальные стратегии торгуют отдельные legs, а флаг negRisk нужен только для корректной маршрутизации order.

Граничные случаи resolution

Два edge cases, о которых стоит помнить, удерживая NegRisk позиции до resolution.

Outcomes "None of the above": некоторые NegRisk events включают явный leg "Other" или "None of the above". Если фактический ответ не совпадает ни с одним named leg, победителем становится он. Bots, которые не моделируют явный Other leg, иногда считают это degenerate case и пропускают payout.

Disputed resolutions: resolution в NegRisk проходит через UMA, как и у любого другого market. Если есть dispute, market может оставаться unresolved 24-72 hours. В этот период front-end может показывать "resolved", хотя on-chain payouts еще не выставлены. Читать payoutNumerators в CTF contract - единственный безопасный способ подтвердить это.

Code: разместить NegRisk order

Полный Node пример размещения buy в NegRisk YES leg.

import { ClobClient, Side, OrderType } from "@polymarket/clob-client-v2";
import { Wallet } from "ethers";

const c = new ClobClient({
  host: "https://clob.polymarket.com", chain: 137,
  signer: new Wallet(process.env.PRIVATE_KEY),
  creds: { key: K, secret: S, passphrase: P },
  signatureType: 2,
  funderAddress: process.env.POLY_FUNDER,
});

// market.negRisk === true (verified via Gamma earlier)
const resp = await c.createAndPostOrder(
  { tokenID: "<YES_TOKEN_ID>", price: 0.42, size: 25, side: Side.BUY },
  { tickSize: "0.01", negRisk: true },
  OrderType.FOK
);
console.log(resp.status, resp.orderID);

Самый распространенный bug у начинающих builders: не указать negRisk: true на NegRisk market. Order принимается CLOB, но settlement fails. Всегда читайте market.negRisk из Gamma и передавайте его дальше; никогда не полагайтесь на догадки по названию question.

Часто задаваемые вопросы

Что такое NegRisk market на Polymarket?
Это multi-outcome market, где YES legs mutually exclusive (только один может resolve YES). Сумма всех YES prices остается около 1 USD, потому что выигрывает ровно один outcome. Примеры: "2026 NBA Champion" (побеждает одна команда), "Next Fed chair" (один человек).
Нужно ли задавать флаг в order для торговли NegRisk?
Да. Order requests для NegRisk markets должны включать neg_risk: true (Python: передайте в OrderArgs; Node: передайте в CreateOrderOptions). Если забыть флаг, order будет отклонен или, что хуже, размещен в неправильный order book. Мы столкнулись с этим exact bug в production - commit 06deaef в истории нашего trader.
Могу ли я арбитражить NegRisk legs, если их сумма меньше 1?
Да - если все YES legs в net of fees суммируются меньше 1.00, покупка каждого leg гарантирует profit. Такой arbitrage real, но крайне редкий и обычно снайпится за секунды более быстрыми bots. Рассматривайте его как curiosity, а не как strategy.
Как происходит resolution у NegRisk market?
Через тот же UMA optimistic oracle process, что и у любого другого Polymarket market. Победивший leg pays 1 USD за share, все проигравшие legs pays 0. Обычно resolution полностью закрывает весь NegRisk event сразу.
Комиссии NegRisk отличаются от binary markets?
Тот же fee schedule, что и у binary: 0% maker, 0.75-1.80% taker в зависимости от категории. Также действует maker rebate. Единственное практическое отличие - вам нужно управлять N order books вместо 1.
Могу ли я hedge YES position, купив другие NegRisk legs?
Да - это и есть NegRisk-specific hedge. Если вы long один leg и хотите lock in current PnL, купите остальные legs в пропорции. Net cost должен быть (1 - price вашего YES leg), с учетом fees. Мы не рекомендуем это как primary strategy, потому что fees обычно съедают edge хеджа.