Polymarket Bot 教程 · 第 11 章,共 32 章

Polymarket 上 NegRisk 多结果市场如何运作:总和趋近 1 的机制、CLOB 订单中的 negRisk 标志、为什么不同 NegRisk 的 YES 仓位不可互换,以及执行最佳实践。

本章涵盖内容

NegRisk 市场是 Polymarket 处理互斥多结果事件的机制-例如 2024 年大选候选人、英超冠军、锦标赛对阵表。大多数 bot 第一次都无法正确处理,因为下单时需要一个标志,而如果缺失,这个标志会被静默丢弃。本章涵盖其机制以及生产代码路径。

  • NegRisk 是什么意思(互斥的 Yes 仓位)
  • 为什么 YES 总和会保持在接近 1 USD
  • 下单中的 neg_risk 参数
  • 跨 NegRisk 仓位的对冲
  • NegRisk arb 何时有效(以及何时无效)
  • 结算边缘情况
  • 代码:下一个 NegRisk 订单

NegRisk 是什么意思(互斥的 Yes 仓位)

NegRisk(“negative risk”的缩写)是 Polymarket 处理多个互斥结果事件的机制-只能有一个结果结算为 YES。2024 年总统选举就是一个 NegRisk 事件:Trump-YES 仓位和 Harris-YES 仓位不可能同时获赔。

底层机制是:一个 NegRisk 事件有一个父级 question_id 和 N 个子市场,每个子市场都有自己的 YES/NO。交易所会在结算时强制所有 YES 仓位的总和为 1-恰好一个结算为 1.0,其余都为 0.0。

从 bot 的角度看,每个结果的 YES 仓位都像一个独立 token,有自己的订单簿和价格。下单中的 negRisk 标志(见下文)会把交易路由到 NegRisk 专用的交易所合约;如果缺少它,订单会被发送到标准 CTF 交易所,并且在结算时静默地无法正确结算。

为什么 YES 总和会保持在接近 1 USD

套利者会持续将所有 NegRisk 仓位的 YES 价格总和维持在 ≈ 1.0。如果 Trump-YES 是 0.55、Harris-YES 是 0.40,而且没有其他有竞争力的候选人,那么缺失的 0.05 大致就是“其他任何结果”的隐含概率。当缺失部分超过隐含尾部概率时,就存在套利机会:按比例买入所有 YES 仓位,总成本低于 1.0,锁定差价。

实际上,这种套利竞争非常激烈-在流动性好的事件里,明显折价通常只有 1-2 美分,并且会在开盘几分钟内消失。套利还受流动性限制:你可能只能锁定 1,000 美元的折价,而不是 20,000 美元。

大多数 bot 并不是在做 NegRisk arb;它们是在交易单独仓位,而执行正确性需要遵守 negRisk 标志。

下单中的 neg_risk 参数

在 CLOB v2 SDK 中,下单会接受一个带布尔值 negRisk 的 flags 对象。这个值必须与市场类型匹配:

// 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
);

这个标志也是大多数生产 bot 使用的 daemon op 签名中的一个参数:

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

真实来源:来自 Gamma API 的 market.negRisk。一定要读取它,绝不要硬编码。BTC 上/下市场是 negRisk: false(binary);锦标赛冠军市场是 negRisk: true(多结果)。接错线会把订单发到错误的交易所,并在结算时导致转账失败。

跨 NegRisk 仓位对冲

如果你持有 0.50 的 Trump-YES,并想对冲 Trump 下跌风险,在 NegRisk 内有两种选择。

买入竞争对手的 NO 仓位(例如 Harris-NO,价格 0.45)。如果 Harris 落败就会获赔,其中包括 Trump 获胜的情况。它是非对称的-Trump 获胜时有收益,但如果 Trump 输给第三方候选人则可能失效。

按比例买入所有竞争对手的 YES 仓位。如果你的组合在所有 NegRisk 仓位上完全平衡,你的风险敞口就被对冲了:恰好会有一个仓位获赔。这就是 synthetic-cash 头寸。

但有一种并如预期有效的对冲工具:你当前市场的 NO 仓位。Trump-NO 与其他 YES 仓位相关,但并非完全相关-如果结局是“Other”,那么 Trump-YES 和 Trump-NO 都会变成 0。NegRisk 仓位并不是纯粹的二元仓位。

NegRisk arb 何时有效(以及何时无效)

“总和小于 1.0” 的 NegRisk arb 只有在满足以下三个条件时才成立。

  1. 所有仓位都有流动性:你需要买入的每个仓位在目标价格附近至少有 1k 美元深度。套利需要同时吃掉多个订单簿;只要有一个流动性不足,整笔交易就会失败。
  2. 价差足够紧:所有仓位累计的 spread-tax 必须小于折价。五个仓位每个 0.5c 的价差,成本就是 2.5c;如果折价只有 1.5c,那么套利就是负收益。
  3. 你可以持有到结算:NegRisk arb 本质上是结算套利。你要等父级事件结算后才会拿到 payout;如果结算要 6 个月,那么你的资金就会被锁定。

对于 95% 的 bot 来说,NegRisk arb 不是主要策略。剩下的策略是在交易单独仓位,而 negRisk 标志只是为了确保订单正确路由。

结算边缘情况

在持有 NegRisk 仓位并持有到结算时,有两个需要注意的边缘情况。

“None of the above” 结果:某些 NegRisk 事件包含一个明确的 “Other” 或 “None of the above” 仓位。如果实际答案不匹配任何已命名仓位,这个仓位就是赢家。不建模显式 Other 仓位的 bot 有时会把它当成退化情况,从而错过 payout。

有争议的结算:NegRisk 结算和其他市场一样也要经过 UMA。如果发生争议,市场可能会在 24-72 小时内保持未结算状态。在这段时间里,前端可能显示“已结算”,但链上的 payout 还没有最终确定。读取 CTF 合约上的 payoutNumerators 是唯一安全的确认方式。

代码:下一个 NegRisk 订单

下面是一个完整的 Node 示例,演示如何买入 NegRisk 的 YES 仓位。

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:在 NegRisk 市场中省略 negRisk: true。订单会被 CLOB 接受,但结算会失败。务必从 Gamma 读取 market.negRisk 并传递下去;不要只根据问题标题来猜测。

常见问题

Polymarket 上的 NegRisk 市场是什么?
这是一种多结果市场,其中 YES 仓位彼此互斥(只能有一个结算为 YES)。所有 YES 价格的总和会保持在接近 1 USD,因为只有一个结果会获胜。例子:“2026 NBA Champion”(只有一支球队获胜)、“Next Fed chair”(只有一个人获胜)。
交易 NegRisk 时,我需要在订单里设置标志吗?
需要。NegRisk 市场的订单请求必须包含 neg_risk: true(Python:传给 OrderArgs;Node:传给 CreateOrderOptions)。忘记这个标志会导致订单被拒,或者更糟,订单被挂到错误的订单簿上。我们在生产中正好遇到过这个 bug-在我们的 trader 历史中对应 commit 06deaef。
我可以套利总和小于 1 的 NegRisk 仓位吗?
可以-如果所有 YES 仓位扣除手续费后总和小于 1.00,买入每个仓位就能锁定保证利润。这个套利是真实存在的,但极其罕见,而且会被更快的 bot 在几秒内抢走。把它当作有趣现象,而不是策略。
NegRisk 市场如何结算?
和其他 Polymarket 市场一样,走 UMA optimistic oracle 流程。获胜仓位每份支付 1 USD,所有失败仓位支付 0。结算通常会一次性处理整个 NegRisk 事件。
NegRisk 的费用和 binary 市场不同吗?
费用结构相同-maker 为 0%,taker 按类别收取 0.75-1.80%。maker rebate 也适用。唯一实际差别是你要管理 N 个订单簿,而不是 1 个。
我可以通过买入其他 NegRisk 仓位来对冲 YES 仓位吗?
可以-这就是 NegRisk 特有的对冲方式。如果你做多某个仓位,并想锁定当前 PnL,可以按比例买入其他仓位。净成本应为(1 - 你的 YES 仓位价格),再加上手续费。我们不建议把它作为主要策略,因为手续费通常会吃掉对冲优势。