Il Backtesting di una Strategia di Trading Algoritmico – Parte II

Il Backtesting di una Strategia di Trading Algoritmico – Parte II

Nella lezione precedente dedicata al backtesting di una strategia, abbiamo introdotto i bias statistici e comportamentali che possono influenzare le prestazioni di un backtest. Abbiamo inoltre descritto i principali linguaggi di programmazione utilizzati per questa attività, tra cui Excel, MATLAB, Python, R e C++.

In questa lezione approfondiremo come integrare i costi di transazione e alcuni vincoli fondamentali da considerare nella progettazione di un motore di backtesting, come i tipi di ordine e la frequenza dei dati.<

Costi di Transazione

Uno degli errori più comuni tra i principianti che iniziano a implementare il backtesting di una strategia di trading è sottovalutare — o addirittura ignorare — l’impatto dei costi di transazione su una strategia. Spesso si tende a pensare che tali costi si limitino alle sole commissioni applicate dai broker, quando in realtà esistono molteplici fonti attraverso cui si possono accumulare i costi in un modello di trading.
I tre principali tipi di costi da considerare sono:

Commissioni

Le commissioni rappresentano la forma più diretta di costo di transazione legata all’esecuzione di una strategia di trading algoritmico. Ogni strategia richiede l’accesso a un mercato, sia in modo diretto che tramite un intermediario (il broker). Questo accesso comporta un costo per ogni operazione eseguita, noto appunto come commissione.

Generalmente, i broker offrono una vasta gamma di servizi, e le commissioni per una singola operazione sono spesso contenute. Tuttavia, possono esserci costi aggiuntivi, legati alla gestione e liquidazione delle posizioni. A questi si sommano spesso le imposte imposte dai governi nazionali o locali. Un esempio tipico è l’imposta di bollo sulle transazioni in titoli azionari.
Poiché commissioni, imposte e tasse sono generalmente costanti o facilmente quantificabili, è piuttosto semplice integrare questi elementi nel backtesting di una stategia di trading (si veda il codice riportato sotto).

Slippage/Latency

Lo slippage è la differenza tra il prezzo teorico a cui il sistema decide di effettuare un’operazione e il prezzo effettivo a cui l’operazione viene eseguita sul mercato. È una componente significativa dei costi di transazione e può determinare il passaggio da una strategia profittevole a una in perdita.

Lo slippage dipende da diversi fattori:

  • la volatilità dello strumento sottostante,
  • la latenza del sistema (cioè il tempo che intercorre tra la generazione del segnale e l’esecuzione dell’ordine),
  • il tipo di strategia utilizzata.

Strumenti più volatili presentano un rischio maggiore di slippage, poiché il prezzo può variare rapidamente tra il momento del segnale e l’esecuzione. La latenza, invece, è particolarmente critica per le strategie ad alta frequenza, dove anche miglioramenti di pochi millisecondi possono influire sensibilmente sulla redditività.
Anche la natura della strategia gioca un ruolo:

  • le strategie momentum, che cercano di cavalcare i movimenti del mercato, sono più esposte allo slippage, poiché operano nella direzione del trend in atto;
  • le strategie mean-reverting, invece, tendono a subire meno l’impatto dello slippage, poiché operano in senso contrario al movimento del mercato.

Market Impact/Liquidity

L’impatto sul mercato rappresenta un costo sostenuto dai trader a causa delle dinamiche di domanda e offerta dell’exchange (e dello specifico strumento) su cui si opera. Un ordine di grandi dimensioni su un asset relativamente illiquido può spostare in modo significativo il prezzo, poiché l’exchange deve attingere a una porzione rilevante della liquidità disponibile per soddisfare la richiesta.

Per mitigare questo effetto, le operazioni di grandi dimensioni vengono spesso suddivise in ordini più piccoli, eseguiti in modo graduale man mano che nuova liquidità entra sul mercato. Al contrario, per strumenti altamente liquidi, come i contratti futures E-mini sull’indice S&P 500, è improbabile che ordini di dimensioni contenute abbiano un impatto rilevante sui prezzi, rendendo possibile l’esecuzione immediata anche di blocchi relativamente grandi.

Le attività illiquide, inoltre, presentano tipicamente uno spread denaro-lettera (la differenza tra il prezzo di acquisto e il prezzo di vendita) più ampio. Questo spread rappresenta un ulteriore costo di transazione che si applica a ogni operazione. In molti casi, lo spread costituisce una parte significativa del costo totale dell’esecuzione, soprattutto in mercati meno liquidi.

Modelli di Costi di Transazione

Per rappresentare in modo efficace i costi di transazione all’interno del backtesting di una strategia di trading, sono stati sviluppati modelli di diversa complessità. Questi vanno da semplici approcci “flat” fino a sofisticate funzioni quadratiche non lineari. Di seguito analizziamo vantaggi e limiti dei principali modelli.

Modelli Flat / a costo di transazione fisso

I modelli flat rappresentano la forma più semplice di simulazione dei costi di transazione: si assume un costo fisso per ogni operazione. Questo approccio è particolarmente adatto per modellare commissioni e fee di intermediazione.

Tuttavia, questi modelli non tengono conto della volatilità dell’asset né della sua liquidità, e risultano quindi poco adatti a rappresentare dinamiche più complesse come lo slippage o l’impatto sul mercato. Il loro principale punto di forza è la semplicità implementativa e computazionale, ma spesso si rivelano troppo approssimativi. Di conseguenza, nella pratica vengono utilizzati raramente per strategie reali.

Modelli di costo Lineare / Lineare a tratti / Quadratica

I modelli più evoluti iniziano con una struttura lineare, passando per modelli lineari a tratti fino a raggiungere una formulazione quadratica. Questi approcci si collocano lungo un continuum in cui l’accuratezza cresce proporzionalmente alla complessità computazionale richiesta.

Poiché fenomeni come slippage e impatto sul mercato sono per loro natura non lineari, le funzioni quadratiche risultano le più efficaci nel descrivere tali dinamiche. Sebbene siano più complesse da implementare e richiedano maggior tempo di calcolo rispetto ai modelli lineari o flat, sono anche quelle più diffuse nelle applicazioni professionali.

Dati storici e modelli personalizzati

I trader algoritmici più esperti cercano di migliorare ulteriormente l’accuratezza dei modelli di transazione basandosi sui dati storici reali delle operazioni effettuate in produzione. Questi dati vengono utilizzati come input per affinare le stime dei costi, adottando approcci avanzati per modellare volatilità, slippage e impatto sul mercato.

Quando una strategia gestisce elevati volumi in brevi intervalli di tempo, una stima realistica dei costi di transazione può incidere significativamente sulla redditività complessiva. Per questo motivo, investire nella modellazione accurata di questi costi rappresenta una leva strategica fondamentale per migliorare la bottom line della strategia.

Criticità nell’implementazione del backtesting di una strategia

Nonostante i costi di transazione sono un aspetto molto importante per l’implementazione di un backtesting efficiente, ci sono molti altri problemi che possono influenzare le prestazioni della strategia.

Tipi di Ordini

Una delle decisioni fondamentali per un trader algoritmico riguarda la scelta di quando e come utilizzare i diversi tipi di ordini messi a disposizione dall’exchange o dal broker. Questa scelta, sebbene ricada principalmente nell’ambito del sistema di esecuzione, può influenzare in modo significativo anche le prestazioni della strategia in fase di backtesting.

Esistono due categorie principali di ordini eseguibili: ordini a mercato e ordini limite.

Ordini a Mercato
Un ordine a mercato viene eseguito immediatamente, al miglior prezzo disponibile nel book. Questo tipo di ordine non tiene conto del prezzo, ma solo della rapidità di esecuzione. Di conseguenza, operazioni di grandi dimensioni eseguite con ordini a mercato vengono spesso “spalmate” su diversi livelli di prezzo, in quanto attraversano una sequenza di piccoli ordini limite presenti nel book.

Gli ordini a mercato sono considerati ordini aggressivi, poiché vengono eseguiti quasi con certezza. Tuttavia, comportano un costo potenzialmente variabile e sconosciuto, dovuto allo slippage e all’impatto sul mercato.

Ordini Limite
Gli ordini limite consentono alla strategia di specificare il prezzo massimo (per un acquisto) o minimo (per una vendita) al quale l’ordine può essere eseguito. Ciò significa che il prezzo di esecuzione è garantito, ma l’ordine potrebbe non essere eseguito, o esserlo solo parzialmente, qualora il mercato non raggiunga quel prezzo.

Questi ordini sono considerati ordini passivi, in quanto forniscono liquidità al mercato. L’insieme degli ordini limite attivi su un exchange costituisce il limit order book, una coda di ordini di acquisto e vendita suddivisi per prezzo e quantità.

Implicazioni nel Backtesting di un strategia
Quando si esegue un backtest, è fondamentale modellare correttamente gli effetti derivanti dall’utilizzo di ordini a mercato o limite. In particolare, per strategie ad alta frequenza, i backtest possono risultare fortemente ottimistici se non si tiene conto in modo accurato dell’impatto sul mercato e della struttura reale del limit order book.

Una simulazione realistica dell’esecuzione è essenziale per ottenere stime attendibili sulla redditività e sul rischio della strategia nel trading reale.

Peculiarità dei dati OHLC

Esistono criticità specifiche legate all’utilizzo di dati giornalieri nel formato Open-High-Low-Close (OHLC) durante il backtesting di strategie, in particolare quando si lavora con titoli azionari. È importante sottolineare che questo formato è ampiamente utilizzato dalla maggior parte dei trader algoritmici retail.

I dataset economici gratuiti o accessibili a basso costo, oltre a essere soggetti al bias di sopravvivenza (discusso nella Parte I), sono spesso costruiti aggregando i prezzi da più exchange. Questo comporta che i valori estremi — open, high, low, close — possano risultare distorti a causa di movimenti marginali, spesso generati da ordini di piccola entità effettuati su mercati regionali meno liquidi.

Inoltre, questi dati compositi sono più suscettibili agli errori di tick, che possono non essere stati correttamente filtrati o corretti.

Implicazioni per le Strategie di Trading
Se la tua strategia fa un uso intensivo di uno qualsiasi dei punti OHLC, c’è un rischio concreto che i risultati del backtest non riflettano accuratamente la realtà operativa. Questo perché gli ordini, nel trading live, possono essere eseguiti su exchange diversi in base al broker utilizzato e al livello di accesso alla liquidità disponibile per l’asset considerato.

Come Mitigare il Problema
L’unico modo realmente efficace per ridurre l’impatto di questi problemi consiste nel:

  • Utilizzare dati a frequenza più elevata (intra-day, tick o minuto).
  • Oppure procurarsi dati direttamente da un singolo exchange, evitando feed compositi che mescolano prezzi da più fonti.

Conclusione

Nelle prossime lezioni su TradingQuant.it vedremo come misurare correttamente le performance del backtesting di una strategia, e presenteremo un esempio pratico di algoritmo di backtesting che tiene conto di molti degli effetti sopra descritti.

Torna in alto