Impressão Digital de um Trader: Como Identificar um Market Maker pelo Comportamento no Order Book
Impressão digital comportamental de um algoritmo de trading: padrões únicos de timing, tamanho e posicionamento
Todo algoritmo deixa uma impressão digital única. Aprenda a lê-la — e você saberá quem está do outro lado da sua operação.
Introdução: O Order Book como Cena de Crime
Quando um investigador forense chega a uma cena de crime, ele procura impressões digitais, marcas de sapato, DNA — qualquer coisa que ligue um evento a um indivíduo específico. O order book é um lugar onde, a cada segundo, centenas de participantes deixam suas "impressões digitais": ordens de um tamanho específico, com uma frequência específica, a uma distância específica do preço, com um tempo de vida específico.
Nas exchanges centralizadas (CEX), essas impressões digitais são anônimas — você vê apenas o volume agregado em cada nível de preço. Mas mesmo a partir de dados agregados é possível aprender muito. E em exchanges DEX com order book on-chain — como a Hyperliquid — cada ordem está vinculada a um endereço de carteira específico, e as "impressões digitais" se tornam pessoais.
Neste artigo, vamos explorar como construir um sistema de "impressões digitais comportamentais" para identificar tipos de participantes e algoritmos específicos de market makers.
Parte 1: O Que É uma Impressão Digital Comportamental
Gráfico radar: cinco dimensões-chave da impressão digital comportamental de um trader
Todo Algoritmo É um Conjunto de Regras
Um bot de market making é um programa que toma decisões com base em regras rígidas (ou aprendidas):
- A que distância do mid-price as ordens devem ser colocadas? Cada MM tem seu próprio "perfil de spread."
- Que tamanho? Lotes redondos (100, 500, 1000)? Números aleatórios? Tamanho fixo com ruído de ±5%?
- Com que frequência as cotações devem ser atualizadas? A cada 50ms? Só quando o mid-price muda? Em um timer?
- Como reagir a fills? Recotação instantânea? Pausa? Deslocamento do lado remanescente?
- Como reagir à volatilidade? Alargamento do spread? Retirada de cotações? Redução de tamanho?
- Como gerenciar o inventário? Skew de cotação ao acumular posição?
Cada conjunto de respostas a essas perguntas é uma "assinatura" única do algoritmo.
Cinco Dimensões da Impressão Digital
┌─────────────────────────────────────────────────────────────────┐
│ DIGITAL FINGERPRINT OF A TRADER │
│ │
│ 1. TIMING │ Inter-order intervals, reaction │
│ │ to events, circadian patterns │
│──────────────────┼───────────────────────────────────────────── │
│ 2. SIZING │ Order size distribution, │
│ │ round-lot ratio, dispersion │
│──────────────────┼───────────────────────────────────────────── │
│ 3. PLACEMENT │ Distance from mid-price, │
│ │ bid/ask symmetry, level anchoring │
│──────────────────┼───────────────────────────────────────────── │
│ 4. REACTION │ Response to fills, cancels, price jumps, │
│ │ volatility changes │
│──────────────────┼───────────────────────────────────────────── │
│ 5. LIFECYCLE │ Average order lifetime, │
│ │ cancel conditions, modify vs cancel+new │
│──────────────────┴───────────────────────────────────────────── │
└─────────────────────────────────────────────────────────────────┘
Parte 2: Extração de Features
Processo Hawkes auto-excitante: clusters de eventos com decaimento exponencial
Timing: Quando e Com Que Frequência
O padrão de timing é o elemento mais difícil de forjar na impressão digital. Ele é determinado pela arquitetura do algoritmo, pela latência de rede, pelo hardware e até pelo fuso horário dos desenvolvedores.
Métricas-chave:
-
Inter-order interval (IOI) — o tempo entre ordens consecutivas do mesmo participante. Para um bot HFT, IOI = 50–500 microssegundos. Para um trader manual — segundos a minutos.
-
Tempo de reação a um trade — o atraso entre o fill de uma ordem e a próxima ação. Reflete a arquitetura interna do bot.
-
Padrão circadiano — o perfil de atividade diário. Um MM institucional opera durante sessões de negociação. Um bot cripto roda 24/7.
-
Auto-excitação (intensidade de Hawkes) — o quanto uma ordem atual "dispara" a próxima. Market makers exibem forte auto-excitação.
Para modelar padrões de timing, os processos de Hawkes — processos pontuais auto-excitantes — são ideais. Os parâmetros do processo de Hawkes (intensidade base μ, coeficiente de excitação α, taxa de decaimento β) formam uma "impressão digital cronológica" compacta de um participante.
Sizing: Quanto e Como
- Distribuição de tamanhos — a distribuição dos tamanhos das ordens. MMs profissionais costumam usar lotes redondos com ruído: 100 ± 5, 500 ± 10.
- Correlação tamanho-profundidade — o tamanho da ordem depende da profundidade atual do book?
- Assimetria de tamanho bid-ask — a razão entre os tamanhos no bid e no ask. O padrão de skew é a "caligrafia" da gestão de inventário.
- Autocorrelação de tamanho — repetibilidade dos tamanhos ao longo do tempo.
Placement: Onde no Book
- Offset de spread — distância do mid-price em ticks ou bps
- Preferência de nível — ancoragem a níveis específicos (números redondos?)
- Simetria de cotação — quão simétricas são as ordens de bid e ask
- Footprint multi-nível — quantos níveis são cotados simultaneamente
Reaction: Como Reage a Eventos
- Comportamento pós-fill — o que acontece depois que uma ordem é preenchida
- Resposta à volatilidade — como o comportamento muda quando a volatilidade aumenta
- Quote-to-trade ratio (QTR) — a razão entre atualizações de ordens e fills
- Resposta à seleção adversa — reação ao movimento de preço contrário à posição
Lifecycle: O Ciclo de Vida da Ordem
- Distribuição do tempo de vida da ordem — tempo médio de vida da ordem
- Modify vs Cancel+New — atualiza via modify ou via cancel+new?
- Clustering de cancelamentos — cancela uma por uma ou em lotes?
Parte 3: Classificação de Participantes
Taxonomia de participantes de mercado: market makers, HFT, oportunistas, fundamentalistas e traders de ruído
Taxonomia dos Participantes de Mercado
Com base em features comportamentais, os participantes podem ser classificados em categorias estáveis. Pesquisa da CFTC (Kirilenko et al., 2011):
1. Market Makers
- Cotações dos dois lados (bid + ask) por mais de 80% do tempo
- Posição líquida zero ou próxima de zero ao final do dia
- QTR alto (>100:1)
- Reagem à volatilidade alargando os spreads
2. High-Frequency Traders (HFT)
- Taxa de mensagens ultra-alta (>1000 eventos/minuto)
- Período de holding muito curto (segundos)
- Tempos de reação em sub-milissegundos
3. Traders Oportunistas
- Frequência moderada
- Reagem a condições específicas de mercado
- Timing irregular, agrupado em torno de eventos
4. Traders Fundamentalistas
- Acumulam posições de longo prazo
- Baixa frequência, ordens de grande tamanho
- Algoritmos TWAP/VWAP para execução
5. Traders de Ruído (Varejo)
- Tamanhos pequenos, timing irregular
- Reativos: operam depois que o preço se move, não antes
- Ordens a mercado no pico de volatilidade
Métodos de Classificação
Aprendizado Supervisionado: Para dados de DEX (Hyperliquid), um conjunto de treinamento pode ser montado a partir de endereços de market makers conhecidos. Modelos RNN atingem acurácia >85%.
Aprendizado Não Supervisionado:
- Spectral Clustering (Cont et al., 2023) — clustering pela matriz de similaridade do padrão de order flow
- FIDR-SCAN (2024) — interpolação de features + redução de dimensionalidade + clustering baseado em densidade
- Inverse Reinforcement Learning (CFTC, 2014) — recuperação da função de recompensa de cada trader
Parte 4: Identificando Market Makers Específicos
Da Classificação à Identificação
A classificação responde à pergunta "Isto é um market maker?" A identificação responde à pergunta "Isto é aquele market maker específico?"
Construindo o Vetor de Impressão Digital
A partir das cinco dimensões, extraímos um vetor numérico — o embedding do participante:
Fingerprint Vector (example):
┌──────────────────────────────────────────────────────────┐
│ Timing: │
│ hawkes_mu: 0.3 (base intensity) │
│ hawkes_alpha: 0.7 (self-excitation) │
│ hawkes_beta: 1.2 (decay rate) │
│ median_IOI_ms: 240 (ms between orders) │
│ circadian_peak_utc: 14.5 (peak activity) │
│ │
│ Sizing: │
│ median_size: 500 │
│ size_cv: 0.08 (coeff. of variation) │
│ round_lot_ratio: 0.92 (round lot share) │
│ bid_ask_size_ratio: 0.97 │
│ │
│ Placement: │
│ median_offset_bps: 3.2 (from mid-price) │
│ quoting_symmetry: 0.94 (0=asymmetric,1=symm) │
│ num_levels: 5 (quoted levels) │
│ │
│ Reaction: │
│ post_fill_delay_ms: 12 │
│ vol_spread_elasticity: 2.1 (spread/sigma) │
│ qtr: 850 (quote-to-trade ratio) │
│ │
│ Lifecycle: │
│ median_lifetime_ms: 1200 │
│ modify_ratio: 0.85 (modify vs cancel+new) │
│ batch_cancel_rate: 0.60 (batch cancel share) │
└──────────────────────────────────────────────────────────┘
Clustering de Endereços: "Um Operador — N Carteiras"
Grafo de cluster de endereços: um operador — múltiplas carteiras, agrupadas por similaridade comportamental
Na Hyperliquid, um único market maker pode operar através de dezenas ou centenas de endereços.
Algoritmo de clustering:
- Para cada endereço ativo — construir um vetor de impressão digital em uma janela de N horas
- Clustering hierárquico — mesclar endereços com distância abaixo de um limiar
- Validação temporal — verificar a estabilidade do cluster ao longo do tempo
- Validação cross-pair — se dois endereços negociam pares diferentes mas as impressões digitais coincidem — sinal forte
Cluster #7 (suspected: Wintermute)
├── 0x3a1f...2e8c — BTC/USDT, 45% of activity
├── 0x7b2d...9f1a — ETH/USDT, 30% of activity
├── 0xc4e8...5d3b — SOL/USDT, 15% of activity
└── 0x91fa...0c7e — ARB/USDT, 10% of activity
Common pattern: symmetric quoting, 5 levels, median_IOI=240ms,
median_size=500±8%, batch cancel 60%, presence 95%
Parte 5: Cenários de Manipulação e Suas Impressões Digitais
Spoofing: A Impressão Digital de um Muro Falso
Spoofer fingerprint:
cancel_rate: > 95%
lifetime: < 2 seconds
placement: 1-3 ticks from mid-price
size: anomalously large (>10x median depth)
reaction_to_approach: cancel when price approaches
cyclicity: repeats >3 times / minute
Squeeze: A Armadilha de Liquidez
Quatro fases: acumulação silenciosa, remoção de liquidez, cascata de stop-orders, realização de lucro. A detecção em tempo real é possível identificando a transição da Fase 1 para a Fase 2.
Iceberg / Acumulação Oculta: A Construção Silenciosa
Hidden accumulation fingerprint:
visible_size: small (10-50 lots)
refill_speed: instant (< 100ms after fill)
refill_count: > 20 at a single level per session
price_reaction: price does not move despite volume
Wash Trading: Autonegociação
Dois ou mais endereços do mesmo cluster ficam simultaneamente no bid e no ask e executam um contra o outro. Objetivo: inflar o volume.
Parte 6: Implementação na Marketmaker.cc
Arquitetura do Sistema de Impressão Digital Comportamental
┌─────────────────────────────────────────────────────────────┐
│ DATA LAYER │
│ ├── Hyperliquid Node → L3 order-by-order + wallet IDs │
│ ├── CEX WebSocket → L2 depth + trades │
│ └── Historical Store → QuestDB / Parquet │
├─────────────────────────────────────────────────────────────┤
│ FEATURE EXTRACTION │
│ ├── Timing Engine → Hawkes fit, IOI distribution │
│ ├── Sizing Engine → Size stats, round-lot detection │
│ ├── Placement Engine → Offset calc, symmetry analysis │
│ ├── Reaction Engine → Post-fill tracker, vol response │
│ └── Lifecycle Engine → Lifetime stats, cancel patterns │
├─────────────────────────────────────────────────────────────┤
│ CLASSIFICATION / IDENTIFICATION │
│ ├── Online Classifier → Real-time participant tagging │
│ ├── Cluster Engine → Address clustering (DEX) │
│ ├── Similarity Search → Fingerprint matching │
│ └── Anomaly Detector → Spoof / squeeze / wash detection │
├─────────────────────────────────────────────────────────────┤
│ VISUALIZATION │
│ ├── Queue Position + Participant Labels │
│ ├── Cluster Graph (known MM clusters) │
│ ├── Alert System (manipulation detected) │
│ └── Historical Fingerprint Browser │
└─────────────────────────────────────────────────────────────┘
O Que o Trader Vê no Terminal
╔═══════════════════════════════════════════════════════════════════════════╗
║ 10000 USDT │ Total: 3,200 ║
║──────────────┼───────────────────────────────────────────────────────── ║
║ Breakdown: │ 🤖 MM (cluster#7, ~Wintermute): 800 lots [5 levels] ║
║ │ 🤖 MM (cluster#12, unknown): 400 lots [3 levels] ║
║ │ ⚠️ Suspicious (spoof score 87): 500 lots [lifetime<2s]║
║ │ 🟡 @pro_scalper: 100 lots ║
║ │ 🔴 MINE: 10 lots ║
║ │ 👤 Retail / unclassified: 1,390 lots ║
║──────────────┼───────────────────────────────────────────────────────── ║
║ Queue ahead │ Real: ~1,200 (excl. spoof) Nominal: 1,800 ║
║ "Clean" ETA │ 6.7s (vs nominal 10s) ║
║ Wall type: │ MM-backed (65% MM volume) — likely to hold ║
╚═══════════════════════════════════════════════════════════════════════════╝
Alertas
- 🔴 Spoof detectado no seu nível de preço — um bloco suspeito foi identificado na frente da sua ordem
- 🟡 Retirada de MM — um market maker retirou suas cotações, a liquidez caiu
- 🟡 Setup de squeeze detectado — um cluster de endereços está acumulando posição e removendo liquidez
- 🟢 Muro reforçado — volume de um MM conhecido foi adicionado no seu nível
Parte 7: Ética e Limitações
O Que É e Não É Aceitável
Aceitável e incentivado:
- Classificar participantes anônimos por tipo para suas próprias decisões de trading
- Detectar manipulação para se proteger contra seleção adversa
- Fazer clustering de endereços em DEX para entender a estrutura do mercado
Não aceitável:
- Desanonimizar indivíduos por endereços de carteira
- Vender padrões identificados sem consentimento
- Usar dados para manipulação de mercado
Limitações
- Algoritmos adaptativos — MMs avançados adicionam aleatorização
- Regime switching — um único bot pode mudar de comportamento dependendo do regime de mercado
- Falsos positivos — dois participantes podem coincidentemente compartilhar parâmetros semelhantes
- Opacidade da CEX — dados L3 não estão disponíveis em CEX
Conclusão: De Ler o Book a Ler os Participantes
Um trader tradicional vê: 2.400 lotes no nível 10000. Um trader avançado vê: "minha ordem está na posição 1.800 da fila, ETA — 15 segundos." Mas um trader com fingerprinting comportamental vê:
"800 desses 2.400 são de um market maker (provavelmente Wintermute), o muro é sólido. 500 são suspeitos de spoof, a fila real à minha frente é de 1.300, não 1.800. ETA ajustado — 10 segundos. O market maker não está retirando cotações — então nenhum movimento grande é esperado por enquanto."
Cada nova camada de informação é uma vantagem. E, ao contrário da velocidade, a qualidade da interpretação do order book é um domínio no qual um trader de varejo pode competir.
Na Marketmaker.cc, estamos construindo esse sistema — da posição na fila ao fingerprinting comportamental — como um produto unificado.
Artigo anterior da série: "Fila Dentro do Muro: Analisando a Posição da Ordem na Densidade do Order Book"
Referências e Leitura Adicional
- Kirilenko A., Kyle A., Samadi M., Tuzun T. — "The Flash Crash: High-Frequency Trading in an Electronic Market" (CFTC, 2011)
- Paddrik M., Hayes R., Scherer W., Beling P. — "Gaussian Process-Based Algorithmic Trading Strategy Identification" (CFTC / OFR, 2014)
- Cont R. et al. — "Unsupervised spectral clustering of trader order flow" (2023)
- FIDR-SCAN — "Explainable Machine Learning for HFT Dynamics Discovery" (2024)
- Do B.L., Putniņš T.J. — "Detecting Layering and Spoofing in Markets" (SSRN, 2023)
- Hawkes A.G. — "Spectra of Some Self-Exciting and Mutually Exciting Point Processes" (Biometrika, 1971)
- Avellaneda M., Stoikov S. — "High-Frequency Trading in a Limit Order Book" (Quantitative Finance, 2008)
Authors
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.