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

 
Andrey Dik:

Ho precedentemente descritto il mio approccio per dividere in 3 classi (vendere, ricettare, comprare). La classe "recinto" comprende tutti i casi che si contraddicono o che non possono essere divisi in classi di acquisto e di vendita. Si scopre che solo il 3-10% rientra nelle classi di acquisto e vendita. Il bello di questo approccio è che lavorando con dati sconosciuti (reali) con il tempo la rete smette di riconoscere le situazioni di mercato e comincia ad attribuirle al "recinto" sempre di più, cioè smette gradualmente di fare trading. Questo è cento volte meglio che iniziare a sbagliare sempre di più nel tempo.

Ma tutto per niente, nessuno vuole, nessuno ascolta.

Quando la rete per comprare dice di comprare e la rete per vendere dice di vendere?

È lo stesso ternario di Reshetov.

 
Andrey Dik:

Ho precedentemente descritto il mio approccio per dividere in 3 classi (vendere, ricettare, comprare).

Questo è già implementato in jPrediction. Ecco perché si chiama classificatore ternario invece che binario.

Implementato in modo molto banale:

  1. Addestramento: addestra due classificatori binari su due parti non sovrapposte del campione.
  2. Validazione incrociata: testare i classificatori binari su quelle parti del campione in cui non sono stati addestrati.
  3. Classificazione: se le letture di entrambi i classificatori binari coincidono, allora il valore di uscita di uno dei due viene preso come risultato. Se le letture dei classificatori binari sono diverse, l'output è: "sedersi sul recinto e fumare bambù".

In precedenza, doveva utilizzare il metodo "bicicletta":

  1. Addestrare un classificatore binario su una metà del campione
  2. Testarlo sulla seconda metà del campione
  3. Utilizzando l'analisi ROC, aumentare una delle soglie per aumentare la sensibilità e diminuire la seconda soglia per aumentare la specificità.
  4. Classificazione: se il modello da classificare è al di sopra della soglia di sensibilità - comprare. Se il modello è al di sotto della soglia di specificità - vendi. Se il modello è tra le due soglie - siediti sul recinto e fuma il bambù.

Tuttavia la "ruota" di cui sopra produce più falsi segnali rispetto alla classificazione da due binari a causa della mancanza di convalida incrociata, ma è più facile da implementare.

Il più stupido e futile binario ternario, anche se il più primitivo nell'implementazione: è una RNA con tre uscite. Se ciascuna di queste uscite ha la propria soglia di classificazione, esse producono non tre ma otto stati potenzialmente possibili, di cui solo tre sono univoci (un valore sopra la soglia su una sola delle tre uscite), e cinque non sono chiari da interpretare (valori sopra la soglia su più di una delle uscite, o sotto la soglia su tutte e tre le uscite).

 
mytarmailS:

Quando la rete per comprare dice comprare e la rete per sedersi dice sedersi?

Questo è lo stesso ternario di Reshetov

No. Non darò un link, cercatelo.
 
Yury Reshetov:

Questo è già implementato in jPrediction. Ecco perché si chiama classificatore ternario invece che binario.

Implementato in modo molto banale:

  1. Addestramento: addestriamo due classificatori binari su due parti non sovrapposte del campione.
  2. Validazione incrociata: testare i classificatori binari su quelle parti del campione in cui non sono stati addestrati.
  3. Classificazione: se le letture di entrambi i classificatori binari coincidono, allora prendiamo il valore di uscita di uno dei due come risultato. Se le letture dei classificatori binari sono diverse, l'output è: "sedersi sul recinto e fumare bambù".

In precedenza, doveva utilizzare il metodo "bicicletta":

  1. Addestrare un classificatore binario su una metà del campione
  2. Testatelo sulla seconda metà del campione
  3. Utilizzando l'analisi ROC, aumentare una delle soglie per aumentare la sensibilità e diminuire la seconda soglia per aumentare la specificità.
  4. Classificazione: se il modello da classificare è al di sopra della soglia di sensibilità - comprare. Se il modello sotto la soglia di specificità - vendere. Se il modello è tra le soglie - siediti sul recinto e fuma il bambù.

Tuttavia la "bicicletta" di cui sopra produce più falsi segnali rispetto alla classificazione per due binari, ma è più facile da implementare.

Il più stupido e futile binario ternario e il più primitivo nell'implementazione: è una RNA con tre uscite. Se ognuna di queste uscite ha la sua soglia di classificazione, allora hanno non tre ma otto stati potenziali, di cui solo tre non sono ambigui (un valore sopra la soglia su una sola delle tre uscite), e cinque non sono chiari da interpretare (valori sopra la soglia su più di una delle uscite, o sotto la soglia su tutte e tre le uscite).

C'è un altro modo che non avete considerato. L'uscita è una sola dal neuronkey, ma l'area dei valori è condizionatamente divisa in tre aree. L'ho fatto come [-1,5...1,5]. L'area di valore centrale [-1,0...1,0] è il "recinto". Si scopre che più la situazione è familiare per la rete neurale, più è eccitata e i valori tendono maggiormente verso i valori estremi. I valori al di fuori dell'intervallo [-1.0...1.0] sono segnali appropriati per acquistare e vendere.

Ma la gente sta ancora lottando con la classificazione binaria.

 
Andrey Dik:

C'è un altro modo, che non avete considerato. L'output è lo stesso del neuronkey, ma l'area dei valori è condizionatamente divisa in tre aree. L'ho fatto come [-1,5...1,5]. L'area di valore centrale [-1,0...1,0] è il "recinto".

Non l'ho ignorato, non l'hai letto attentamente. Vedere il metodo "bicicletta" a due soglie con un n binario. 3 e par. 4, e cito:

Yury Reshetov:
...

Prima di questo, doveva essere applicato il metodo della "bicicletta":

  1. Addestrare un classificatore binario su una metà del campione
  2. Testatelo sulla seconda metà del campione.
  3. Utilizzando l'analisi ROC, aumentare una delle soglie per aumentare la sensibilità e diminuire la seconda soglia per aumentare la specificità.
  4. Classificazione: se il modello da classificare è al di sopra della soglia di sensibilità - comprare. Se il modello sotto la soglia di specificità - vendere. Se il modello è tra le soglie - siediti sul recinto e fuma il bambù.
...
 
Yury Reshetov:

Il problema del tuo approccio è che inizialmente (prima del filtraggio ternario dei segnali di acquisto/vendita) i tuoi MO sono addestrati su dati che possono spiegare più del 5% di tutti i dati, vedi?

Andrey Dik:

Penso che sia la stessa storia qui...

==================================

Il mio metodo non usa affatto il MO nel processo decisionale e non cerca di spiegare l'intero campione, ma solo quello che considera una forte regolarità statistica, e se tali dati sono solo lo 0,01% di tutti i dati, allora solo loro rimarranno...

 
Andrey Dik:

...

Ma la gente sta ancora armeggiando con la classificazione binaria.

Perché la maggior parte delle persone trova più facile prendere un pacchetto pronto con una classificazione binaria già implementata che sperimentare una classificazione ternaria. Non a tutti piace "reinventare la ruota", perché non tutte le idee danno buoni risultati. Alcune persone trovano più facile guidare una bicicletta di serie, anche se ha ruote quadrate.

Se si utilizza la classificazione ternaria, la maggior parte delle fonti sull'apprendimento automatico suggerisce il metodo più poco promettente: addestrare una RNA con tre uscite, che è facile da implementare ma completamente inadatto nella pratica.

 
Yury Reshetov:

Perché la maggior parte delle persone trova più facile ottenere un pacchetto già pronto con la classificazione binaria già implementata che sperimentare con il ternario. Non a tutti piace reinventare le "biciclette", perché non tutte le idee danno buoni risultati. Alcune persone trovano più facile guidare una bicicletta esistente, anche se ha ruote quadrate.

Se si utilizza la classificazione ternaria, la maggior parte delle fonti sull'apprendimento automatico suggerisce il metodo più poco promettente: addestrare una RNA con tre uscite, che è facile da implementare ma completamente inadatto nella pratica.

Beh sì, sono d'accordo, lo è.

Ma una cosa è certa (scusate la taftalogia) - un binario è la cosa peggiore che si possa usare per il mercato.

 
mytarmailS:

Il problema con il tuo approccio è che inizialmente (prima del filtraggio ternario dei segnali di acquisto/vendita) i tuoi MO sono addestrati su dati che possono spiegare forse il 5% di tutti i dati, vedi? Prima del filtraggio ternario i MO sono già addestrati sul rumore e le loro uscite sono corrispondentemente

Non dire sciocchezze. In jPrediction, un algoritmo è implementato per ridimensionare gli ingressi in modo da non ottenere un modello in uscita che è stato addestrato su predittori rumorosi o poco importanti. Cioè, viene fatta una scelta tra una varietà di modelli con diverse combinazioni di predittori, di cui rimane solo quello con la migliore generalizzabilità.
 
mytarmailS:

Vedete, cerchiamo di dividere l'intero campione in acquisto e vendita e vogliamo prevedere ogni singola mossa del mercato, ma i nostri predittori sono così merdosi che possono oggettivamente prevedere solo il~3% di tutte le mosse, quindi di cosa abbiamo bisogno? dobbiamo cercare di prendere almeno quel3% e buttare via il resto inseparabile perché è la stessa spazzatura in entrata/rumore che deve essere setacciato/ragione di riqualificazione ecc... Comunque la si voglia chiamare, è la cosa giusta da fare...

Vedo che capite la causa dei problemi. Ma sto cercando di risolvere il problema in modo diverso da come suggerisci tu.

Tendo a seguire le parole di SanSanych - è necessario reclutare predittori e target che non siano spazzatura. Con buoni predittori otterrete un grafico di esempi di allenamento, non come ho fatto nel mio ultimo post, ma come Vizard_. È molto più difficile che eliminare gli esempi di allenamento in conflitto, ma penso che una corretta selezione dei predittori sarà più affidabile alla fine.

Non posso dire nulla sul tuo metodo, non sono bravo a farlo, ma spero che tu ci riesca.