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

 
SanSanych Fomenko:

Allenamento, riallenamento e sovrallenamento sono cose fondamentalmente diverse.

Tutta questa formazione su ogni nuova barra è masticata e masticata su questo forum e in generale all'interno dell'AT.

Nella lotta contro l'overtraining (overfitting) conosco due metodi.

1. pulizia dell'insieme dei predittori dai predittori non legati alla variabile obiettivo - pulizia dal rumore dell'insieme dei predittori in ingresso. I primi 100 post di questo thread ne hanno discusso in dettaglio.

2. avendo l'insieme dei predittori ripuliti dal rumore, iniziamo ad adattare il modello con il campione di allenamento, poi con il campione di prova e di convalida, che sono campioni casuali da un file. L'errore in tutti e tre i set dovrebbe essere approssimativamente lo stesso.

3. Poi prendete un file separato dal precedente ed eseguite il modello su di esso. Anche in questo caso l'errore dovrebbe essere circa lo stesso dei precedenti.

4. Se questi controlli vengono eseguiti regolarmente, la domanda "un crollo del 20% è un segnale per la riqualificazione" non si porrà affatto, poiché i primi tre passi hanno portato a un crollo come parametro del modello e andare oltre dice che il modello non funziona e tutto deve essere ricominciato.


Beh, questo è un caso generale, sì. E in ogni caso bisogna lavorare di più con ogni particolare TS, e poi la comprensione arriverà quando sarà ben addestrato, quando sarà riqualificato, e quando avrà dei periodi. Per esempio, il rapporto di acquisto/vendita dovrebbe essere approssimativamente lo stesso, e il campione di allenamento dovrebbe contenere tendenza al rialzo, tendenza al ribasso e piatto, altrimenti è un pareggio a senso unico. La cosa principale in questo caso è non "sovrallenarsi" :)

Inoltre, il fattore stagionalità, il fattore crisi e altre diverse regolarità che devono essere prese in considerazione

 
SanSanych Fomenko:

1. pulire il set di predittori da predittori irrilevanti per la variabile obiettivo - pulire il rumore dal set di predittori in ingresso. Nei primi 100 post circa di questo thread questo problema è stato discusso in grande dettaglio

Quale soluzione è emersa alla fine - come identificare i predittori non legati ai comandi di uscita?
 
elibrario:
Qual è stata la soluzione finale - come identificare i predittori che non sono legati ai comandi di uscita?
Come? - Tutto dipende dai dettagli. Mi ci sono voluti 2 giorni per risolvere un semplice problema. Ora la soluzione sembra ovvia)).
 
Yuriy Asaulenko:
Come? - Tutto dipende dai dettagli. Mi ci sono voluti due giorni per risolvere un semplice problema. Ora la soluzione sembra ovvia)).
Suppongo che ci siano anche principi generali e universali? È interessante conoscere anche il tuo esempio specifico.
 
Elibrarius:
Suppongo che ci siano anche principi generali e universali? Beh, è interessante conoscere anche il tuo particolare esempio.

Cercalo sul mio blog.

I principi, sì, sono universali. Ma non ci sono soluzioni generali. Tranne che per alcune classi di compiti.

 

Un riassunto delle cento pagine precedenti :)

Neuronics e quasi tutti gli altri modelli popolari sono molto lontani dall'intelligenza artificiale. Possono semplicemente trovare tali combinazioni di valori predittivi che raggiungono la precisione di apprendimento desiderata, e nelle previsioni future interpolano (o estrapolano) i risultati passati per ottenere una nuova previsione.

Significa che se prendiamo, per esempio, Ma, Rci e Stochastic come predittori e addestriamo la rete neurale usando le inversioni a zig zag come obiettivo di addestramento - diremo alla rete neurale "questi tre predittori possono prevedere le inversioni. E la rete neurale stessa non sarà in grado di capire se questi predittori sono davvero adatti. Ricorderà questi dati con una precisione accettabile e nel trading spereremo che le stesse combinazioni di Ma, Rci e Stocastico saranno salvate prima dell'inversione. Ma non lo faranno, e fallirà.

Un modello basato su predittori inutili fallirà, non importa se è gbm, neurone o regressione. Si possono anche generare serie casuali e usarle come predittori, la neuronica troverà combinazioni ricorrenti tra di esse e le ricorderà.
È compito di un data miner umano selezionare i predittori e lo scopo della formazione, utilizzando altri strumenti. E l'addestramento del modello (il neurone) è un piccolo penultimo passo.

I predittori devono mantenere la correlazione con l'obiettivo sui dati di allenamento, sia nel passato che nel futuro. Ecco perché SanSanych parla di testare il modello su diversi file, solo per assicurarsi che le dipendenze trovate non spariscano con i nuovi dati.
Cioè studiamo e raccogliamo attentamente i predittori e l'obiettivo, addestriamo il modello e lo testiamo. Poi lo testiamo su dati completamente nuovi per il modello. Se la precisione della previsione in entrambi i casi non coincide, i predittori o l'obiettivo non sono adatti. Dovremmo cercarne altri.


SanSanych Fomenko:

La NS può prevedere serie non stazionarie? Se sì, quali tipi di non stazionarietà?

A mio parere, la neuronica è completamente inadatta a lavorare con il prezzo per prevedere serie temporali non stazionarie. Il comportamento dei prezzi cambia costantemente, i modelli trovati smettono di funzionare dopo ore, tutto è caotico. E poi qualcuno prende un neuroncu, gli dà dei prezzi per un paio di mesi e chiede di trovare le dipendenze che si ripetono durante questo tempo. Ma non ci sono dipendenze che si ripetono e ciò che il neurone può trovare e ricordare sarà solo una coincidenza casuale al 100%.

Se abbiamo intenzione di usare la neuronica, allora dovremmo darle solo prezzi elaborati (non ohlc puro), per esempio indicatori.

 

Grazie per il riassunto, non avevo voglia di leggere 100 pagine...)

Il processo di selezione manuale dei predittori, per esempio le combinazioni di 3, richiederebbe molto tempo. In MT5 ci sono 38 indicatori tecnici standard. Combinazioni di 3 - numero enorme. Inoltre, dobbiamo selezionare i periodi, i tipi di prezzi e altri parametri di input. E se aggiungiamo interessanti indicatori non standard, il numero di test aumenterà ancora di più.

Pertanto, dovremmo cercare una stima automatica degli indicatori. Ho trovato 2 metodi comuni negli articoli di Vladimir Perervenko:

1) Rimozione delle variabili altamente correlate - è implementata in R.

2) Selezione delle variabili più importanti - risolta anche in R.

Sto ancora scrivendo direttamente in MT5, forse ci sono soluzioni pronte per queste domande? O un metodo per trasferire le soluzioni da R a MT5, almeno in versione semplificata....?

Se cerchiamo la correlazione degli indicatori, cerchiamo semplicemente la differenza tra ogni coppia di indicatori -> riassumerla per ogni barra -> dividerla per il numero di barre. (o in un altro modo?)

Con i più importanti - non completamente risolti...

Forse ci sono altri metodi per cancellare i predittori?

 
elibrario:

Ma sto ancora scrivendo direttamente su MT5, forse ci sono già soluzioni pronte per questi problemi? O un metodo per trasferire le soluzioni da R a MT5, almeno in una versione semplificata....?

Scrivere tutto in una volta in MQL, ma affidarsi a R non è l'opzione migliore. È più facile sviluppare una strategia in R, poi usare questa libreria https://www.mql5.com/ru/code/17468 per chiamare il codice R dall'Expert Advisor e testarlo nel tester.
Molto probabilmente molto sarà cancellato e cambiato durante la creazione e il test, cambiamenti di pacchetti, modelli, ecc, è più facile cambiare e testare tutto in R stesso.

Infine, quando ti piace e tutto funziona, puoi provare a portare il codice su mql a mano.
Molti pacchetti usati in R sono in realtà scritti in C/C++ e potete trovare il codice sorgente per i pacchetti standard quihttps://cran.r-project.org/web/packages/available_packages_by_name.html,

 
Ildottor Trader:

Un riassunto delle cento pagine precedenti :)

Neuronics e quasi tutti gli altri modelli popolari sono molto lontani dall'intelligenza artificiale. Possono semplicemente trovare tali combinazioni di valori predittivi che raggiungono la precisione di apprendimento desiderata, e nelle previsioni future interpolano (o estrapolano) i risultati passati per ottenere una nuova previsione.

Significa che se prendiamo, per esempio, Ma, Rci e Stochastic come predittori e addestriamo la rete neurale usando le inversioni a zig zag come obiettivo di addestramento - diremo alla rete neurale "questi tre predittori possono prevedere le inversioni. E la rete neurale stessa non saprà se questi predittori sono davvero adatti. Memorizzerà quei dati con una precisione accettabile e nel trading spereremo che le stesse combinazioni di Ma, Rci e Stocastico saranno salvate prima dell'inversione. Ma non lo faranno, e fallirà.

Un modello addestrato su predittori inutili fallirà, che si tratti di gbm, neuronics o regressione. Si possono anche generare serie casuali e usarle come predittori, la neuronica troverà combinazioni ricorrenti tra di esse e le ricorderà.
È compito di un data miner umano selezionare i predittori e lo scopo della formazione, utilizzando altri strumenti. E l'addestramento del modello (il neurone) è un piccolo penultimo passo.

I predittori devono mantenere la correlazione con l'obiettivo sui dati di allenamento, sia nel passato che nel futuro. Ecco perché SanSanych parla di testare il modello su diversi file, solo per assicurarsi che le dipendenze trovate non spariscano con i nuovi dati.
Cioè studiamo e raccogliamo attentamente i predittori e l'obiettivo, addestriamo il modello e lo testiamo. Poi lo testiamo su dati completamente nuovi per il modello. Se la precisione della previsione in entrambi i casi non coincide, i predittori o l'obiettivo non sono adatti. Dovremmo cercarne un altro.


A mio parere la neuronica non è adatta a prevedere serie temporali non stazionarie. Il comportamento dei prezzi cambia continuamente, i modelli trovati smettono di funzionare dopo ore, tutto è caotico. E poi qualcuno prende un neuroncu, gli dà dei prezzi per un paio di mesi e chiede di trovare le dipendenze che si ripetono durante questo tempo. Ma non ci sono dipendenze che si ripetono e ciò che il neurone può trovare e ricordare sarà solo una coincidenza casuale al 100%.

Se usiamo un neurone, allora possiamo dargli solo prezzi elaborati (non ohlc puro), per esempio indicatori.

Il problema non è la neuronica in sé o qualsiasi altra cosa applicabile ai mercati. Il problema è quello che viene immesso nello strumento DM. Ed è pura follia usare un prezzo nudo come input.

Il problema sono i predittori, come li chiama CC. Cioè, il problema è come rappresentare una serie non stazionaria come stazionaria. Chi è più vicino a risolvere questo problema è il migliore.

 
Ildottor Trader:

Non è la soluzione migliore per scrivere tutto in MQL, facendo affidamento su R allo stesso tempo. È più facile sviluppare la strategia in R e poi, usando questa libreria https://www.mql5.com/ru/code/17468, chiamare il codice R dall'Expert Advisor e testarlo nello Strategy Tester.
Molto probabilmente durante la creazione e i test molte cose saranno cancellate e cambiate, i pacchetti saranno sostituiti, i modelli saranno cambiati ecc. È più facile cambiare e testare tutto in R stesso.

Infine, quando ti piace e tutto funziona, puoi provare a portare il codice su mql a mano.
Molti pacchetti usati in R sono in realtà scritti in C/C++ e potete trovare il codice sorgente dei pacchetti standard quihttps://cran.r-project.org/web/packages/available_packages_by_name.html,

È complicato... Ci vorrebbe più tempo che capire l'algoritmo (come per la K-correlazione di cui sopra) e scriverlo. Penso che la funzione di provare tutti gli input, calcolare la correlazione e setacciare quelli altamente correlati richiederà un paio d'ore.

Spero che sia altrettanto facile usare altre soluzioni per setacciare i predittori).

Quindi ci sono altre soluzioni per trovare predittori inutili?