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

 
fxsaber #:

L'ho realizzato per i miei compiti e ho condiviso il codice di lavoro. Chiunque ne abbia bisogno potrà dargli un'occhiata.

Dove posso vedere il codice finale?

 

Qualcuno ha mai provato a lavorare con gli "outlier"? E non sto parlando di outlier come errore, ma di eventi rari.

È divertente, ma si è scoperto che in alcune stringhe di campioni, gli outlier sono registrati in più del 50% dei predittori....

Questi outlier entrano nei modelli - abbastanza facilmente, come risulta.

Quindi, sembra che non sia critico solo per i NS....

 
fxsaber #:

Non faccio confronti, fornisco un codice che ognuno per il proprio caso può misurare.

La lunghezza della stringa di 100 è la lunghezza del modello. Probabilmente non avete bisogno di più di questo.

15000 campioni sono limitati dalla memoria a causa della dimensione quadratica della matrice di correlazione. Più campioni ci sono, meglio è. Ecco perché ho scritto un programma fatto in casa in cui ce ne possono essere un milione.

Non ho né voglia né tempo da dedicare al confronto oggettivo. L'ho realizzato per i miei compiti e ho condiviso il codice di lavoro. Chiunque ne abbia bisogno lo vedrà.

Varianti di accelerazione - la matrice di uscita deve essere memorizzata in uchar. Di norma, cambiamo le percentuali con incrementi dell'1% e guardiamo qualcosa. uchar - solo fino a +- 128. È possibile modificare il proprio progetto per uchar e anche per alglib, il codice è disponibile. Le matrici totali possono essere 8 volte più grandi con la stessa memoria.

 
Aleksey Vyazmikin #:

Qualcuno ha mai provato a lavorare con gli "outlier"? E non sto parlando di "outlier" come bug, ma piuttosto di eventi rari.

È divertente, ma si è scoperto che in alcune stringhe del campione l'outlier è fisso in più del 50% dei predittori....

Se questi outlier sono inclusi nei modelli è abbastanza volentieri, come si è scoperto.

Quindi, sembra che non sia solo per NS che questo è critico....

Cigni bianchi/neri... fxsaber ne ha parlato nel suo blog. Tra le tante varianti, ne ho avute anche io: ho fatto trading per circa una settimana ogni due anni. In generale, l'esperto si siede e aspetta il movimento. Ma questa è una performance ideale nel tester. Nella vita reale, gli slippage (che sono enormi durante il movimento) possono rovinare tutto.

 
Forester #:

Cigni bianchi/neri..... fxsaber ne ha parlato nel suo blog. Tra le tante varianti ho avuto la seguente: trading per circa una settimana ogni due anni. In generale, l'esperto si siede e aspetta il movimento. Ma questa è una performance ideale nel tester. Nella vita reale, gli slippage (enormi durante il movimento) possono rovinare tutto.

Ho provato a rimuovere dal campione le linee in cui sono presenti molti outlier.

E l'allenamento è cambiato radicalmente.

Se prima nel test c'erano buoni risultati in media in positivo, e all'esame - quasi tutti in negativo - questo su 100 modelli, allora la pulizia degli outlier ha cambiato il risultato - i risultati nel test sono peggiorati molto (profitto medio vicino allo zero), e all'esame al contrario - molti modelli sono diventati in positivo.

Non sono ancora pronto a dire che si tratta di una regolarità, cercherò di verificarlo su altri campioni.

Inoltre, la questione del modo migliore per determinare l'outlier è ancora aperta per me. Ora mi limito a prendere fino al 2,5% per ogni lato, purché i ranghi non superino questo limite.

 
In generale, la sensazione è che ci sia un ciclo di un paio d'anni dopo l'addestramento, attraverso il quale i modelli iniziano a trovare improvvisamente alcuni modelli nei nuovi dati.
 
Aleksey Vyazmikin #:

Ho provato a rimuovere dal campione le righe in cui sono presenti molti outlier.

La formazione è cambiata radicalmente.

Se prima nel test c'erano buoni risultati in media positivi, e all'esame - quasi tutti negativi - questo su 100 modelli, la pulizia degli outlier ha cambiato il risultato - i risultati nel test sono diventati molto peggiori (profitto medio vicino allo zero), e all'esame al contrario - molti modelli sono diventati positivi.

Non sono ancora pronto a dire che si tratta di una regolarità, cercherò di verificare su altri campioni.

Inoltre, la questione del modo migliore per determinare l'outlier è ancora aperta per me. Ora mi limito a prendere fino al 2,5% per ogni lato, purché i ranghi non superino questo limite.

Se si prende solo il 2,5% (o altro), il numero di outlier dipende dalla distribuzione e questo non è corretto.

È meglio prendere un quantile con 100 trame e non rimuovere prima dell'1% e dopo il 99%, ma sostituire con valori dell'1% e del 99%. Non è possibile eliminare nulla.

 
fxsaber #:
NumPy sembra avere un algoritmo diverso da quello di ALglib, dal momento che le prestazioni sono molto diverse. Ma è chiaro che in tutta l'enorme comunità Python c'è stato qualche algoritmista molto forte che ha dedicato una discreta quantità di tempo a studiare questo problema.

Il codice sorgente è aperto, potete darci un'occhiata. La funzione per il calcolo della correlazione, sulla destra, è [source], dopo averla cliccata si accede al codice. Ci interessano le righe 2885-2907. Nella riga 2889 viene utilizzata la covarianza, dopo aver fatto clic su cov, tutte le menzioni di cov nel codice appariranno sulla destra, dopo aver fatto clic sulla riga con def cov... si passa alla funzione di covarianza e così via. MQL è un linguaggio simile al C, tutti i linguaggi simili al C sono simili al 90%, si possono capire C#, Java, Python, JavaScript senza problemi.

 
СанСаныч Фоменко #:

Se si prende solo il 2,5% (o altro), il numero di eliminati dipende dalla distribuzione, e questo non è corretto.

È meglio prendere un quantile con 100 trame e non eliminare prima dell'1% e dopo il 99%, ma sostituire con i valori dell'1% e del 99%. Non è possibile eliminare nulla.

Prendo una percentuale dei dati, non una percentuale dell'intervallo. Quindi, se ci sono molti dati (è denso), l'arresto sarà veloce sulla scala dell'intervallo.

Il salto dalla media e dalla varianza si è dimostrato poco efficace.

Ho appena esplorato la questione della sostituzione con altri valori (ma l'ho fatto solo per quantificare), mi è piaciuta l'opzione della sostituzione con valori casuali dal sottoinsieme rimanente, tenendo conto della probabilità.

 
Aleksey Vyazmikin #:

Prendo una percentuale dei dati, non una percentuale dell'intervallo. Quindi, se ci sono molti dati (è denso), l'arresto sarà veloce sulla scala dell'intervallo.

Il salto dalla media e dalla varianza si è dimostrato poco efficace.

Ho appena esplorato la questione della sostituzione con altri valori (ma l'ho fatto solo per quantificare), mi è piaciuta l'opzione della sostituzione con valori casuali dal sottoinsieme rimanente, tenendo conto della probabilità.

I quantili sono probabilità. Quindi rimuoviamo/sostituiamo i dati la cui probabilità di rientrare nell'intervallo è inferiore all'1%/superiore al 99% o altri valori. Non è possibile tagliare le quantità - abbiamo distribuzioni oblique e a coda.

Scrivono che il valore di sostituzione è meglio considerato come una previsione di quella quantità da parte del MOE. Ma questo mi sembra un po' eccessivo.