Communitygithub.com

chainstacklabs/polyclaw

Échangez sur Polymarket via split + exécution CLOB. Parcourez les marchés, suivez les positions avec P&L, découvrez des couvertures via LLM. Polygon/Web3.

Qu'est-ce que polyclaw ?

PolyClaw est une compétence OpenClaw dédiée au trading sur Polymarket. Elle permet aux agents IA de parcourir les marchés prédictifs, gérer des portefeuilles, exécuter des achats et suivre les positions avec calcul du P&L. La compétence utilise une logique de split + CLOB pour les transactions : elle divise du pUSD en tokens YES et NO via le contrat CTF, puis vend le côté non désiré sur le carnet d'ordres CLOB V2. Elle intègre aussi une fonctionnalité de découverte de couvertures (hedge) propulsée par un LLM (via OpenRouter) qui identifie des paires de positions se couvrant mutuellement par logique contrapositive. Compatible avec Claude Code, Cursor, Codex et tout agent capable de lancer des commandes Python, elle requiert la clé privée EVM dans une variable d'environnement et propose un proxy résidentiel pour contourner le blocage Cloudflare du CLOB. L'outil est idéal pour les traders automatisés souhaitant exploiter les marchés prédictifs de Polymarket avec une exécution efficace et une analyse intelligente des risques.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add chainstacklabs/polyclaw

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait polyclaw ?

Compétence Polymarket activée pour le trading avec OpenClaw. Parcourez les marchés, gérez des portefeuilles, exécutez des transactions et suivez les positions.

Fonctionnalités

  • Parcours des marchés - Recherchez et parcourez les marchés prédictifs Polymarket
  • Gestion de portefeuille - Configuration du portefeuille via variable d'environnement
  • Trading - Achetez des positions YES/NO via split + exécution CLOB
  • Suivi des positions - Suivi des prix d'entrée, des prix actuels et du P&L
  • Découverte de couvertures - Découverte de portefeuilles de couverture alimentée par LLM via implications logiques

Démarrage rapide

Installez d'abord les dépendances (depuis le répertoire de la compétence) :

cd {baseDir}
uv sync

Configuration initiale (requise pour le trading)

Avant votre première transaction, définissez les approbations des contrats Polymarket (une fois, coûte ~0,01 POL en gas) :

uv run python scripts/polyclaw.py wallet approve

Cela soumet 6 transactions d'approbation sur Polygon. Vous ne devez le faire qu'une seule fois par portefeuille.

Parcourir les marchés

# Marchés tendance par volume
uv run python scripts/polyclaw.py markets trending

# Rechercher des marchés
uv run python scripts/polyclaw.py markets search "élection"

# Détails d'un marché (retourne le JSON complet avec tous les champs)
uv run python scripts/polyclaw.py market <market_id>

Options de sortie :

  • La sortie par défaut est un tableau formaté (bon pour l'affichage)
  • Utilisez l'option --full pour le texte complet de la question sans troncature
  • Utilisez l'option --json via scripts/markets.py --json trending pour une sortie JSON structurée

Gestion du portefeuille

# Vérifier l'état du portefeuille (adresse, soldes)
uv run python scripts/polyclaw.py wallet status

# Définir les approbations des contrats (une fois)
uv run python scripts/polyclaw.py wallet approve

Le portefeuille est configuré via la variable d'environnement POLYCLAW_PRIVATE_KEY.

Trading

# Acheter une position YES pour 50 $
uv run python scripts/polyclaw.py buy <market_id> YES 50

# Acheter une position NO pour 25 $
uv run python scripts/polyclaw.py buy <market_id> NO 25

Positions

# Lister toutes les positions avec P&L
uv run python scripts/polyclaw.py positions

Découverte de couvertures

Trouvez des portefeuilles de couverture - des paires de positions sur le marché qui se couvrent mutuellement via une logique contrapositive.

# Analyser les marchés tendance pour trouver des couvertures
uv run python scripts/polyclaw.py hedge scan

# Analyser les marchés correspondant à une requête
uv run python scripts/polyclaw.py hedge scan --query "élection"

# Analyser des marchés spécifiques pour une relation de couverture
uv run python scripts/polyclaw.py hedge analyze <market_id_1> <market_id_2>

Options de sortie :

  • La sortie par défaut est un tableau formaté montrant le Niveau, la Couverture, le Coût, la Cible et la Couverture
  • Utilisez l'option --json pour une sortie JSON structurée
  • Utilisez --min-coverage 0.90 pour filtrer par couverture minimale (par défaut 0.85)
  • Utilisez --tier 1 pour filtrer par niveau (1=meilleur, par défaut 2)

Niveaux de couverture :

  • Niveau 1 (ÉLEVÉ) : >=95% de couverture - opportunités quasi-arbitrage
  • Niveau 2 (BON) : 90-95% - couvertures solides
  • Niveau 3 (MODÉRÉ) : 85-90% - décent mais risque notable
  • Niveau 4 (FAIBLE) : <85% - spéculatif (filtré par défaut)

Modèle LLM : Utilise nvidia/nemotron-nano-9b-v2:free via OpenRouter. Le choix du modèle a son importance — certains modèles trouvent des corrélations erronées tandis que d'autres (comme DeepSeek R1) ont des problèmes de format de sortie. Remplacez avec --model <model_id> si nécessaire.

Sécurité

Pour le MVP, la clé privée est stockée dans une variable d'environnement par souci de simplicité et de compatibilité avec Claude Code.

Avertissement de sécurité : Ne conservez que de petites sommes dans ce portefeuille. Retirez régulièrement vers un portefeuille sécurisé.

Variables d'environnement

VariableRequiseDescription
CHAINSTACK_NODEOui (trading)URL RPC Polygon
OPENROUTER_API_KEYOui (couverture)Clé API OpenRouter pour la découverte de couverture LLM
POLYCLAW_PRIVATE_KEYOui (trading)Clé privée EVM (hex, avec ou sans préfixe 0x)
HTTPS_PROXYRecommandéProxy résidentiel rotatif pour CLOB (par ex. IPRoyal)
CLOB_MAX_RETRIESNonNombre max de tentatives CLOB avec rotation IP (par défaut : 5)
POLY_BUILDER_CODENonCode constructeur Bytes32 pour attribution (depuis polymarket.com/settings?tab=builder). Attaché à chaque ordre lorsqu'il est défini.

Avertissement de sécurité : Ne conservez que de petites sommes dans ce portefeuille. Retirez régulièrement vers un portefeuille sécurisé. La clé privée dans une variable d'environnement est pratique pour l'automatisation mais moins sécurisée qu'un stockage chiffré.

Flux de trading

  1. Diviser la position - Le pUSD est divisé en tokens YES + NO via le contrat CTF
  2. Vendre l'inutile - Le côté non désiré est vendu via le carnet d'ordres CLOB (V2)
  3. Résultat - Vous détenez la position souhaitée, récupérez une partie du coût en vendant l'inutile

Exemple : Acheter YES à 0,70 $US

  • Diviser 100 $US pUSD → 100 tokens YES + 100 tokens NO
  • Vendre 100 tokens NO à ~0,30 $US → récupérer ~27 $US pUSD
  • Coût net : ~73 $US pour 100 tokens YES (entrée : 0,73 $US)

Si vous n'avez que de l'USDC.e, enveloppez-le 1:1 en pUSD via la fonction wrap() du Collateral Onramp avant le trading.

Contrats Polymarket (Polygon Mainnet, CLOB V2)

  • pUSD (collatéral) : 0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB
  • USDC.e (entrée onramp) : 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174
  • Collateral Onramp : 0x93070a847efEf7F70739046A929D47a521F5B8ee
  • CTF (Conditional Tokens) : 0x4D97DCd97eC945f40cF65F87097ACe5EA0476045
  • CTF Exchange (V2) : 0xE111180000d2663C0091e4f400237545B87B996B
  • Neg Risk CTF Exchange (V2) : 0xe2222d279d744050d28e00520010520000310F59

Dépendances

Installez avec uv (depuis le répertoire de la compétence) :

cd {baseDir}
uv sync

Limitations

  • Le trading nécessite une configuration d'approbation du portefeuille (une fois)
  • Les ventes CLOB peuvent échouer si la liquidité est insuffisante

Blocage Cloudflare du CLOB

L'API CLOB de Polymarket utilise la protection Cloudflare qui bloque les requêtes POST depuis de nombreuses adresses IP, y compris les IP de datacenter et certains FAI résidentiels. Cela affecte l'étape "vendre les tokens non désirés".

Solution : Proxy résidentiel avec logique de réessai

La configuration recommandée utilise un proxy résidentiel rotatif (par ex. IPRoyal, BrightData). Le client CLOB réessaie automatiquement avec de nouvelles IP jusqu'à ce que l'une d'elles fonctionne :

export HTTPS_PROXY="http://user:[email protected]:12321"
export CLOB_MAX_RETRIES=10  # Par défaut est 5

Avec cette configuration, les ordres CLOB aboutissent généralement en 5 à 10 tentatives, le proxy faisant tourner les IP jusqu'à en trouver une non bloquée.

Solutions de contournement alternatives :

  1. Utilisez --skip-sell — Conservez les tokens YES et NO, vendez manuellement sur polymarket.com
  2. Pas de proxy — La division fonctionne toujours ; seule la vente CLOB est affectée

Si CLOB échoue après toutes les tentatives, votre division a quand même réussi. La sortie vous indique combien de tokens vendre manuellement.

Dépannage

"Aucun portefeuille disponible"

Définissez la variable d'environnement POLYCLAW_PRIVATE_KEY :

export POLYCLAW_PRIVATE_KEY="0x..."

"pUSD insuffisant"

Vérifiez le solde avec uv run python scripts/polyclaw.py wallet status. Les transactions nécessitent du pUSD (Polymarket USD). Si vous avez de l'USDC.e, enveloppez-le 1:1 via le Collateral Onramp (0x9307...B8ee) — l'interface polymarket.com le fait automatiquement ; les utilisateurs d'API enveloppent manuellement.

"Échec de l'ordre CLOB"

La vente CLOB peut échouer en raison de :

  • Liquidité insuffisante au prix de vente
  • IP bloquée par Cloudflare (essayez un proxy)

Votre division a quand même réussi - vous avez les tokens, mais n'avez pas pu vendre le côté non désiré.

"Approbations non définies"

La première transaction nécessite les approbations des contrats. Exécutez :

uv run python scripts/polyclaw.py wallet approve

Licence

Apache 2.0

Skills associés