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

 
Mihail Marchukajtes:
Hai assolutamente ragione all'inizio. Finalmente nel ramo sono apparse delle persone ragionevoli. Ma il modello stesso ha un ruolo predittivo, e non è il modello stesso che conta, ma la reazione del mercato ad esso. E se questa reazione è identica a quella in allenamento, la rete trarrà la giusta conclusione. Quindi è così....
Cosa fare? Provare a usare il classificatore ingenuo bayesiano o studiare i j-predittori?
 
Yuri Evseenkov:
Cosa fare? Provare a tirare il classificatore ingenuo besoviano, o studiare gPredictors?
xChe cos'è il classificatore besoviano???? Non capisco, ora Reshetov ha fatto una cosa terribilmente figa, su, fuori, pasta. E tu stai ancora giocando con le tue R. Fare un mucchio di manipolazione dei dati non necessaria. E cos'è l'esempio dell'iride???? Interessante vedere come il Predictor lo capirà....
 
Mihail Marchukajtes:
xCos'è il classificatore di Besov???? Non capisco, ora Reshetov ha fatto una cosa terribilmente figa, su, fuori, pasta. E tu continui ad armeggiare con le tue R. Fare un mucchio di manipolazione dei dati non necessaria. E cos'è l'esempio dell'iride???? Interessante vedere come il Predictor lo capirà....
Sì, ho scoperto la R solo qui. E nella parola classificatore bayesiano accidentalmente perso una lettera (forse da Freud). E che il programma di Reshetov è cool, non discuto. Non conosco l'iris.
 
Yuri Evseenkov:
Ho scoperto R solo qui. E ho perso per sbaglio una lettera nella parola classificatore bayesiano (forse di Freud). E il programma di Reshetov è forte, non lo discuto. Non conosco Iris.
La macchina di IShaitan Reshetov :-)
 
Mihail Marchukajtes:
xCos'è il classificatore di Besov???? Non capisco, ora Reshetov ha fatto una cosa terribilmente cool, on, off, pasta. E tu continui ad armeggiare con le tue R. Fare un mucchio di manipolazione dei dati non necessaria. E cos'è l'esempio dell'iride???? Interessante vedere come il Predictor lo capirà....

posso vedere il risultato del trading di ieri?

 
Mihail Marchukajtes:
La macchina di IShaitan Reshetov :-)
Cancelliamo i post che iniziano con il mio refuso?
 
mytarmailS:

Perché gli indicatori non hanno mai funzionato e non funzioneranno mai, secondo me...

qualcuno ha provato qualcosa? gli viene in mente qualcosa? o non era nemmeno chiaro di cosa si trattasse?
 
2 Dr.Trader.

Ciao.

Sì, ho cercato di mettere insieme un comitato.

Ho 1000 modelli addestrati. C'è un campione differito di 5 anni. Ho chiesto al mio collega un consiglio su come assemblare i comitati. Ha consigliato di montare il comitato su una parte del campione differito e di testarlo sull'altra parte. È qui che ho vacillato. Il comitato si è riqualificato per la prima parte e ha mostrato un prugna sulla seconda parte.

È la stessa storia con i modelli individuali. Faccio l'errore di selezionare un modello per campionamento ritardato. Dopo di che, il modello può essere facilmente risciacquato.
 

Molto di questo voi stessi lo sapete e lo avete fatto, ma io scriverò in modo più completo per escludere alcune ipotesi di cui parliamo allo stesso modo ma che facciamo in modo diverso.

È necessario avere una funzione di fitness accuratamente affinata per stimare i parametri del modello. Se la funzione valuta i parametri specifici del modello e i predittori selezionati con un punteggio elevato - allora ci dovrebbero essere buoni risultati nel test sui nuovi dati.
(Terrò presente per qualsiasi stima che più è alta, meglio è)

Per esempio avete dati per la formazione, 5 anni. E i parametri per gbm sono n.trees, interaction.depth, shrinkage, n.minobsinnode, distribution, bag.fraction.

La funzione di fitness nel ciclo dovrebbe ripetersi almeno 50 volte:
1) dividere i dati in 2 parti, 50%/50%. Ci dovrebbe essere sia un campionamento casuale con campione che un campionamento sequenziale (il pezzo per l'allenamento è da qualche parte nel mezzo, e per la convalida quello che lo circonda all'inizio e alla fine dei dati grezzi). Comprese le versioni estreme, dove l'allenamento sulla prima metà della tabella e la convalida sull'ultima, e viceversa. Penso che sia importante avere sia campioni campionati in sequenza che campioni casuali per l'allenamento. Nell'immagine potete vedere più chiaramente alcuni esempi di partizionamento casuale e sequenziale, le linee verdi sono per l'allenamento, quelle gialle sono per la convalida.


2) addestrare il modello sul campione di allenamento (i parametri del modello e i predittori utilizzati sono gli stessi per tutto il ciclo, quelli che si sta cercando di stimare), poi prevedere questi stessi dati con questo modello, e valutare la previsione - precisione, r^2, o qualcos'altro. Io, per esempio, arrotondo il risultato della regressione alle classi, e uso la funzione Kappa di Cohen per la stima, è da caret, mi piace di più dell'accuratezza di classificazione o di regressione. Ma funziona solo per due classi. Per tre classi trovo difficile suggerire qualcosa, è importante che la stima tenga conto della precisione di ogni classe separatamente, e dia una stima complessiva basata su questo.
3) Applicare un modello addestrato per prevedere i dati di un campione di convalida, stimare la predizione con la stessa funzione.
4) Entrambe le stime (allenamento e convalida) dovrebbero essere vicine l'una all'altra, e il più alte possibile. Uso questo codice per il punteggio finale - (min(score1,score2) - (max(score1,score2)-min(score1,score2)) - dal valore min è sottratto il loro delta.

Alla fine di ogni iterazione otterremo un certo punteggio, e a causa della divisione casuale dei dati può variare da -1 a 1 (o in un altro intervallo, a seconda della funzione utilizzata). Calcoliamo il loro valore medio e lo restituiamo come risultato della funzione fitness. Inoltre sottraggo dal valore di fitness un piccolo numero (0,0001) per ogni predittore usato, per penalizzare il modello per un insieme troppo grande di dati richiesti.

Applico questo insieme alla genetica, che raccoglie i predittori e i parametri del modello, massimizzando il valore di fitness.

Il risultato finale è un insieme di predittori e parametri del modello che in media hanno buoni risultati di predizione sui dati di formazione disponibili. Il modello può trovare alcuni schemi nei dati, imparare da essi, e trovare ancora con successo quegli stessi schemi nei nuovi dati di convalida, qualunque sia il campione di dati usato per l'allenamento.
Poiché il modello è addestrato usando solo il 50% dei dati disponibili ogni volta e i parametri e i predittori sono scelti in base a questo, è una condizione importante per il modello.
Il modello per il comitato dovrebbe essere addestrato nelle stesse condizioni - o per campionamento o selezionando successivamente il 50% dei dati per l'addestramento. Per ogni nuovo modello è necessario anche un nuovo campione (o set sequenziale).

Per quanto tempo tale comitato darà buone previsioni non si sa, ma considerando che i dati di formazione erano per 5 anni, il comitato ovviamente vivrà meno dei prossimi 5 anni.
E un altro punto importante - se dopo tutto il tempo speso per la creazione della commissione sarà un trading in perdita - allora il pacchetto usato per le previsioni non è adatto al forex. Forse ha troppi gradi di libertà, o semplicemente non è adatto. È meglio prendere un altro pacchetto. Oppure si può provare a ridurre la percentuale di dati di allenamento dal 50% a ancora meno.

Tutto questo grazie ai consigli di questo forum e all'esperienza.

 
Dr.Trader:

Molto di questo voi stessi lo sapete e lo avete fatto, ma io scriverò in modo più completo per escludere alcune ipotesi di cui parliamo allo stesso modo ma che facciamo in modo diverso.

Si deve avere una funzione di fitness accuratamente affinata per stimare i parametri del modello. Se la funzione valuta i parametri specifici del modello e i predittori selezionati con un punteggio elevato - allora ci dovrebbero essere buoni risultati nel test sui nuovi dati.
(Terrò presente per qualsiasi stima che più è alta, meglio è)

Per esempio avete dati per la formazione, 5 anni. E i parametri per gbm sono n.trees, interaction.depth, shrinkage, n.minobsinnode, distribution, bag.fraction.

La funzione di fitness dovrebbe ripetersi almeno 50 volte in un ciclo:
1) dividere i dati in 2 parti, 50%/50%. Ci dovrebbe essere sia un campionamento casuale con campione che un campionamento sequenziale (il pezzo per l'allenamento è da qualche parte nel mezzo, e per la convalida quello che lo circonda all'inizio e alla fine dei dati grezzi). Comprese le versioni estreme, dove l'allenamento sulla prima metà della tabella e la convalida sull'ultima, e viceversa. Penso che sia importante avere sia campioni campionati in sequenza che campioni casuali per l'allenamento. Nell'immagine potete vedere più chiaramente alcuni esempi di partizionamento casuale e sequenziale, le linee verdi sono per l'allenamento, quelle gialle sono per la convalida.


2) addestrare il modello sul campione di allenamento (i parametri del modello e i predittori utilizzati sono gli stessi per tutto il ciclo, quelli che si sta cercando di stimare), poi prevedere questi stessi dati con questo modello, e valutare la previsione - precisione, r^2, o qualcos'altro. Io, per esempio, arrotondo il risultato della regressione alle classi, e uso la funzione Kappa di Cohen per la stima, è da caret, mi piace di più dell'accuratezza di classificazione o di regressione. Ma funziona solo per due classi. Per tre classi trovo difficile suggerire qualcosa, è importante che la stima tenga conto dell'accuratezza di ogni classe separatamente, e dia una stima complessiva basata su questo.
3) Applicare un modello addestrato per prevedere i dati di un campione di convalida, stimare la predizione con la stessa funzione.
4) Entrambe le stime (allenamento e convalida) dovrebbero essere vicine l'una all'altra, e il più alte possibile. Uso questo codice per il punteggio finale - (min(score1,score2) - (max(score1,score2)-min(score1,score2)) - dal valore min è sottratto il loro delta.

Alla fine di ogni iterazione otterremo un certo punteggio, e a causa della divisione casuale dei dati può variare da -1 a 1 (o in un altro intervallo, a seconda della funzione utilizzata). Calcoliamo il loro valore medio e lo restituiamo come risultato della funzione fitness. Inoltre sottraggo dal valore di fitness un piccolo numero (0,0001) per ogni predittore usato, per penalizzare il modello per un insieme troppo grande di dati richiesti.

Applico questo insieme alla genetica, che raccoglie i predittori e i parametri del modello, massimizzando il valore di fitness.

Il risultato finale è un insieme di predittori e parametri del modello che in media hanno buoni risultati di predizione sui dati di formazione disponibili. Il modello può trovare alcuni schemi nei dati, imparare da essi, e trovare ancora con successo quegli stessi schemi nei nuovi dati di convalida, qualunque sia il campione di dati usato per l'allenamento.
Poiché il modello è addestrato usando solo il 50% dei dati disponibili ogni volta e i parametri e i predittori sono scelti in base a questo, è una condizione importante per il modello.
Il modello per il comitato dovrebbe essere addestrato nelle stesse condizioni - o per campionamento o selezionando successivamente il 50% dei dati per l'addestramento. Per ogni nuovo modello è necessario anche un nuovo campione (o set sequenziale).

Per quanto tempo tale comitato darà buone previsioni non si sa, ma considerando che i dati di formazione erano per 5 anni, il comitato ovviamente vivrà meno dei prossimi 5 anni.
E un altro punto importante - se dopo tutto il tempo speso per la creazione della commissione sarà un trading in perdita - allora il pacchetto usato per le previsioni non è adatto al forex. Forse ha troppi gradi di libertà, o semplicemente non è adatto. È meglio prendere un altro pacchetto. Oppure si potrebbe provare a diminuire la percentuale di dati per l'allenamento dal 50% a ancora meno.

Tutto questo grazie ai consigli di questo forum e all'esperienza.

Un eccellente riassunto.

Congratulazioni!