构建 Polymarket 机器人:扫描器、仓位计算、执行架构
面向开发者的 Polymarket 机器人指南:扫描、仓位计算、执行与监控。包含实用架构和 API 参考。
构建 Polymarket 机器人:扫描、仓位计算、执行与监控
本指南展示如何构建一个持续扫描市场、计算仓位规模、通过 CLOB 执行并监控性能的 Polymarket 机器人。重点介绍可用 Polymarket 公共 API 与 Relayer 模式实现的架构与开发范式。
主要收获
- 将机器人架构为四个独立服务:scanner(扫描器)、sizer(仓位计算)、executor(执行器)和 monitor(监控)。
- 使用 Polymarket 的 Gamma 和 CLOB API 获取列表与下单;使用 WebSocket 获取实时盘口更新。
- 优先使用 FAK 市价单以实现任意速度的执行,但始终考虑滑点和手续费。
- 为预言机争议、结算延迟或意外成交配置监控和快速断路器。
为何采用此结构
当责任分离时,交易系统更容易推理与维护。scanner 查找候选边差,sizer 将边差转为仓位计划,executor 通过 CLOB 下单,monitor 确保正确性与安全性。该分离使你能够独立扩展、测试并推断延迟与风险。
H2: 数据源与 API
首先将以下 Polymarket 端点接入你的服务:
- Gamma(市场元数据):https://gamma-api.polymarket.com — markets、events、tags、series。使用 after_cursor 分页;避免使用 offset。
- CLOB(订单薄与交易):https://clob.polymarket.com — 订单簿读取为公开;交易需要 API key + HMAC。CLOB SDK 处理下单逻辑。
- 市场 WebSocket(实时盘口):wss://ws-subscriptions-clob.polymarket.com/ws/market — 订阅 book、price_change、best_bid_ask 和 tick_size_change。每 10s PING。
- Data API(持仓、未平仓量):https://data-api.polymarket.com 用于交易后分析。
设计提示:将 Gamma 列表与 WebSocket 流结合以实现高效的实时扫描。遵守 Gamma 速率限制(例如 /markets 限制)并注意 CLOB 下单需的密钥要求。
H2: Scanner — 发现候选机会
功能
scanner 发现符合策略的机会:二元市场内套利、多个结果的组合买入,或 endgame 模式。它应无状态、可水平扩展,专注于计算原始边差。
输入与频率
- 使用 custom_feature_enabled: true 订阅 Market WebSocket,以接收 best_bid_ask 和 tick 变化。
- 初次遇到新合约时,用 Gamma /markets 回填元数据与结果信息。
- 为每个结果在内存中维护一小段 best asks/bids 视图。
边差计算
- 二元市场内套利:计算 edge = 1.00 - (bestAsk(YES) + bestAsk(NO))。正的 edge 为候选。
- 多结果市场:edge = 1.00 - sum(bestAsk(outcomes))。
阈值与过滤
- 最小 edge 阈值(例如 > 配置的若干美分),以覆盖 taker 手续费和执行风险。
- 最小流动性检查:best ask 的深度必须满足最小可成交量。
- 注意 tick-size:处理 tick_size_change 事件——当价格接近极端时,价格粒度可能收紧到 $0.001。
H2: Sizing — 风险与资金分配
目标
-sizing 将原始 edge 转为下单计划:每个结果买入多少份额,以及如何在多笔订单间拆分以限制滑点。
组成部分
- 风险敞口上限:按单市场与全局 pUSD 敞口限制。
- 基于深度的 sizing:计算 ask 端连续价位的累计可用量;仅按能将预期滑点保持在容忍范围内的量来定仓位。
- 手续费预留:在决定交易前从毛 edge 中扣减预期 taker 手续费(按类别可变,最高可达 1.8%)。
实用模式
- 从保守成交开始:优先使用多次小额 FAK 市价单,而不是单笔大额下单,除非你能控制盘口。
- 如果通过 CTF split/merge 流程买入完整组合,记得包含 split/merge 的成本(由 Relayer 代付 gas)以及因 tick size 导致的可能四舍五入。
H2: Executor — 下单与成交处理
订单类型与约束
- 使用 CLOB 交易端点下单:https://clob.polymarket.com。CLOB SDK 与 Relayer 管理钱包部署、授权与订单签名。
- 为了速度,在合适场景下使用 FAK(Fill-And-Kill)市价单。FAK 会立刻成交或取消;它们有助于避免长期敞口,但可能发生部分成交。
执行流程
- 准备交易意图:由 sizer 返回的 outcome token ids 列表与目标数量。
- 若执行多结果完整组合,你也可以先执行 CTF split(铸造完整组合),然后再卖出各腿——Relayer 与 SDK 会抽象化 CTF 操作。
- 通过 CLOB 交易 API 提交订单;若你参与 Builder Program,请附带合适的归属头(attribution headers)。
- 从 WebSocket 的 last_trade_price 与 best_bid_ask 更新或从 CLOB 交易响应观察成交情况。
安全与对账
- 跟踪部分成交并取消剩余委托或立即重新定价。
- 在成交后通过 Data API 对链上 CTF 余额进行核对,确保你确实持有预期的 outcome token。
- 为订单重试实现幂等性键与 nonce 处理。
H2: 监控与运营安全
需要监控的内容
- 成交率、平均滑点与预期相比的偏差、手续费后的实现边差。
- WebSocket 更新与下单提交之间的延迟。
- 异常事件:UMA 争议、tick_size_change、整个市场的中断。
告警与断路器
- 自动软断路:当净实现 P&L 低于阈值或成交滑点超过限制时,暂停新委托。
- 硬断路:若 UMA 报告你持仓市场发生争议,或 Relayer 发出结算问题信号,立即停止所有流量。
审计日志与可观测性
- 存储所有订单意图、原始市场快照与已执行成交。将这些日志用于事后分析与回测。
- 在日志中标注 market id、condition_ids 和 request ids 以便与 Gamma 与 CLOB 记录匹配。
H2: Builder Program、凭证与速率限制
若计划以归属方式路由订单,请加入 Builder Program 并在 Polymarket 设置中管理密钥。Builder 等级控制每日 Relayer 限额与奖励。通过 CLOB 交易需要 API key + HMAC,并须遵守速率限制与 Relayer 配额。
H2: 常见风险与缓解措施
切勿假设数学上的 edge 就能保证获利。需考虑的风险:
- 解析风险:UMA 争议可能暂停或改变支付。
- 滑点与部分成交:FAK 可能部分成交;需要为残余敞口预留计划。
- 手续费:taker 手续费按类别变化,可能侵蚀小边差(Geopolitics 类别免手续费)。
- 结算时间:redeem/merge 的时机与预言机解析延迟可能占用资金。
- 智能合约或 Relayer 故障:为此设计回退措施与人工告警。
这如何影响你的交易
将你的机器人设计为每笔交易单位小、可观测且在风险限额内可逆。保守的仓位、快速监控与明确的断路条件能降低尾部风险。使用 Gamma 与 CLOB 端点获取确定性的市场状态,优先 FAK 以加速执行,但始终衡量实现滑点与预期的偏差。
结语
上述架构为构建 Polymarket 交易机器人提供一个务实的蓝图:高吞吐的 scanner、保守的 sizer、使用 CLOB 与 Relayer 的健壮 executor,以及分层的监控。小规模起步、积极埋点并随着实盘数据不断迭代 sizing 与过滤器。
常见问题
我应该使用哪些 API 来获取市场列表与实时盘口数据?
使用 https://gamma-api.polymarket.com 获取市场元数据(/markets),并使用 wss://ws-subscriptions-clob.polymarket.com/ws/market 获取实时订单簿与 best_bid_ask 事件。使用 https://clob.polymarket.com 获取订单簿读取与交易;读取为公开,但交易需要 API key + HMAC。
在套利中我应该使用限价单还是市价(FAK)单?
FAK(Fill-And-Kill)市价单通常用于速度与避免长期敞口。它们可能部分成交,因此在 sizing 与对账上需要相应设计。CLOB SDK 提供创建 FAK 市价单的辅助函数。
我在计算仓位时如何考虑手续费?
在交易前从毛 edge 中扣除预期 taker 手续费。taker 手续费按类别变化(当前范围 0% 到 1.8%)。使用覆盖手续费、预期滑点和监控缓冲的净 edge 阈值。
运行中的机器人需要哪些监控?
监控成交率、实现滑点、延迟、UMA 争议通知、tick_size_change 事件以及 Relayer 健康。为大幅滑点、P&L 回撤或预言机争议实现软断路与硬断路。
我可以通过 Builder Program 路由订单吗?
可以。Builder Program 允许第三方带归属路由订单并赚取 builder fees。不同等级控制每日 Relayer 限额与奖励;凭证在 polymarket.com/settings 获取。
参考术语
相关指南
仅供教育用途。非金融、法律或税务建议。Polymarket在你的司法管辖区可能不可用。