Communitygithub.com

PolyClaw

Habilita trading en Polymarket mediante ejecución split + CLOB. Explora mercados, gestiona carteras, ejecuta operaciones y descubre coberturas con LLM.

¿Qué es PolyClaw?

PolyClaw es una skill de agente de IA que integra la plataforma de mercados de predicción Polymarket en flujos de trading automatizados. Soporta búsqueda de mercados, gestión de carteras basada en variables de entorno, compra de posiciones YES/NO usando el mecanismo de split + ejecución CLOB (V2), y seguimiento de posiciones con precio de entrada, precio actual y P&L. Además, ofrece una función innovadora de descubrimiento de coberturas mediante inferencia lógica con LLM (por ejemplo, a través de OpenRouter), identificando carteras de cobertura entre mercados relacionados. Está diseñada para entornos de línea de comandos y es compatible con asistentes como Claude Code. Utiliza Polygon (mainnet) como cadena de bloques y requiere configuración única de aprobaciones de contratos inteligentes. La skill maneja la protección Cloudflare de Polymarket mediante proxies residenciales rotativos, con reintentos automáticos. Está pensada para desarrolladores y traders que desean automatizar estrategias en Polymarket con un agente de IA.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace PolyClaw?

Skill de Polymarket con capacidad de trading para OpenClaw. Explora mercados, gestiona carteras, ejecuta operaciones y realiza seguimiento de posiciones.

Características

  • Exploración de mercados - Busca y navega por los mercados de predicción de Polymarket
  • Gestión de cartera - Configuración de cartera mediante variables de entorno
  • Trading - Compra posiciones YES/NO mediante ejecución split + CLOB
  • Seguimiento de posiciones - Registra precios de entrada, precios actuales y P&L
  • Descubrimiento de coberturas - Descubrimiento de carteras de cobertura mediante inferencia lógica con LLM

Inicio rápido

Primero, instala las dependencias (desde el directorio de la skill):

cd {baseDir}
uv sync

Configuración inicial (requerida para trading)

Antes de tu primera operación, configura las aprobaciones de los contratos de Polymarket (una sola vez, cuesta ~0.01 POL en gas):

uv run python scripts/polyclaw.py wallet approve

Esto envía 6 transacciones de aprobación a Polygon. Solo necesitas hacerlo una vez por cartera.

Explorar mercados

# Mercados populares por volumen
uv run python scripts/polyclaw.py markets trending

# Buscar mercados
uv run python scripts/polyclaw.py markets search "elección"

# Detalles de un mercado (devuelve JSON completo con todos los campos)
uv run python scripts/polyclaw.py market <market_id>

Opciones de salida:

  • Por defecto, la salida es una tabla formateada (ideal para mostrar)
  • Usa la bandera --full para el texto completo de la pregunta sin truncar
  • Usa la bandera --json mediante scripts/markets.py --json trending para salida JSON estructurada

Gestión de cartera

# Ver estado de la cartera (dirección, saldos)
uv run python scripts/polyclaw.py wallet status

# Configurar aprobaciones de contratos (una sola vez)
uv run python scripts/polyclaw.py wallet approve

La cartera se configura mediante la variable de entorno POLYCLAW_PRIVATE_KEY.

Trading

# Comprar posición YES por $50
uv run python scripts/polyclaw.py buy <market_id> YES 50

# Comprar posición NO por $25
uv run python scripts/polyclaw.py buy <market_id> NO 25

Posiciones

# Listar todas las posiciones con P&L
uv run python scripts/polyclaw.py positions

Descubrimiento de coberturas

Encuentra carteras de cobertura: pares de posiciones de mercado que se cubren entre sí mediante lógica contrapositiva.

# Escanear mercados populares en busca de coberturas
uv run python scripts/polyclaw.py hedge scan

# Escanear mercados que coincidan con una consulta
uv run python scripts/polyclaw.py hedge scan --query "elección"

# Analizar mercados específicos para relaciones de cobertura
uv run python scripts/polyclaw.py hedge analyze <market_id_1> <market_id_2>

Opciones de salida:

  • Por defecto, la salida es una tabla formateada que muestra Nivel, Cobertura, Costo, Objetivo y Cubierta
  • Usa la bandera --json para salida JSON estructurada
  • Usa --min-coverage 0.90 para filtrar por cobertura mínima (por defecto 0.85)
  • Usa --tier 1 para filtrar por nivel (1=mejor, por defecto 2)

Niveles de cobertura:

  • Nivel 1 (ALTO): >=95% de cobertura — oportunidades casi de arbitraje
  • Nivel 2 (BUENO): 90-95% — coberturas sólidas
  • Nivel 3 (MODERADO): 85-90% — decente pero con riesgo notable
  • Nivel 4 (BAJO): <85% — especulativo (filtrado por defecto)

Modelo LLM: Usa nvidia/nemotron-nano-9b-v2:free mediante OpenRouter. La elección del modelo importa: algunos modelos encuentran correlaciones falsas mientras que otros (como DeepSeek R1) tienen problemas de formato de salida. Sobrescribe con --model <model_id> si es necesario.

Seguridad

Para el MVP, la clave privada se almacena en una variable de entorno por simplicidad y compatibilidad con Claude Code.

Advertencia de seguridad: Mantén solo cantidades pequeñas en esta cartera. Retira regularmente a una cartera segura.

Variables de entorno

VariableRequeridaDescripción
CHAINSTACK_NODESí (trading)URL RPC de Polygon
OPENROUTER_API_KEYSí (cobertura)Clave API de OpenRouter para el descubrimiento de coberturas con LLM
POLYCLAW_PRIVATE_KEYSí (trading)Clave privada EVM (hex, con o sin prefijo 0x)
HTTPS_PROXYRecomendadaProxy residencial rotativo para CLOB (ej. IPRoyal)
CLOB_MAX_RETRIESNoMáximo de reintentos CLOB con rotación de IP (por defecto: 5)
POLY_BUILDER_CODENoCódigo de builder en bytes32 para atribución (desde polymarket.com/settings?tab=builder). Se adjunta a cada orden cuando está configurado.

Advertencia de seguridad: Mantén solo cantidades pequeñas en esta cartera. Retira regularmente a una cartera segura. La clave privada en una variable de entorno es conveniente para la automatización pero menos segura que el almacenamiento cifrado.

Flujo de trading

  1. Dividir posición - pUSD se divide en tokens YES + NO mediante el contrato CTF
  2. Vender no deseado - El lado no deseado se vende a través del libro de órdenes CLOB (V2)
  3. Resultado - Mantienes la posición deseada, recuperando el costo parcial de la venta del lado no deseado

Ejemplo: Comprar YES a $0.70

  • Dividir $100 pUSD → 100 tokens YES + 100 tokens NO
  • Vender 100 tokens NO a ~$0.30 → recuperar ~$27 pUSD
  • Costo neto: ~$73 por 100 tokens YES (entrada: $0.73)

Si solo tienes USDC.e, envuélvelo 1:1 en pUSD mediante la función wrap() del Collateral Onramp antes de operar.

Contratos de Polymarket (Polygon Mainnet, CLOB V2)

  • pUSD (colateral): 0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB
  • USDC.e (entrada de onramp): 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174
  • Collateral Onramp: 0x93070a847efEf7F70739046A929D47a521F5B8ee
  • CTF (Conditional Tokens): 0x4D97DCd97eC945f40cF65F87097ACe5EA0476045
  • CTF Exchange (V2): 0xE111180000d2663C0091e4f400237545B87B996B
  • Neg Risk CTF Exchange (V2): 0xe2222d279d744050d28e00520010520000310F59

Dependencias

Instala con uv (desde el directorio de la skill):

cd {baseDir}
uv sync

Limitaciones

  • El trading requiere configuración de aprobación de cartera (una sola vez)
  • Las ventas mediante CLOB pueden fallar si la liquidez es insuficiente

Bloqueo de Cloudflare en CLOB

La API CLOB de Polymarket utiliza protección Cloudflare que bloquea solicitudes POST de muchas IPs, incluidas IPs de centros de datos y algunos ISP residenciales. Esto afecta el paso de "vender tokens no deseados".

Solución: Proxy residencial con lógica de reintentos

La configuración recomendada utiliza un proxy residencial rotativo (ej. IPRoyal, BrightData). El cliente CLOB reintenta automáticamente con nuevas IPs hasta que una funciona:

export HTTPS_PROXY="http://user:[email protected]:12321"
export CLOB_MAX_RETRIES=10  # Por defecto es 5

Con esta configuración, las órdenes CLOB suelen tener éxito en 5-10 reintentos mientras el proxy rota IPs hasta encontrar una no bloqueada.

Soluciones alternativas:

  1. Usar --skip-sell — Conserva ambos tokens YES y NO, véndelos manualmente en polymarket.com
  2. Sin proxy — La división sigue funcionando; solo la venta CLOB se ve afectada

Si CLOB falla después de todos los reintentos, tu división aún tuvo éxito. La salida te indica cuántos tokens vender manualmente.

Solución de problemas

"No hay cartera disponible"

Configura la variable de entorno POLYCLAW_PRIVATE_KEY:

export POLYCLAW_PRIVATE_KEY="0x..."

"pUSD insuficiente"

Verifica el saldo con uv run python scripts/polyclaw.py wallet status. Las operaciones requieren pUSD (USD de Polymarket). Si tienes USDC.e, envuélvelo 1:1 mediante el Collateral Onramp (0x9307...B8ee) — la interfaz de polymarket.com lo hace automáticamente; los usuarios de API lo envuelven manualmente.

"La orden CLOB falló"

La venta CLOB puede fallar debido a:

  • Liquidez insuficiente al precio de venta
  • IP bloqueada por Cloudflare (prueba con proxy)

Tu división aún tuvo éxito: tienes los tokens, solo que no pudiste vender el lado no deseado.

"Aprobaciones no configuradas"

La primera operación requiere aprobaciones de contratos. Ejecuta:

uv run python scripts/polyclaw.py wallet approve

Licencia

Apache 2.0

Skills relacionados