storyclaw-polymarket-trading について
storyclaw-polymarket-trading は、Polymarket の取引戦略を作成・管理するエージェントスキルで、デフォルトでペーパートレードを行います。ユーザー確認後の戦略設定や成績に応じたパラメーター調整に対応し、実取引には明示的な承認を求めます。
主な機能
- 01複数の市場カテゴリに対応
- 02デフォルトでドライラン実行
- 03成績に応じてパラメーターを調整
- 04戦略のライフサイクルと状態を追跡
- 05戦略作成前に確認を要求
- 06実取引前に明示的な承認を要求
活用シーン
- 01ユーザーが選んだPolymarket市場カテゴリを調査
- 02実取引なしで戦略案をテスト
- 03結果を確認して戦略パラメーターを調整
- 04実取引への移行を承認するか判断
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ storyclaw-official/ talenthub --skill storyclaw-polymarket-tradingインストール後、Claude Code で/storyclaw-polymarket-tradingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignorecredentials/example.jsonscripts/check_and_report.pymarket_scanner.pypolymarket.pyreview_cron.pysignal_cron.pysignals.pystrategy_manager.py詳細
Polymarket Trading - 自己進化型トレーディングボット
ユーザーと一緒に取引戦略を設計し、自動ペーパートレーディング(ドライラン)を実行します。成績が振るわない場合はパラメーターを自動改善し、目標エッジに到達したらライブ取引への切り替え許可を求めます。
あらゆる種類の市場に対応します。政治、スポーツ、暗号資産の価格、科学、エンターテインメントなど。
重要なルール
- 特定の市場を決してデフォルトにしないでください。必ずユーザーに取引したい市場を尋ねてください。
- 作り上げた価格やシグナルを決して表示しないでください。実際のスクリプト出力のみを使用してください。
- デフォルトでは常にドライランを有効にしてください。ユーザーが明示的に確認した後にのみ、ライブ取引に切り替えてください。
- 自動改善は通知せずに行ってください。パラメーターを調整し、ユーザーに通知してください。
- ユーザーの明示的な確認なしに、戦略を作成したり cron を設定したりしないでください。
マルチユーザー対応
各ユーザーは独自の credentials/{USER_ID}.json を持ちます。
{
"private_key": "0x...",
"funder_address": "0x...",
"dry_run": true
}
スクリプトの呼び出し時に、USER_ID または TELEGRAM_USER_ID 環境変数を設定してください。
または、POLYMARKET_PRIVATE_KEY 環境変数を設定してください。
初回ユーザーのフロー
1. 認証情報を確認する
USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/polymarket.py check
設定されていない場合は、対話型セットアップを実行してください。
USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/polymarket.py setup
2. 取引したい対象を尋ねる
推測しないでください。次のことを尋ねてください。
- どの種類の市場ですか?(政治、スポーツ、暗号資産、テクノロジーなど)
- 注目したい具体的なキーワードはありますか?
3. 戦略を提案する — 確認を待つ
会話に基づいて具体的な値を導き出し、提案してください。何かを実行する前に、いったん停止してユーザーの確認を待ってください。
4. 戦略を作成する(確認後のみ)
USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/strategy_manager.py create --json '{
"name": "<strategy name>",
"market_filter": {
"keywords": ["<keywords>"],
"min_liquidity_usdc": 1000,
"max_days_to_expiry": 30,
"min_days_to_expiry": 1
},
"signal": {
"method": "orderbook_imbalance",
"params": { "threshold": 0.15, "max_entry_price": 0.60 }
},
"sizing": { "max_size_usdc": 5 },
"targets": { "min_sample_size": 30, "min_edge": 0.05 }
}'
5. cron を設定する
SKILL_PATH={baseDir}
STRATEGY_ID=<id from step 4>
# Signal scan: every 15 minutes
(crontab -l 2>/dev/null; echo "*/15 * * * * USER_ID=$TELEGRAM_USER_ID python3 $SKILL_PATH/scripts/signal_cron.py $STRATEGY_ID >> $SKILL_PATH/state/$TELEGRAM_USER_ID.$STRATEGY_ID.log 2>&1") | crontab -
# Performance review: daily at 09:00 UTC
(crontab -l 2>/dev/null; echo "0 9 * * * USER_ID=$TELEGRAM_USER_ID python3 $SKILL_PATH/scripts/review_cron.py $STRATEGY_ID >> $SKILL_PATH/state/$TELEGRAM_USER_ID.review.log 2>&1") | crontab -
戦略のライフサイクル
dry_run → improving → pending_live → live
ライブ取引への移行条件:edge = win_rate - avg_entry_price >= min_edge かつ total_pnl > 0
戦略の管理
USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/strategy_manager.py status
USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/strategy_manager.py review <strategy_id>
USER_ID=$TELEGRAM_USER_ID python3 {baseDir}/scripts/strategy_manager.py activate-live <strategy_id>
自動改善のルール
| 条件 | アクション |
|---|---|
| edge < min_edge - 10% | 閾値を引き上げる(シグナルの数を減らし、精度を高める) |
| edge < min_edge - 3% | max_entry_price を下げる(より安価にエントリーする) |
| 3 回以上調整しても改善しない | 再検討するようユーザーに通知する |
| edge >= min_edge AND pnl > 0 | pending_live に設定し、ユーザーに通知する |
シグナル方式
| 方式 | 最適な対象 |
|---|---|
| orderbook_imbalance | 板が活発な、流動性の高いあらゆる市場 |
script/signals.py に新しい方式を追加できます。
トラブルシューティング
| エラー | 解決方法 |
|---|---|
| py-clob-client がインストールされていない | pip3 install py-clob-client |
| USER_ID が設定されていない | USER_ID=xxx を先頭に追加する |
| 設定が見つからない | python3 {baseDir}/scripts/polymarket.py setup を実行する |
| API エラー 401 | キーを再生成するため、セットアップを再実行する |
| 市場が見つからない | キーワードの範囲を広げるか、min_liquidity_usdc を下げる |
ファイル構成
polymarket-trading/
├── SKILL.md
├── scripts/
│ ├── strategy_manager.py # Lifecycle: create/review/status/activate-live
│ ├── signal_cron.py # Cron: scan markets, run signals, record trades
│ ├── review_cron.py # Cron: daily review + auto-improve
│ ├── signals.py # Pluggable signal methods
│ ├── market_scanner.py # Gamma API market discovery
│ └── polymarket.py # CLOB API primitives
├── credentials/
│ └── {USER_ID}.json
├── strategies/
│ └── {USER_ID}/{strategy_id}.json
└── state/
└── {USER_ID}.{strategy_id}.perf.json