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

 
mytarmailS:
Grazie per il chiarimento, ora ti capisco perfettamente, gli algoritmi genetici possono aiutare qui? invece di RF, ho alcune idee interessanti per implementare un obiettivo, vorrei provarle...
Ok, possiamo pensarci. Immaginate, per esempio, che ad ogni iterazione la rete neurale non faccia una back propagation dell'errore standard basata sulla deviazione del target dalla previsione, ma ottenga dei dati che sulla versione precedente di scale reali differiscono dall'ideale di tanti punti. E aggiorna i pesi in base a queste informazioni. Cioè, l'informazione dovrebbe essere un flusso parallelo alla macchina. Forse, si può fare.
 

è possibile fare questo in R?

Un po' su di me: non sono un programmatore, R è il mio primo linguaggio che sto imparando da un mese e mezzo

 
mytarmailS:

è possibile fare questo in R?

Un po' su di me: non sono un programmatore, R è il mio primo linguaggio che sto imparando da un mese e mezzo.

Ecco un processo approssimativo di insegnamento del NS con l'alimentazione di informazioni sui risultati del commercio. Beh, potresti provare a scrivere la tua funzione e inserirla come funzione di fitness personalizzata in qualche pacchetto R. Ma prima dobbiamo scoprire quale pacchetto R lo permette. Probabilmente si dovrebbe scrivere il NS stesso e farlo sui plus in un pacchetto separato. ( R stesso è lento.

Il fatto è che questo è un caso molto insolito. Di solito le caratteristiche del fitness non sono personalizzabili, con un'eccezione che conosco. Al massimo quello che ho fatto è scrivere la mia funzione nel pacchetto caret, il cui valore massimo è usato per selezionare un set di parametri di allenamento durante la crossvalidazione. Ma allo stesso tempo la macchina stessa è addestrata in modo standard. Cioè, la mia soluzione non è proprio quella di cui ho bisogno. Vedi?

 
Googlato... Sì, devi scriverlo tu stesso, ma, amico, questo puntamento standard è un approccio così limitato, è fastidioso...
 
mytarmailS:
Googlato... Sì, devi scriverlo tu stesso, ma amico, questo obiettivo standard è un approccio così limitato, è fastidioso...

Dovremo continuare a cercare:

http://stackoverflow.com/questions/25510960/how-to-implement-own-error-function-while-using-neuralnet-package-in-r

/go?link=https://stackoverflow.com/questions/36425505/own-error-function-including-weights-for-neuralnet-in-r

Sembra che il pacchetto neuralnet permetta di creare la propria funzione di fitness, che dovrebbe essere differenziabile. Dovrò pensarci... Cosa ne pensate?

how to implement own error function while using neuralnet package in R?
how to implement own error function while using neuralnet package in R?
  • stackoverflow.com
I am trying to implement a customized error function in package neuralnet in R. Normally ’sse’ and ’ce’ which stand for the sum of squared errors and the cross-entropy are used to calculate...
 

Il secondo link dice che è necessario riscrivere il codice nel pacchetto.

Puoi usare il primo link per scrivere il tuo errore, ma abbiamo bisogno di conoscere i pesi precedenti per implementarlo nel concetto che suggerisci, o mi manca qualcosa? Ad essere onesti, ho un'idea molto vaga di come funziona una rete neurale

 

L'addestramento di una rete neurale (propagazione all'indietro) di solito procede come segue: un esempio di addestramento viene alimentato, viene determinato un risultato per esso, controllato rispetto al risultato desiderato, e viene calcolato un errore. Allora il compito è quello di ridurre questo errore. Dato che tutti i calcoli nella rete neurale sono solo ordini di addizione e moltiplicazione di dati di input con coefficienti, si può calcolare con precisione fino a che punto è necessario cambiare i coefficienti per diminuire l'errore. In generale si possono trovare coefficienti che riducono l'errore a zero al primo passo, ma nessuno lo fa, perché riduce l'errore di un esempio concreto, ma lo aumenta consapevolmente per tutti gli altri esempi.

Questa riduzione graduale dell'errore viene fatta una per una usando tutti gli esempi di allenamento passandoli più e più volte. L'errore può essere calcolato separatamente per ogni esempio di allenamento. Potete usare la vostra funzione per calcolare l'errore, ma sarà anche calcolato separatamente per ogni esempio di allenamento e non per tutti gli esempi in una volta. Non riesco a capire come dividere l'intera stima commerciale in tutti i singoli esempi.

Sono d'accordo che il trading a zig zag o con i prezzi di chiusura delle barre non è il commercio più ottimale. Sarebbe molto meglio aprire e chiudere i trade considerando anche spread, drawdown, periodo di tempo in cui il trade è aperto. Potremmo fare un Expert Advisor che usa medie mobili o altri indicatori, ottimizzarlo per il massimo sharpe ratio e usare questi trade nei dati di training come risultato richiesto. Ma farò qualcosa del genere dopo aver ottenuto risultati stabili almeno su zigzag.

 
Dr.Trader:

L'addestramento di una rete neurale (propagazione all'indietro) di solito procede come segue: un esempio di addestramento viene alimentato, viene determinato un risultato per esso, controllato rispetto al risultato desiderato, e viene calcolato un errore. Allora il compito è quello di ridurre questo errore. Dal momento che tutti i calcoli nella rete neurale sono solo ordini di addizione e moltiplicazione dei dati di input con i coefficienti, è possibile calcolare con precisione la misura in cui è necessario cambiare i coefficienti per diminuire l'errore. In generale si possono trovare coefficienti che riducono l'errore a zero al primo passo, ma nessuno lo fa, perché riduce l'errore di un esempio concreto, ma lo aumenta consapevolmente per tutti gli altri esempi.

Questa riduzione graduale dell'errore viene fatta una per una usando tutti gli esempi di allenamento e passandoli più e più volte. L'errore può essere calcolato separatamente per ogni esempio di allenamento. Potete usare la vostra funzione per calcolare l'errore, ma sarà anche calcolato separatamente per ogni esempio di allenamento e non per tutti gli esempi in una volta. Non riesco a capire come dividere l'intera stima commerciale in tutti i singoli esempi.

Sono d'accordo che il trading a zig zag o con i prezzi di chiusura delle barre non è il commercio più ottimale. Sarebbe molto meglio aprire e chiudere i trade considerando anche spread, drawdown, periodo di tempo in cui il trade è aperto. Potremmo fare un Expert Advisor che usa medie mobili o altri indicatori, ottimizzarlo per il massimo sharpe ratio e usare questi trade nei dati di training come risultato richiesto. Ma farò qualcosa del genere dopo aver ottenuto risultati stabili almeno sugli zigzag.

Sì, il NS funziona nel modo che hai descritto. Per ogni esempio viene calcolato l'errore, poi, dopo aver attraversato tutto il set, si ottiene il valore della funzione fitness: errore quadratico medio, o errore mediano, o errore assoluto medio. Sulla base di questo valore, i pesi sono aggiornati in base al gradiente calcolato nell'algoritmo di propagazione posteriore.

Qui stiamo discutendo di mettere il nostro al posto della funzione di fitness menzionata basata sul trading di segnali macchina simulati. Così, per ogni esempio elaborato da NS, è possibile creare un trade virtuale (se il segnale di uscita rompe una soglia predefinita). E alla fine di tutti gli esempi possiamo calcolare alcune statistiche integrate, per esempio la statistica di Sharpe. E già da esso i pesi saranno elaborati dalla distribuzione inversa.

 

Grazie per il chiarimento dettagliatoDr.Trader!

Sai, probabilmente la cosa migliore e più corretta sarebbe insegnare le inversioni stesse, anche lo stesso zigzag, cioè dare tre stati 1) inversione a U verso l'alto

2) inversione verso il basso

3) non un'inversione a U

Ma se per insegnarlo, è abbastanza difficile da catturare inversioni, più lo skew nel numero di osservazioni, classi "non inversione" sarà decine o forse centinaia di volte più

E quali predittori usate e quali sono i risultati?

Ho appena iniziato a usare l'analisi spettrale, i primi test si sono rivelati molto meglio che con gli indicatori, l'ho eseguito attraverso rattle, l'errore di formazione e test era circa il 6%, ma quando ho iniziato a usare R l'errore è salito al 30% se non sbaglio, San Sanich dice che è riqualificazione, quindi ancora non capisco molto

Inoltre, c'è un modo per scoprire quali periodi dominano nel mercato attraverso l'analisi spettrale e poi è possibile utilizzare questi periodi negli indicatori, in quanto saranno indicatori adattivi, ma non adattati alla storia.

 
mytarmailS:

Il secondo link dice che è necessario riscrivere il codice nel pacchetto.

Sul primo link puoi scrivere il tuo errore, ma abbiamo ancora bisogno di conoscere i pesi precedenti per implementare il concetto che proponi, o mi sono perso qualcosa? Sinceramente ho una comprensione molto scarsa di come funziona una rete neurale

Beh, prima di tutto, non lo sto suggerendo. Sto traducendo la tua intuizione in una forma che può essere codificata. Lei ha suggerito che la macchina dovrebbe avere il compito di mantenere la curva di trading entro limiti ragionevoli. ) Questa è l'opzione per farlo.

In secondo luogo, il primo link mostra proprio il modo di farlo. L'unica limitazione, che è anche menzionata nella documentazione. Inoltre, non abbiamo bisogno di pesi, ne avevamo bisogno specificamente per la persona che ha fatto la domanda. Non è possibile ottenere pesi in una funzione. A cosa ti servono i pesi? Perché li tira in ballo, innanzitutto?

Si può usare praticamente ogni funzione di errore che può essere differenziata.

Motivazione: