Documentazione

Applicazioni

Ultimo aggiornamento il 24. 1. 2023 da Mark Fric

Limitazioni dei backtest di Stockpicker

Le strategie di stockpicking e in generale di trading giornaliero hanno alcune specificità che verranno spiegate di seguito.

 

I tempi di esecuzione della strategia spiegati

La prima cosa è che si può scegliere il momento in cui la strategia viene attivata (valutata) tra tre possibili valori:

  • Prima dell'apertura del bar - valuta la strategia prima dell'apertura del mercato (per le strategie giornaliere)
  • Su Bar Aperto - valuta la strategia a mercato aperto
  • Alla chiusura del bar - valuta la strategia alla (poco prima della) chiusura del mercato

La scelta del momento in cui la strategia viene valutata influisce sui prezzi disponibili sia nel live trading che nel backtesting.

 

Utilizziamo il parametro Shift per indicare l'indice del valore, ad esempio Open[0] indica il prezzo di apertura con Shift=0, ovvero il prezzo di apertura della barra corrente (più recente).
Open[1] significa Open con Shift=1, ovvero una barra fa.

Quando si utilizzano blocchi con Shift=0 (valore delle barre correnti) nella strategia, occorre essere molto cauti, perché potrebbero avere un significato diverso a seconda del momento in cui si valuta la strategia.

Ancora una volta i tre possibili tempi di valutazione e le loro implicazioni:

Prima dell'apertura del bar

valuta la strategia prima dell'apertura del mercato (per le strategie giornaliere).

La piattaforma attiva questo processo alcuni minuti prima dell'apertura effettiva del mercato, quindi le condizioni vengono valutate e gli ordini vengono creati.
Le operazioni vengono eseguite all'apertura del mercato.

Implicazioni
Il blocco con Shift=0 restituisce il valore corrente dell'ultima barra terminata.
Quindi, ad esempio, Close[0] restituisce il prezzo di chiusura del precedente giorno di mercato finito, non il giorno di mercato che inizierà tra poco.
Open[0] restituisce il prezzo di apertura del giorno di mercato precedente e così via.
Si può tranquillamente usare Shift=0 in tutti i blocchi, ma si riferiscono all'ultima barra chiusa - prima del giorno di mercato.

 

Su Bar Aperto

valuta la strategia all'apertura del mercato.

La piattaforma attiva questa operazione alcuni minuti dopo l'apertura effettiva del mercato per consentire il consolidamento dei prezzi.
Le operazioni vengono eseguite immediatamente.

Implicazioni
Il blocco con Shift=0 restituisce il valore dell'effettivo giorno di mercato aperto.
Quindi Open[0] restituisce l'attuale prezzo di mercato Open.
Close[0] restituisce il prezzo di apertura, perché il prezzo di chiusura del giorno non è ancora noto (è l'inizio del giorno di mercato).
Lo stesso vale per High[0], Low[0]: all'apertura del mercato non sono ancora noti i valori massimi e minimi del giorno di negoziazione corrente.
Si può tranquillamente utilizzare Shift=0 SOLO con blocchi di prezzi aperti e calcolare gli indicatori solo con i prezzi aperti.

 

Alla chiusura del bar

valuta la strategia alla chiusura del mercato.

La piattaforma attiva questa operazione alcuni minuti PRIMA dell'effettiva chiusura del mercato per consentire esecuzioni corrette.
Le operazioni vengono eseguite immediatamente.

Implicazioni
Il blocco con Shift=0 restituisce i valori dell'effettivo giorno di chiusura del mercato.
Open[0] restituisce il prezzo di apertura del mercato corrente.
Close[0] restituisce il prezzo effettivo in tempo reale - molto vicino al prezzo reale di chiusura.
È possibile utilizzare Shift=0 con tutti i tipi di prezzi e indicatori. Poiché la strategia viene valutata molto vicino alla chiusura effettiva del mercato
i prezzi alti, bassi e chiusi del giorno di contrattazione corrente saranno molto precisi.

Nota speciale sugli indicatori

Gli esempi precedenti mostrano come vengono influenzati i prezzi semplici come Open, High, Low, Close quando vengono usati con Shift=0,
ma è necessario rendersi conto che esistono anche indicatori che possono essere calcolati a partire da prezzi non ancora noti.
Ad esempio, il calcolo dell'EMA dalla chiusura con Shift=0 darà risultati errati se utilizzato con il trigger On Bar Open, perché i valori di Close[0] non sono ancora noti.
Lo stesso vale per gli indicatori standard come l'ATR - l'ATR con Shift[0] viene calcolato utilizzando High[0], Low[0] che, ancora una volta, non sono noti all'apertura del mercato.

 

Dati settimanali e mensili

Sono disponibili anche dati settimanali e mensili. Per la settimana e il mese in corso il prezzo di chiusura è derivato semplicemente dal prezzo dell'ultimo giorno di negoziazione. I dati per la settimana e il mese in corso sono semplicemente riferiti utilizzando la barra [0] (ad esempio, Weekly High[0] o Monthly Close [0] ecc.)

 

Gestione degli stop loss e degli obiettivi di profitto nel backtesting

Il backtesting delle strategie di Stockpicker deve essere veloce - dobbiamo valutare una strategia su centinaia o migliaia di titoli. Per questo motivo, nel backtest utilizziamo solo i prezzi giornalieri OHLC.
Non è possibile utilizzare i dati dei minuti o dei tick per il motore Stockpicker.

L'utilizzo dei dati OHLC giornalieri presenta uno svantaggio che non può essere facilmente risolto: non conosciamo il movimento intraday del prezzo.
Nella maggior parte dei casi non è un problema, ma descriviamo il modo in cui il motore di backtesting SQ lo gestisce per garantire l'affidabilità dei backtest.

Il problema potrebbe sorgere quando si utilizzano SL + PT, o l'ingresso a Stop/Limit combinato con SL o PT.
In entrambi i casi c'è più di un livello di prezzo di stop o limite - ingresso (stop/limite), SL, PT.

Il problema da affrontare è quello delle situazioni in cui questi livelli sono così vicini l'uno all'altro che entrambi potrebbero essere riempiti intraday nella giornata di mercato.
Senza dati tick reali non possiamo sapere quale di questi livelli verrà colpito per primo, quindi non possiamo simulare in modo affidabile l'ingresso allo stop/limite seguito da SL o PT nella stessa barra.

Nel trading reale lo SL+PT viene aggiunto immediatamente all'apertura dell'operazione, ma per le ragioni sopra menzionate non possiamo simularlo in modo affidabile nel backtester - ciò porterebbe a backtest troppo ottimistici e poco realistici.

Per garantire l'affidabilità dei risultati, il motore del backtester rileva questo tipo di situazioni e le gestisce in questo modo:

  • Quando l'entrata è nel mercato, viene impostato solo lo SL o solo il PT - in questo caso è possibile valutare lo SL o il PT immediatamente, nella stessa barra.
  • Quando l'ingresso è allo Stop/Limit e vengono impostati SL, PT o entrambi - in questo caso SL e PT vengono applicati solo il giorno successivo, non sappiamo se il prezzo di ingresso o SL/PT è stato raggiunto all'apertura della barra, quindi non possiamo valutarlo immediatamente.
  • Quando vengono utilizzati sia lo SL che il PT, ed entrambi potrebbero essere riempiti in una barra, il backtester prende lo SL per creare una variante pessimistica, poiché non sappiamo quale dei due sarebbe stato riempito per primo.

 

Questa situazione influisce generalmente sulla performance della strategia solo se si utilizzano Stop Loss o Profit Target molto stretti: non fatelo e non avrete questo problema.

 

Piccole differenze nei tempi di esecuzione tra backtest e trading live

Si noti che nel backtester quando l'operazione viene aperta all'apertura o alla chiusura del mercato utilizzando Enter at Market (o Exit at end of day), viene aperta al prezzo di apertura/chiusura dei dati - il prezzo di apertura o chiusura del mercato reale.

Nel trading live questo non è possibile: quando si attiva la strategia all'apertura della barra, questa viene valutata ed eseguita pochissimo tempo dopo l'effettiva apertura del mercato. Lo stesso vale per la chiusura della barra, che viene eseguita pochissimo tempo prima dell'effettiva chiusura del mercato.

La gestione avviene in questo modo perché non è possibile attivare gli ordini esattamente all'apertura o alla chiusura del mercato. Per questo motivo, i prezzi di mercato "Open" e "Close" rilevati in questi momenti non corrisponderanno ai prezzi di mercato Open o Close riportati nei dati storici. La differenza sarà trascurabile e non dovrebbe influire sulle prestazioni della strategia, ma sarà comunque presente.

 

Questo articolo è stato utile? L'articolo è stato utile L'articolo non è stato utile

Abbonarsi
Notificami
0 Commenti
Feedback in linea
Visualizza tutti i commenti