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

 
Vizard_:
"Gopher" non l'ho trovato, ho fatto un casino))) E a cosa servono tutti questi esercizi... Chiunque sia un hippy capirà.
Ad essere onesti non lo capisco.........
 
mytarmailS:

Sì, ma non è giusto, un buon predittore è uno che spiega l'obiettivo, non uno che spiega se stesso, non so come si possa conoscere la qualità di un predittore senza confrontarlo con l'obiettivo, non lo capisco....

Dipende da quale parte del problema viene affrontato. Inizialmente, non conosciamo i predittori desiderati e non conosciamo la variabile obiettivo. E per fare trading con successo, dobbiamo conoscere entrambi. È impossibile conoscere entrambi allo stesso tempo, ecco perché dovremmo selezionare i predittori in base alla nostra variabile obiettivo. Oppure puoi raccogliere buoni predittori e poi usare la tua esperienza per prevedere cosa può succedere con loro.

Primo approccio. Io per esempio ho una variabile target - aumento/diminuzione del prezzo sulla prossima barra. L'ho preso non perché sia una buona variabile di destinazione, ma perché dovevo iniziare da qualche parte, quindi ho preso qualcosa di più facile :) Poi, ho preso un mucchio di indicatori e ora sto cercando di insegnare al modello su "un mucchio di indicatori" a riconoscere il "rialzo/declino". Sono contento che abbia funzionato almeno in parte, perché non c'è garanzia che la variabile target scelta a caso sia prevedibile e non c'è garanzia che i predittori abbiano abbastanza informazioni per fare una previsione. ForeCA in questo caso serve solo a preprocessare i dati, per portarli in una forma in cui è più facile per la rete neurale imparare. Per esempio, i dati possono essere normalizzati invece, o si possono prendere i delta dei valori adiacenti, o si possono fare componenti PCA da essi, ecc. Tutto questo facilita il lavoro di neuronka, è più facile allenarsi su questi dati pre-elaborati. Ciò che ForeCA deve fare in questo caso è raggruppare classi simili in qualche modo. Ma non è certo che ForeCA aiuterà in questo - dipende dalla vostra fortuna e dai predittori disponibili e dalla variabile obiettivo.
In breve, in questo caso la variabile obiettivo è abbinata a un modello e a predittori che tutti insieme hanno miracolosamente almeno un certo potere predittivo.

Un altro approccio. Prendiamo un mucchio di predittori, li ordiniamo secondo la loro "affidabilità" e cancelliamo quelli irrilevanti e poco importanti. Per esempio, se l'indicatore ha sempre un valore costante, è ovviamente inutile. Se il predittore è stato generato usando la funzione random(), sarà anche inutile. Cioè, è importante lasciare quei predittori che possiedono veramente qualche informazione. Non ne so molto, l'unica cosa che ricordo - come trovare l'importanza del predittore per il componente PCA (parametro pruneSig in caret), sembra essere una stima adeguata. La ForeCA in questo caso dovrebbe setacciare le mosche dalle cotolette, e aiutare a trovare predittori affidabili. Come tutti questi pacchetti sappiano cosa è importante e cosa no è un mistero, ma trovano predittori rumorosi e casuali e li rifiutano. Un predittore di qualità sarà uno che non è casuale e rumoroso.
Poi, avendo un insieme di predittori di qualità, si dovrebbe provare a predire qualcosa. Per esempio, si può costruire una mappa di kohonen e trovare la dipendenza del comportamento del mercato dalla classe nella mappa di kohonen. Fai delle conclusioni su quali classi fare trading e quali no, e quindi costruisci una nuova variabile obiettivo per te stesso. La variabile obiettivo avrà un'alta prevedibilità con i predittori poiché è costruita su di essi, tutto suona bene, ma penso che ci saranno un sacco di problemi e trabocchetti propri.

 
Dr.Trader:

Dipende da quale parte del problema viene affrontato. Inizialmente, non conosciamo i predittori desiderati e non conosciamo la variabile obiettivo. E per fare trading con successo, dobbiamo conoscere entrambi. È impossibile conoscere entrambi allo stesso tempo, ecco perché dovremmo selezionare i predittori in base alla nostra variabile obiettivo. Oppure seleziona dei predittori di buona qualità e poi guarda cosa può essere predetto usando questi.

Primo approccio.....

Un altro approccio....

Gli approcci sono vari, ma vogliamo commerciare?

Cosa scambieremo?

Una tendenza?

Deviazione?

Livello?

Tenete a mente che abbiamo solo due ordini - COMPRA/ VENDI. O c'è una certa varietà di essi? Entrare BUY / Uscire BUY / Entrare SELL / Uscire SELL

Queste sono le varianti della variabile di destinazione.

Il prossimo.

Possiamo formare una variabile obiettivo per ciò che commerciamo?

O c'è qualche divario tra l'obiettivo e l'idea del sistema di trading, che è un errore?

Ecc.

Ma dobbiamo iniziare con COSA stiamo scambiando.

 
Mihail Marchukajtes:
dovete moltiplicare la variabile v2 per il suo ritardo e dividere per v3 .
Mostra 10 righe con le seguenti colonne (v2;Lag1_v2;v3;v11(target) e una colonna con la formula v2*Lag1_v2/v3)

v2;Lag1_v2;v3;v11(цель);v2*Lag1_v2/v3

Non è necessario scaricare l'archivio con il file.
 
Mihail Marchukajtes:
lag non vede la rete.
si tagliano le linee vuote e le si attacca dove si vuole...
 

SanSanych Fomenko:

Sapere esattamente cosa scambiare. Ci sono molte opzioni, ma si può di nuovo scegliere qualcosa di imprevedibile e spendere molto tempo per imparare l'imprevedibilità. È necessario scegliere qualcosa che sia più facile da prevedere sui predittori disponibili. Bisogna pensare molto a come farlo.

Fatto un codice di prova per la predizione con ForeCA. Ho bisogno di una tabella trainData, con la variabile target nell'ultima colonna. Sarà diviso per file in 2 parti per la formazione/validazione (sarà diviso rigorosamente nel mezzo). Il modello predittivo è lm, per qualche motivo è sempre usato con PCA negli esempi, penso che funzionerà anche qui. Potete sostituire la funzione lm(...) nel codice con un altro modello.
ForeCA richiede dati in matrice con rango completo dopo cov(). Ho allegato del codice che controlla questo in anticipo, e rimuove le colonne con basso autovalore. È tutto in un ciclo, e richiede molto tempo per essere eseguito, e probabilmente avrebbe potuto essere reso più semplice. Ho eliminato parte dei predittori in questo modo, non so se è buono o no.
Finora non ho ottenuto alcun risultato, il pacchetto si è mangiato 5 giga di disperazione e per molto tempo mi sono chiesto, provalo, forse darà una buona previsione a qualcuno.

File:
 
Vizard_:
Mostra 10 righe con queste colonne (v2;Lag1_v2;v3;v11(target) e una colonna con la formula v2*Lag1_v2/v3)

v2;Lag1_v2;v3;v11(цель);v2*Lag1_v2/v3

L'archivio con il file non deve essere scaricato.
Ad essere onesti, non vedo il senso di questo gioco.... Costruire la variabile di uscita sulla base della trasformazione non astuta dei dati di input, non ha senso. Se il TC funziona bene, non c'è bisogno di usare la rete. Un'altra cosa che mi fa pensare, e se l'ottimizzatore analizzasse un file di allenamento non riga per riga, ma nel suo insieme. Cercando la correlazione non solo tra le colonne ma anche nei valori passati di qualsiasi colonna. Il risultato può essere molto interessante. Oltre alla normalizzazione dei dati, ci sarà anche una pre-elaborazione dei dati, producendo non solo una formula di normalizzazione, ma anche una formula di pre-elaborazione, come ad esempio: Prima della normalizzazione, v2 deve essere moltiplicato per lag1 v5, ecc. Allora penso che la ricerca sarà molto più interessante. O meglio, la pre-elaborazione ci dà delle formule di conversione, una specie di pre-ottimizzatore. Poi applichiamo queste formule ai dati, ottenendo un altro set di dati e poi lo spingiamo nell'ottimizzatore per costruire il modello.... Che ne dite di questo modo di sviluppare.....???? Una specie di ricerca multidimensionale per le dipendenze, non solo tra colonne, ma anche tra relazioni con valori passati. Qualcuno può dirmi come organizzare questo in MKUL???? Io farei un tentativo :-)
 
Per esempio, prima di costruire un modello ottimizzo ogni input per l'output usando l'ottimizzatore MKUL. Cioè, se uso una bacchetta, allora prima di costruire un modello, seleziono i parametri della bacchetta nell'intervallo di allenamento, in modo che dia il maggior numero possibile di segnali redditizi, e così con ogni input, poi metto tutto nell'ottimizzatore....iiiand.... il modello diventa più stabile. Il modello è stabile ma circa il 50% di generalizzazione o un po' di più, perché ognuno dei predicati durante l'ottimizzazione in MKUL dà in un raro caso il numero di trade redditizi maggiore del 50%. Ma lo faccio con ogni ingresso individualmente e principalmente il parametro di mediazione e il ritardo è selezionato in una data sezione, e non c'è relazione con altri ingressi. Supponiamo di cercare questa correlazione con l'ottimizzatore, come ho scritto sopra. Poi ottenere i parametri di relazione tra i dati. Per applicarli ai dati e poi stipare tutto nell'ottimizzatore. Penso che allora avrà senso e il modello acquisirà il livello di generalizzazione appropriato. Ma non sono sicuro di come organizzarlo... Sto pensando... Sono aperto a tutte le idee... ...... Penso che una semplice rete neurale su MKUL possa aiutare, che può costruire tale curva, che descriverebbe al massimo tutti i segnali sul set di prova correttamente, quindi aiutare a costruire un buon modello in Reshetov ottimizzatore di base (è una questione di chi si siede su cosa). Ci sono alcune semplici mesh in MKUL????
 
Dr.Trader:

Fatto un codice di prova per la previsione con ForeCA.....

anche io... Ho deciso di farne uno veloce, ho preso degli iris, ho aggiunto 10 predittori con rumore

e ho appena addestrato Forest, poi ho preso la stessa data e usando foreca l'ho ridotta a 4 predittori e ho addestrato Forest di nuovo

risultato:

solo forrest sui nuovi dati

Prediction   setosa versicolor virginica

  setosa         16          0         0
  versicolor      0         15         1
  virginica       0          0        18

Overall Statistics

Accuracy : 0.98    

forrest non ha nemmeno notato il rumore nei dati ...

e foreca è peggio

Prediction   setosa versicolor virginica
  setosa          6          6         4
  versicolor      5         10         1
  virginica       8          5         5

Overall Statistics
                                          
               Accuracy : 0.42 
File:
code.txt  1 kb
 
mytarmailS:

Anch'io... Ho deciso di fare una correzione rapida, ho aggiunto 10 predittori con rumore

e appena addestrato Forest, poi preso la stessa data con rumore e usando foreCA ridotto la dimensione a 4 predittori e addestrato Forest di nuovo su di loro

risultato:

solo forrest sui nuovi dati

forrest non ha nemmeno notato il rumore nei dati ...

e con la foreca le cose vanno peggio.

La verità è buona ma la felicità è meglio!

Verità = 42%, così positivo per il depo.

Anche se è possibile vivere felicemente, ma con zero depo