L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 30
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
2. Vedere il video:
Mi dispiace, ma le solite sciocchezze di un dottorando non istruito...
Come si dice, quello che compro, lo vendo. Mi è stata fatta una domanda, ho dato un video con una risposta dettagliata. Il docente non sta facendo il furbo, sta sproloquiando sulla teoria dell'apprendimento statistico.
vedere. Vapnik V.N. Teoria statistica dell'apprendimento. NY: John Wiley, 1998.
SanSanych Fomenko:
1. Un notevole deterioramento della generalizzabilità, se rimuoviamo almeno un predittore informativo dal campione.
Credetemi, purtroppo questo non prova nulla. Inoltre, se l'insieme dei predittori è cattivo (molto rumore) allora questo effetto sarà più forte quanto più rumore c'è. Questo si spiega molto semplicemente: più c'è rumore, più è facile per l'algoritmo trovare un valore "conveniente".
Come si dice, al gusto e al colore ...
SanSan Fomenko:
Per quanto riguarda il suo file.
1. Non sono riuscito a costruire 6 modelli di classificazione sui tuoi dati: errore superiore al 50%. Se vuoi posso postare i risultati qui
SanSanych Fomenko:
2. La ragione di questo risultato è che avete un insieme molto povero di predittori - rumore, cioè predittori non rilevanti per la variabile obiettivo. I predittori 6, 7 e 8 hanno un certo potere predittivo, ma molto poco. Non lavoro con questi predittori. Gli altri sono solo rumore.Bene, bene. Senza rumore qualsiasi sciocco è in grado di classificare correttamente. Il rumore c'è e in quantità decente. Ci sono anche informazioni utili. Ecco, per esempio, i risultati della vecchia libVMR 3.01:
/**
* La qualità della modellazione in fuori campione:
*
* TruePositives: 245
* TrueNegatives: 113
* FalsePositive: 191
* FalsiNegativi: 73
* Modelli totali su campioni con statistiche: 622
* Errori totali nel fuori campione: 264
* Sensibilità della capacità di generalizzazione: 56.19266055045872%
* Specificità della capacità di generalizzazione: 60,752688172043015%
* Capacità di generalizzazione: 16.94534872250173%
* Indicatore di Reshetov: 0,1075044213677977
*/
Cioè, sono aumentato di quasi il 17% nella capacità di generalizzazione.
La performance del nuovo ragazzo è notevolmente migliore.
Usa la convalida incrociata per raccogliere il numero di componenti. Il miglior valore su crossvalidation poi controlla sul set di convalida.
È venuto fuori di nuovo non buono. Avrei preso 20 componenti, poiché min(trainwinrate. validate1winrate, validate2winrate) è il più grande rispetto alle altre quantità di componenti. E otterrei ~55% di risultato nel fronttest, anche peggio di prima. È uscito uno strano modello - la percentuale di vincita è un po' più del 50% (non adatto al forex), la validazione incrociata non funziona, l'importanza dei predittori non può essere tolta. Posso solo stamparlo e appenderlo al muro :)
* TruePositives: 245
* TrueNegatives: 113
* FalsePositive: 191
* FalsiNegativi: 73
È venuto fuori di nuovo non buono. Avrei preso 20 componenti, poiché min(trainwinrate. validate1winrate, validate2winrate) è il più grande rispetto alle altre quantità di componenti. E otterrei ~55% di risultato nel fronttest, anche peggio di prima. È uscito uno strano modello - la percentuale di vincita è poco più del 50% (non adatta al forex), la validazione incrociata non funziona, l'importanza dei predittori non può essere tolta. Posso solo stamparlo e appenderlo al muro :)
Questi sono i risultati del mio grande esperimento. A causa di un bug nel vento, il codice si è interrotto e non ho finito di imparare tutti i personaggi. Ma questo mi basta per ora. Buoni risultati su eurusd.
Ho mostrato solo i valori massimi che ho trovato senza specificare alcun parametro. C'è già un buon risultato. Le sottigliezze dell'impostazione GBM aiutano.
Prevedendo l'eurusd 512 minuti avanti, puoi guadagnare 1,5 pips per trade, ho ragione? E si tiene conto anche dello spread? È anche importante conoscere il drawdown massimo per quel tempo, non ha senso fare trading anche per 10 pips, se il drawdown per quel tempo era tutto di duecento. Per stimare il trade, sarebbe bene usare il Rapporto di Sharpe ma non l'ho visto in R, per iniziare possiamo usare il seguente fattore: (profitto finale)/(massimo drawdown del capitale su tutto il tempo).
Per esempio, supponiamo di avere un segnale 1. Il trader ha guadagnato il 1000% durante l'anno ma il suo drawdown massimo è stato del 50%. Allo stesso tempo, il segnale 2 ha solo il 600% di profitto nel corso dell'anno, ma il drawdown massimo è stato del 25%. Può sembrare che il trader 1 sia migliore (in termini di profitto), ma in realtà non lo è, rischia solo il doppio. Il primo commerciante ha 1000/50 = 20, il secondo ha 600/25 = 24. Quindi è meglio iscriversi al secondo segnale, e raddoppiare il rischio se si vuole rischiare il 50% del deposito.
Inoltre, nel tuo esperimento è importante valutare i rischi. Il trading in un piccolo intervallo può essere molto più redditizio, perché il modello può reagire in tempo ai picchi di prezzo e guadagnare su di essi, piuttosto che aspettare attraverso un enorme drawdown con il rischio di prendere uno stop loss.
Colleghi, se avete tempo, potete farmi delle domande sotto l'articolo?https://habrahabr.ru/company/aligntechnology/blog/303750/
Perché Habr è silenzioso!
Molte lettere.
Prevedendo l'eurusd 512 minuti avanti, puoi guadagnare 1,5 pips per trade, ho ragione? E si tiene conto anche dello spread? È anche importante conoscere il drawdown massimo per quel tempo, non ha senso fare trading anche per 10 pips, se il drawdown per quel tempo era tutto di duecento. Per stimare il trade, sarebbe bene usare il Rapporto di Sharpe ma non l'ho visto in R, per iniziare possiamo usare il seguente fattore: (profitto finale)/(massimo drawdown del capitale su tutto il tempo).
Per esempio, supponiamo di avere un segnale 1. Il trader ha guadagnato il 1000% durante l'anno ma il suo drawdown massimo è stato del 50%. Allo stesso tempo, il segnale 2 ha solo il 600% di profitto nel corso dell'anno, ma il drawdown massimo è stato del 25%. Può sembrare che il trader 1 sia migliore (in termini di profitto), ma in realtà non lo è, rischia solo il doppio. Il primo commerciante ha 1000/50 = 20, il secondo ha 600/25 = 24. Quindi è meglio iscriversi al secondo segnale, e raddoppiare il rischio se si vuole rischiare il 50% del deposito.
Anche nel tuo esperimento è importante valutare i rischi. Il trading in un piccolo intervallo può essere molto più redditizio, perché il modello può reagire in tempo ai picchi di prezzo e guadagnare su di essi, piuttosto che aspettare attraverso un enorme drawdown con il rischio di prendere uno stop loss.
Quindi la sua percentuale di vincita su test.csv è del 57,6%, giusto? Proverò il mio metodo per setacciare i predittori e addestrare il neurone e riporterò i risultati domani.
Non il guadagno, ma il numero di previsioni corrette della direzione futura dei prezzi. Il classificatore produce uno dei due valori sul campione di prova: Positivo - ci si aspetta un futuro aumento dei prezzi, Negativo - ci si aspetta una futura diminuzione dei prezzi. Se predice correttamente un campione di prova, gli verrà assegnato True. Se è sbagliato è Falso.
Sensibilità della capacità di generalizzazione: 56.19266055045872% - la crescita futura dei prezzi è corretta: 100% * TP / (TP + FP) = 100% * 245 / (245 + 191) = 100% * 245 / 436 = 56.192660550458715%
Specificità della capacità di generalizzazione: 60,752688172043015% - ha previsto correttamente la diminuzione futura dei prezzi: 100% * TN / (TN + FN) = 100% * 113 / (113 + 73) = 100% * 113 / 186 = 60,75268817204302%
Non il guadagno, ma il numero di previsioni corrette della direzione futura dei prezzi. Il classificatore sul campione di prova produce uno dei due valori: Positivo - si presume una crescita futura dei prezzi, Negativo - si presume un calo futuro dei prezzi. Se predice correttamente un campione di prova, gli verrà assegnato True. Se è sbagliato è Falso.
Sensibilità della capacità di generalizzazione: 56.19266055045872% - la crescita futura dei prezzi è corretta: 100% * TP / (TP + FP) = 100% * 245 / (245 + 191) = 100% * 245 / 436 = 56.192660550458715%
Specificità della capacità di generalizzazione: 60,752688172043015% - ha previsto correttamente la diminuzione futura dei prezzi: 100% * TN / (TN + FN) = 100% * 113 / (113 + 73) = 100% * 113 / 186 = 60,75268817204302%
Yuri, la prima prova sui tuoi dati:
Due diversi set di valori di parametri per l'allenamento. È degno di nota che l'AUC è al di sotto dello zoccolo sulla convalida incrociata.
Complessivamente, un'accuratezza del 51,5% sul test è il massimo che si è rivelato.
Non so nemmeno come si fa ad aggirare il 60%.