Football market intelligence, probability and research-grade learning.

Entrar no curso

Contexto do curso

Polymarket — Operação Técnica em Mercados de Previsão

WebSocket: Dados em Tempo Real para Trading Automatizado

Ensinar do zero ao avançado como operar na Polymarket: criação de wallet, conexão à plataforma, leitura de book de ordens, execução de trades manuais e automatizados, compreensão do mecanismo CLOB, pricing de outcomes, gestão de risco em mercados de previsão, e extração de dados via API — tudo com exemplos concretos em mercados de futebol.

API, Automação e Bots Avancado 48 min

Aula 14

WebSocket: Dados em Tempo Real para Trading Automatizado

Aula 14: WebSocket para Dados em Tempo Real

Para trading automatizado, polling REST não é suficiente. Precisas de WebSocket para receber atualizações de preço, negociações executadas e alterações no book em tempo real.

Mecanismo: O WebSocket da Polymarket usa um modelo de subscrição por canal. Ligas-te ao endpoint ws-subscriptions-clob.polymarket.com e envias uma mensagem JSON a subscrever canais (price_change, book, user_trades). O servidor envia atualizações contínuas enquanto a ligação estiver ativa.

import asyncio
import websockets
import json

async def subscribe_price_changes(asset_id):
    uri = "wss://ws-subscriptions-clob.polymarket.com/ws/"
    async with websockets.connect(uri) as ws:
        # Subscrever canal de preços
        msg = {"type": "subscribe", "channel": "price_change", "asset_id": asset_id}
        await ws.send(json.dumps(msg))
        print(f"Subscrito em price_change para asset {asset_id}")
        
        # Processar mensagens contínuas
        async for message in ws:
            data = json.loads(message)
            if data.get("channel") == "price_change":
                preco = data["price"]
                timestamp = data["timestamp"]
                print(f"Preço: {preco} às {timestamp}")

# Para múltiplos assets em simultâneo
async def monitor_multiple_assets(asset_ids):
    tasks = [subscribe_price_changes(aid) for aid in asset_ids]
    await asyncio.gather(*tasks)

asyncio.run(subscribe_price_changes("asset_id_do_mercado_de_futebol"))

Modo de falha

Modo de Falha Comum

“O WebSocket desligou e perdi dados.”

WebSocket ligações caem — é esperado. O que não podes fazer é não tratar a reconexão. Implementa um loop com reconexão automática (exponential backoff), um heartbeat para detectar desconexão, e um buffer local para evitar perda de dados durante a janela de reconexão.

Aprofundamento operacional

WebSocket serve para reduzir atraso informacional, mas aumenta complexidade operacional. Um feed ao vivo sem controle de reconexao, deduplicacao e estado local pode parecer sofisticado e ainda assim produzir sinais errados.

Para trading automatizado, o ponto central e manter um estado confiavel do mercado. Mensagens podem chegar fora de ordem, a conexao pode cair, e o book local pode ficar inconsistente. Por isso, sistemas serios combinam snapshot inicial via REST com updates incrementais via WebSocket.

Arquitetura minima

  • Buscar snapshot inicial do book.
  • Abrir WebSocket para updates.
  • Aplicar updates ao estado local.
  • Reconciliar periodicamente com REST.
  • Descartar sinais quando o estado estiver desatualizado.
  • Registrar latencia, quedas e reconexoes.

Exercicio pratico

Adicione ao seu script uma variavel last_message_at. Se o feed ficar sem mensagem por mais de um limite definido, pause qualquer decisao automatica e recarregue o snapshot via REST.

Auditoria aplicada

Esta aula deve terminar com uma pequena auditoria escrita. O objetivo nao e produzir uma nota bonita, mas transformar “WebSocket: Dados em Tempo Real para Trading Automatizado” em uma decisao verificavel. Use os conceitos centrais da aula (os conceitos principais da aula) para construir um registro que possa ser revisado depois, quando o mercado ja tiver se movido ou o evento ja tiver sido resolvido.

Comece pela pergunta operacional: o que eu consigo observar agora que muda minha decisao? Depois separe evidencia, inferencia e decisao. Evidencia e dado verificavel: preco, spread, profundidade, regra de resolucao, horario, volume, estado do book, endpoint consultado ou custo calculado. Inferencia e a leitura que voce faz a partir desses dados. Decisao e o que voce faz com a leitura: estudar mais, descartar, entrar com ordem limit, esperar liquidez, reduzir stake, usar API apenas para leitura ou classificar como No Bet.

Protocolo de revisao

  1. Escreva a tese em uma frase curta.
  2. Liste os tres dados que sustentam a tese.
  3. Liste o principal dado que poderia invalidar a tese.
  4. Defina o custo de estar errado: perda financeira, slippage, fee, tempo preso, erro de resolucao ou risco operacional.
  5. Defina o gatilho de pausa. Se esse gatilho acontecer, a decisao deve ser reavaliada antes de qualquer nova ordem.

Perguntas de controle

  • O mercado esta suficientemente liquido para o tamanho que eu quero usar?
  • O preco atual ainda paga o risco depois de spread, fees e slippage?
  • A regra de resolucao esta clara o suficiente para eu aceitar exposicao?
  • Se eu estivesse explicando este trade para outra pessoa, conseguiria separar dado de opiniao?
  • Existe um caminho simples de saida se a leitura estiver errada?

Saida esperada

No fim da aula, salve uma nota de cinco linhas: mercado observado, preco observado, risco principal, decisao tomada e motivo para revisar depois. Esse habito cria memoria operacional. Sem memoria, o operador repete erros com mais confianca. Com memoria, cada aula vira uma parte do sistema de pesquisa.