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
--fullpour le texte complet de la question sans troncature - Utilisez l'option
--jsonviascripts/markets.py --json trendingpour 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
--jsonpour une sortie JSON structurée - Utilisez
--min-coverage 0.90pour filtrer par couverture minimale (par défaut 0.85) - Utilisez
--tier 1pour 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
| Variable | Requise | Description |
|---|---|---|
CHAINSTACK_NODE | Oui (trading) | URL RPC Polygon |
OPENROUTER_API_KEY | Oui (couverture) | Clé API OpenRouter pour la découverte de couverture LLM |
POLYCLAW_PRIVATE_KEY | Oui (trading) | Clé privée EVM (hex, avec ou sans préfixe 0x) |
HTTPS_PROXY | Recommandé | Proxy résidentiel rotatif pour CLOB (par ex. IPRoyal) |
CLOB_MAX_RETRIES | Non | Nombre max de tentatives CLOB avec rotation IP (par défaut : 5) |
POLY_BUILDER_CODE | Non | Code 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
- Diviser la position - Le pUSD est divisé en tokens YES + NO via le contrat CTF
- Vendre l'inutile - Le côté non désiré est vendu via le carnet d'ordres CLOB (V2)
- 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 :
- Utilisez
--skip-sell— Conservez les tokens YES et NO, vendez manuellement sur polymarket.com - 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