Communitygithub.com

chainstacklabs/polyclaw

Negocie no Polymarket por meio de execução split + CLOB. Navegue por mercados, acompanhe posições com lucro/prejuízo, descubra hedges via LLM. Polygon/Web3.

O que é polyclaw?

PolyClaw é uma skill habilitada para negociação no Polymarket, projetada para o OpenClaw, que permite navegar por mercados de previsão, gerenciar carteiras, executar trades e acompanhar posições com lucro/prejuízo. Suporta a compra de posições YES/NO por meio de um fluxo de split (divisão de pUSD em tokens YES e NO) seguido de venda do lado indesejado via CLOB (order book V2). A skill também oferece descoberta de hedges impulsionada por LLM, que encontra pares de mercados com cobertura mútua via implicações lógicas, usando o modelo nvidia/nemotron-nano-9b-v2:free via OpenRouter. Ela é compatível com ambientes de linha de comando (scripts Python com uv) e pode ser integrada a assistentes de IA como Claude Code. A configuração envolve variáveis de ambiente para chave privada, nó RPC Polygon e chave da OpenRouter. Um diferencial é a lógica de retry com proxy residencial rotativo para contornar o bloqueio Cloudflare da API CLOB do Polymarket. A skill exige aprovação única dos contratos (6 transações) antes do primeiro trade e armazena a chave privada em variável de ambiente por simplicidade, recomendando manter apenas valores pequenos na carteira.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add chainstacklabs/polyclaw

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que polyclaw faz?

Skill do Polymarket com capacidade de negociação para OpenClaw. Navegue por mercados, gerencie carteiras, execute negociações e acompanhe posições.

Funcionalidades

  • Navegação de Mercados - Pesquise e navegue por mercados de previsão do Polymarket
  • Gerenciamento de Carteira - Configuração de carteira baseada em variáveis de ambiente
  • Negociação - Compre posições SIM/NÃO via execução split + CLOB
  • Acompanhamento de Posições - Acompanhe preços de entrada, preços atuais e lucro/prejuízo
  • Descoberta de Hedges - Descoberta de portfólios de cobertura via implicações lógicas com LLM

Início Rápido

Primeiro, instale as dependências (a partir do diretório da skill):

cd {baseDir}
uv sync

Configuração Inicial (Obrigatória para Negociação)

Antes da sua primeira negociação, defina as aprovações dos contratos do Polymarket (uma vez, custa ~0.01 POL em gas):

uv run python scripts/polyclaw.py wallet approve

Isso envia 6 transações de aprovação para a Polygon. Você só precisa fazer isso uma vez por carteira.

Navegar por Mercados

# Mercados em alta por volume
uv run python scripts/polyclaw.py markets trending

# Pesquisar mercados
uv run python scripts/polyclaw.py markets search "eleição"

# Detalhes do mercado (retorna JSON completo com todos os campos)
uv run python scripts/polyclaw.py market <market_id>

Opções de saída:

  • A saída padrão é uma tabela formatada (boa para exibição)
  • Use a flag --full para o texto completo da pergunta sem truncamento
  • Use a flag --json via scripts/markets.py --json trending para saída JSON estruturada

Gerenciamento de Carteira

# Verificar status da carteira (endereço, saldos)
uv run python scripts/polyclaw.py wallet status

# Definir aprovações de contratos (uma vez)
uv run python scripts/polyclaw.py wallet approve

A carteira é configurada por meio da variável de ambiente POLYCLAW_PRIVATE_KEY.

Negociação

# Comprar posição SIM por $50
uv run python scripts/polyclaw.py buy <market_id> YES 50

# Comprar posição NÃO por $25
uv run python scripts/polyclaw.py buy <market_id> NO 25

Posições

# Listar todas as posições com lucro/prejuízo
uv run python scripts/polyclaw.py positions

Descoberta de Hedges

Encontre portfólios de cobertura - pares de posições de mercado que se protegem mutuamente por meio de lógica por contraposição.

# Escanear mercados em alta para hedges
uv run python scripts/polyclaw.py hedge scan

# Escanear mercados que correspondem a uma consulta
uv run python scripts/polyclaw.py hedge scan --query "eleição"

# Analisar mercados específicos para relação de hedge
uv run python scripts/polyclaw.py hedge analyze <market_id_1> <market_id_2>

Opções de saída:

  • A saída padrão é uma tabela formatada mostrando: Nível, Cobertura, Custo, Alvo e Cobertura
  • Use a flag --json para saída JSON estruturada
  • Use --min-coverage 0.90 para filtrar por cobertura mínima (padrão 0.85)
  • Use --tier 1 para filtrar por nível (1=melhor, padrão 2)

Níveis de cobertura:

  • Nível 1 (ALTO): >=95% de cobertura - oportunidades de quase arbitragem
  • Nível 2 (BOM): 90-95% - hedges fortes
  • Nível 3 (MODERADO): 85-90% - risco decente, mas perceptível
  • Nível 4 (BAIXO): <85% - especulativo (filtrado por padrão)

Modelo LLM: Usa nvidia/nemotron-nano-9b-v2:free via OpenRouter. A escolha do modelo é importante — alguns modelos encontram correlações espúrias, enquanto outros (como DeepSeek R1) têm problemas de formatação de saída. Substitua com --model <model_id> se necessário.

Segurança

Para o MVP, a chave privada é armazenada em uma variável de ambiente para simplicidade e compatibilidade com Claude Code.

Aviso de Segurança: Mantenha apenas pequenas quantias nesta carteira. Retire regularmente para uma carteira segura.

Variáveis de Ambiente

VariávelObrigatórioDescrição
CHAINSTACK_NODESim (negociação)URL RPC da Polygon
OPENROUTER_API_KEYSim (hedge)Chave da API OpenRouter para descoberta de hedges via LLM
POLYCLAW_PRIVATE_KEYSim (negociação)Chave privada EVM (hex, com ou sem prefixo 0x)
HTTPS_PROXYRecomendadoProxy residencial rotativo para CLOB (ex.: IPRoyal)
CLOB_MAX_RETRIESNãoMáximo de tentativas CLOB com rotação de IP (padrão: 5)
POLY_BUILDER_CODENãoCódigo do builder em Bytes32 para atribuição (de polymarket.com/settings?tab=builder). Anexado a cada pedido quando definido.

Aviso de Segurança: Mantenha apenas pequenas quantias nesta carteira. Retire regularmente para uma carteira segura. A chave privada em uma variável de ambiente é conveniente para automação, mas menos segura que armazenamento criptografado.

Fluxo de Negociação

  1. Dividir Posição - pUSD é dividido em tokens SIM + NÃO através do contrato CTF
  2. Vender Indesejado - O lado indesejado é vendido via order book CLOB (V2)
  3. Resultado - Você mantém a posição desejada e recupera parte do custo com a venda do indesejado

Exemplo: Comprar SIM a $0,70

  • Dividir $100 pUSD → 100 tokens SIM + 100 tokens NÃO
  • Vender 100 tokens NÃO a ~$0,30 → recuperar ~$27 pUSD
  • Custo líquido: ~$73 para 100 tokens SIM (entrada: $0,73)

Se você tiver apenas USDC.e, envolva-o na proporção 1:1 em pUSD através da função wrap() do Collateral Onramp antes de negociar.

Contratos Polymarket (Polygon Mainnet, CLOB V2)

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

Dependências

Instale com uv (a partir do diretório da skill):

cd {baseDir}
uv sync

Limitações

  • A negociação requer configuração de aprovação da carteira (uma vez)
  • Vendas via CLOB podem falhar se a liquidez for insuficiente

Bloqueio Cloudflare do CLOB

A API CLOB do Polymarket usa proteção Cloudflare que bloqueia requisições POST de muitos IPs, incluindo IPs de datacenter e algumas operadoras residenciais. Isso afeta a etapa de "vender tokens indesejados".

Solução: Proxy residencial com lógica de retry

A configuração recomendada usa um proxy residencial rotativo (ex.: IPRoyal, BrightData). O cliente CLOB automaticamente tenta novamente com novos IPs até que um funcione:

export HTTPS_PROXY="http://user:[email protected]:12321"
export CLOB_MAX_RETRIES=10  # O padrão é 5

Com esta configuração, as ordens CLOB normalmente são bem-sucedidas em 5 a 10 tentativas, enquanto o proxy gira entre IPs até encontrar um não bloqueado.

Soluções alternativas:

  1. Use --skip-sell — Mantenha os tokens SIM e NÃO e venda manualmente em polymarket.com
  2. Sem proxy — A divisão ainda funciona; apenas a venda CLOB é afetada

Se o CLOB falhar após todas as tentativas, sua divisão ainda foi bem-sucedida. A saída informa quantos tokens vender manualmente.

Solução de Problemas

"Nenhuma carteira disponível"

Defina a variável de ambiente POLYCLAW_PRIVATE_KEY:

export POLYCLAW_PRIVATE_KEY="0x..."

"pUSD insuficiente"

Verifique o saldo com uv run python scripts/polyclaw.py wallet status. As negociações exigem pUSD (Polymarket USD). Se você tiver USDC.e, envolva-o na proporção 1:1 através do Collateral Onramp (0x9307...B8ee) — a interface do polymarket.com faz isso automaticamente; usuários de API envolvem manualmente.

"Pedido CLOB falhou"

A venda CLOB pode falhar devido a:

  • Liquidez insuficiente ao preço de venda
  • IP bloqueado pelo Cloudflare (tente um proxy)

Sua divisão ainda foi bem-sucedida - você tem os tokens, mas não conseguiu vender o lado indesejado.

"Aprovações não definidas"

A primeira negociação requer aprovações de contratos. Execute:

uv run python scripts/polyclaw.py wallet approve

Licença

Apache 2.0

Habilidades Relacionadas