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

 
Dr.Trader:

Prevedo solo 2 classi - "comprare" e "vendere", il che significa che avrò sempre qualche trade aperto. Io lavoro con un solo modello, non vedo il senso di fare due modelli che semplicemente danno risultati opposti.

Ma vorrei passare gradualmente a 3 classi - "comprare"/"chiudere tutto e non commerciare"/"vendere". Questo darebbe l'opportunità di fare trading con una strategia più complessa. Ho provato un paio di volte, ma ho avuto problemi con l'addestramento di modelli a tre classi, specialmente se il modello è regressivo seguito da un arrotondamento del risultato alle classi.
Penso che valga la pena provare a creare due modelli con le classi originali 1/0/-1 trasformate in 1/0/0 per il primo modello(solo acquisto), e 0/0/1 per il secondo modello (solo vendita). Questo porterebbe a classi sbilanciate in ogni modello (il numero di esempi con una classe è molto più alto dell'altro), ma ho trovato buone metriche per valutare i modelli che funzionano in tali condizioni - F-score e kappa. Non ho ancora fatto nulla in quella direzione, ma un piano del genere sembra abbastanza possibile.

I problemi nei metodi di questo ramo non sono solo la non stazionarietà delle serie temporali (scale diverse degli stessi modelli per prezzo e tempo), ma anche la variabilità dei modelli. Vale a dire, i modelli che ieri preannunciavano una crescita, oggi possono significare un successivo piatto o addirittura una caduta.

L'insegnamento separato per l'acquisto e la vendita risolve parzialmente questi problemi. Ho scritto qualche pagina fa come, ho due griglie, una di apprendimento sui segnali di acquisto (1;0) - comprare o non fare nulla, e un altro sulla vendita (-1;0) - vendere o non fare nulla. All'uscita di queste due griglie, c'è un interruttore che riunisce i segnali in uno schema (-1;0;1). Il lavoro di questo comitato di griglie risulta essere molto interessante: all'inizio buoni segnali sul feedback, gradualmente il numero di segnali diminuisce, cioè più spesso la risposta è 0 sull'uscita (i modelli smettono di essere riconosciuti e questo è meglio dei falsi segnali commerciali), e dopo qualche tempo cominciano ad apparire falsi segnali commerciali (i modelli sono cambiati). Così, già nella fase in cui il numero di segnali diminuisce al di sotto di una data soglia, può e deve essere considerato come l'inizio della necessità di un nuovo addestramento su dati freschi.

Ma in realtà non esiste un tale "allenamento" e "pratica". Tutti i tipi di convalide incrociate e test OOS non danno e non possono dare l'effetto che ci si aspetta da loro. Il punto è che tali trucchi non sono altro che cercare e poi scegliere quei valori che funzionano in modo approssimativamente soddisfacente sia nell'area di addestramento che in quella di test, cioè questo insieme di parametri esiste già inizialmente tra tutte le loro possibili varianti ed è equivalente a scegliere l'intera area della storia in una volta sola.

Tuttavia, l'utilizzo di due modelli (nel mio caso, due griglie) è, a mio parere, il meglio che si può applicare tra i metodi di "machine learning" attualmente disponibili. Non è un allenamento o un coaching, è un modo per ottimizzare il modello.

Non c'è una vera formazione disponibile oggi. Riconoscere gli stessi modelli o modelli simili non è un risultato dell'apprendimento, è un risultato del ricordare. L'addestramento deve comportare un qualche tipo di processo di pensiero (per quanto primitivo), che permetta di ragionare e trarre conclusioni quando si ricevono nuove informazioni, così come la capacità di generare nuove informazioni in modo indipendente. Il mercato richiede proprio un approccio - pensiero che, per quanto ne so, oggi non esiste. E quello che usiamo oggi è la memorizzazione, non il pensiero, purtroppo.

 
Andrey Dik:

Ma, in realtà, non esiste una cosa come "allenamento" e "coaching". Tutti i tipi di convalida incrociata e i controlli OOS non producono e non possono produrre l'effetto che ci si aspetta da loro. Il punto è che tali trucchi non sono altro che cercare e poi selezionare quei valori che approssimativamente funzionano in modo soddisfacente sia nell'area di addestramento che in quella di test, cioè questo insieme di parametri esiste già inizialmente tra tutte le loro possibili varianti ed è equivalente a selezionare l'intera area della storia in una volta sola.

Ci sono modelli che superano la validazione incrociata ma falliscono il test sui nuovi dati. E ci sono modelli che possono passare la validazione incrociata e poi in qualche modo scambiare qualcosa in profitto. Ma se un modello fallisce la validazione incrociata, allora non ha senso provare a fare trading con esso su nuovi dati.
A mio avviso è un ottimo primo passo per selezionare i predittori e i parametri del modello. Poi - test di roll forward per scoprire se il modello (o un'euristica per adattare i parametri del modello e i predittori) può funzionare con nuovi dati. Se non ci riesce - dobbiamo cambiare qualcosa.

Hai due neuroni - non hai preso i loro parametri da zero, vero? Strati, velocità di apprendimento, inibizione, controllo del peso e decine di altri parametri che i neuroni hanno. Dovete aver fatto una sorta di test di roll-forward per determinare i parametri appropriati, che è intrinsecamente una convalida incrociata. Non credo che tu possa semplicemente prendere due neuroni con parametri predefiniti e iniziare a fare trading sul profitto.

 
Dr.Trader:

Non credo che tu possa semplicemente prendere due neuroni con parametri predefiniti e iniziare subito a fare trading in profitto.

Perché no?
 
Dr.Trader:

1. Ci sono modelli che superano la validazione incrociata ma falliscono il test sui nuovi dati.

2. E ci sono modelli che possono passare la validazione incrociata, e poi in qualche modo scambiare qualcosa nel plus.

Ma se il modello fallisce la validazione incrociata, non ha senso provare a fare trading con esso sui nuovi dati.

4. Secondo me questo è un ottimo primo passo per selezionare i predittori e i parametri del modello.

5. Poi - test di roll forward per scoprire se il modello può commerciare sui nuovi dati. Se non ci riesce - dobbiamo cambiare qualcosa.

6. Hai due neuroni - non hai preso i loro parametri da terra, vero? Strati, velocità di apprendimento, inibizione, controllo del peso e decine di altri parametri che i neuroni hanno. Dovete aver fatto una sorta di test di roll-forward per determinare i parametri appropriati, che è intrinsecamente una convalida incrociata. Non credo che si possano semplicemente prendere due neuroni con parametri predefiniti e iniziare a fare trading in profitto immediatamente.

1. Sì, non significa che il modello sia cattivo. Può significare che il modello ha "memoria insufficiente" per la quantità di dati data o può significare che non è stato trovato il set di parametri che è appropriato per l'intera trama insieme alle trame di allenamento e alle trame di convalida. Il problema è che non c'è modo di determinare esattamente qual è il problema con il fallimento del test sui nuovi dati.

2. Sì, significa "memoria sufficiente". Si può ottenere lo stesso al punto 1 semplicemente riducendo la quantità di dati di allenamento. Il fatto che abbiamo ottenuto qualcosa di positivo sui dati sconosciuti può essere considerato una pura "fortuna", perché abbiamo trovato dei modelli, che sono gli stessi o molto simili a ciò che il sistema conosce e allo stesso tempo abbiamo avuto le esatte reazioni del mercato che sono avvenute prima dei modelli corrispondenti. Il problema è che i modelli cambiano costantemente, gradualmente e a volte bruscamente, e non ci sono garanzie per il futuro.

3. Sì, ma non è molto peggio se fosse passato, per le ragioni indicate sopra.

4. Sì, una buona. Ma non per dare fiducia nella robustezza del modello in futuro, ma solo per far passare le convalide e niente di più.

5. Il walk-forward è l'unico modo per convalidare il sistema. L'unico. A mio parere, se si riesce a creare un sistema che sia efficiente almeno al 55-60% (cioè una riduzione di efficienza del 30% o più rispetto alle trame "di apprendimento"), allora si può considerare che il successo è stato raggiunto. Ma anche questo significherà solo che un compromesso tra la velocità di cambiamento dei modelli di mercato e la capacità del sistema di ricordare la quantità necessaria di informazioni, ma non significherà che il sistema è "muto" del 30%, ma significherà che il sistema non impara il 30% di nuovi o modificati vecchi modelli.

6. L'approccio a due neuroni che ho menzionato non significa "apprendimento" in quanto tale. È solo la stessa "memorizzazione", solo applicata in modo intelligente. Sto dimenticando i vecchi modelli e non riconoscendo quelli nuovi, come te, ma non faccio trading in modelli sconosciuti, il commercio svanisce con il tempo, e poi appaiono i falsi segnali. Faccio (facevo prima) dei test valk-forward in cui il nuovo apprendimento avveniva quando il numero di trade per unità di tempo diminuiva sotto la soglia consentita, quindi ho ottenuto diverse lunghezze di sezioni di test su valk-forward con le stesse sezioni di "apprendimento". Questo ha portato a una diminuzione media dell'efficienza del 30%.

 
Combinator:
Perché?

Neuronics, come qualsiasi altro modello, troverà semplicemente alcuni modelli nei dati disponibili. Se questi schemi corrispondono a qualche processo interno al Forex, o sono semplicemente raccolti dai neuroni secondo il principio "moltiplica qualcosa con qualcosa, se solo il risultato coincide" - nessuno lo sa, non c'è garanzia. Perché sia in grado di rilevare i processi interni del forex, la sua struttura (strati, connessioni) deve in qualche modo corrispondere al forex, deve essere configurata specificamente per esso, solo allora comincerà a produrre risultati costantemente buoni.

Per esempio, le reti neurali convoluzionali per classificare le immagini sono molto popolari ora. Il loro uso sembra molto semplice (scaricate la libreria Python, e il gioco è fatto), ma la gente dimentica che un sacco di università partecipano a concorsi di "riconoscimento delle immagini" da decenni, dove si lotta per ogni percentuale vincente. Cose di tendenza come "dipingere un quadro come Van Gogh" o sostituire le facce in un quadro sono il risultato di decenni di lavoro delle università, con tutti i loro studenti universitari e laureati (e professori probabilmente), che passano un sacco di tempo a modificare i parametri del modello, o a sviluppare nuovi modelli.
Per il forex questo è anche possibile, ma è necessario spendere lo stesso sforzo. In questo caso le vincite sono reali profitti forex, ecco perché le configurazioni dei modelli non sono vantate e non sono pubblicate per l'accesso pubblico, ogni nuovo concorrente deve ricominciare tutto da capo.

 
Dr.Trader:

Non credo che tu possa semplicemente prendere due neuroni con parametri predefiniti e iniziare subito a fare trading in profitto.

Naturalmente, non credo nemmeno in questo. Perché questo significherebbe creare una macchina pensante che ha bisogno di essere addestrata solo una volta nella sua vita. L'umanità è ancora molto lontana dalle macchine pensanti.
 
Andrey Dik:

L'apprendimento separato sull'acquisto e la vendita risolve parzialmente questi problemi. Ho scritto qualche pagina fa come, ho due griglie, una di apprendimento sui segnali di acquisto (1;0) - comprare o non fare nulla, e un altro sulla vendita (-1;0) - vendere o non fare nulla.

Il mio classificatore ternario ha anche due maglie, ma con diversi strati nascosti ed entrambi classificano la previsione della prossima direzione del prezzo, cioè 1 o -1. C'è un interruttore sull'uscita, che nel caso in cui una delle griglie emette 1 e l'altra -1 (si contraddicono), allora l'interruttore emette 0 - non fare nulla.

Tutto è chiaro con l'acquisto e la vendita per i valori della variabile dipendente in quanto possono essere determinati dai fatti - la direzione del movimento del prezzo che segue il modello. Ma qui sorge una domanda difficile, a quale condizione i vostri classificatori binari segnano la variabile dipendente a 0 - non fare nulla?

Non esiste una condizione come i fatti in natura, IMHO.

 
Andrey Dik:

5. ...

6. ...

Con queste spiegazioni, sembra che sia vero. E quanto sono rari i modelli che scambiate? Diciamo, se abbiamo esempi di formazione con le classi"aprire posizione di acquisto" e "chiudere tutti i trade", quale sarà il rapporto percentuale di queste classi? Posso supporre che la classe buy corrisponda al forte movimento di prezzo verso l'alto di centinaia di punti, cioè la quantità di classe buy è circa il 10% di tutti gli esempi di formazione?
 
Andrey Dik:

1. Questo non significa che il modello sia cattivo. Potrebbe significare o "memoria insufficiente" del modello per la quantità di dati forniti,

2. perché si sono verificati dei modelli che sono uguali o molto simili a quelli che il sistema conosce e le esatte reazioni del mercato che sono avvenute prima che si verificassero i modelli corrispondenti. Il problema è che i modelli cambiano costantemente e gradualmente, e a volte improvvisamente in modo brusco e non c'è alcuna garanzia per il futuro.

1) C'è una rete che può pre-apprendere se riceve dati non conosciuti in precedenza. Potresti essere interessato a leggerlo, si chiama SOINNhttps://www.google.com.ua/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=soinn

2) Sono stanco di scriverne, inoltre ho praticamente dimostrato che il mercato va contro le mie stesse statistiche e ho anche spiegato la meccanica, perché fa così, e tutta la formazione in forma classica non può essere applicata ad esso, ma nessuno è interessato, tutti fanno lo stesso.

Google
Google
  • www.google.com.ua
Голосовой поиск – это очень удобно! Чтобы найти нужную информацию, скажите "О'кей, Google" и произнесите запрос.
 
Yury Reshetov:

Il mio classificatore ternario ha anche due maglie, ma con diversi strati nascosti ed entrambi classificano il fatto della prossima direzione del prezzo, cioè 1 o -1. C'è un interruttore sull'uscita, che nel caso in cui una delle maglie dia 1 e l'altra -1, l'interruttore dà 0 - niente da fare.

Tutto è chiaro con l'acquisto e la vendita in quanto possono essere identificati dal fatto - la direzione del movimento dei prezzi seguendo il modello. Ma qui ci troviamo di fronte a una domanda difficile, a quale condizione i vostri classificatori binari segnano la variabile dipendente come 0 - non fare nulla?

Infatti non esiste una condizione come i fatti in natura, IMHO.

Interpretazione SELL BUY

-1 0 vendere

0 0 recinto

0 1 comprare

-1 1 recinto

Ecco la tabella degli interruttori. Si può vedere da esso che i segnali si verificano quando i segnali della griglia sono presenti e non si contraddicono tra loro. Dopo l'addestramento i modelli vengono riconosciuti e si verifica un trade di successo, nel tempo le letture iniziano a contraddirsi a vicenda (out 0 - fence) o entrambe le griglie smettono di riconoscere i modelli (out 0 - fence). Così nel tempo c'è una diminuzione del numero di scambi, cioè il principio "non essere sicuro - non scambiare".

Ma la tua domanda sembra essere un'altra: come si fa a convincere la rete pertinente a comprare/vendere invece di stare seduti sulle barricate? - La risposta è semplice, un sistema a punti. Vengono assegnati punti per le risposte corrette e penalità per le risposte errate e per la steccata. Abbiamo bisogno di scegliere il rapporto di punti, è anche un grande compito, perché abbiamo bisogno di ottenere un lavoro coordinato delle due griglie alla fine, ma il risultato vale la pena.

Imho, i modelli sono diversi per comprare e vendere. Questa è l'idea, come può essere nel tuo caso.