6 Ottobre 2026 · ricerca

Perché il mio backtest ha eseguito un’operazione a un prezzo mai mostrato dal mercato?

Perché il mio backtest ha eseguito un’operazione a un prezzo mai mostrato dal mercato?

Un backtest può registrare un’esecuzione a un prezzo mai mostrato dal mercato. Di solito il simulatore ha dedotto un’esecuzione dall’aspetto plausibile partendo da dati incompleti: il massimo e il minimo di una barra, un prezzo medio o un prezzo limite toccato da una singola operazione. Così il registro delle operazioni sembra preciso, ma nasconde ciò che il mercato offriva davvero.

Per prima cosa, chiediti con quale prezzo avrebbe potuto interagire il tuo ordine. Una barra dell’ultimo prezzo negoziato indica i prezzi a cui sono avvenute operazioni durante un intervallo. Non ti dice quale fosse il bid e l’ask quando è arrivato l’ordine, quanta quantità fosse disponibile né se l’ordine avrebbe potuto raggiungere la testa della coda.

Perché il mio backtest mostra un’esecuzione a un prezzo fuori mercato?

Per prima cosa, chiarisci cosa intendi per «fuori». Un acquisto eseguito sotto il minimo della barra o una vendita sopra il suo massimo indicano un evidente errore di contabilità o di tempistica. Anche un’esecuzione compresa nell’intervallo tra massimo e minimo può essere fittizia: il prezzo potrebbe essere stato negoziato prima che l’ordine esistesse, sul lato opposto dello spread o per una quantità troppo ridotta per eseguire il tuo ordine.

Considera una barra di 1 minuto con apertura a 100.00, minimo a 99.80 e chiusura a 100.10. La strategia vede la barra completata, invia un acquisto e il simulatore lo esegue a 99.80. Quel minimo potrebbe essersi verificato all’inizio del minuto, cinquanta secondi prima del segnale. La barra non dimostra che 99.80 fosse ancora disponibile dopo la decisione.

Dati disponibiliCosa dimostranoCosa non possono dimostrare
Barra OHLCVIntervallo osservato dei prezzi delle operazioni e volume nell’intervalloSequenza dei prezzi, bid e ask o disponibilità all’arrivo dell’ordine
Operazioni registrateEsecuzioni comunicate con timestamp e prezziLiquidità presente nel book o posizione dell’ordine in coda
Quotazioni top-of-bookMiglior bid e ask visualizzati negli istanti campionatiProfondità oltre il livello migliore o persistenza della quotazione tra un campionamento e l’altro
Eventi del book ordiniVariazioni della profondità visualizzata ed eventi di coda, nei limiti della copertura del feedLiquidità nascosta, accesso alla sede di negoziazione o priorità garantita

C’è un’altra causa frequente: confondere il prezzo medio con i prezzi eseguibili. Se la quotazione è bid 99.99 e ask 100.01, un acquisto a metà, a 100.00, fa bella figura nel report. In genere un acquisto marketable paga l’ask, oltre all’eventuale impatto dovuto alla quantità. Considerare il prezzo medio come prezzo di esecuzione elimina silenziosamente metà dello spread.

Un ordine limite può essere eseguito solo perché il mercato ha toccato il suo prezzo?

Il tocco indica che è stata registrata un’operazione al prezzo limite. Non dimostra che il tuo ordine in attesa sarebbe stato eseguito. Se c’erano altri ordini davanti al tuo, il volume negoziato a quel prezzo potrebbe non essere bastato a raggiungere la tua posizione in coda. Inoltre, l’operazione potrebbe essere avvenuta su un’altra sede mentre il tuo ordine era in attesa altrove.

Supponiamo che il tuo ordine limite di acquisto sia a 50.00 e che, dopo il suo inserimento, il mercato negozi 200 azioni a quel prezzo. Un simulatore basato sul semplice tocco esegue tutte le 500 azioni. Un modello più prudente considera quanto è stato negoziato a 50.00 o a un prezzo migliore dopo l’arrivo dell’ordine, poi stima la quantità in coda davanti al tuo. Senza dati del book a livello di singolo ordine, quella coda resta un’ipotesi. Deve essere visibile nei risultati, non spacciata per una certezza.

Per un piccolo sistema di ricerca, preferisco esplicitare quell’ipotesi e provare diversi valori, invece di fingere che i dati delle candele rivelino la priorità in coda. L’intervallo adeguato dipende dalla sede, dalla quantità dell’ordine e dalla frequenza con cui la strategia opera. Un titolo poco scambiato all’apertura e un contratto crypto con poca liquidità alle 03:00 UTC presentano problemi di esecuzione diversi.

Come scelgo un modello di esecuzione per i dati a barre?

Scegli un modello coerente sia con i dati sia con ciò che la strategia si propone di dimostrare. Un backtest basato su barre può comunque essere utile per strategie lente, ma le esecuzioni devono rispettare ciò che le barre mostrano davvero.

  1. Definisci gli orari della decisione e dell’arrivo. Se un segnale usa la chiusura della barra, invia l’ordine dopo quella chiusura. Simula l’esecuzione a partire dall’intervallo o dalla quotazione successivi disponibili, non dal minimo precedente della barra completata.
  2. Usa il lato corretto dello spread. Per gli acquisti marketable, parti dall’ask; per le vendite, dal bid. Se hai solo barre delle operazioni, stima lo spread usando una fonte separata oppure dichiara che il modello lo omette.
  3. Limita le esecuzioni alla liquidità plausibile. Applica un limite di partecipazione al volume osservato e includi commissioni e impatto di mercato. Il volume totale di una barra non significa che fosse tutto disponibile al prezzo scelto.
  4. Metti alla prova le ipotesi. Confronta le esecuzioni all’apertura successiva con uno slippage prudenziale e verifica se il risultato regge a condizioni di esecuzione peggiori. Non adattare il modello di esecuzione finché la strategia non risulta vincente.

Sono scelte di modellazione, non una ricetta per ricostruire l’unica esecuzione vera a partire da dati incompleti. Se la strategia dipende dal catturare pochi punti base, i dati a barre potrebbero non essere prove sufficienti a sostegno di questa tesi.

Come posso scoprire dove è entrata nel backtest l’esecuzione impossibile?

Segui un’operazione sospetta dal segnale al registro contabile. Mantieni separati il timestamp della decisione, quello dell’invio dell’ordine, l’arrivo simulato, l’osservazione di mercato selezionata, il prezzo di esecuzione, la quantità eseguita e la commissione. Poi verifica, nell’ordine:

Se non puoi rispondere a queste domande consultando il registro dell’operazione, al backtest mancano prove sull’esecuzione. Aggiungi i campi, ricostruisci manualmente alcune operazioni usando i dati grezzi e verifica che l’esecuzione riportata fosse possibile secondo il modello previsto. Una curva azionaria regolare non rivelerà un prezzo esistito solo nel simulatore.

backtestingdati di mercatoesecuzioneingegneria dei dati
← Tutti gli articoli