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

 
Alexey Burnakov:
Yuri, grazie. Ci penserò.

Abbiamo una domanda. Come avete selezionato i predittori?

In ogni caso non li abbatto. Questo è ciò che fa VMR. Il 21° secolo ha più di 16 anni e tutto il lavoro grezzo dovrebbe essere fatto da sistemi automatizzati, non da esseri umani.

Yury Reshetov:

... Più specificamente, VMR riduce l'iperspazio riducendo alcuni dei predittori.

C'è anche un esempio concreto in cui VMR riduce automaticamente uno dei predittori. Vedere Predire i fallimenti

E in questa pagina si può anche provare un semplice esempio classico di come l'algoritmo fa: riduzione dei predittori non informativi e dei vettori non supportanti (campioni) in un set di allenamento

Прогнозируем банкротства - Векторная машина Решетова
  • sites.google.com
Авторы: Myoung-Jong Kim, Ingoo Han опубликовали статью под названием: «The discovery of experts decision rules from qualitative bankruptcy data using genetic algorithms». Судя по оригинальной авторской статье, выборка предназначалась для генетических алгоритмов, т. к. предполагалось, что для других алгоритмов она не по зубам. Однако, вынужден...
 
Devo provare il tuo algoritmo nella pratica. Non riesco a immaginare perché dovrebbe funzionare così bene.
 
Yury Reshetov:

Non li abbatto in nessun modo. Questo è ciò che fa VMR. Il 21° secolo ha più di 16 anni e tutto il lavoro duro dovrebbe essere fatto da sistemi automatizzati, non da esseri umani.


Nella mia esperienza, che NON sto assolvendo, gli algoritmi di selezione dei predittori integrati nei modelli sono i più inefficienti. Né lo sono i numerosi pacchetti separati e le funzioni disponibili per la selezione dei predittori.

Perché lo dico?

Per me c'è un test semplice e per il trading di base.

Imparare il modello. Lo testiamo su un campione che è al di fuori del campione di allenamento per tempo e confrontiamo gli errori. In primo luogo, gli errori non possono essere intorno al 50% - questo non è affatto un modello insegnabile. Consideriamo errori inferiori al 40%. Se sul campione di addestramento e di convalida questi errori sono più o meno uguali, allora il modello non viene riqualificato. Se questi errori sono significativamente diversi, e possono divergere di volte, specialmente se l'errore di addestramento è inferiore al 10%, allora il modello è sovrallenato. La ragione della riqualificazione è che ci sono predittori di rumore che l'algoritmo di apprendimento del modello NON riqualifica.

Finora non mi sono imbattuto in serie di predittori che non includono il rumore. E tutti gli algoritmi di selezione dei predittori non potevano far fronte a questo rumore, né l'idea di coartificazione (regolarizzazione) dei modelli!

Quindi la tua opinione è sbagliata, e dato che ottenere modelli troppo addestrati è pericoloso sul reale, che è sempre "fuori campione".

 
Alexey Burnakov:

Propongo il problema numero uno. Posterò la sua soluzione più tardi. SanSanych l'ha già visto, per favore non dirmi la risposta.

Introduzione: Per costruire un algoritmo di trading, è necessario sapere quali fattori saranno la base per prevedere il prezzo, o la tendenza, o la direzione di apertura del trade. La selezione di tali fattori non è un compito facile, ed è infinitamente complicata.

In allegato c'è un archivio con un set di dati csv artificiale che ho fatto.

I dati contengono 20 variabili con prefisso input_, e una variabile più a destra output.

La variabile di uscita dipende da un sottoinsieme di variabili di input(il sottoinsieme può contenere da 1 a 20 input).

Compito: con l'aiuto di qualsiasi metodo (apprendimento automatico) selezionare le variabili di input, con l'aiuto delle quali è possibile determinare lo stato della variabile di output sui dati esistenti.

Altri problemi con la classificazione binaria? Perché sono arrivato a un baccano quando sia i risultati che il metodo di generazione dei campioni erano già disposti.

Mi piacerebbe partecipare e testare una nuova versione del mio classificatore binario allo stesso tempo.

 
IvannaSvon:
Yuri, per favore rispondi a un messaggio privato.

Lo script è nell'allegato.

Il dataset è stato preso da EURUSD H1

File:
 
Yury Reshetov:

Altri problemi con la classificazione binaria? Perché sono arrivato a un baccano quando hanno già postato entrambi i risultati e il metodo di generazione dei campioni.

Mi piacerebbe partecipare e provare una nuova versione del mio classificatore binario allo stesso tempo.

Ci sono sempre dei compiti :)

Ci sono due file nell'archivio - train.csv e test.csv. L'ultima colonna dei file è il risultato richiesto della classificazione binaria. Dobbiamo usare il file train.csv per addestrare il modello, poi applicare il modello a test.csv. I risultati di destinazione già noti per test.csv non possono essere usati in anticipo, sono necessari solo per il controllo finale. I dati sono presi da eurusd d1, classe 0 o 1 - diminuzione o aumento del prezzo nella barra successiva. Se il modello predice correttamente il risultato per test.csv almeno in 6 casi su 10, allora si può provare a fare trading con esso nel Forex. Se previsto correttamente in 7 casi su 10 (e oltre) - è la strada giusta per il graal, dobbiamo provare l'allenamento e testare il modello su altri anni e mesi, e se tutto sarà lo stesso - allora molto bene.

Ho tenuto conto degli errori del passato, ora i file sono basati sul delta delle barre invece che sui valori grezzi. E tutto è normalizzato per righe dato lo stesso tipo di predittori in una riga piuttosto che per colonne.

Io stesso cerco di usare la genetica per enumerare le varianti predittive. Sul set di predittori alleno il modello a componenti principali con due convalide incrociate e restituisco l'errore di classificazione come valore di fitness per la genetica. Quando la genetica raggiunge il suo limite, prendo il set finale di predittori e alleno nuovamente il neurone con due crossvalidazioni. L'errore finale di predizione sui dati di prova è di circa il 40%. Qui inizia la cattiva notizia - a seconda dei parametri del neurone (numero di pesi interni, numero di iterazioni tra le crossvalidations) l'errore finale varia, va casualmente intorno al 30%-50%. Una volta ero felice di ottenere solo il 30%, ma come si è scoperto non posso controllarlo, e ottengo solo una media del 40%.
La domanda logica è: perché avete bisogno di un modello a componenti principali nel mezzo? Non ha solo parametri di allenamento, dati di alimentazione, ottenere il modello, calcolare l'errore di crossvalidazione sui dati di test. Se si usa una rete neurale per determinare la funzione di fitness della genetica, il tempo di formazione aumenta molto, inoltre non è chiaro quali parametri di formazione usare per la rete neurale stessa.

Ho anche portato il modello VMR di Yuri in R, nell'appendice. Ho preso i miei dati con predittori di rumore, ho ottenuto un errore sui dati di allenamento del 30%, e un errore sui dati di test del 60%, cioè non è successo nessun miracolo, il modello si è riqualificato. È possibile che ci sia stato un bug nella migrazione del codice però, se vedi qualche incongruenza fammi sapere. Durante l'addestramento del modello non avevo abbastanza memoria per una macchina a nucleo grande, ho usato una media ( parametro kernelTrickMode <- 2). Non potevo aspettare un milione di iterazioni per colonna, ho usato 10000 (iterPerColumn <- 10000).

File:
 
Dr.Trader:

Ci sono sempre dei compiti :)

Ci sono due file nell'archivio - train.csv e test.csv.

Sfortunatamente, il mio archivio RAR non si scompatta. IMHO è meglio imballare tutto in ZIP. Ci sono scompattatori per i file ZIP su tutte le piattaforme. Inoltre, molti utenti non usano RAR.



Dr.Trader:
Ho anche portato il modello VMR di Yuri a R, nell'applicazione. Ho preso i miei dati con predittori di rumore e ho ottenuto un errore del 30% sui dati di allenamento e un errore del 60% sui dati di test, cioè non è successo nessun miracolo e il modello è stato riqualificato. Probabilmente è un bug nel codice di porting però, se vedete qualche incongruenza fatemelo sapere.

Lo cercherò sicuramente. Non conosco abbastanza bene R però.

Il porto è stato fatto manualmente o attraverso un qualche tipo di automa?

 
Qualcun altro potrebbe provare il metodo delle componenti principali per la reiezione del rumore, ma predittori con migliaia di osservazioni, piuttosto che comefa Dr.Trader?
 
Dr.Trader:


Vedi messaggio privato.
 
SanSanych Fomenko:
Forse qualcun altro proverà il metodo delle componenti principali per la reiezione del rumore, ma predittori che hanno migliaia di osservazioni, non comeDr.Trader?

Perché non provi?

ps. L'ho provato molto tempo fa e non ne ho ricavato nulla di interessante.

Nel corso della mia ricerca ho alcuni risultati modesti ma interessanti, vorrei condividere ma su questo "meraviglioso" forum non posso né aggiungere una foto né un file da allegare, forse chissà qual è il problema?