Impronta Digitale di un Trader: Come Identificare un Market Maker dal Comportamento nel Book degli Ordini
Impronta comportamentale di un algoritmo di trading: schemi unici di timing, dimensionamento e posizionamento
Ogni algoritmo lascia un'impronta digitale unica. Impara a leggerla — e saprai chi è dall'altra parte del tuo trade.
Introduzione: Il Book degli Ordini come Scena del Crimine
Quando un investigatore forense arriva sulla scena del crimine, cerca impronte digitali, impronte di scarpe, DNA — qualsiasi cosa che colleghi un evento a un individuo specifico. Il book degli ordini è un luogo dove ogni secondo, centinaia di partecipanti lasciano le loro "impronte": ordini di una dimensione specifica, a una frequenza specifica, a una distanza specifica dal prezzo, con una durata di vita specifica.
Sugli exchange centralizzati (CEX), queste impronte sono anonime — si vede solo il volume aggregato a ogni livello di prezzo. Ma anche dai dati aggregati, si può imparare molto. E sugli exchange DEX con un book degli ordini on-chain — come Hyperliquid — ogni ordine è legato a un indirizzo wallet specifico, e le "impronte" diventano personali.
In questo articolo esploreremo come costruire un sistema di "impronte comportamentali" per identificare i tipi di partecipanti e gli specifici algoritmi di market maker.
Parte 1: Cos'è un'Impronta Comportamentale
Grafico radar: cinque dimensioni chiave dell'impronta comportamentale di un trader
Ogni Algoritmo è un Insieme di Regole
Un bot di market-making è un programma che prende decisioni basandosi su regole rigide (o apprese):
- A che distanza dal mid-price devono essere piazzati gli ordini? Ogni MM ha il proprio "profilo di spread."
- Che dimensione? Lotti tondi (100, 500, 1000)? Numeri casuali? Dimensione fissa con rumore del ±5%?
- Con quale frequenza aggiornare le quotazioni? Ogni 50ms? Solo quando il mid-price cambia? Su un timer?
- Come reagire ai fill? Re-quotazione istantanea? Pausa? Spostamento del lato rimanente?
- Come reagire alla volatilità? Allargamento dello spread? Ritiro delle quotazioni? Riduzione della dimensione?
- Come gestire l'inventario? Inclinazione delle quotazioni quando si accumula una posizione?
Ogni insieme di risposte a queste domande è una "firma" unica dell'algoritmo.
Cinque Dimensioni dell'Impronta
┌─────────────────────────────────────────────────────────────────┐
│ IMPRONTA DIGITALE DI UN TRADER │
│ │
│ 1. TIMING │ Intervalli inter-ordine, reazione │
│ │ agli eventi, schemi circadiani │
│──────────────────┼───────────────────────────────────────────── │
│ 2. SIZING │ Distribuzione della dimensione ordini, │
│ │ rapporto lotti tondi, dispersione │
│──────────────────┼───────────────────────────────────────────── │
│ 3. PLACEMENT │ Distanza dal mid-price, │
│ │ simmetria bid/ask, ancoraggio al livello │
│──────────────────┼───────────────────────────────────────────── │
│ 4. REACTION │ Risposta ai fill, cancellazioni, salti di │
│ │ prezzo, variazioni di volatilità │
│──────────────────┼───────────────────────────────────────────── │
│ 5. LIFECYCLE │ Durata media dell'ordine, │
│ │ condizioni di cancellazione, modify vs │
│ │ cancel+new │
│──────────────────┴───────────────────────────────────────────── │
└─────────────────────────────────────────────────────────────────┘
Parte 2: Estrazione delle Feature
Processo di Hawkes auto-eccitante: cluster di eventi con decadimento esponenziale
Timing: Quando e con Quale Frequenza
Lo schema di timing è l'elemento dell'impronta più difficile da falsificare. È determinato dall'architettura dell'algoritmo, dalla latenza di rete, dall'hardware e persino dal fuso orario degli sviluppatori.
Metriche chiave:
-
Intervallo inter-ordine (IOI) — il tempo tra ordini consecutivi dello stesso partecipante. Per un bot HFT, IOI = 50–500 microsecondi. Per un trader manuale — da secondi a minuti.
-
Tempo di reazione al trade — il ritardo tra il fill di un ordine e l'azione successiva. Riflette l'architettura interna del bot.
-
Schema circadiano — il profilo di attività giornaliera. Un MM istituzionale opera durante le sessioni di trading. Un bot cripto funziona 24/7.
-
Auto-eccitazione (intensità di Hawkes) — quanto fortemente un ordine corrente "innesca" il successivo. I market maker mostrano una forte auto-eccitazione.
Per modellare gli schemi di timing, i processi di Hawkes — processi puntuali auto-eccitanti — sono ideali. I parametri del processo di Hawkes (intensità di base μ, coefficiente di eccitazione α, tasso di decadimento β) formano una compatta "impronta cronologica" di un partecipante.
Sizing: Quanto e Come
- Distribuzione delle dimensioni — la distribuzione delle dimensioni degli ordini. I MM professionali usano spesso lotti tondi con rumore: 100 ± 5, 500 ± 10.
- Correlazione dimensione-profondità — la dimensione dell'ordine dipende dalla profondità corrente del book?
- Asimmetria bid-ask nella dimensione — il rapporto tra le dimensioni su bid e ask. Lo schema di inclinazione è la "scrittura" della gestione dell'inventario.
- Autocorrelazione della dimensione — ripetibilità delle dimensioni nel tempo.
Placement: Dove nel Book
- Offset dello spread — distanza dal mid-price in tick o bps
- Preferenza di livello — ancoraggio a livelli specifici (numeri tondi?)
- Simmetria di quotazione — quanto sono simmetrici gli ordini bid e ask
- Footprint multi-livello — quanti livelli vengono quotati simultaneamente
Reaction: Come Risponde agli Eventi
- Comportamento post-fill — cosa succede dopo che un ordine viene eseguito
- Risposta alla volatilità — come cambia il comportamento quando aumenta la volatilità
- Rapporto quotazione-trade (QTR) — il rapporto tra aggiornamenti degli ordini e fill
- Risposta alla selezione avversa — reazione al movimento del prezzo contro la posizione
Lifecycle: Il Ciclo di Vita dell'Ordine
- Distribuzione della durata dell'ordine — tempo di vita medio dell'ordine
- Modify vs Cancel+New — aggiorna tramite modify o cancel+new?
- Clustering delle cancellazioni — cancella uno alla volta o in batch?
Parte 3: Classificazione dei Partecipanti
Tassonomia dei partecipanti al mercato: market maker, HFT, opportunistici, fondamentali e trader rumore
Tassonomia dei Partecipanti al Mercato
Sulla base delle feature comportamentali, i partecipanti possono essere classificati in categorie stabili. Ricerca della CFTC (Kirilenko et al., 2011):
1. Market Maker
- Quotazioni bilaterali (bid + ask) per >80% del tempo
- Posizione netta zero o quasi zero a fine giornata
- Alto QTR (>100:1)
- Reagiscono alla volatilità allargando gli spread
2. Trader ad Alta Frequenza (HFT)
- Tasso di messaggi ultra-elevato (>1000 eventi/minuto)
- Periodo di detenzione molto breve (secondi)
- Tempi di reazione sotto il millisecondo
3. Trader Opportunistici
- Frequenza moderata
- Reagiscono a condizioni di mercato specifiche
- Timing irregolare, concentrato attorno agli eventi
4. Trader Fondamentali
- Accumulano posizioni a lungo termine
- Bassa frequenza, grandi dimensioni degli ordini
- Algoritmi TWAP/VWAP per l'esecuzione
5. Trader Rumore (Retail)
- Dimensioni piccole, timing irregolare
- Reattivi: tradano dopo i movimenti di prezzo, non prima
- Ordini di mercato al picco di volatilità
Metodi di Classificazione
Apprendimento Supervisionato: Per i dati DEX (Hyperliquid), è possibile assemblare un set di addestramento dagli indirizzi di market maker noti. I modelli RNN raggiungono un'accuratezza >85%.
Apprendimento Non Supervisionato:
- Spectral Clustering (Cont et al., 2023) — clustering per matrice di similarità dei pattern di flusso degli ordini
- FIDR-SCAN (2024) — interpolazione delle feature + riduzione della dimensionalità + clustering basato sulla densità
- Inverse Reinforcement Learning (CFTC, 2014) — recupero della funzione di ricompensa di ogni trader
Parte 4: Identificazione dei Market Maker Specifici
Dalla Classificazione all'Identificazione
La classificazione risponde alla domanda "Questo è un market maker?" L'identificazione risponde alla domanda "Questo è quel specifico market maker?"
Costruire il Vettore dell'Impronta
Dalle cinque dimensioni, estraiamo un vettore numerico — l'embedding del partecipante:
Vettore Impronta (esempio):
┌──────────────────────────────────────────────────────────┐
│ Timing: │
│ hawkes_mu: 0.3 (intensità base) │
│ hawkes_alpha: 0.7 (auto-eccitazione) │
│ hawkes_beta: 1.2 (tasso di decadimento) │
│ median_IOI_ms: 240 (ms tra gli ordini) │
│ circadian_peak_utc: 14.5 (picco di attività) │
│ │
│ Sizing: │
│ median_size: 500 │
│ size_cv: 0.08 (coeff. di variazione) │
│ round_lot_ratio: 0.92 (quota lotti tondi) │
│ bid_ask_size_ratio: 0.97 │
│ │
│ Placement: │
│ median_offset_bps: 3.2 (dal mid-price) │
│ quoting_symmetry: 0.94 (0=asimm, 1=simm) │
│ num_levels: 5 (livelli quotati) │
│ │
│ Reaction: │
│ post_fill_delay_ms: 12 │
│ vol_spread_elasticity: 2.1 (spread/sigma) │
│ qtr: 850 (rapporto quota-trade) │
│ │
│ Lifecycle: │
│ median_lifetime_ms: 1200 │
│ modify_ratio: 0.85 (modify vs cancel+new) │
│ batch_cancel_rate: 0.60 (quota cancel in batch)│
└──────────────────────────────────────────────────────────┘
Clustering degli Indirizzi: "Un Operatore — N Wallet"
Grafo del cluster di indirizzi: un operatore — più wallet, raggruppati per similarità comportamentale
Su Hyperliquid, un singolo market maker può operare attraverso decine o centinaia di indirizzi.
Algoritmo di clustering:
- Per ogni indirizzo attivo — costruire un vettore impronta su una finestra di N ore
- Clustering gerarchico — unire gli indirizzi con distanza < soglia
- Validazione temporale — verificare la stabilità del cluster nel tempo
- Validazione incrociata tra coppie — se due indirizzi tradano coppie diverse ma le impronte corrispondono — segnale forte
Cluster #7 (sospettato: Wintermute)
├── 0x3a1f...2e8c — BTC/USDT, 45% dell'attività
├── 0x7b2d...9f1a — ETH/USDT, 30% dell'attività
├── 0xc4e8...5d3b — SOL/USDT, 15% dell'attività
└── 0x91fa...0c7e — ARB/USDT, 10% dell'attività
Schema comune: quotazione simmetrica, 5 livelli, median_IOI=240ms,
median_size=500±8%, cancel in batch 60%, presenza 95%
Parte 5: Scenari di Manipolazione e le Loro Impronte
Spoofing: L'Impronta di un Muro Falso
Impronta dello spoofer:
cancel_rate: > 95%
lifetime: < 2 secondi
placement: 1-3 tick dal mid-price
size: anomalamente grande (>10x profondità mediana)
reaction_to_approach: cancella quando il prezzo si avvicina
cyclicity: si ripete >3 volte / minuto
Squeeze: La Trappola di Liquidità
Quattro fasi: accumulo silenzioso, rimozione della liquidità, cascata di stop-order, presa di profitto. Il rilevamento in tempo reale è possibile identificando la transizione dalla Fase 1 alla Fase 2.
Iceberg / Accumulo Nascosto: L'Accumulo Silenzioso
Impronta dell'accumulo nascosto:
visible_size: piccola (10-50 lotti)
refill_speed: istantanea (< 100ms dopo il fill)
refill_count: > 20 allo stesso livello per sessione
price_reaction: il prezzo non si muove nonostante il volume
Wash Trading: Auto-Negoziazione
Due o più indirizzi dello stesso cluster siedono simultaneamente su bid e ask ed eseguono tra loro. Scopo: gonfiare il volume.
Parte 6: Implementazione in Marketmaker.cc
Architettura del Sistema di Impronta Comportamentale
┌─────────────────────────────────────────────────────────────┐
│ DATA LAYER │
│ ├── Hyperliquid Node → L3 ordine-per-ordine + wallet ID │
│ ├── CEX WebSocket → L2 profondità + trade │
│ └── Historical Store → QuestDB / Parquet │
├─────────────────────────────────────────────────────────────┤
│ FEATURE EXTRACTION │
│ ├── Timing Engine → fit Hawkes, distribuzione IOI │
│ ├── Sizing Engine → statistiche size, rilevamento lotti│
│ ├── Placement Engine → calcolo offset, analisi simmetria │
│ ├── Reaction Engine → tracker post-fill, risposta vol │
│ └── Lifecycle Engine → statistiche durata, pattern cancel │
├─────────────────────────────────────────────────────────────┤
│ CLASSIFICATION / IDENTIFICATION │
│ ├── Online Classifier → tagging partecipanti in tempo reale│
│ ├── Cluster Engine → clustering indirizzi (DEX) │
│ ├── Similarity Search → matching delle impronte │
│ └── Anomaly Detector → rilevamento spoof/squeeze/wash │
├─────────────────────────────────────────────────────────────┤
│ VISUALIZATION │
│ ├── Posizione in Coda + Etichette Partecipanti │
│ ├── Grafo Cluster (cluster MM noti) │
│ ├── Sistema di Alert (manipolazione rilevata) │
│ └── Browser Storico delle Impronte │
└─────────────────────────────────────────────────────────────┘
Cosa Vede il Trader nel Terminale
╔═══════════════════════════════════════════════════════════════════════════╗
║ 10000 USDT │ Totale: 3.200 ║
║──────────────┼───────────────────────────────────────────────────────── ║
║ Dettaglio: │ 🤖 MM (cluster#7, ~Wintermute): 800 lotti [5 livelli] ║
║ │ 🤖 MM (cluster#12, sconosciuto): 400 lotti [3 livelli]║
║ │ ⚠️ Sospetto (spoof score 87): 500 lotti [durata<2s] ║
║ │ 🟡 @pro_scalper: 100 lotti ║
║ │ 🔴 MIO: 10 lotti ║
║ │ 👤 Retail / non classificato: 1.390 lotti ║
║──────────────┼───────────────────────────────────────────────────────── ║
║ Coda avanti │ Reale: ~1.200 (escl. spoof) Nominale: 1.800 ║
║ ETA "pulita"│ 6,7s (vs nominale 10s) ║
║ Tipo muro: │ Supportato da MM (65% volume MM) — probabile tenuta ║
╚═══════════════════════════════════════════════════════════════════════════╝
Alert
- 🔴 Spoof rilevato al tuo livello di prezzo — un blocco sospetto è stato identificato davanti al tuo ordine
- 🟡 Ritiro del MM — un market maker ha ritirato le quotazioni, la liquidità è diminuita
- 🟡 Setup squeeze rilevato — un cluster di indirizzi sta accumulando una posizione e rimuovendo liquidità
- 🟢 Muro rinforzato — il volume di un MM noto è stato aggiunto al tuo livello
Parte 7: Etica e Limitazioni
Cosa è e Non è Accettabile
Accettabile e incoraggiato:
- Classificare i partecipanti anonimi per tipo per le proprie decisioni di trading
- Rilevare la manipolazione per proteggersi dalla selezione avversa
- Clustering degli indirizzi su DEX per comprendere la struttura del mercato
Non accettabile:
- Deanonimizzare individui tramite indirizzi wallet
- Vendere pattern identificati senza consenso
- Usare i dati per la manipolazione del mercato
Limitazioni
- Algoritmi adattativi — i MM avanzati aggiungono randomizzazione
- Cambio di regime — un singolo bot può cambiare comportamento in base al regime di mercato
- Falsi positivi — due partecipanti potrebbero per coincidenza condividere parametri simili
- Opacità dei CEX — i dati L3 non sono disponibili sui CEX
Conclusione: Dal Leggere il Book al Leggere i Partecipanti
Un trader tradizionale vede: 2.400 lotti al livello 10000. Un trader avanzato vede: "il mio ordine è il 1.800° in coda, ETA — 15 secondi." Ma un trader con il fingerprinting comportamentale vede:
"800 di quei 2.400 sono un market maker (probabilmente Wintermute), il muro è solido. 500 sono sospetti spoof, la coda reale davanti a me è 1.300, non 1.800. ETA aggiustata — 10 secondi. Il market maker non sta ritirando le quotazioni — quindi non ci si aspetta un grande movimento per ora."
Ogni nuovo livello di informazione è un vantaggio. E a differenza della velocità, la qualità dell'interpretazione del book degli ordini è un dominio in cui un trader retail può competere.
In Marketmaker.cc, stiamo costruendo questo sistema — dalla posizione in coda al fingerprinting comportamentale — come un prodotto unificato.
Articolo precedente della serie: "Coda Dentro il Muro: Analisi della Posizione degli Ordini nella Densità del Book degli Ordini"
Riferimenti e Letture Ulteriori
- 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)
Autori
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.