La Coda Dentro il Muro: Analisi della Posizione degli Ordini nella Densità del Book degli Ordini
Introduzione: Perché il Book degli Ordini Aggregato Mente
Ogni trader che opera sul book degli ordini vede la stessa immagine: le offerte d'acquisto a sinistra, le offerte di vendita a destra e a ogni livello di prezzo — un numero che mostra il volume totale degli ordini limite. Ad esempio:
Prezzo 10001 | 150 lotti
Prezzo 10000 | 2.400 lotti ← muro
Prezzo 9999 | 80 lotti
2.400 lotti al livello 10000 — questo è un "muro" (densità). E qui si nasconde una domanda di importanza critica che la maggior parte dei trader ignora: dove esattamente all'interno di quei 2.400 lotti si trova il nostro ordine?
Prezzo 10000 [ 1.800 lotti PRIMA di noi ][ NOSTRO ORDINE 10 lotti ][ 590 lotti DOPO di noi ]
Questa non è curiosità accademica. È la differenza tra un ordine eseguito e uno non eseguito. Tra profitto e perdita. Tra un backtest che mostra una bella curva di equity e la realtà in cui la strategia non funziona.
Cos'è la Posizione in Coda e Perché Calcolarla
Visualizzazione di una coda FIFO: la posizione del trader tra gli altri ordini a un livello di prezzo
FIFO e la Realtà delle Borse
La stragrande maggioranza delle borse — sia tradizionali (CME, NASDAQ) che di criptovalute (Binance, Bybit, OKX) — utilizza la regola della Priorità Prezzo-Tempo (FIFO). Ciò significa: allo stesso prezzo, l'ordine inserito per primo viene eseguito per primo.
Quando arriva un ordine di mercato in vendita che "colpisce" il nostro livello di prezzo bid, riempie sequenzialmente gli ordini limite dalla testa della coda alla coda. Se l'ordine di mercato non era abbastanza grande da raggiungere la nostra posizione in coda — rimaniamo non eseguiti.
Due Componenti del Valore della Posizione in Coda
La ricerca accademica (Moallemi & Yuan, Columbia Business School, 2017) identifica due componenti del valore della posizione in coda:
-
Componente statica — il compromesso tra cattura dello spread e selezione avversa. Più siamo indietro nella coda, maggiore è la probabilità di essere eseguiti da un grande ordine informato (anziché da rumore). In parole semplici: se vieni eseguito per ultimo nella coda — il prezzo si sta molto probabilmente già muovendo contro di te.
-
Componente dinamica — l'opzionalità fornita dal miglioramento della posizione in coda nel tempo. Quando gli ordini davanti a noi vengono cancellati o eseguiti, la nostra posizione migliora senza alcuna azione da parte nostra.
I dati empirici mostrano che per strumenti con una grande dimensione del tick, il valore della posizione in coda può essere paragonabile alla dimensione dello spread. Si tratta di un'entità enorme.
Come Stimare la Propria Posizione in Coda
Il Problema della Stima
Inseriamo un ordine limite di dimensione S al prezzo P. Al momento dell'inserimento, ci sono già Q lotti a quel livello di prezzo. La nostra stima iniziale della posizione:
V̂(t₀) = Q(t₀) — numero di lotti davanti a noi
Successivamente, monitoriamo tutte le variazioni di volume al nostro livello di prezzo. Questo è l'algoritmo chiave descritto da Erik Rigtorp e implementato nei prodotti di Trading Technologies (TT), Bookmap e altri.
Algoritmo di Aggiornamento
Per ogni diminuzione ΔQ al livello di prezzo, dobbiamo determinare: l'ordine era davanti a noi o dietro di noi?
Se riusciamo a distinguere le esecuzioni dalle cancellazioni:
- Esecuzione (fill): riduce inequivocabilmente la coda davanti a noi →
V̂ = max(V̂ + ΔQ, 0) - Cancellazione: incertezza — l'ordine cancellato potrebbe essere stato sia davanti che dietro di noi
Per le cancellazioni si utilizza un modello probabilistico:
V̂(n+1) = max(V̂(n) + p(n) × ΔQ(n), 0)
dove p(n) è la probabilità che l'ordine cancellato fosse davanti a noi. Una famiglia di modelli:
p(n) = f(V̂(n)) / (f(V̂(n)) + f(max(Q(n) - S - V̂(n), 0)))
dove f(x) è una funzione crescente, come ln(1+x) o la funzione identità. L'intuizione: più grande è il volume davanti a noi rispetto al volume dietro di noi, più è probabile che la cancellazione sia avvenuta davanti a noi.
Livelli di Dati e la Realtà dei Mercati Crypto
La qualità della stima dipende direttamente dalla granularità dei dati:
| Livello Dati | Cosa Vediamo | Precisione Stima PIQ |
|---|---|---|
| Livello 1 (BBO) | Migliore bid/ask + volume | Impossibile stimare |
| Livello 2 (aggregato per prezzo) | Volume a ogni livello di prezzo | Stima probabilistica |
| Livello 3 (Market-by-Order, MBO) | Ogni singolo ordine con ID | Posizione esatta |
Nel crypto, la situazione è la seguente:
- Binance — fornisce un flusso di profondità L2 con aggiornamenti ogni 100ms. I dati L3 (MBO) non sono disponibili pubblicamente.
- Coinbase — uno dei pochi CEX che offrono un flusso L3 tramite WebSocket con dati completi ordine per ordine.
- CME (futures BTC/ETH) — dati MBO completi tramite il feed ITCH.
La maggior parte dei trader crypto lavora con L2, il che significa che si affida a stime probabilistiche. Ma anche una stima probabilistica è radicalmente migliore di nessuna stima.
Visualizzazione: Il Muro come Book degli Ordini Interno
Proponiamo di visualizzare ogni densità significativa (muro) come un mini book degli ordini all'interno del book degli ordini:
╔════════════════════════════════════════════════════════════════╗
║ Prezzo 10001 │ 150 lotti ║
╠════════════════════════════════════════════════════════════════╣
║ Prezzo 10000 │ [████████████░░░▓▓░░░░░░░] 2.400 lotti ║
║ │ ↑ 1.800 prima ↑ noi ↑ 590 dopo ║
║ │ velocità drenaggio: ~120 lotti/sec ║
║ │ ETA all'esecuzione: ~15 sec ║
╠════════════════════════════════════════════════════════════════╣
║ Prezzo 9999 │ 80 lotti ║
╚════════════════════════════════════════════════════════════════╝
Cosa Viene Calcolato in Tempo Reale
-
Lotti davanti al nostro ordine — una stima del volume che deve essere eseguito o cancellato prima che arrivi a noi.
-
Lotti dietro il nostro ordine — il volume inserito dopo di noi. Se il muro si sta rapidamente "gonfiando" dalla coda — altri partecipanti considerano questo livello attrattivo.
-
Velocità di drenaggio della coda — calcolata dalle operazioni effettive (esecuzioni) a questo livello di prezzo. Espressa in lotti/secondo.
-
Tempo Stimato all'Esecuzione (ETF) — una previsione del tempo prima che il nostro ordine venga eseguito, calcolata come
lotti_davanti / velocità_drenaggio. -
Ordini multipli nella stessa densità — il bot può monitorare la posizione di ciascuno dei suoi ordini se ce ne sono diversi all'interno dello stesso muro.
Applicazione nello Scalping
Confronto tra backtesting naive e backtesting consapevole della coda: probabilità effettiva di esecuzione vs stima ottimistica
Il Problema del Backtesting Basato sulle Candele
Un backtest classico su candele OHLCV funziona come segue: se il prezzo ha raggiunto il nostro ordine limite — contarlo come eseguito. Ma questo è un errore critico:
Esempio. Abbiamo un buy-limit a 10000. Nella candela da 1 minuto, low = 10000. Il backtest sulla candela lo conta come esecuzione. Ma in realtà:
- C'era un muro di 5.000 lotti al livello 10000
- Il nostro ordine era in coda alla fine (posizione 4.800)
- Solo 2.000 lotti hanno scambiato attraverso quel livello durante questo minuto
- In realtà, il nostro ordine NON sarebbe stato eseguito
Il backtesting consapevole della coda risolve questo problema: modella la posizione in coda, conta il volume scambiato al livello dai dati tick e determina se il volume scambiato era sufficiente a raggiungere la nostra posizione.
Più di un'Esecuzione al Minuto
Nello scalping attivo, un ordine può essere eseguito e reinserito più volte in un singolo minuto. Un backtest basato sulle candele semplicemente non può modellare questo. Solo l'analisi a livello di tick con modellazione della coda consente di:
- Determinare il momento esatto di ogni esecuzione
- Capire se abbiamo il tempo di reinserire l'ordine
- Stimare quante volte la strategia avrebbe effettivamente scattato in un intervallo
Previsione del Tempo all'Esecuzione
Un bot che conosce la propria posizione in coda e l'attuale velocità di "drenaggio" del muro può:
- Calcolare l'ETA — tempo approssimativo all'esecuzione
- Confrontare l'ETA con una previsione del movimento di prezzo — se ETA = 30 secondi, ma il nostro modello prevede un'inversione in 10 secondi, dovremmo cancellare l'ordine
- Adattare la dimensione dell'ordine — un ordine più grande è più vicino alla testa della coda sulle borse pro-rata (CME), ma sulle borse FIFO la dimensione non influenza la posizione in coda
Confronto della Velocità di Drenaggio con la Media
Una metrica preziosa per uno scalper: velocità corrente di drenaggio della coda vs velocità media su N candele.
- Velocità superiore alla media → alta aggressività degli ordini di mercato → il muro potrebbe essere "sfondato" → la nostra esecuzione è più probabile
- Velocità inferiore alla media → il mercato si è "bloccato" → il muro reggerà → l'ordine resterà in sospeso e il prezzo potrebbe allontanarsi
Dove Questo è Già Implementato: Panoramica del Mercato
Trading Technologies (TT) — Position In Queue (PIQ)
L'implementazione più matura. TT mostra il PIQ per ogni ordine del trader nella colonna Floating Order Book. Per le borse che forniscono dati sulla posizione in coda direttamente tramite il loro feed (CME, ICE), vengono mostrati valori esatti. Per le altre — una stima conservativa.
Bookmap Quant
La versione professionale di Bookmap ($499/mese) include la visualizzazione delle posizioni in coda degli ordini e l'esportazione degli eventi. Bookmap Quant utilizza dati MBO e la sua API L0 consente di costruire adattatori personalizzati per qualsiasi fonte di dati.
CQG — Stima della Posizione in Coda
CQG fornisce la stima della posizione in coda per i mercati futures. La piattaforma calcola una stima probabilistica del PIQ basata su dati L2/L3 e la visualizza nell'interfaccia DOMTrader.
Rithmic — Dati sulla Coda degli Ordini
Rithmic è un fornitore di dati di mercato che offre accesso a bassa latenza ai dati per la stima della posizione in coda. È utilizzato come layer infrastrutturale da molte prop trading firm e trader algoritmici per costruire i propri modelli PIQ.
Jigsaw Trading — Visualizzazione dell'Order Flow
Jigsaw Trading è specializzata nella visualizzazione dell'order flow con stima della posizione in coda. I suoi strumenti Depth & Sales e Reconstructed Tape aiutano i trader a vedere il quadro reale delle esecuzioni ai livelli di prezzo.
Modelli Accademici
- Moallemi & Yuan (2017) — un modello formale per la valutazione della posizione in coda basato sui dati NASDAQ ITCH
- Cont, Stoikov & Talreja (2010) — un modello del book degli ordini limite come sistema di processi nascita-morte
- Gould & Bonart (2015) — lo squilibrio della coda come predittore del movimento del mid-price
- Approcci Deep Learning — modelli RNN (Columbia, 2022) per stimare le probabilità e i tempi di esecuzione
Cosa NON Esiste sul Mercato
Nessuno dei prodotti esistenti offre la visualizzazione della struttura interna di un muro per i mercati crypto in un formato pensato per un bot di scalping. Questa è la nicchia che Marketmaker.cc può riempire.
Contrastare le Strategie dei Manipolatori
Rilevamento di muri falsi: ordini genuini vs blocchi di spoofing con alti tassi di cancellazione
Comprendere la struttura interna di un muro non riguarda solo l'ottimizzazione della propria esecuzione. È uno strumento di protezione dalla manipolazione e, se usato abilmente, uno strumento per leggere le intenzioni dei grandi player.
Spoofing: Muri Falsi
Lo spoofing è l'inserimento di ordini grandi con l'intenzione di cancellarli prima dell'esecuzione. L'obiettivo è creare una falsa impressione di offerta/domanda.
Come aiuta l'analisi PIQ:
- Velocità di accumulo del muro. Un muro genuino si costruisce gradualmente. Un muro di spoofing appare istantaneamente.
- Comportamento all'avvicinarsi del prezzo. Un muro genuino resta. Un muro-spoof "scappa."
- Tasso di cancellazione. Gli spoofer cancellano gli ordini prima dell'esecuzione. Monitorare il rapporto inserito/cancellato permette il rilevamento dello spoof in tempo reale.
- Ciclicità. Lo spoofing spesso mostra schemi ripetitivi: appare → scompare → appare a un nuovo livello.
Layering: Livelli Falsi a Cascata
Il layering è una forma più sofisticata di spoofing in cui vengono inseriti ordini falsi su più livelli di prezzo.
Come aiuta l'analisi PIQ:
- Cancellazioni correlate. Se gli ordini su 5 livelli consecutivi vengono cancellati simultaneamente — è quasi certamente layering da parte di un singolo partecipante.
- Asimmetria del book degli ordini. La liquidità genuina è di solito distribuita in modo più o meno uniforme.
- Reazione alle esecuzioni. Gli ordini genuini vengono eseguiti e non "scappano."
Ordini Iceberg: Liquidità Nascosta
Un iceberg è un ordine grande suddiviso in piccole porzioni visibili. Dopo l'esecuzione di una porzione, quella successiva appare automaticamente.
Come aiuta l'analisi PIQ:
- Il pattern del livello "immortale". Il volume viene continuamente eseguito ma non diminuisce.
- Analisi di assorbimento. Il prezzo colpisce il muro, esegue il volume visibile, ma il muro si rigenera.
- Comportamento della coda durante l'assorbimento. La nostra posizione "scivola" in avanti ogni volta che una fetta dell'iceberg viene eseguita e reinserita in coda.
Il Market Maker come Partecipante "Invisibile" nel Muro
I market maker professionisti impiegano diverse tattiche:
- Quote stuffing — inserimento e cancellazione massivi di ordini per "inquinare" i dati dei concorrenti
- Penny jumping — inserimento di un ordine un tick migliore del concorrente per catturare la priorità
- Dynamic quoting — adattamento degli ordini in tempo reale al variare dello squilibrio della coda
- Level defense — aggiunta di liquidità all'avvicinarsi del prezzo
Implementazione: Architettura del Modulo Queue Position Tracker
Dati in Ingresso
1. Stream WebSocket del book degli ordini (profondità L2):
- Aggiornamenti migliore bid/ask
- Aggiornamenti della profondità (volume a ogni livello di prezzo)
2. Stream WebSocket dei trade:
- Ogni trade: prezzo, volume, lato (acquisto/vendita), timestamp
3. Ordini propri (dal bot di trading):
- order_id, prezzo, dimensione, timestamp di inserimento
Algoritmo Core (Pseudocodice Python-like)
class QueuePositionTracker:
def __init__(self, order_price, order_size, initial_depth):
self.price = order_price
self.size = order_size
self.queue_ahead = initial_depth # V̂(t₀) = Q(t₀)
self.queue_behind = 0
self.fill_velocity = EMA(span=30) # EMA della velocità di esecuzione
def on_trade(self, trade_price, trade_size):
"""Chiamato a ogni trade al nostro livello di prezzo"""
if trade_price == self.price:
self.queue_ahead = max(self.queue_ahead - trade_size, 0)
self.fill_velocity.update(trade_size)
def on_depth_change(self, new_depth, change_type):
"""Chiamato quando cambia la profondità al nostro livello di prezzo"""
if change_type == 'cancel':
total = self.queue_ahead + self.size + self.queue_behind
p_ahead = log(1 + self.queue_ahead) / (
log(1 + self.queue_ahead) + log(1 + self.queue_behind)
)
cancelled = abs(new_depth - total)
self.queue_ahead = max(
self.queue_ahead - p_ahead * cancelled, 0
)
self.queue_behind = max(
self.queue_behind - (1 - p_ahead) * cancelled, 0
)
elif change_type == 'new_order':
added = new_depth - (self.queue_ahead + self.size + self.queue_behind)
self.queue_behind += added
@property
def estimated_time_to_fill(self):
"""Tempo stimato all'esecuzione in secondi"""
if self.fill_velocity.value <= 0:
return float('inf')
return self.queue_ahead / self.fill_velocity.value
@property
def fill_probability(self, horizon_sec=60):
"""Probabilità di esecuzione entro un dato orizzonte"""
expected_volume = self.fill_velocity.value * horizon_sec
return min(expected_volume / max(self.queue_ahead, 1), 1.0)
Casi Limite Critici
- Muro completamente "consumato" — se
queue_aheadscende a 0, il prossimo ordine di mercato ci esegue - Cancellazione di massa (wall pull) — il muro scompare bruscamente,
queue_aheadcambia drasticamente - Il nostro ordine viene spostato — alla cancellazione e reinserimento, finiamo in coda
- Ordini multipli nello stesso muro — ognuno viene monitorato indipendentemente
Metriche per Dashboard e Backtesting
In Tempo Reale (Terminale di Scalping)
| Metrica | Formula | Colore |
|---|---|---|
| Posizione in Coda % | queue_ahead / total_depth × 100 |
Verde < 30%, giallo 30-70%, rosso > 70% |
| ETA all'Esecuzione | queue_ahead / fill_velocity |
Secondi |
| Salute del Muro | depth_now / depth_5sec_ago |
Stabilità del muro |
| Tasso di Assorbimento | filled_volume / visible_depth |
Presenza di liquidità nascosta |
| Spoof Score | cancel_rate × sudden_appear × distance_from_price |
0-100, indicatore di falsità |
Per il Backtesting (Simulazione Consapevole della Coda)
- Tasso di esecuzione corretto per la coda — percentuale di ordini effettivamente eseguiti tenendo conto della posizione in coda
- Latenza di esecuzione effettiva — tempo reale dall'inserimento all'esecuzione
- Selezione avversa per esecuzione — variazione media del prezzo contro di noi dopo un'esecuzione
- Correlazione della velocità della coda — correlazione tra la velocità di drenaggio della coda e il successivo movimento di prezzo
Book degli Ordini Sociale: Ordini di Team Dentro il Muro
Modello di visibilità a tre livelli: ordini personali, abbonamenti e posizioni del team all'interno del muro
Livello 1: Borsa o Piattaforma di Trading
Se sei una borsa o un terminale di trading, possiedi la conoscenza assoluta della posizione di ogni ordine di ogni utente. La piattaforma può mostrare a ogni utente quanto volume "altrui" sta davanti e dietro al suo ordine, senza rivelare l'identità degli altri partecipanti.
Livello 2: Piattaforma Marketmaker.cc — Ordini Personali + Layer Sociale
Su Marketmaker.cc, abbiamo in programma di implementare un modello di visibilità degli ordini a tre livelli all'interno del muro:
Ordini personali — il layer base. Ogni trader vede tutti i propri ordini con metriche individuali.
Ordini in abbonamento (signal provider) — trader che condividono le posizioni tramite abbonamento. Meccanismo opt-in: il leader decide se mostrare le posizioni.
Ordini del team (trading team / fondo) — il layer più prezioso per i gruppi professionali. Risolve i problemi: conflitti tra ordini, allocazione della liquidità, monitoraggio del rischio del team, formazione.
Modello dei Permessi
┌─────────────────────────────────────────────────────────────┐
│ Ordine del Trader │
│ │
│ Visibile a: │
│ ├── Il trader stesso → SEMPRE │
│ ├── Abbonati → se il trader ha abilitato │
│ │ ├── Ritardo di visualiz. → configurabile (0s–60s) │
│ │ ├── Mostra dimensione → sì / nascondi / arrotonda │
│ │ └── Mostra ETA → sì / no │
│ └── Team → se parte di un team │
│ ├── Ritardo → configurabile (0s–5s) │
│ ├── Mostra dimensione → sì (per gestione rischio) │
│ └── Visibilità per ruolo → trader / manager / viewer │
└─────────────────────────────────────────────────────────────┘
Trasparenza Totale: Borse DEX e Book degli Ordini On-Chain
Nelle borse DEX con book degli ordini on-chain — principalmente Hyperliquid — ogni ordine è collegato a un indirizzo wallet specifico. Possiamo vedere non solo il muro aggregato, ma ogni singolo ordine di ogni partecipante.
Tuttavia, lavorare con questi dati in tempo reale richiede l'esecuzione di un proprio nodo blockchain Hyperliquid.
Identificazione Automatica degli Ordini dei Manipolatori
Il quarto layer di visualizzazione — classificazione algoritmica degli ordini per tipo di partecipante: market maker, spoofer, retail. Gli algoritmi di classificazione operano su più livelli: rilevamento dello spoofing, classificazione dei market maker, rilevamento di scenari di squeeze e fingerprinting digitale dei trader.
Maggiori dettagli nel prossimo articolo della serie: "Impronta Digitale di un Trader: Come Identificare un Market Maker dal Comportamento nel Book degli Ordini"
Conclusione
L'analisi della posizione degli ordini all'interno della densità del book degli ordini è il prossimo passo evolutivo dal "guardare il book degli ordini" al "comprendere la microstruttura del mercato". Questo è il territorio dove si intersecano:
- Teoria delle code — per la modellazione delle code
- Modelli stocastici dell'order flow — per la stima delle probabilità di esecuzione
- Machine learning — per il rilevamento dello spoofing e la previsione del comportamento del muro
- Ingegneria a bassa latenza — per la ricezione e l'elaborazione dei dati in tempo reale
Ad oggi, nessun prodotto nel mercato crypto offre una visualizzazione completa del "muro come mini book degli ordini" con le posizioni degli ordini degli utenti, la stima dell'ETA, il rilevamento dello spoofing e il backtesting consapevole della coda in un'unica interfaccia.
Su Marketmaker.cc, stiamo lavorando per rendere questa analisi accessibile a ogni trader — dagli scalper singoli ai team di prop trading.
Fonti e Ulteriori Letture
- Moallemi C.C., Yuan K. — "A Model for Queue Position Valuation in a Limit Order Book" (Columbia Business School, 2017)
- Cont R., Stoikov S., Talreja R. — "A Stochastic Model for Order Book Dynamics" (2010)
- Gould M.D., Bonart J. — "Queue Imbalance as a One-Tick-Ahead Price Predictor" (2015)
- Rigtorp E. — "Estimating Order Queue Position" (rigtorp.se)
- Do B.L., Putniņš T.J. — "Detecting Layering and Spoofing in Markets" (SSRN, 2023)
- Trading Technologies — PIQ Documentation
- Bookmap — Iceberg Orders Tracker Knowledge Base
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.