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

 
Aleksey Vyazmikin:

Ho 3 classi, cioè l'albero ha il segnale di comprare, vendere e aspettare, ora sto sperimentando il catbust e ho semplificato gli obiettivi per essere compressi in una classe...

Non so nulla delle classi ctree e cnode, così come dell'OOP in generale - non sono molto bravo a programmare, quindi è difficile capire il codice delle classi senza un programmatore...

È più una questione di come costruirli e perché. Puoi anche ramificarli attraverso la genetica nell'ottimizzatore, ma non sarà come il tuo. Piuttosto, sarà simile a un albero di algoritmi che viene ottimizzato e diventano più complessi da soli, come a strati... quando si raggiunge l'optimum, si setacciano gli algoritmi non necessari nell'ottimizzatore. È solo un modo, non sono sicuro che funzioni.

 
Maxim Dmitrievsky:

Sì, è più una questione di come costruirli e perché. È possibile ramificarli attraverso la genetica nell'ottimizzatore, ma non sarà come il vostro. Piuttosto, sarà simile a un albero di algoritmi, che viene ottimizzato, e sono una sorta di strato per strato diventano più complessi da soli o qualcosa del genere... quando si raggiunge l'optimum, allora si eliminano quelli non necessari nell'ottimizzatore. È solo un'opzione, ma non so se funzionerà.

È difficile discutere quando non si capisce l'essenza del codice...

Ho fatto un esperimento sulla rotazione dei gruppi di predittori - proprio quello che stavo dicendo - alcuni predittori sono buoni per dividere un campione e andare alla radice ma rovinano l'intero quadro.

In tutto ho ottenuto 9 gruppi - li ho suddivisi per logica predittiva, ancora più generalizzata della semplice logica. Ottenuto 512 combinazioni di gruppi, sotto il grafico mostra la dispersione dei risultati a seconda delle combinazioni di gruppi - per la selezione usato metrica "Precisione", impostato che l'altro giorno - nessun cambiamento, il target columns_100, albero 4 livelli, iterato solo 1000 fatto.

La tabella mostra il risultato del set con tutti i predittori - 1710 unità, così come i risultati massimi 3511 e minimi 607.


Poi ho fatto un calcolo con una penalità, cioè ho moltiplicato il gruppo della bandiera di blocco per il risultato finanziario della combinazione, se il valore è zero (il gruppo è stato usato), allora fissiamo un risultato positivo per il gruppo, ma se il valore non è zero, allora il gruppo è bloccato - moltiplicate il risultato per -1, poi sommate i valori per ogni gruppo. L'idea è che il gruppo con più penalità quando viene bloccato è il gruppo peggiore nell'aggregato, e lì possono ovviamente essere classificati per ulteriori ricerche.

Ecco come appare l'accumulo di indicatori sul grafico

Naturalmente la forma delle curve dipende dall'algoritmo di combinazione, dato che tutti hanno lo stesso numero di zeri e uno, il risultato finale è comunque equo. Ed è come segue - nella tabella qui sotto.



La tabella mostra che disabilitare i gruppi 1, 8 e 9 ha un buon effetto sul miglioramento del risultato finanziario.

Guardiamo la combinazione del miglior risultato finanziario



E ora passiamo alla combinazione del peggior risultato



Nel complesso il metodo di stima ha funzionato - il risultato migliore ha il gruppo 3,4,5,7 sbloccato e i peggiori bloccati, mentre la situazione è quasi speculare al caso peggiore.

Conclusione - questo approccio ha diritto alla vita e può identificare aggressivamente i gruppi di predittori influenzati negativamente.

Ci sono due modi di procedere: o trovare la ragione di tali cattivi risultati dividendo i gruppi negativi o dividere i gruppi positivi e cercare di scoprire dove sono i predittori magici che danno buoni risultati. D'altra parte, si possono prendere due strade...

Top ten e peggiori combinazioni:

E dobbiamo vedere cosa succede con l'altro obiettivo...

Ed ecco un altro grafico che mostra chiaramente che più decisioni sono buone (Proc_All - delta delle decisioni buone/peggiori rispetto a tutte le decisioni (zero e uno in totale)), più grande è il profitto, specialmente se si tratta dell'entrata corretta in un trade (Proc_1_V02) rispetto a tutte le entrate.


 
Aleksey Vyazmikin:

Quindi come si elaborano questi predittori in produzione per ottenere dei segnali?

 
Maxim Dmitrievsky:

Quindi, come si elaborano questi predittori nel processo di produzione per ottenere dei segnali?

Non ho ancora molto tempo per la produzione (commercio reale), ma sto progettando di accoppiare modelli e costruire impalcature da essi - la prossima fase, ma non riesco ancora a capire come automatizzare questo processo...

I predittori in forma finale sono ottenuti in Expert Advisor, quindi è facile sceglierli per utilizzarli.
 
Maxim Dmitrievsky:

ok. buona fortuna ) se si imposta la mt e katbust, scrivi un articolo :)

proprio oggi stavo facendo un lavoro da cervellone... Modifiche all'algo, montagne sempre più alte, montagne sempre più ripide... cavolo, vale la pena di usare un linguaggio di basso livello

Ultimi 3 mesi di trien, il resto ha funzionato fino all'inizio del 2018, 15 minuti

Mi chiedo se dovrei monitorare e rilassarmi... anche se ho ancora molto lavoro da fare. E ho fatto errori infantili, uno degli... array era girato originariamente nel modo sbagliato (come serie) e mi stavo allenando tutto il tempo su schede invertite, preoccupato che stavo imparando male.

Naturalmente, la questione dell'implementazione del modello CatBoost in EA è ancora aperta, da un lato è possibile scaricare il codice in C++, che non capisco affatto, dall'altro voglio ottenere i dati del foglio al modello corretto, e per questo scopo ho bisogno di un interprete, che non posso scrivere da solo...

Sì, hai il tuo approccio - i modelli funzionano per distanze relativamente brevi, ma perché non provare le condizioni reali sulla storia, cioè studiare il passato per 3 mesi e il commercio 1 per il futuro e poi cucire insieme i risultati - potresti ottenere un risultato interessante adatto all'applicazione.

Ho fatto un errore divertente - ho dimenticato di segnare un obiettivo da non addestrare nel campione di allenamento come "da non usare" e sono stato felice per un paio di minuti mentre valutavo i risultati :)

 
Aleksey Vyazmikin:

È difficile discutere se non si capisce il codice...

Ho fatto un esperimento sulla rotazione di gruppi di predittori - proprio quello che ho detto - alcuni predittori sono buoni per dividere il campione e andare alla radice, ma rovinano l'intero quadro.

In tutto ho ottenuto 9 gruppi - li ho suddivisi per logica predittiva, ancora più generalizzata della semplice logica. Ottenuto 512 combinazioni di gruppi, sotto il grafico mostra la dispersione del risultato finanziario a seconda delle combinazioni di gruppi - per la selezione usato metrica "Precisione", impostato che l'altro giorno - nessun cambiamento, il target columns_100, albero 4 livelli, iterato solo 1000 fatto.

La tabella mostra il risultato del set con tutti i predittori - 1710 unità, così come i risultati massimi 3511 e minimi 607.


Poi ho fatto un calcolo con una penalità, cioè ho moltiplicato il gruppo della bandiera di blocco per il risultato finanziario della combinazione, se il valore è zero (il gruppo è stato usato), allora fissiamo un risultato positivo per il gruppo, ma se il valore non è zero, allora il gruppo è bloccato - moltiplicate il risultato per -1, poi sommate i valori per ogni gruppo. L'idea è che il gruppo con più penalità quando viene bloccato è il gruppo peggiore nell'aggregato, e lì possono ovviamente essere classificati per ulteriori ricerche.

Ecco come appare l'accumulo di indicatori sul grafico

Naturalmente la forma delle curve dipende dall'algoritmo di combinazione, poiché tutti hanno lo stesso numero di zeri e di uno, il risultato finale è comunque equo. Ed è come segue - nella tabella qui sotto.



La tabella mostra che disabilitare i gruppi 1, 8 e 9 ha un buon effetto sul miglioramento del risultato finanziario.

Guardiamo la combinazione del miglior risultato finanziario



E ora passiamo alla combinazione del peggior risultato



Nel complesso il metodo di stima ha funzionato - il risultato migliore ha il gruppo 3,4,5,7 sbloccato e i peggiori bloccati, mentre la situazione è quasi speculare al caso peggiore.

Conclusione - questo approccio ha diritto alla vita e può identificare in modo aggressivo i gruppi di predittori influenzati negativamente.

Ci sono due modi di procedere: o trovare la ragione di tali cattivi risultati dividendo i gruppi negativi o dividere i gruppi positivi e cercare di scoprire dove sono i predittori magici che danno buoni risultati. D'altra parte, si possono prendere due strade...

Top ten e peggiori combinazioni:

E dobbiamo vedere cosa succede con l'altro obiettivo...

Ed ecco un altro grafico che mostra chiaramente che più decisioni giuste (Proc_All - delta delle decisioni giuste/sbagliate rispetto a tutte le decisioni (zero e uno in totale)), maggiore è il profitto, specialmente se sono entrate corrette (Proc_1_V02) rispetto a tutte le entrate.


È un inferno, è facile da leggere, ma il significato è impossibile da comprendere - il gioco di parole o un modo di dire è oltre la mia comprensione... più il suggerimento di Maksim per un articolo :)

Per quanto riguarda il collegamento degli EA alla console Python, ho già offerto un mio motore che permette di inviare ed eseguire blocchi di codice Python in tempo reale da MQL, funziona anche nel tester.

 
Ivan Negreshniy:

E' solo un po' stridulo, è facile da leggere, ma è impossibile afferrarne il significato - gioco di parole o un modo di dire che mi sfugge... Aggiungo il suggerimento di Maksim sull'articolo:)

Per quanto riguarda il legame degli EA alla console Python, ho già suggerito il mio motore, che permette di inviare ed eseguire blocchi di codice Python in tempo reale da MQL, anche in tester.

E dire, un articolo - se non posso esprimere un semplice pensiero, allora che tipo di articolo è questo...

Il punto è che quando si costruisce un albero si usa il principio greedy, che impedisce le relazioni logiche dei predittori, inizialmente divisi in due grandi gruppi (capite come si costruisce un albero decisionale, vero?), quindi il modello può risultare migliore su meno predittori, sia per questo motivo che per il fatto di controllare più combinazioni di predittori per lo stesso intervallo di tempo, ma questo in misura minore.

Fai una domanda specifica se la mia verbosità non rivela il significato delle parole che hai davanti.

 
Aleksey Vyazmikin:

E tu dici articolo - se non posso esprimere un semplice pensiero, che tipo di articolo è...

Il punto è che nella costruzione dell'albero si usa il principio dell'avidità, che impedisce l'emergere di legami logici di predittori, inizialmente divisi in due grandi gruppi (capite come si costruisce un albero decisionale, vero?), quindi il modello può risultare migliore su meno predittori, sia per questo motivo, sia per il fatto di controllare più combinazioni di predittori nello stesso periodo di tempo, ma questo in misura minore.

Fai una domanda specifica se la mia verbosità non rivela il significato delle parole che hai davanti.

Un'espressione sommaria di pensieri in un forum e la pubblicazione di un articolo sono generi diversi.

In questo thread, quanto è già stato discusso, ma non c'è nessuna utilità e nessun risultato pratico.

E non ha senso discutere di tali questioni, soprattutto di quelle fondamentali come la struttura degli alberi.

È meglio scrivere articoli e/o codice - per confrontare l'efficacia dei modelli MI, le librerie utilizzate, testare e monitorare gli Expert Advisors...

 
Ivan Negreshniy:

Fare una breve espressione di pensiero in un forum e pubblicare un articolo sono generi diversi.

Basta guardare questo ramo, quanto è già stato discusso, ma non c'è nessun effetto e nessun risultato pratico.

E non ha senso discutere di tali questioni, soprattutto di quelle fondamentali come la struttura degli alberi.

È meglio scrivere articoli e/o codice - per confrontare l'efficacia dei modelli MI, le librerie utilizzate, per testare e monitorare gli Expert Advisors...

Ci sono articoli sul MOE, dove tutto è scientificamente provato, ma qui più probabilmente o i principianti possono fare domande, o discutere alcune idee da provare. In generale, l'articolo dovrebbe essere scritto quando si è già sicuri dei risultati delle proprie azioni, io sono così lontano da questo.

 

Ieri ho scritto sui diversi indicatori finanziari quando si usano diversi gruppi di predittori, dicendo che a volte non è razionale mettere tutto in un mucchio. In quel post ho usato un indicatore come il profitto per selezionare la significatività dei gruppi. Oggi, memore della domanda di Maxim, ho deciso di guardare i risultati del modello con un campione di prova (prima avevo guardato solo il campione di prova), ho eseguito le stesse manipolazioni e sono rimasto deluso - la significatività dei gruppi era cambiata al contrario - come mai, ho pensato... Quando ho confrontato i risultati dei due campioni, è diventato chiaro che il criterio del puro profitto non era adatto - ho dovuto cercare altri modi per risolvere il problema.

Allora mi è venuta un'idea: e se non diventassi avido e considerassi come un buon risultato la selezione di quei modelli che danno un profitto più alto in aggregato rispetto al profitto medio di tutti i 512 modelli? Ho deciso di cercare il miglior indicatore che lo facesse. La metodologia è semplice, usiamo un campione di prova per determinare il valore medio dell'indice, poi controlliamo la variante di ogni modello - se è maggiore della media, sarà 1 e se è minore, sarà 0 (l'ho fatto in Excel e i calcoli intermedi possono essere utili per capire), poi facciamo lo stesso con il campione di prova e confrontiamo i risultati di entrambi i campioni, ottenendo così una statistica che mostra se l'indice appartiene a un gruppo (sopra la media o sotto). Dopo di che ho anche guardato quanto profitto fa ogni indicatore sul campione di prova, dividendo il campione di prova a seconda che sia superiore al valore medio o inferiore al valore medio, mantenendo il profitto medio.

Abbiamo ottenuto un risultato interessante



La tabella mostra che la selezione per profitto (FinRez) ha dato la peggiore percentuale di corrispondenza tra i due campioni, e inoltre, quando si filtra "sotto la media" (la colonna con il numero "0") questo gruppo ha incluso più modelli redditizi nel campione di prova che il gruppo che ha mostrato risultati nel test sopra la media. Se ci pensi, ha senso, perché l'addestramento è basato sulla classificazione, non sulla regressione, e se ho un take profit impostato nella strategia, allora lo stop loss è fluttuante, il che distorcerà i risultati anche con lo stesso numero di segnali classificati correttamente. Se si guardano gli altri indicatori, la loro capacità predittiva è molto più alta, cioè significa che la tendenza è in media la stessa per il modello, sia sul campione di test che su quello d'esame. Finora ho deciso di fermarmi all'indicatore Proc_1_V01 - è la percentuale di unità correttamente classificate dell'obiettivo di tutte le unità del campione, questo indicatore mostra un tasso molto alto di conservazione del suo rapporto in, diciamo, spazio bidimensionale (sopra / sotto la media) - 87,3%, che è molto buono a mio parere, più la partizione del campione secondo il suo metodo dà circa lo stesso profitto medio, e anche leggermente sopra il valore medio - 1488. Allora risulta che abbiamo più possibilità di un buon risultato finanziario quando selezioniamo i modelli in base a questo indicatore, o mi sfugge qualcosa?

Finora, ho deciso di rivedere i gruppi prendendo in considerazione non FinRez(profitto) ma Proc_1_V01, la metodologia rimane la stessa e il risultato è abbastanza interessante


La significatività dei gruppi ha conservato la sua consistenza sul campione di prova, così come sul campione di test, con l'eccezione del gruppo 7, in contrasto con la situazione con la definizione del gruppo dall'indicatore - il risultato finanziario, fornito sotto nella tabella.



La conclusione che faccio qui è che la stabilità dei valori assoluti più importanti del profitto, che può essere più probabilmente casuale.

Aggiungerò anche un grafico dove si può vedere come il profitto è distribuito dai campioni (ridotti al 100% rispetto al test e all'esame rispettivamente) - sul lato sinistro sono indicatori filtrati, e sul lato destro sono presi, questo è se si aumenta il valore medio di Proc_1_V01 del coefficiente di 1,25.

E questo è per il confronto - se facciamo la selezione per guadagni - la densità è aumentata, ma abbiamo una coda grassa dal 20% al -15%, che non è buono.

Tutto sommato dobbiamo pensare a un indicatore che definisca al meglio la tendenza.

Ma combinando i due indicatori e aggiungendo il filtraggio per percentuale di profitto a Proc_1_V01 - >20% - perché ci sono troppe perdite al meno, e <80% perché i valori estremi sono spesso accidentali, possiamo ottenere un quadro più soddisfacente.