L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 88
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Yur, fare una versione normale del programma (o aggiornata) per la gente)))
1.Lasciate che legga i file standard di questo tipo - intestazione (con virgolette e senza), dati, delimitatori lasciate che mangi zpt, point.zpt, tabulazione. Esempio -
"Date";"V1";"A77";"V23A";"Целевая"
01.01.2000;4.999995E-03;1.499891E-03;-2.000213E-03;-5.000234E-03;1
2. lasciare che solo 10 ingressi siano utilizzati per il modello, ma rendere possibile caricarne molti, quindi
in una scheda separata, o impostare tappi (si selezionano gli ingressi), o altro.
3. senza normalizzazione (o disattivata), perché se i dati sono inizialmente centrati su 0, dopo la conversione
x-x.min/....(o qualsiasi cosa tu abbia) - vola via))
4.Butta fuori la casualità (o commutabile), lascia solo dividere i dati in due parti, conta in ordine e produce la % di previsioni di successo per 1 (per 0 non)
5.Fatto l'importanza degli input - bene!
6.Lasciate che oltre alla formula che è uscita, esca l'intero!, cioè ora
doppio x2 = 2,0 * (v5 + 1,0) / 2,0 - 1,0;
doppia decisione = -0.2632437547312642 -0.2634178652535958 * x2
+ 0.05267978803936412
dobbiamo -
Nome obiettivo = -0.2632437547312642 -0.2634178652535958 * inserimento costruzione x2= (2.0 * (v5 + 1.0) / 2.0 - 1.0)
+ 0.05267978803936412
otteniamo -
Nome obiettivo = -0.2632437547312642 -0.2634178652535958 * (2.0 * (v5 + 1.0) / 2.0 - 1.0)
+ 0.05267978803936412
Otterrete un dispositivo in qualche modo utilizzabile per test rapidi. Poi si può ancora inserire ecc, semplice (non avido)
algoritmi, con una scelta... Altrimenti lo strumento è inutile. Mentre il file viene modificato, questo e quello... È più facile usare qualcos'altro...
Dov'è la versione 7?
Così così - solo non abbastanza cervello e tempo.
Bisogna iniziare con la variabile obiettivo, e poi bisogna abbinarla ai predittori, e poi ricontrollarli con la matematica, per così dire. Comunque, il processo è noioso e non so come formalizzarlo.
4.Butta fuori la casualità (o disabilitata), lascia solo dividere i dati in due parti, contare in ordine e produrre la % di previsioni di successo per 1 (non c'è bisogno di 0)
Se si cerca di usare jPrediction per il forex, questa è probabilmente la cosa principale da aggiungere. Ci sono molti modelli che possono dividere i dati in modo casuale in due parti, poi allenarsi sulla prima e mostrare buoni risultati anche sulla seconda parte. Ma la maggior parte di questi modelli sarà inefficace sui nuovi dati. Non ci sono dipendenze costanti in Forex, buoni risultati su un campione di prova casuale non garantiscono buoni risultati su nuovi dati. L'unico modo per assicurarsi che un modello sia adatto al forex è il test di roll forward:
Il modello dovrebbe mostrare una buona capacità predittiva sui dati segnati in rosso. Ora in jPrediction tale test deve essere fatto manualmente reinserendo i dati per ogni caso di test, non è buono per un lavoro serio.
E sono d'accordo che è meglio mostrare un punteggio solo per i dati di test che un totale per training+test.
Tutti i voti che jPrediction produce ora sono inadeguati per il forex, e solo fuorvianti.
Ecco a proposito come viene fatto il roll forward nel pacchetto caret per R:
http://topepo.github.io/caret/splitting.html(sezione Divisione dei dati per le serie temporali)
Il modello sarà addestrato sui primi 1000 campioni, poi testato sui campioni 1001-1300. Poi passa a 300, allena 301-1300, testa 1301-1600, ecc. fino a quando non si esauriscono gli esempi di allenamento
Yur, fai una versione normale del prog (o aggiornata) per la gente))))
1.Lasciate che legga i file standard di questo tipo - intestazione (con o senza virgolette), dati, delimitatori lasciate che affretti zpt, point.zpt, tabulazione. Esempio -
2.Può usare solo 10 input per il modello, ma rendere possibile caricarne molti, quindi
In una scheda separata, si possono mettere dei marcatori (si selezionano gli ingressi) o qualcos'altro.
3. senza normalizzazione (o disattivata), perché se i dati sono inizialmente centrati su 0, dopo la conversione
x-x.min/....(o qualsiasi cosa tu abbia) - vola via))
4.Butta fuori la casualità (o commutabile), lascia solo dividere i dati in due parti, conta in ordine e produce la % di previsioni di successo per 1 (per 0 non)
5.Fatto l'importanza degli input - bene!
6.Lasciate che oltre alla formula che viene emessa, venga emessa la formula completa!
7. Dov'è la versione 7?
Se a qualcuno non piace molto qualcosa in jPrediction, il progetto è aperto con Open Source sotto licenza GNU GPL e fare dei fork da esso, cambiando e modificando qualcosa lì, non solo non è proibito, ma in qualche misura anche benvenuto.
Se si cerca di usare jPrediction per il forex, questa è probabilmente la cosa principale da aggiungere. Ci sono molti modelli che possono dividere i dati in modo casuale in due parti, poi allenarsi sulla prima e mostrare buoni risultati anche sulla seconda parte. Ma la maggior parte di questi modelli sarà inefficace sui nuovi dati. Non ci sono dipendenze costanti in Forex, buoni risultati su un campione di prova casuale non garantiscono buoni risultati su nuovi dati. L'unico modo per assicurarsi che un modello sia adatto al forex è il test di roll forward:
Il modello dovrebbe mostrare una buona capacità predittiva sui dati segnati in rosso. Ora in jPrediction tale test deve essere fatto manualmente reinserendo i dati per ogni caso di test, non è buono per un lavoro serio.
E sono d'accordo che è meglio mostrare un punteggio solo per i dati di test che un totale per training+test.
Tutti i voti che jPrediction dà ora sono inadeguati per il forex, e solo fuorvianti.
Ecco a proposito come viene fatto il roll forward nel pacchetto caret per R:
http://topepo.github.io/caret/splitting.html(sezione Divisione dei dati per le serie temporali)
Il modello sarà addestrato sui primi 1000 campioni, poi testato sui campioni 1001-1300. Poi passa a 300, allena a 301-1300, testa a 1301-1600, ecc. fino all'esaurimento degli esempi di allenamento.
Tutte le stime che jPrediction sta dando ora sono inadeguate per il forex, e solo fuorvianti.
Si tratta di accuse infondate, vale a dire ciò che viene comunemente chiamato "stronzata". Per dimostrare l'efficacia di Walk Forward, si prega di fornire risultati comparativi da modelli derivati in jPrediction e modelli derivati dopo Walk Forward, in modo tale che possano essere sottoposti a controlli incrociati per "lousiness". Se tali risultati confermano le tue parole, allora avrebbe senso sostituire l'algoritmo di test attualmente implementato in jPrediction con Walk Forward.
Mi è capitato più volte che idee apparentemente "ovvie", dopo l'implementazione e la prova con l'esperienza, si rivelino "vuote". Solo una piccolissima parte delle idee è efficace e spesso solo dopo un ulteriore editing con un "file". Questo perché mancano i dettagli delle idee. E il diavolo è proprio in questi dettagli.
Linus Torvald (creatore del kernel Linux) non si stanca di ripetere: "Prima o poi la teoria incontra la pratica. E la pratica è sempre il criterio della verità. Sempre!".
Un ulteriore problema di Walk Forward è che riceviamo molti modelli in ogni fase. Quale di questi modelli dovrebbe essere mantenuto come modello di lavoro e secondo quali criteri dovrebbe essere selezionato?
Si tratta di affermazioni non comprovate non comprovate, cioè ciò che è comunemente noto come stronzate. Per dimostrare l'efficacia del Walk Forward, si prega di fornire studi comparativi dei modelli jPrediction e dei modelli post-Walk Forward, in modo che possano essere sottoposti a un controllo incrociato per "lousiness". Se tali risultati confermano le tue parole, allora avrebbe senso sostituire l'algoritmo di test attualmente implementato in jPrediction con Walk Forward.
Ho incontrato più volte che idee apparentemente "ovvie", una volta implementate e testate dall'esperienza, si rivelano "vuote". Solo una piccolissima parte delle idee è efficace, e spesso solo dopo un'ulteriore revisione "di file". Questo perché mancano i dettagli delle idee. E il diavolo è proprio in questi dettagli.
Linus Torvald (creatore del kernel Linux) non si stanca di ripetere: "La teoria incontra la pratica prima o poi. E la pratica si rivela sempre il criterio della verità. Sempre!".
Un ulteriore problema di Walk Forward è che riceviamo molti modelli in ogni fase. Quale di questi modelli dovrebbe essere mantenuto come modello di lavoro e secondo quale criterio dovrebbe essere selezionato?
Non c'è bisogno di litigare. Stiamo lavorando su un tema di ricerca molto complesso. Ci sono molte supposizioni. E questi presupposti portano all'apprendimento eccessivo e all'out-sampling.
Due semplici regole: inganna il mercato, non ingannare te stesso.
Camminare in avanti è ovviamente un buon metodo. Ma i parametri principali sono la profondità di apprendimento e la lunghezza del test. Allo stesso tempo (!!!) se questi parametri sono regolati in modo tale che il risultato sulla posizione in avanti diventi migliore, si sovrallenerà Walk Forward! Cioè, su un grande pezzo facciamo ripetutamente l'ottimizzazione Walk Forward. Su un altro chunk non sovrapposto proviamo i migliori parametri di Walk Forward su "training" ed eseguiamo un altro full wolf forward, ma lo facciamo una volta sola. Se il risultato è buono, allora il modello sta raccogliendo le dipendenze. Se il risultato è cattivo, allora abbiamo semplicemente riqualificato Walk Forward su un modello non così buono.
C'è lo stesso problema con i test una tantum su un campione in ritardo. Ci sto lavorando ora: liberare i miei risultati dal sovrallenamento. I risultati della convalida incrociata dovrebbero essere correlati al campione differito per il test finale. Detto questo, selezionando il miglior modello tramite crossvalidazione si otterranno approssimativamente i migliori risultati fuori campione. Altrimenti - se non c'è correlazione o correlazione negativa - abbiamo un modello inadeguato per il forex che deve essere cambiato.
Si tratta di accuse infondate, cioè di quelle che nel linguaggio comune si chiamano stronzate. Per dimostrare l'efficacia di Walk Forward, si prega di presentare i risultati degli studi comparativi dei modelli jPrediction e dei modelli post-Walk Forward in una forma che possa essere sottoposta a un controllo incrociato per "lousiness". Se tali risultati confermano le tue parole, allora avrebbe senso sostituire l'algoritmo di test attualmente implementato in jPrediction con Walk Forward.
Ho incontrato più volte che idee apparentemente "ovvie", una volta implementate e testate dall'esperienza, si rivelano "vuote". Solo una piccolissima parte delle idee è efficace, e spesso solo dopo un'ulteriore revisione "di file". Questo perché mancano i dettagli delle idee. E il diavolo è proprio in questi dettagli.
Linus Torvald (creatore del kernel Linux) non si stanca di ripetere: "La teoria incontra la pratica prima o poi. E la pratica si rivela sempre il criterio della verità. Sempre!".
Un ulteriore problema di Walk Forward è che riceviamo molti modelli in ogni fase. Quale di questi modelli dovrebbe essere mantenuto come modello di lavoro e secondo quale criterio dovrebbe essere selezionato?
Non vale la pena di litigare.
Sono d'accordo. Ma questo richiede di ridurre al minimo il numero di accuse infondate nel thread. L'opzione migliore è dare i risultati di studi comparativi con la possibilità di un doppio controllo.
Stiamo lavorando su una ricerca molto complessa.
Alcuni lavorano e altri si girano i pollici senza prove (non puntiamo il dito).
Non vale la pena combattere.
Sono d'accordo.
Ci sono molte supposizioni qui. E questi presupposti portano a una sovra-educazione e a un crollo fuori dal campione.
Non si possono mettere ipotesi sul pane e metterle in tasca. Quindi tutto dovrebbe essere controllato empiricamente, piuttosto che fare ipotesi non provate, per non calpestare il rastrello del sovrallenamento e del precipitare fuori campione.
Camminare in avanti è ovviamente un buon metodo. Ma i parametri principali sono la profondità di apprendimento e la lunghezza del test. Allo stesso tempo (!!!) se affrontiamo questi parametri in modo tale che il risultato sulla traccia in avanti diventi migliore, sovralleneremo Walk Forward! Cioè, su un grande pezzo facciamo ripetutamente l'ottimizzazione Walk Forward. Su un altro chunk non sovrapposto, proviamo i migliori parametri Walk Forward su "training" ed eseguiamolo ancora una volta. Se il risultato è buono, allora il modello raccoglie le dipendenze. Se il risultato è cattivo, allora abbiamo semplicemente riaddestrato Walk Forward su un modello non così buono.
C'è lo stesso problema con i test una tantum su un campione in ritardo. Ci sto lavorando ora: liberare i miei risultati dal sovrallenamento. I risultati della convalida incrociata dovrebbero essere correlati al campione differito per il test finale. Detto questo, selezionando il miglior modello tramite crossvalidazione si otterranno approssimativamente i migliori risultati fuori campione. Altrimenti - se non c'è correlazione o è negativa - abbiamo un modello inadeguato per il forex che deve essere cambiato.
La linea di fondo è che tutti i metodi hanno vantaggi e svantaggi. Le supposizioni esagerano i meriti e non tengono conto degli svantaggi.
Un punto ancora più grande è che nessun metodo permette di selezionare i modelli secondo il criterio della migliore qualità, e tutti i metodi selezionano secondo il principio del rifiuto - filtrando solo quelli consapevolmente inadatti. Nessun metodo in ML può calcolare l'idoneità potenziale di ciò che rimane dopo il rifiuto.
Soprattutto in ambienti non stazionari. È possibile selezionare apparentemente i modelli più adatti in termini di generalizzabilità, ma domani qualche capo della Banca Centrale in una riunione scorreggerà qualcosa e tutti i modelli andranno in malora.
Il punto è che tutti i metodi hanno vantaggi e svantaggi. Le supposizioni esagerano i meriti e non tengono conto dei demeriti.
Un punto ancora più importante è che nessun metodo seleziona i modelli secondo il miglior criterio di qualità, e tutti i metodi selezionano secondo il principio del rifiuto - filtrando solo ciò che è noto per essere inadatto. Nessun metodo in ML può calcolare il valore potenziale di ciò che rimane dopo il rifiuto.
Tanto più in ambienti non stazionari. Sembrerebbe possibile selezionare i modelli più adatti in termini di generalizzabilità, ma domani qualche capo della Banca Centrale farà una pernacchia e tutti i modelli andranno in malora.