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

 

Ho provato vari metodi di convalida scritti in proprio, compresi quelli descritti in questi articoli. Le mie conclusioni sono le seguenti:

Nel forex non c'è una stretta relazione tra la variabile target e i predittori, il forex non è una formula che può essere trovata e applicata per calcolare nuovi dati. Tutto ciò che un modello può fare è trovare alcune regolarità ed estrapolare i risultati per il trading su nuovi dati.
In altre parole, c'è un certo spazio multidimensionale (la dimensionalità è uguale al numero di predittori), in cui si trovano più punti (variabili target note). Il modello costruisce un iperpiano in questo spazio che separa i punti nello spazio (la classe "comprare" dalla classe "vendere"). I modi per costruire questo iperpiano sono infiniti (in un caso semplice - disegnare quattro punti sul foglio, e tracciare una linea curva tra loro in modo che ci siano due punti a destra della curva, e due a sinistra pure. I modi di disegnare una curva sono infiniti). Quindi non c'è garanzia che il modello costruito rifletta la corretta dipendenza della variabile obiettivo dai predittori. Per controllare l'adeguatezza del modello, si usa la validazione - alcuni punti non sono stati usati nell'addestramento ed è facile scoprire se il modello ha fallito, se mostrerà il risultato corretto su questi punti di prova.

Se il modello non ha superato correttamente la validazione, potrebbe essere dovuto a molte ragioni, per esempio
- il modello ha trovato alcune dipendenze inesistenti che esistono solo negli esempi di allenamento
- c'era qualche dipendenza nei dati di allenamento, che non esisteva nei dati per il test. Ad esempio, nel caso in cui tutti i dati per il test siano presi più tardi nel tempo e il comportamento del simbolo forex sia cambiato
- il modello stesso è stato inizializzato con un seme non riuscito. Accade spesso che un modello addestrato sugli stessi dati dia risultati diversi sulla validazione dopo molteplici tentativi di ri-addestrarlo

Non si sa cosa abbia causato un cattivo risultato in un caso particolare. Tutto quello che possiamo fare è stimare quanto è buono un modello in media - costruire un modello decine di volte, stimare sulla validazione. I dati di formazione/validazione devono essere suddivisi ogni volta.
Quello che penso sia un modo valido è dividere i dati in modo casuale in un rapporto 50%/50% (non per tempo, ma in modo che tutto sia uniformemente mescolato, per esempio le righe 1,2,5,7 per l'allenamento, 3,4,6,8 per la validazione), addestrare il modello sulla prima parte, poi fare la validazione sulla seconda, per la valutazione del modello uso la precisione. Ripetete questo 50 volte (ri-partizione dei dati in 2 parti casuali, training, validazione). Quindi calcolare l'accuratezza media sui dati di allenamento e l'accuratezza media sui dati di convalida. Supponiamo che l'accuratezza media sul campione di allenamento sia del 90%, sul campione di convalida dell'80%. La precisione nel fronttest sarà ancora più bassa, io uso questa regola empirica: calcolare la differenza (90%-80%=10%), e sottrarla dal risultato della validazione (80%-10% = 70%). Risulta che tale modello su fronttest avrà una precisione media di circa il 70%. Inoltre, aggiusto geneticamente i parametri del modello e i predittori per aumentare questa stima dal 70% (è molto più difficile di quanto sembri, è difficile arrivare anche oltre il 50%).

Ma non mi piace il fatto che questo risultato sia solo una media, senza garanzie. La precisione reale nel trading sarà dal 60% all'80%, o anche dal 50% al 90%, a seconda di quanto sei sfortunato. Per quanto ci provi, è impossibile pescare il modello migliore per qualsiasi indicazione. Probabilmente l'unica soluzione è costruire decine di modelli con i migliori parametri e predittori trovati, e portare il risultato dove la maggior parte delle persone guarda (congresso dei modelli).

Questo è strettamente legato a ciò che SanSanych ha detto all'inizio del thread. Puoi anche seguire il suo consiglio di rimuovere l'ultima parte dei dati noti per l'ultimo campione di controllo. Non usate questi dati per l'addestramento e le convalide, ma conservateli separatamente fino alla fine dell'addestramento del modello. Poi testate il modello finito, o il congresso, su questi dati. Il lato positivo è che questo mostrerà come il modello si comporta sui nuovi dati temporali. Il meno è che ci saranno meno dati per l'addestramento e la convalida, e il modello sarà un po' obsoleto all'inizio del trading. C'è una piccola sfumatura qui, se non ti piace il risultato su questi dati di riferimento, e hai iniziato a selezionare un modello che mostrerà un buon risultato in questa zona - poi hai iniziato a usare questi dati per la convalida, di conseguenza il modello è già selezionato con loro in mente, e quindi c'è un po' di guardare nel futuro, il controllo e l'intera operazione diventa senza senso, e in questo caso era più facile non fare affatto un campione di controllo.

 
Dr.Trader:

Ho provato vari metodi di convalida scritti in proprio, compresi quelli descritti in questi articoli. Le mie conclusioni sono le seguenti:

Nel forex non c'è una stretta relazione tra la variabile target e i predittori, il forex non è una formula che può essere trovata e applicata per calcolare nuovi dati. Tutto ciò che un modello può fare è trovare un qualche tipo di modello ed estrapolare i risultati per commerciare su nuovi dati.
In altre parole, c'è un certo spazio multidimensionale (la dimensionalità è uguale al numero di predittori), in cui si trovano più punti (variabili target note). Il modello costruisce un iperpiano in questo spazio che separa i punti nello spazio (la classe "comprare" dalla classe "vendere"). I modi per costruire questo iperpiano sono infiniti (in un caso semplice - disegnare quattro punti sul foglio, e tracciare una linea curva tra loro, in modo che ci siano due punti a destra della curva, e due a sinistra pure. I modi di disegnare una curva sono infiniti). Quindi non c'è garanzia che il modello costruito rifletta la corretta dipendenza della variabile obiettivo dai predittori. Per controllare l'adeguatezza del modello, si usa la validazione - alcuni punti non sono stati usati nell'addestramento ed è facile scoprire se il modello ha fallito, se mostrerà il risultato corretto su questi punti di prova.

Se il modello fallisce la convalida, ci possono essere molte ragioni.
- il modello ha trovato alcune dipendenze che non esistevano ed erano presenti solo negli esempi di allenamento
- c'è una dipendenza nei dati di allenamento, che non è presente nei dati di test. Per esempio, in un caso in cui tutti i dati per un test sono presi più tardi nel tempo e il comportamento del simbolo forex è cambiato
- il modello stesso è stato inizializzato con un seme non riuscito. Accade spesso che un modello addestrato sugli stessi dati dia risultati diversi sulla validazione dopo molteplici tentativi di ri-addestrarlo

Non si sa cosa abbia causato un cattivo risultato in un caso particolare. Tutto quello che possiamo fare è stimare quanto è buono un modello in media - costruire un modello decine di volte, stimare sulla validazione. I dati di formazione/validazione devono essere suddivisi ogni volta.
Quello che penso sia un modo valido è dividere i dati in modo casuale in un rapporto 50%/50% (non per tempo, ma in modo che tutto sia uniformemente mescolato, per esempio le righe 1,2,5,7 per l'allenamento, 3,4,6,8 per la validazione), addestrare il modello sulla prima parte, poi fare la validazione sulla seconda, per la valutazione del modello uso la precisione. Ripetete questo 50 volte (ri-partizione dei dati in 2 parti casuali, training, validazione). Quindi calcolare l'accuratezza media sui dati di allenamento e l'accuratezza media sui dati di convalida. Supponiamo che l'accuratezza media sul campione di allenamento sia del 90%, sul campione di convalida dell'80%. La precisione nel fronttest sarà ancora più bassa, io uso questa regola empirica: calcolare la differenza (90%-80%=10%), e sottrarla dal risultato della validazione (80%-10% = 70%). Risulta che tale modello su fronttest avrà una precisione media di circa il 70%. Inoltre, aggiusto geneticamente i parametri del modello e i predittori per aumentare questa stima dal 70% (è molto più difficile di quanto sembri, è difficile ottenere anche il 50%).

Ma non mi piace il fatto che questo risultato sia solo una media, senza garanzie. La precisione reale nel trading sarà dal 60% all'80%, o anche dal 50% al 90%, a seconda di quanto sei sfortunato. Per quanto ci provi, è impossibile pescare il modello migliore per qualsiasi indicazione. Probabilmente l'unica soluzione è costruire decine di modelli con i migliori parametri e predittori trovati, e portare il risultato dove la maggior parte delle persone guarda (congresso dei modelli).

Questo è strettamente legato a ciò che SanSanych ha detto all'inizio del thread. Puoi anche seguire il suo consiglio di rimuovere l'ultima parte dei dati noti per l'ultimo campione di controllo. Non usate questi dati per l'addestramento e le convalide, ma conservateli separatamente fino alla fine dell'addestramento del modello. Poi testate il modello finito, o il congresso, su questi dati. Il lato positivo è che questo mostrerà come il modello si comporta sui nuovi dati temporali. Il meno è che ci saranno meno dati per l'addestramento e la convalida, e il modello sarà un po' obsoleto all'inizio del trading. C'è una piccola sfumatura qui, se non ti piacciono i risultati sui dati di benchmark e inizi a scegliere un modello che darà buoni risultati in questo settore - inizi a usare questi dati per la validazione, rispettivamente un modello viene scelto tenendone conto e quindi c'è un leggero guardare al futuro e tutta questa operazione diventa insensata, e in questo caso era più facile non fare affatto la selezione del benchmark.

Ho capito bene! ©

Ma, una sfumatura cruciale. Per la convalida incrociata e il cv annidato di livello superiore è necessario prendere osservazioni separate nel tempo. Bene, o almeno per lo strato superiore prendere campioni sparsi da date che non coincidono con l'allenamento e il CV inferiore.

I risultati dovrebbero essere peggiori, ma più veri.

Se otteniamo una correlazione tra i risultati su CV e CV annidato (correlazione). Poi il modello si adatta ai dati.
 
Vizard_:
Non ancora)))
7 ha cercato. I tagli non sono meglio della versione di mezzo anno fa, o quando ho guardato non è ricordare esattamente. Nella finestra e nelle statistiche fylo scrive diversamente. Selezionare l'importanza degli input
discutibile, confrontato a testa alta con rf e un paio di altri, e può dare alta priorità a molto poco importante. Se si prende il taglio migliore (dalla finestra) non è ancora buono.
Su questi dati ottengo almeno il 92%. Il pezzo (così com'è) è ancora poco utile per scopi pratici. Complimenti per lo sforzo nello sviluppo e il volo delle idee.

Tutto imho, naturalmente. Ora per ora)))


Quando abbiamo a che fare con qualcuno del livello di Reshetov, possiamo tranquillamente esigere:

1. una rassegna di analoghi

2. Un'indicazione delle carenze che si suppone vengano superate in questi analoghi

3. Indicazione del meccanismo per eliminare queste carenze (si possono nascondere le specifiche in economia di mercato)

4. Confronto degli analoghi con il tuo sviluppo. Questo confronto dovrebbe dimostrare che tutti i suddetti inconvenienti dei prototipi esistenti sono stati eliminati. E si ottiene uno strumento che NON è peggiore degli analoghi.

Se una persona del livello di Reshetov non lo fa, bene allora: Reshetov è da lodare per i suoi sforzi nello sviluppo e nella fuga del pensiero.

 
SanSanych Fomenko:

allora si può tranquillamente pretendere:

))))))
 
Vizard_:
Non ancora)))
7 guardato. Risulta non meglio della versione di mezzo anno fa, o quando ho guardato non è ricordare esattamente. Nella finestra e nelle statistiche fylo scrive diversamente. Selezionare l'importanza degli input
discutibile, confrontato a testa alta con rf e un altro paio, e può dare alta priorità a molto poco importante. Se si prende il taglio migliore (dalla finestra) non è ancora buono.
Su questi dati ottengo almeno il 92%. Il pezzo (così com'è) è ancora poco utile per scopi pratici. Complimenti per lo sforzo nello sviluppo e nel volo di fantasia.

Tutto imho, naturalmente. Ciao ora)))


Il risultato nella finestra è un comitato di due modelli. Se si guarda il file, che salva il predictor due modelli Nella finestra è il risultato della commissione di questi due modelli. come è so....
 
Vizard_:
Capisco. Notepad è compresso, e non l'ho attorcigliato)))Ma l'ho preso dalla finestra per il confronto.
Ho cancellato immediatamente per mancanza di uso, anche se qualcuno può essere utile...
In generale, penso che questo lavoro non dovrebbe piacervi. In primo luogo, risponde a una domanda molto importante, cioè quale percentuale di informazione generalizzante è contenuta nei dati di input rispetto all'output. E in secondo luogo, se Yuri ascolta ciò che ho suggerito, si otterrà una bomba che chiuderà un sacco di domande. Purtroppo non sono riuscito a insegnare il modello al 100% sui miei dati (senza manipolazioni con i dati che aumentano la capacità di generalizzazione, come è risultato fantasioso) per vedere come il modello funzionerà in futuro. Tuttavia, una volta che avete una generalizzazione del 100% per comitato, dovete assicurarvi che ogni modello abbia lo stesso 100%, cioè che i dati di input descrivano completamente l'output. Poi vedremo.... Nel frattempo, le conclusioni sull'inoperatività dell'ottimizzatore sono premature. Un'altra cosa è che ognuno di noi sta cercando di costruire un modello all'uscita IDEALE. Il che a sua volta è estremamente difficile, se non impossibile. Bene, e se l'uscita non è IDEALE, ma con un po' di errori..... Questo è ciò che è interessante..... Diciamo di segnare con uno non quei segnali che hanno un profitto di 100 pips, ma anche quelli che hanno un profitto di -30 pips e superiori.... Conoscendo questo presupposto, sarà sufficiente prendere un segnale migliore di 30 pips e il problema sarà risolto se riusciamo a costruire un modello con un livello di generalizzazione del 100%.
 
In generale, per costruire modelli di classificazione, l'ordine dei record non è molto importante, è importante che il modello lo apprenda al 100% ed è importante che la reazione del mercato nel prossimo futuro agli stessi eventi sia la stessa. Così per dire l'assenza di dati contraddittori. Per quanto riguarda i modelli prognostici, l'ordine dei record è importante per loro. Questa è una delle differenze tra la classificazione e la predizione.....
 

Mi chiedo se questo ci aiuterà.... Quindi capisco che la potenza di elaborazione di una cosa del genere è un ordine di grandezza superiore, se non parecchi....

https://hi-tech.mail.ru/news/compact-quantum-computer/?frommail=1

 
SanSanych Fomenko:
Mihail Marchukajtes:
E tutti quelli che arrivano. Nell'archivio z1 ci sono due file train e test. Per Target costruire il modello sul treno, applicare al test, pubblicare i risultati in % (previsto con successo
di casi) per entrambi i campioni (treno = xx%, test = xx%). Non è necessario annunciare metodi e modelli, ma solo numeri. Qualsiasi manipolazione dei dati è permessa
e metodi di estrazione.
File:
z1.zip  43 kb
 
Vizard_:
E tutti quelli che arrivano. L'archivio z1 contiene due file train e test. Per Target, costruisci il modello sul treno, applicalo al test, pubblica i risultati in % (predetto con successo
di casi) per entrambi i campioni (treno = xx%, test = xx%). Non è necessario annunciare metodi e modelli, ma solo numeri. Qualsiasi manipolazione dei dati è permessa
e metodi di estrazione.

Grazie! Farò un tentativo.

Siamo d'accordo di non guardare al test finché il modello addestrato non sia stato valutato. L'ho già fatto prima.

Cioè, ci alleniamo fino a quando non siamo blu in faccia il miglior modello sul treno. Forse due o tre modelli. Poi il loro test una tantum.