关于 polyclaw
polyclaw 是面向 OpenClaw 的 Polymarket 交易技能,可浏览预测市场、管理钱包、执行交易并跟踪持仓。它还利用 LLM 通过逻辑蕴含发现可相互对冲的市场组合。
主要功能
- 01搜索和浏览预测市场
- 02配置钱包并查看余额
- 03买入 YES 或 NO 持仓
- 04跟踪入场价、现价和盈亏
- 05发现逻辑对冲组合
适用场景
- 01按关键词查找预测市场
- 02查看钱包状态和余额
- 03买入 YES 或 NO 市场头寸
- 04扫描市场寻找对冲组合
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ chainstacklabs/ polyclaw --skill polyclaw安装后在 Claude Code 中输入/polyclaw确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.md.gitignoreLICENSEpyproject.tomllib/contracts.pyllm_client.pyclob_client.py__init__.pyposition_storage.pycoverage.pygamma_client.pywallet_manager.pyscripts/hedge.pymarkets.pypolyclaw.pywallet.pypositions.pyredeem.pytrade.py详细介绍
PolyClaw
适用于 OpenClaw、支持交易的 Polymarket 技能。浏览市场、管理钱包、执行交易并跟踪持仓。
功能
- 市场浏览 - 搜索和浏览 Polymarket 预测市场
- 钱包管理 - 通过环境变量配置钱包
- 交易 - 通过拆分 + CLOB 执行买入 YES/NO 持仓
- 持仓跟踪 - 跟踪买入价格、当前价格和盈亏
- 对冲发现 - 通过逻辑蕴含发现由大模型驱动的覆盖型投资组合
快速开始
首先安装依赖项(在技能目录中):
cd {baseDir}
uv sync
首次设置(交易必需)
首次交易前,请设置 Polymarket 合约授权(一次性操作,Gas 费用约为 0.01 POL):
uv run python scripts/polyclaw.py wallet approve
此操作会向 Polygon 提交 6 笔授权交易。每个钱包只需设置一次。
浏览市场
# Trending markets by volume
uv run python scripts/polyclaw.py markets trending
# Search markets
uv run python scripts/polyclaw.py markets search "election"
# Market details (returns full JSON with all fields)
uv run python scripts/polyclaw.py market <market_id>
输出选项:
- 默认输出为格式化表格(适合展示)
- 使用
--full标志可显示未截断的完整问题文本 - 通过
scripts/markets.py --json trending使用--json标志可输出结构化 JSON
钱包管理
# Check wallet status (address, balances)
uv run python scripts/polyclaw.py wallet status
# Set contract approvals (one-time)
uv run python scripts/polyclaw.py wallet approve
钱包通过 POLYCLAW_PRIVATE_KEY 环境变量配置。
交易
# Buy YES position for $50
uv run python scripts/polyclaw.py buy <market_id> YES 50
# Buy NO position for $25
uv run python scripts/polyclaw.py buy <market_id> NO 25
持仓
# List all positions with P&L
uv run python scripts/polyclaw.py positions
对冲发现
查找覆盖型投资组合——通过逆否逻辑相互对冲的市场持仓组合。
# Scan trending markets for hedges
uv run python scripts/polyclaw.py hedge scan
# Scan markets matching a query
uv run python scripts/polyclaw.py hedge scan --query "election"
# Analyze specific markets for hedging relationship
uv run python scripts/polyclaw.py hedge analyze <market_id_1> <market_id_2>
输出选项:
- 默认输出为格式化表格,显示等级、覆盖率、成本、目标和对冲项
- 使用
--json标志可输出结构化 JSON - 使用
--min-coverage 0.90可按最低覆盖率筛选(默认值为 0.85) - 使用
--tier 1可按等级筛选(1 为最佳,默认值为 2)
覆盖率等级:
- 等级 1(高): 覆盖率 >=95%——接近套利的机会
- 等级 2(良好): 90-95%——强力对冲
- 等级 3(中等): 85-90%——尚可,但存在明显风险
- 等级 4(低): <85%——投机性机会(默认过滤)
大模型: 通过 OpenRouter 使用 nvidia/nemotron-nano-9b-v2:free。模型选择很重要——有些模型会发现虚假的相关性,而另一些模型(如 DeepSeek R1)则存在输出格式问题。必要时可使用 --model <model_id> 覆盖。
安全
MVP 阶段为简化操作并兼容 Claude Code,私钥存储在环境变量中。
安全警告: 钱包中只存放少量资金。请定期将资金转至安全钱包。
环境变量
| 变量 | 必需 | 描述 |
|---|---|---|
CHAINSTACK_NODE | 是(交易) | Polygon RPC URL |
OPENROUTER_API_KEY | 是(对冲) | 用于大模型对冲发现的 OpenRouter API 密钥 |
POLYCLAW_PRIVATE_KEY | 是(交易) | EVM 私钥(十六进制,可带或不带 0x 前缀) |
HTTPS_PROXY | 建议设置 | 用于 CLOB 的轮换住宅代理(例如 IPRoyal) |
CLOB_MAX_RETRIES | 否 | IP 轮换时的最大 CLOB 重试次数(默认值:5) |
POLY_BUILDER_CODE | 否 | 用于归因的 Bytes32 builder code(来自 polymarket.com/settings?tab=builder)。设置后会附加到每笔订单。 |
安全警告: 钱包中只存放少量资金。请定期将资金转至安全钱包。将私钥存储在环境变量中便于自动化,但安全性不如加密存储。
交易流程
- 拆分持仓 - 通过 CTF 合约将 pUSD 拆分为 YES + NO 代币
- 卖出不需要的一方 - 通过 CLOB 订单簿(V2)卖出不需要的一方
- 结果 - 你将持有所需的持仓,并通过卖出不需要的一方收回部分成本
示例:以 $0.70 买入 YES
- 拆分 $100 pUSD → 100 个 YES + 100 个 NO 代币
- 以约 $0.30 卖出 100 个 NO 代币 → 收回约 $27 pUSD
- 净成本:100 个 YES 代币约需 $73(买入价:$0.73)
如果你只有 USDC.e,请在交易前通过 Collateral Onramp 的 wrap() 函数按 1:1 将其包装为 pUSD。
Polymarket 合约(Polygon 主网,CLOB V2)
- pUSD(抵押品):
0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB - USDC.e(入金输入):
0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 - 抵押品入金通道:
0x93070a847efEf7F70739046A929D47a521F5B8ee - CTF(条件代币):
0x4D97DCd97eC945f40cF65F87097ACe5EA0476045 - CTF 交易所(V2):
0xE111180000d2663C0091e4f400237545B87B996B - Neg Risk CTF 交易所(V2):
0xe2222d279d744050d28e00520010520000310F59
依赖项
使用 uv 安装(在技能目录中):
cd {baseDir}
uv sync
限制
- 交易需要设置钱包授权(一次性操作)
- 如果流动性不足,CLOB 卖出可能会失败
CLOB Cloudflare 封锁
Polymarket 的 CLOB API 使用 Cloudflare 防护,会封锁来自许多 IP 的 POST 请求,包括数据中心 IP 和部分住宅 ISP 的 IP。这会影响“卖出不需要的代币”步骤。
解决方案:带重试逻辑的住宅代理
推荐的配置使用轮换住宅代理(例如 IPRoyal、BrightData)。CLOB 客户端会自动使用新 IP 重试,直到成功:
export HTTPS_PROXY="http://user:[email protected]:12321"
export CLOB_MAX_RETRIES=10 # Default is 5
使用此配置时,代理会轮换 IP,直到找到未被封锁的 IP;CLOB 订单通常会在 5-10 次重试内成功。
其他解决方法:
- 使用
--skip-sell— 保留 YES 和 NO 两种代币,并在 polymarket.com 上手动卖出 - 不使用代理 — 拆分仍然有效;只有 CLOB 卖出会受影响
如果 CLOB 在所有重试后仍然失败,拆分仍已成功。输出会告知你需要手动卖出的代币数量。
故障排除
“没有可用的钱包”
设置 POLYCLAW_PRIVATE_KEY 环境变量:
export POLYCLAW_PRIVATE_KEY="0x..."
“pUSD 不足”
使用 uv run python scripts/polyclaw.py wallet status 检查余额。交易需要 pUSD(Polymarket USD)。如果你持有 USDC.e,可通过抵押品入金通道(0x9307...B8ee)按 1:1 兑换;polymarket.com 界面会自动执行此操作,API 用户则需手动兑换。
“CLOB 订单失败”
CLOB 卖出可能因以下原因失败:
- 卖出价格处的流动性不足
- IP 被 Cloudflare 封锁(尝试使用代理)
拆分仍已成功——你已获得代币,只是无法卖出不需要的一方代币。
“尚未设置授权”
首次交易需要合约授权。运行:
uv run python scripts/polyclaw.py wallet approve
许可证
Apache 2.0