polyclaw について
polyclaw は OpenClaw 向けの Polymarket 取引スキルで、市場の検索、ウォレット管理、取引、ポジション追跡に対応します。LLM と論理的含意を使い、ヘッジ可能な市場の組み合わせも探します。
主な機能
- 01予測市場の検索と閲覧
- 02ウォレット設定と残高確認
- 03YES または NO ポジションの購入
- 04約定価格・現在価格・損益の追跡
- 05論理関係に基づくヘッジ候補の発見
活用シーン
- 01条件を指定して予測市場を検索
- 02ウォレットの状態と残高を確認
- 03YES または 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 ポジションを購入します
- ポジションの追跡 - エントリー価格、現在価格、損益を追跡します
- ヘッジの発見 - LLM を活用し、論理的な含意に基づいてポートフォリオをカバーする組み合わせを見つけます
クイックスタート
まず、スキルのディレクトリから依存関係をインストールします。
cd {baseDir}
uv sync
初回セットアップ(取引に必須)
初めて取引する前に、Polymarket のコントラクト承認を設定してください(初回のみ。ガス代として約 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>
出力オプション:
- デフォルトでは、Tier、カバー率、コスト、ターゲット、カバーを表示する整形されたテーブル形式で出力されます
--jsonフラグを使うと、構造化された JSON 形式で出力されます--min-coverage 0.90を使うと、カバー率の最小値でフィルタリングできます(デフォルトは 0.85)--tier 1を使うと、Tier でフィルタリングできます(1 が最良、デフォルトは 2)
カバー率の Tier:
- Tier 1(高): カバー率 95% 以上 — 裁定取引に近い機会です
- Tier 2(良): 90〜95% — 強力なヘッジです
- Tier 3(中): 85〜90% — まずまずですが、無視できないリスクがあります
- Tier 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 秘密鍵(16 進数。0x プレフィックスの有無は問いません) |
HTTPS_PROXY | 推奨 | CLOB 用のローテーションする住宅用プロキシ(例:IPRoyal) |
CLOB_MAX_RETRIES | いいえ | IP ローテーションを伴う CLOB の最大再試行回数(デフォルト:5) |
POLY_BUILDER_CODE | いいえ | 帰属表示用の Bytes32 ビルダーコード(polymarket.com/settings?tab=builder から取得)。設定するとすべての注文に付加されます。 |
セキュリティに関する警告: このウォレットには少額のみを保管してください。定期的に安全なウォレットへ出金してください。環境変数に秘密鍵を設定すると自動化には便利ですが、暗号化ストレージより安全性が低くなります。
取引の流れ
- ポジションを分割 - CTF コントラクトを通じて pUSD を YES トークンと NO トークンに分割します
- 不要な側を売却 - 不要な側を CLOB の注文板(V2)で売却します
- 結果 - 不要な側を売却してコストの一部を回収し、希望するポジションを保有します
例:0.70 ドルで YES を購入する場合
- 100 pUSD を分割 → YES トークン 100 枚 + NO トークン 100 枚
- NO トークン 100 枚を約 0.30 ドルで売却 → 約 27 pUSD を回収
- 実質コスト:YES トークン 100 枚で約 73 ドル(エントリー価格:0.73 ドル)
USDC.e のみを保有している場合は、取引前に Collateral Onramp の wrap() 関数を使って 1:1 で pUSD にラップしてください。
Polymarket コントラクト(Polygon メインネット、CLOB V2)
- pUSD(担保):
0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB - USDC.e(オンランプ入力):
0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 - 担保オンランプ:
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 や一部の家庭用 ISP の IP を含む、多くの IP からの POST リクエストをブロックします。これは「不要なトークンを売却する」手順に影響します。
解決策:リトライロジック付きのレジデンシャルプロキシ
推奨される設定では、ローテーションするレジデンシャルプロキシ(例: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 の UI では自動的に行われますが、API ユーザーは手動でラップする必要があります。
「CLOB 注文に失敗しました」
CLOB での売却は、次の理由で失敗することがあります。
- 売却価格で流動性が不足している
- IP が Cloudflare にブロックされている(プロキシをお試しください)
スプリットは成功しています。トークンは保有していますが、不要な側を売却できなかっただけです。
「承認が設定されていません」
初回の取引にはコントラクトの承認が必要です。次を実行してください。
uv run python scripts/polyclaw.py wallet approve
ライセンス
Apache 2.0