mcpField
P
polyclaw

polyclaw

github.com/chainstacklabs其他359101 次安装26 周前更新
代码仓库

关于 polyclaw

polyclaw 是面向 OpenClaw 的 Polymarket 交易技能,可浏览预测市场、管理钱包、执行交易并跟踪持仓。它还利用 LLM 通过逻辑蕴含发现可相互对冲的市场组合。

主要功能

  1. 01搜索和浏览预测市场
  2. 02配置钱包并查看余额
  3. 03买入 YES 或 NO 持仓
  4. 04跟踪入场价、现价和盈亏
  5. 05发现逻辑对冲组合

适用场景

  1. 01按关键词查找预测市场
  2. 02查看钱包状态和余额
  3. 03买入 YES 或 NO 市场头寸
  4. 04扫描市场寻找对冲组合

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/chainstacklabs/polyclaw --skill polyclaw

安装后在 Claude Code 中输入/polyclaw确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
.gitignore
LICENSE
pyproject.toml
lib/
contracts.py
llm_client.py
clob_client.py
__init__.py
position_storage.py
coverage.py
gamma_client.py
wallet_manager.py
scripts/
hedge.py
markets.py
polyclaw.py
wallet.py
positions.py
redeem.py
trade.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)。设置后会附加到每笔订单。

安全警告: 钱包中只存放少量资金。请定期将资金转至安全钱包。将私钥存储在环境变量中便于自动化,但安全性不如加密存储。

交易流程

  1. 拆分持仓 - 通过 CTF 合约将 pUSD 拆分为 YES + NO 代币
  2. 卖出不需要的一方 - 通过 CLOB 订单簿(V2)卖出不需要的一方
  3. 结果 - 你将持有所需的持仓,并通过卖出不需要的一方收回部分成本

示例:以 $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 次重试内成功。

其他解决方法:

  1. 使用 --skip-sell — 保留 YES 和 NO 两种代币,并在 polymarket.com 上手动卖出
  2. 不使用代理 — 拆分仍然有效;只有 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

评论

支持 Markdown