Processo di costruzione della strategia (forex)

Costruire una strategia EURUSD redditizia

di Mark Fric
In questo articolo vi spiegherò il processo completo, passo dopo passo, di costruzione di una strategia robusta e redditizia per EURUSD, che comprende più fasi di diversi test di robustezza.
Esiste anche un'altra variante di questo articolo su Processo di costruzione della strategia per i futures E-Mini S & P 500.

Quando si utilizzano tecniche di apprendimento automatico come la programmazione genetica La parte più importante del processo di costruzione di una strategia è la verifica della sua solidità. per garantire che non sia adattato ai dati storici.
Utilizzo il doppio filtro OOS, i test di robustezza e il test della matrice Walk-Forward.

 

 

Ingressi

Gli unici input che utilizzo sono le mie aspettative sulla strategia: voglio costruire una strategia per EURUSD che sia redditizia e che abbia il minor drawdown possibile. Voglio che la strategia sia abbastanza robusta da funzionare anche su altri simboli (GBPUSD) e che superi il test Walk-Forward Matrix per assicurarmi che la riottimizzazione funzioni su questa strategia.


Processo di costruzione della strategia

  1. Generare un grande bacino di potenziali candidati
  2. Primo filtro - Controllo del campione esaurito (OOS)
  3. Secondo filtro - nuovo test e secondo controllo OOS
  4. Terzo filtro - Controllo GBPUSD
  5. Quarto filtro - Test di robustezza
  6. Quinto filtro - Test della matrice Walk-Forward

Generare un grande bacino di potenziali candidati

Nella prima fase devo semplicemente generare un ampio pool di strategie potenzialmente "buone" che verificherò in seguito per verificarne la robustezza. Voglio che tutte le mie strategie iniziali siano redditizie e robuste (in una certa misura), quindi utilizzo diversi filtri anche in questa prima fase.

Le mie impostazioni per questo passaggio
È possibile scaricare le impostazioni utilizzate in questo passaggio utilizzando il link sottostante. Fare clic sul link con il tasto destro del mouse e scegliere Salva link con nome...
Quindi in StrategyQuant utilizzare Load settings per caricare questo file di impostazioni nel programma.

build_eurusd_strategy.xml

Spiegazione delle impostazioni
Prima di tutto, io genero tutte le mie strategie su più simboli. Il mio obiettivo è quello di trovare una buona strategia per EURUSD, ma voglio che la mia strategia sia robusta - quindi voglio che sia redditizia anche su GBPUSD. Aggiungo GBPUSD ai dati aggiuntivi, così ora la strategia sarà testata su entrambi i simboli.

Immagine 1: Impostazione dei dati

Utilizzerò i dati dal 1.1.2007 al 30.6.2011, ovvero 4 anni e mezzo. Il resto dei dati sarà lasciato per ulteriori test OOS in seguito.

Utilizzerò la modalità Evoluzione genetica. L'idea è di creare una popolazione di 200 strategie, farle evolvere per 30 generazioni e poi ripartire da zero. In questo modo eviterò di imbattermi in un vicolo cieco durante l'evoluzione e le strategie migliori verranno continuamente memorizzate nella banca dati.
Si può anche notare che l'unica condizione per la popolazione iniziale è che deve effettuare almeno 100 operazioni. Non è necessario che sia redditizia: l'evoluzione genetica dovrebbe essere in grado di migliorarla.

Immagine 2: Opzioni genetiche

L'ultima importante impostazione riguarda le opzioni di classificazione. Ho impostato la banca dati per memorizzare le 2000 strategie migliori, perché voglio avere una buona base per un ulteriore processo di selezione. Ho anche impostato il criterio di selezione sul rapporto rendimento/disavanzo: è il mio preferito. Potete utilizzare altri criteri di selezione, forse otterrete risultati migliori.

Immagine 3: Opzioni di classificazione

Una delle cose più importanti è impostare i criteri di filtro iniziali per le strategie in Databank. Voglio considerare solo le strategie che hanno almeno $2000 di profitto, hanno un rapporto rendimento/DD > 3, almeno 300 operazioni e un rapporto rendimento/DD di un portafoglio di almeno 2,5.

Poiché sto testando le strategie su due simboli, EURUSD e GBPUSD, verranno calcolati anche i risultati del portafoglio per le strategie. Utilizzando questa condizione, è sufficiente specificare che la performance del portafoglio non deve essere molto peggiore di quella ottenuta solo su EURUSD e il programma eliminerà tutte le strategie con una cattiva performance del portafoglio.

Ora dobbiamo solo premere il tasto Inizio e lasciare che il programma faccia il suo lavoro.
Ricordate che vogliamo generare almeno 2000 strategie "buone" prima di continuare il processo di filtraggio.

A seconda delle impostazioni e della velocità del computer, potrebbero essere necessarie diverse ore o addirittura giorni, quindi siate pazienti. Se il programma non produce alcuna strategia per molto tempo, forse è il caso di passare a un timeframe più alto - H4 o D1 - o di ridurre i vincoli.


1. Primo filtro - Controllo del campione esaurito (OOS)

Quando avrò 2000 strategie potenzialmente valide nella banca dati, interromperò la generazione e inizierò il processo di filtraggio.
Applicherò il primo filtro, eliminando tutti i sistemi che hanno una cattiva performance fuori dal campione. Posso farlo rapidamente, semplicemente ordinando le strategie nella banca dati ed eliminando quelle che hanno un profitto OOS inferiore a $500.

Immagine 4 Banca dati con pool di strategie ordinate in base al profitto netto OOS

Questa prima fase di solito rimuove una gran parte delle strategie, quindi dai 2000 candidati iniziali siamo scesi a circa 1500.


2. Secondo filtro - nuovo test e secondo controllo OOS

In questa fase, si rieseguono i test di tutte le strategie utilizzando il metodo Precisione di 1 minuto sul periodo fuori campione sconosciuto.
Ho utilizzato la precisione del timeframe selezionato nella fase di costruzione per rendere i test il più veloci possibile, ma prima di un'ulteriore valutazione voglio assicurarmi che i backtest siano davvero affidabili, quindi ho ritestato tutte le strategie con una precisione maggiore.

Il test delle strategie è semplice: basta selezionare tutte le strategie nella banca dati e cliccare sul pulsante Retest. In questo modo, tutte le strategie verranno spostate in una scheda di verifica. Confermerò anche la finestra di dialogo che chiede di utilizzare le impostazioni di creazione per il test.

Estenderò quindi il periodo di dati fino alla fine dei dati disponibili. Le strategie sono state generate sui dati dall'1.1.2007 al 30.6.2011. 2011, ora testerò nuovamente le strategie sui dati fino al 30.6.2013 e imposterò il periodo fuori campione dal 2.7.2011 al 28.6.2013.
Si noti che in questo modo le strategie verranno testate nuovamente su una nuova parte di dati sconosciuti, mentre la parte OOS mostrerà la performance della strategia durante l'ultimo anno e mezzo.

Immagine 5: Impostazione della precisione del test su 1 minuto

Dato che ho anche un'altra fonte di dati storici EURUSD (dati gratuiti scaricati da Dukascopy), li aggiungerò ai dati aggiuntivi per confrontare la performance su entrambe le fonti di dati EURUSD.

Il test potrebbe richiedere un po' di tempo e al termine rimuoverò ancora una volta tutti i sistemi che hanno una cattiva performance fuori dal campione. Ancora una volta posso ordinare le strategie nella banca dati in base al profitto netto (OOS) ed eliminare quelle che hanno un profitto OOS inferiore a $500.


3. Terzo filtro - Controllo GBPUSD

In questa fase verificherò la performance delle strategie sul simbolo GBPUSD. Andrò su Risultati -> Grafico azionario, cambierò il grafico in GBPUSD/H1 o in Portafoglio e passerò in rassegna le strategie una per una guardando il grafico di GBPUSD.

Immagine 6: Esempio di performance buona e cattiva di GBPUSD

Prenderò in considerazione solo le strategie che mostrano almeno una certa redditività su GBPUSD. La curva del capitale non deve essere perfetta, ma deve essere in crescita senza drawdown estremi.

Questo filtro è molto semplice: di solito troviamo solo poche strategie che superano questo test.
Quindi, dalle 2000 iniziali siamo di solito scesi a 5-15 strategie.


4. Quarto filtro - Test di robustezza

Dopo aver eliminato tutte le strategie con una cattiva performance su GBPUSD, sono rimaste meno di 10 strategie con una buona performance su IS e OOS, oltre a una performance soddisfacente su GBPUSD. Ora sottoporrò nuovamente le strategie a test di robustezza e di gestione del denaro per vedere come ognuna di esse gestisce le piccole variazioni degli input e per poterle confrontare tra loro.

Cambierò la gestione del denaro da dimensione fissa a importo fisso, lasciando che ogni strategia rischi $100 per operazione. Questo permette di confrontare meglio le strategie, perché rischiano lo stesso importo per operazione.

Immagine 7: Impostazione della gestione del denaro su un importo fisso

Nei test di robustezza utilizzo almeno 20 simulazioni e verifico la strategia per tutti i tipi di situazioni di stress. Dopo aver configurato il test di robustezza, eseguo nuovamente il test delle strategie.
Questa volta sarà veloce perché sono rimaste solo poche strategie nella banca dati.

Immagine 8: Test di robustezza

Come valutare i test di robustezza
I test di robustezza ci mostrano come la strategia può comportarsi nella realtà, quando ci sono operazioni mancate, dati storici diversi, ecc. Sto cercando strategie che abbiano valori accettabili per il Profitto netto e il Drawdown nel livello di confidenza 95%.

Immagine 9: Risultati dei test di robustezza

Nell'esempio sopra riportato possiamo vedere i risultati di robustezza di due strategie. La strategia di sinistra ha un profitto accettabile, ma il drawdown è più che raddoppiato rispetto al risultato originale.
Anche la strategia di destra ha registrato un profitto di livello accettabile e il drawdown è rimasto pressoché invariato.

In questa fase sceglierò solo 1-3 strategie finali che saranno sottoposte al successivo test di robustezza.
Le strategie finali sono state selezionate in base ai migliori risultati nei test di robustezza, alla redditività complessiva e alla semplicità: voglio che le regole della strategia siano il più semplici possibile e che le regole di trading abbiano un senso.


5. Quinto filtro - test della matrice Walk-Forward

Rimangono poche strategie e possiamo eseguire il test definitivo per la robustezza: il test della matrice Walk-Forward. La matrice WF è semplicemente una matrice di ottimizzazioni walk-forward con un numero diverso di esecuzioni e periodi di esecuzione.

Se la strategia supera il test della matrice Walk-Forward, significa che con l'aiuto della riottimizzazione dei parametri la strategia è adattabile a una vasta gamma di condizioni di mercato E anche che la strategia non è adattata a dati particolari, poiché con la riottimizzazione funziona su molti periodi di tempo diversi.

Oltre a questo, il test WF Matrix ci dice anche se la strategia deve essere riottimizzata in modo permanente e qual è il periodo di riottimizzazione ottimale.

Il test Walk-Forward Matrix deve essere eseguito separatamente per ogni strategia. Carico la mia strategia in Optimizer e seleziono l'opzione Walk-Forward Matrix. Selezionerò anche le fasi di esecuzione e le percentuali di OOS. StrategyQuant esaminerà tutte queste combinazioni, eseguendo l'ottimizzazione Walk-Forward della strategia.

Immagine 10: Impostazione della matrice Walk-Forward

Impostazione dei parametri per l'ottimizzazione
Affinché l'ottimizzazione abbia senso, è necessario impostare i parametri della strategia da ottimizzare. Ogni strategia utilizza una logica diversa e ha parametri diversi, quindi è necessario configurare l'ottimizzazione in modo diverso.

Immagine 11: Ottimizzazione dei parametri

Questa strategia è relativamente semplice, quindi ottimizzerò solo il valore di stop loss e il coefficiente di stop trailing.
Non è necessario ottimizzare tutti i parametri, ma solo quelli che hanno il maggiore impatto sulle prestazioni della strategia.

Ora posso avviare l'ottimizzazione di WF Matrix. Questo processo potrebbe essere lungo e richiedere diverse ore, a seconda delle impostazioni e del numero di passaggi e parametri ottimizzati e della velocità del computer.

Valutazione della matrice Walk-Forward
Al termine dell'ottimizzazione, faccio clic sul risultato della matrice Walk-Forward in Databank per vedere i dettagli.

Immagine 13: Risultati della matrice Walk-Forward

Il risultato finale è che la strategia ha superato il test di robustezza della matrice Walk Forward. Il grafico del punteggio 3D mostra che 16 combinazioni su 24 hanno superato i nostri criteri (utilizzando le impostazioni predefinite).
Non è necessario che la strategia passi per ogni combinazione, sto cercando un'area 2×2 o 3×3 che abbia la maggior parte delle combinazioni passate: questo sarà il gruppo delle migliori combinazioni di riottimizzazione. In questo caso, posso vedere che 10 corse con 30% Out of Sample è una delle migliori combinazioni, perché è circondata da altre combinazioni che sono passate.

Quando controllo il grafico dell'ottimizzazione Walk-Forward, vedo che la strategia rimane redditizia anche durante la riottimizzazione.

Immagine 14: Grafico di ottimizzazione Walk-Forward

Walk Forward Matrix mi fornisce anche un'altra informazione importante: ogni quanto tempo dovremmo riottimizzare la strategia?
Per la nostra combinazione selezionata di 15 corse con 30% Fuori campione:


Sintesi

Ho descritto il mio processo completo di lavoro con StrategyQuant, che ha portato ad alcune nuove interessanti strategie.
Potete provare voi stessi, trarre ispirazione ed eventualmente migliorare il processo con le vostre idee, che potrete condividere sul nostro sito web forum.

Possibili miglioramenti del processo - si può provare a cercare strategie separatamente per la direzione long e short. Ogni direzione ha le proprie dinamiche e strategie diverse per le direzioni lunghe e corte potrebbero dare risultati migliori.
Non ho menzionato Miglioratore - è uno strumento potente che consente di cercare una variante migliore della strategia esistente, se non si è ancora soddisfatti delle prestazioni.

Tenete presente che il punto non è trovare una strategia perfetta sui dati storici. Questa è una ricetta per il disastro, perché una strategia eccessivamente ottimizzata è destinata a fallire nel trading reale.
Il nostro obiettivo dovrebbe essere quello di trovare una strategia che sia robusta su diversi dati e/o simboli, perché questo significa che ha un reale vantaggio sul mercato.

Abbonarsi
Notificami
1 Commento
Il più vecchio
Più recente I più votati
Feedback in linea
Visualizza tutti i commenti
Mario Gordon
Mario Gordon
2. 1. 2019 6:10 pm

Come possono essere le impostazioni di SQ4? Vedo che ha nuove funzioni e sarebbe bello caricare le impostazioni per una buona generazione di strategie.

Continua a leggere