20 Ottobre 2026 · ricerca

La strategia ha funzionato finché non le abbiamo addebitato il costo del roll di una posizione futures

La strategia ha funzionato finché non le abbiamo addebitato il costo del roll di una posizione futures

Martedì mattina, la nostra strategia trend sui futures sul greggio era long sul contratto in scadenza. Il segnale faceva esattamente ciò che gli avevamo chiesto: mantenere la posizione finché il trend restava positivo. Il backtest mostrava un guadagno modesto. Il conto paper mostrava una vendita, un acquisto sul contratto successivo, due commissioni e un prezzo di ingresso peggiore di quanto suggerisse il grafico.

Al segnale non era successo nulla di misterioso. Il backtest aveva trattato «il prezzo dei futures» come un’unica serie continua. Il conto, invece, doveva chiudere un contratto e aprirne un altro, su due book diversi e a due prezzi diversi.

Abbiamo individuato la discrepanza esaminando una posizione che attraversava la finestra di roll. La strategia usava un contratto liquido sul mese più vicino e lo manteneva finché una regola di calendario non la spostava sul mese successivo. La regola era ragionevole. Il modo in cui contabilizzavamo l’operazione, no.

La nostra serie continua era stata rettificata a posteriori per eliminare il divario tra i contratti. Così il grafico era utile per calcolare un trend. Ma la serie non conteneva più alcun prezzo reale a cui avremmo potuto chiudere il vecchio contratto o aprire quello nuovo. Durante il roll, il backtest aveva usato il livello rettificato per valutare l’operazione, poi aveva ripreso a negoziare come se la posizione fosse semplicemente proseguita.

Per un segnale, una serie continua può essere una misura utile. Per un’esecuzione, è finzione. Un roll consiste in due operazioni, e lo spread tra i contratti fa parte della struttura del mercato: non è un salto estetico da eliminare per rendere il grafico più uniforme.

2 gambeper chiudere e riaprire una posizione futures
2 bookciascuno con bid, ask e profondità propri
1 segnaleche potrebbe non dover cambiare affatto

Abbiamo ricostruito l’evento usando i due contratti quotati. Il mese vecchio aveva un bid di 79.98 e un ask di 80.00. Il mese successivo aveva un bid di 80.42 e un ask di 80.45. Per la nostra posizione long, dovevamo vendere il vecchio contratto al bid e poi comprare quello nuovo all’ask. Lo spread calendario era di 44 centesimi tra quei prezzi eseguibili.

Quel numero non equivaleva automaticamente a una perdita di 44 centesimi. I contratti avevano mesi di consegna diversi e lo spread rifletteva carry, stoccaggio, finanziamento e aspettative sull’offerta. Una posizione mantenuta durante il roll conserva l’esposizione al percorso di prezzo del nuovo contratto: non paga l’intero spread quotato come commissione. Ma la strategia deve realizzare l’uscita dal vecchio contratto e aprire la posizione sul nuovo. Se nel calcolo del rendimento confronta quei prezzi come se appartenessero allo stesso strumento, può inventare o cancellare P&L.

Nella riproduzione abbiamo separato i compiti. La serie continua generava ancora il segnale trend. Per valutazioni e ordini usavamo i prezzi specifici di ciascun contratto. Al roll, il simulatore inviava un ordine di chiusura sul mese in scadenza e un ordine di apertura sul mese successivo, applicava le commissioni di ciascun contratto e teneva conto dello spread e della profondità disponibile in ciascun book.

La prima riproduzione continuava a non coincidere con il conto paper. Avevamo sincronizzato entrambe le esecuzioni sullo stesso timestamp, anche se gli ordini erano stati inviati in sequenza. La chiusura sul mese vecchio era stata eseguita, ma l’ask sul mese successivo era cambiato prima che l’acquisto raggiungesse il book. Se la venue lo consente, il roll si può eseguire come calendar spread oppure con due gambe, mantenendo un’esposizione nel mezzo. Sono ipotesi di esecuzione diverse. Per il confronto abbiamo usato la sequenza di ordini effettiva del conto paper.

Poi ci siamo accorti che anche la regola di calendario era definita in modo incompleto. «Fare roll 5 giorni prima della scadenza» sembra preciso, finché un giorno festivo non sposta il calendario di negoziazione, la liquidità non migra prima o la convenzione di scadenza non cambia da un contratto all’altro. In un punto avevamo codificato un conteggio dei giorni di calendario, in un altro dei giorni lavorativi. La strategia paper effettuava il roll alla quinta sessione prima dell’ultimo giorno di negoziazione; il backtest lo effettuava 5 giorni di calendario prima.

La data del roll è una regola di negoziazione. Specifichiamo il calendario della borsa e l’evento che attiva il roll, altrimenti prima o poi il backtest e il conto non concorderanno sul contratto posseduto.

Abbiamo modificato l’istruzione di roll indicando l’ultimo giorno di negoziazione del contratto, contando le sessioni sul calendario della relativa borsa e richiedendo una verifica di liquidità minima prima di procedere. Quella soglia era una precauzione pratica, non la promessa di un’esecuzione migliore: volume e open interest sono indicatori imperfetti di ciò che il nostro ordine può effettivamente eseguire. Abbiamo registrato il contratto selezionato e i prezzi di entrambe le gambe, così ogni riproduzione poteva ricostruire il passaggio.

Dopo queste modifiche, il rendimento storico della strategia è diminuito. La differenza non dipendeva da un’unica enorme perdita al roll. Era il risultato di tante piccole correzioni: il contratto giusto, la sessione di negoziazione giusta, le commissioni effettive su entrambe le gambe e prezzi di uscita e ingresso rilevati nei rispettivi book. Un roll con poca liquidità era particolarmente costoso, così lo abbiamo lasciato in evidenza invece di nasconderlo facendo una media.

Se il tuo backtest futures usa un grafico continuo, chiediti cosa può rappresentare quel grafico. Può fornire un input coerente per un segnale. Non può sostituire un contratto che avresti potuto comprare o vendere. Per ogni posizione che attraversa la scadenza, il registro della ricerca dovrebbe indicare il vecchio contratto, quello nuovo, il trigger del roll, il modello di esecuzione e i due flussi di cassa risultanti.

Quell’operazione di martedì non è stata un fallimento sofisticato. Era una linea sul grafico dall’aspetto redditizio, che saltava il momento in cui il conto doveva cambiare ciò che possedeva. Quando abbiamo reinserito quel momento nella riproduzione, il risultato è diventato meno lusinghiero e molto più utile.

futurescosti di rollbacktestingmicrostruttura del mercatocosti di transazione
← Tutti gli articoli