L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 8

 
Alexey Burnakov:

Aspettate. Controllerò anche i tuoi dati per le dipendenze.

Una domanda prima di iniziare. I tuoi dati includono tutte le barre in una riga, o c'è stato uno sfoltimento delle barre prima del campionamento?

R1, R2, R3 in fila e al loro interno anche in fila sono serie temporali su H1.
 
SanSanych Fomenko:
R1, R2, R3 in fila e al loro interno anche in fila è una serie temporale su H1.

Capisco. Bene, con i vostri dati capisco all'incirca come funziona.

Voglio anche capire il dottor Trader.

 

Ho anche H1, il campione include i dati delle ultime 4 barre. open[1]-high[1]-close[1]-...-open[2]-high[2]-close[2]-... ecc., i dati provengono dalle strutture MqlRates e MqlDateTime, in più ci sono un paio di indicatori e prezzi di chiusura da timeframe superiori, tutto è normalizzato nell'intervallo [0..1]. Il risultato di 1 o 0 è l'aumento o la diminuzione del prezzo sulla prossima barra. Ma tutto questo non è chiaramente sufficiente.

Il problema è che non sappiamo di quante barre abbiamo bisogno. Il Neuronka ha bisogno solo di 3 barre per riaddestrarsi a un errore dello 0% (e quindi il 50% sarà nel fronttest). Oppure, se lo si allena con il controllo e lo si ferma in tempo, l'errore di fronttest sarà un paio di punti percentuali in meno. Ma, è possibile prendere centinaia di barre a tutti, e ottenere circa lo stesso risultato, anche se ogni nuova barra nel campione è una quantità enorme di spazzatura e di conseguenza abbassare la qualità del modello.

 
Dr.Trader:
Ho anche H1, il campione include i dati delle ultime 4 barre. open1-high1-close1-...-open2-high2-close2-... ecc. I dati delle strutture MqlRates e MqlDateTime. Il risultato di 1 o 0 è l'aumento o la diminuzione del prezzo sulla prossima barra.
Fantastico. C'è qualcosa come open1 - open2? Restituisce
 

Una piccola aggiunta al post precedente. No, non ci sono delta. Dovrò fare una prova.

 
Dr.Trader:

Ho anche H1, il campione include i dati delle ultime 4 barre. open[1]-high[1]-close[1]-...-open[2]-high[2]-close[2]-... ecc., i dati provengono dalle strutture MqlRates e MqlDateTime, in più ci sono un paio di indicatori e prezzi di chiusura da timeframe superiori, tutto è normalizzato nell'intervallo [0..1]. Il risultato di 1 o 0 è l'aumento o la diminuzione del prezzo sulla barra successiva. Ma tutto questo non è chiaramente sufficiente.

Il problema è che non sappiamo di quante barre abbiamo bisogno. Il Neuronka ha bisogno solo di 3 barre per riaddestrarsi a un errore dello 0% (e quindi il 50% sarà nel fronttest). Oppure, se lo si allena con il controllo e lo si ferma in tempo, l'errore di fronttest sarà un paio di punti percentuali più piccolo. Ma, è possibile prendere centinaia di barre a tutti, e ottenere lo stesso risultato, anche se ogni nuova barra nel campione è una quantità enorme di spazzatura e una corrispondente diminuzione della qualità del modello.

Beh, bisogna fare ingegneria delle caratteristiche. Non è necessariamente l'uso di indicatori standard. Ci vuole immaginazione e comprensione del processo. Dare solo i dati della barra della scatola nera può davvero non essere sufficiente. Ed è importante la profondità da cui vengono prese le informazioni. Io, per esempio, ho visto nelle mie ricerche che è necessario alimentare una profondità simmetrica in ingresso rispetto alla profondità in uscita. Prevedere per 3 ore avanti - dare dati per 3 ore indietro e dopo.

Ecco un esempio di uno schema di sviluppo dei predittori che si riflette in parte anche nella mia ricerca. Questi dati danno già alla macchina molte informazioni su ciò che è stato:

http://blog.kaggle.com/2016/02/12/winton-stock-market-challenge-winners-interview-3rd-place-mendrika-ramarlina/comment-page-1/

Winton Stock Market Challenge, Winner's Interview: 3rd place, Mendrika Ramarlina
Winton Stock Market Challenge, Winner's Interview: 3rd place, Mendrika Ramarlina
  • 2016.12.02
  • blog.kaggle.com
The Stock Market Challenge, Winton's second recruiting competition on Kaggle, asked participants to predict intra and end of day stock returns. The competition was crafted by research scientist at Winton to mimic the type of problem that they work on everyday. Mendrika Ramarlina finished third in the competition with a combination of simple...
 
Dr.Trader:

Una piccola aggiunta al post precedente. No, non ci sono delta. Dovrò fare una prova.

Questo è un must.

Sai cosa funziona bene? La differenza tra l'ultimo prezzo conosciuto e la media mobile. La finestra della media dovrebbe essere diversa.

 
Qui sto leggendo, leggendo.... e non riesco a capire quale sia la variabile obiettivo prima da un punto di vista formale: un numero reale (regressione) o un valore nominale (classificazione). Inoltre, se stiamo discutendo la misura in cui i predittori influenzano la variabile obiettivo, è una buona idea conoscere il significato della variabile obiettivo stessa.
 

Guardo la variabile target come un qualificatore di acquisto/vendita, senza le specifiche di quanto tempo tenere aperto il trade o quale livello di prezzo aspettare. L'Expert Advisor apre un trade all'inizio di una barra e aspetta la barra successiva per prendere la prossima decisione.

È più difficile con un senso logico :)

Volevo allenare la neuronica a trovare modelli e forme su un grafico (testa e spalle, ecc.). E ha dovuto imparare a trovare alcune figure da solo senza la mia partecipazione; ho usato la direzione dello zigzag come variabile obiettivo. Il significato della variabile target secondo il mio piano avrebbe dovuto essere "pattern trovato, la tendenza sta andando verso l'alto, dovrei comprare" (con risultato=1). Allo stesso tempo il risultato=0 significherebbe che il trend sta andando verso l'alto e dovrei vendere. Ho cercato di considerare la forza del segnale e di non fare trading quando il risultato è vicino a 0,5.

I miei pensieri ad alta voce, non ci ho pensato prima: sembra che il mio modello fosse sbagliato, ho dovuto insegnare 3 classi a comprare/vendere/chiudere_tutte_le_vendite_e_non_commerciare. E fare o 3 uscite da una rete, o allenare 3 reti separate. Non una rete con una sola uscita.

Poi ho capito attraverso la sperimentazione che posso prendere solo 5 barre invece di 200 e non cambierà nulla, il risultato rimarrà lo stesso. Non credo che il modello impari a trovare dei modelli in una tale configurazione, ma piuttosto trovi delle regolarità nel tempo. Ho deciso gradualmente di insegnare il modello non su uno zigzag ma semplicemente sul prezzo di chiusura della barra successiva. In questo caso non ho bisogno di filtrare il risultato della neuronica, meno problemi con lo stesso risultato, non è così male. Qui il significato logico è già più semplice - variabile target 0/1 - il prezzo cadrà/aumenterà in 1 barra.

Ho studiato la foresta negli ultimi giorni e gli esempi di questo forum. Se prendete le stesse 5 barre, allora la foresta non imparerà delle cose astratte come la neuronica, ma deriverà delle regole abbastanza specifiche. Per esempio, la foresta potrebbe derivare una regola "attraversare due MA" o qualcosa del genere. Mi sembra che con un tale set di dati la foresta sia molto più promettente, imparerò ad usarla. Il significato della variabile target è lo stesso - 0/1 - il prezzo scenderà/aumenterà in 1 barra.

Non so quanto vorrei sull'impatto dei predittori. L'ora dovrebbe sicuramente essere usata, ora/minuto/giorno della settimana, probabilmente uno di questi (ora?). Non si possono usare i predittori con un piccolo insieme di valori che vanno in fila senza looping. Per esempio, se il campione di allenamento contiene dati per un anno, non puoi usare un predittore "mese". Il modello può semplicemente dividere tutti i dati in 12 pezzi in base ai mesi, e allenare una logica diversa per ogni pezzo. E la logica del gennaio 2015 non si adatta certamente in un anno alla logica del gennaio 2016. Ma se i dati di allenamento sono per 5 anni, allora "mese" potrebbe già andare bene. Inoltre, non sono sicuro che l'uso degli indicatori sia giustificato, gli EAs su indicatori standard stanno perdendo soldi, sarebbe strano se il modello addestrato estraesse qualcosa di utile da questi dati. Inoltre, ho capito che la foresta stessa fa anche alcuni calcoli e può creare i propri indicatori interni durante la formazione. Il prezzo dovrebbe anche essere utilizzato, anche se non mi fido dei prezzi di apertura e chiusura, preferisco alto e basso.

Tutti questi predittori mostrano una sorta di condizione attuale del mercato e lo scopo del modello è quello di definire queste stesse condizioni usando i predittori e dove va il prezzo in questi casi. Un modello dovrebbe usare meno dati di input possibile, come il rasoio di Occam, poi c'è la possibilità che descriva qualche dipendenza e non si adatti agli esempi.

 
Dr.Trader:

Guardo la variabile target come un qualificatore di acquisto/vendita, senza le specifiche di quanto tempo tenere aperto il trade o quale livello di prezzo aspettare. L'EA apre un trade all'inizio di una barra e aspetta la barra successiva per prendere la prossima decisione.

È più difficile con un senso logico :)

Volevo allenare la neuronica a trovare modelli e forme su un grafico (testa e spalle, ecc.). E ha dovuto imparare a trovare alcune figure da solo senza la mia partecipazione; ho usato la direzione dello zigzag come variabile obiettivo. Il significato della variabile target secondo il mio piano avrebbe dovuto essere "pattern trovato, la tendenza sta andando verso l'alto, dovrei comprare" (con risultato=1). Allo stesso tempo il risultato=0 significherebbe che il trend sta andando verso l'alto e dovrei vendere. Ho cercato di considerare la forza del segnale e di non fare trading quando il risultato è vicino a 0,5.

I miei pensieri ad alta voce, non ci ho pensato prima: sembra che il mio modello fosse sbagliato, ho dovuto insegnare 3 classi a comprare/vendere/chiudere_tutte_le_vendite_e_non_commerciare. E fare o 3 uscite da una rete, o allenare 3 reti separate. Non una rete con una sola uscita.

Poi ho capito attraverso la sperimentazione che posso prendere solo 5 barre invece di 200 e non cambierà nulla, il risultato rimarrà lo stesso. Non credo che il modello impari a trovare dei modelli in una tale configurazione, ma piuttosto trovi delle regolarità nel tempo. Ho deciso gradualmente di insegnare il modello non su uno zigzag ma semplicemente sul prezzo di chiusura della barra successiva. In questo caso non ho bisogno di filtrare il risultato della neuronica, meno problemi con lo stesso risultato, non è così male. Qui il significato logico è già più semplice - variabile target 0/1 - il prezzo cadrà/aumenterà in 1 barra.

Ho studiato la foresta negli ultimi giorni e gli esempi di questo forum. Se prendete le stesse 5 barre, allora la foresta non imparerà delle cose astratte come la neuronica, ma deriverà delle regole abbastanza specifiche. Penso che sia molto più promettente con tale set di dati e imparerò ad usarlo. Il significato della variabile target è lo stesso - 0/1 - il prezzo andrà su o giù in 1 barra.

Non so quanto vorrei sull'impatto dei predittori. L'ora dovrebbe sicuramente essere usata, ora/minuto/giorno della settimana, probabilmente uno di questi (ora?). Non si possono usare i predittori con un piccolo insieme di valori che vanno in fila senza looping. Per esempio, se il campione di allenamento contiene dati per un anno, non puoi usare un predittore "mese". Il modello può semplicemente dividere tutti i dati in 12 pezzi in base ai mesi, e allenare una logica diversa per ogni pezzo. E la logica del gennaio 2015 non si adatterà certamente in un anno alla logica del gennaio 2016. Ma se i dati di allenamento sono per 5 anni, allora "mese" potrebbe già andare bene. Inoltre, non sono sicuro che l'uso degli indicatori sia giustificato, gli EAs su indicatori standard stanno perdendo soldi, sarebbe strano se il modello addestrato estraesse qualcosa di utile da questi dati. Inoltre, ho capito che la foresta stessa fa anche alcuni calcoli e può creare i propri indicatori interni durante la formazione. Il prezzo dovrebbe anche essere utilizzato, anche se non mi fido dei prezzi di apertura e chiusura, preferisco alto e basso.

Tutti questi predittori mostrano una sorta di condizione attuale del mercato e lo scopo del modello è quello di definire queste stesse condizioni usando i predittori e dove va il prezzo in questi casi. Un modello dovrebbe usare meno dati di input possibile, secondo il principio della lama di Occam, poi c'è la possibilità che descriva qualche dipendenza e non si adatti agli esempi.

In molti modi i nostri pensieri si sovrappongono.

Ma alla fine sono bloccato con i predittori di rumore. La presenza di predittori di rumore rende il modello sovra-apprendimento e tutti gli altri ragionamenti diventano privi di senso.

Motivazione: