Communitygithub.com

chainstacklabs/polyclaw

透過分割 + CLOB 執行在 Polymarket 進行交易。瀏覽市場、以損益追蹤倉位、經由 LLM 發現避險組合。支援 Polygon/Web3。

polyclaw 是什麼?

PolyClaw 是一個為 OpenClaw 設計的交易啟用型 Polymarket 技能,讓使用者能直接從命令列瀏覽預測市場、管理錢包、執行交易與追蹤倉位。它利用分割 + CLOB 的執行模型:先將 pUSD 分割為 YES 與 NO 代幣,再透過訂單簿賣出不需要的一方,以淨成本取得目標倉位。技能內建 LLM 驅動的避險發現功能,能透過邏輯蘊涵掃描市場對,找出高覆蓋率的避險組合(可能達近套利等級)。支援 Polygon 主網,錢包由環境變數設定,交易前需進行一次性合約授權(約 0.01 POL 手續費)。PolyClaw 也提供詳細的損益追蹤與市場瀏覽,並建議搭配住宅代理以應對 CLOB 的 Cloudflare 封鎖。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add chainstacklabs/polyclaw

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

polyclaw 是做什麼的?

為 OpenClaw 設計的啟用交易功能 Polymarket 技能。瀏覽市場、管理錢包、執行交易、追蹤倉位。

功能特色

  • 市場瀏覽 - 搜尋與瀏覽 Polymarket 預測市場
  • 錢包管理 - 基於環境變數的錢包設定
  • 交易 - 透過分割 + CLOB 執行買入 YES/NO 倉位
  • 倉位追蹤 - 追蹤進場價格、現價與損益
  • 避險發現 - 由 LLM 驅動,透過邏輯蘊涵發現涵蓋性投資組合

快速開始

首先,安裝相依套件(從技能目錄執行):

cd {baseDir}
uv sync

首次設定(交易前必做)

在第一次交易前,設定 Polymarket 合約授權(一次性,耗費約 0.01 POL 手續費):

uv run python scripts/polyclaw.py wallet approve

這會向 Polygon 提交 6 筆授權交易。每個錢包只需執行此步驟一次。

瀏覽市場

# 依成交量篩選熱門市場
uv run python scripts/polyclaw.py markets trending

# 搜尋市場
uv run python scripts/polyclaw.py markets search "election"

# 市場詳細資訊(回傳完整 JSON 含所有欄位)
u run python scripts/polyclaw.py market <market_id>

輸出選項:

  • 預設輸出為格式化表格(適合顯示)
  • 使用 --full 標記可顯示完整問題文字(不截斷)
  • 使用 --json 標記可透過 scripts/markets.py --json trending 取得結構化 JSON 輸出

錢包管理

# 檢查錢包狀態(地址、餘額)
uv run python scripts/polyclaw.py wallet status

# 設定合約授權(一次性)
uv run python scripts/polyclaw.py wallet approve

錢包透過環境變數 POLYCLAW_PRIVATE_KEY 設定。

交易

# 以 $50 買入 YES 倉位
uv run python scripts/polyclaw.py buy <market_id> YES 50

# 以 $25 買入 NO 倉位
uv run python scripts/polyclaw.py buy <market_id> NO 25

倉位

# 列出所有倉位及其損益
uv run python scripts/polyclaw.py positions

避險發現

尋找涵蓋性投資組合——透過逆否邏輯互相避險的市場配對。

# 掃描熱門市場尋找避險組合
uv run python scripts/polyclaw.py hedge scan

# 掃描符合查詢條件的市場
uv run python scripts/polyclaw.py hedge scan --query "election"

# 分析特定市場的避險關係
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% - 投機性(預設過濾掉)

LLM 模型: 透過 OpenRouter 使用 nvidia/nemotron-nano-9b-v2:free。模型選擇很重要——有些模型會發現虛假相關性,而其他模型(如 DeepSeek R1)有輸出格式問題。可使用 --model <model_id> 覆蓋。

安全性

為了 MVP 階段簡化並相容於 Claude Code,私鑰存放在環境變數中。

安全警告: 在此錢包中僅保留小額資金。請定期提領至安全錢包。

環境變數

變數必要說明
CHAINSTACK_NODE是(交易)Polygon RPC URL
OPENROUTER_API_KEY是(避險)用於 LLM 避險發現的 OpenRouter API 金鑰
POLYCLAW_PRIVATE_KEY是(交易)EVM 私鑰(十六進位,有或無 0x 前綴)
HTTPS_PROXY建議用於 CLOB 的輪換住宅代理(例如 IPRoyal)
CLOB_MAX_RETRIES否搭配 IP 輪換的最大 CLOB 重試次數(預設:5)
POLY_BUILDER_CODE否用於歸屬的 Bytes32 builder 代碼(來自 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
  • Collateral Onramp: 0x93070a847efEf7F70739046A929D47a521F5B8ee
  • CTF(條件代幣): 0x4D97DCd97eC945f40cF65F87097ACe5EA0476045
  • CTF Exchange(V2): 0xE111180000d2663C0091e4f400237545B87B996B
  • Neg Risk CTF Exchange(V2): 0xe2222d279d744050d28e00520010520000310F59

相依套件

使用 uv 安裝(從技能目錄執行):

cd {baseDir}
uv sync

限制

  • 交易需要一次性錢包授權設定
  • 若流動性不足,CLOB 賣出可能失敗

CLOB Cloudflare 封鎖

Polymarket 的 CLOB API 使用 Cloudflare 保護,會封鎖來自許多 IP 的 POST 請求,包括資料中心 IP 及部分住宅 ISP。這會影響「賣出不需要的代幣」步驟。

解決方案:使用重試邏輯的住宅代理

建議設定使用輪換住宅代理(例如 IPRoyal、BrightData)。CLOB 用戶端會自動以新 IP 重試,直到成功為止:

export HTTPS_PROXY="http://user:[email protected]:12321"
export CLOB_MAX_RETRIES=10  # 預設為 5

使用此設定,CLOB 訂單通常會在 5-10 次重試內成功,因為代理會輪換 IP 直到找到未被封鎖的 IP。

替代方案:

  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 美元)。如果您有 USDC.e,請透過 Collateral Onramp(0x9307...B8ee)將其 1:1 包裝——polymarket.com 介面會自動執行此操作;API 使用者需手動包裝。

「CLOB 訂單失敗」

CLOB 賣出可能因以下原因失敗:

  • 賣出價位流動性不足
  • IP 被 Cloudflare 封鎖(請嘗試使用代理)

您的分割仍然成功——您持有代幣,只是無法賣出不需要的一方。

「授權未設定」

首次交易需要合約授權。請執行:

uv run python scripts/polyclaw.py wallet approve

授權條款

Apache 2.0

相關技能