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
--fullpara o texto completo da pergunta sem truncamento - Use a flag
--jsonviascripts/markets.py --json trendingpara 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
--jsonpara saída JSON estruturada - Use
--min-coverage 0.90para filtrar por cobertura mínima (padrão 0.85) - Use
--tier 1para 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ável | Obrigatório | Descrição |
|---|---|---|
CHAINSTACK_NODE | Sim (negociação) | URL RPC da Polygon |
OPENROUTER_API_KEY | Sim (hedge) | Chave da API OpenRouter para descoberta de hedges via LLM |
POLYCLAW_PRIVATE_KEY | Sim (negociação) | Chave privada EVM (hex, com ou sem prefixo 0x) |
HTTPS_PROXY | Recomendado | Proxy residencial rotativo para CLOB (ex.: IPRoyal) |
CLOB_MAX_RETRIES | Não | Máximo de tentativas CLOB com rotação de IP (padrão: 5) |
POLY_BUILDER_CODE | Não | Có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
- Dividir Posição - pUSD é dividido em tokens SIM + NÃO através do contrato CTF
- Vender Indesejado - O lado indesejado é vendido via order book CLOB (V2)
- 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:
- Use
--skip-sell— Mantenha os tokens SIM e NÃO e venda manualmente em polymarket.com - 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