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

 
Ho una domanda per Yuri. Quando calcolo i risultati di un modello trinario, quando inserisco manualmente i dati, i risultati a volte mostrano un simbolo di trattino. Cioè ho 0, 1 e un trattino. Cosa significa un trattino?
 

Ho provato a classificare lo zigzag, sì, ma non il pivot point, ma l'intera tendenza che lo zigzag mostra, il risultato è 0 se l'attuale tendenza zz sta andando giù, e 1 se la tendenza sta andando su. Le tendenze zz sembrano piuttosto sbilanciate, ma non è per questo che ho rinunciato a loro. Quello che non mi piace è che il modello ha bisogno di una precisione molto alta. Se il modello fa un errore o due nel trend e inverte un trade al momento sbagliato, anche solo di una barra, di solito porta a ulteriori perdite più il pagamento di una commissione ogni volta con lo spread. Il modello sarà redditizio solo se aprirà il trade, aspetterà la fine del trend e invertirà. Senza un solo errore all'interno di ogni tendenza.

Se predice la prossima barra piuttosto che la tendenza, allora ogni errore si tradurrà in meno soldi persi.


Non faccio alcun bilanciamento, quando prevedo la prossima barra la dispersione delle classi è minima così com'è, non credo che il +-10% di una classe possa influenzare molto i risultati.

Qui nell'articolo scrivono che il bilanciamento può essere sostituito da una stima corretta del modello (F-measure o R-Precision). Questo è l'analogo russo dell'articolo che SanSanych ha linkato prima.

http://bazhenov.me/blog/2012/07/21/classification-performance-evaluation.html

...

Tuttavia, questa metrica [precisione] ha una particolarità che deve essere presa in considerazione. Dà a tutti i documenti lo stesso peso che potrebbe essere errato se la distribuzione dei documenti nel set di allenamento è spostata verso una o più classi. In questo caso, il classificatore ha più informazioni su queste classi e, di conseguenza, all'interno di queste classi prenderà decisioni più adeguate. In pratica, questo porta a una situazione in cui si ha, diciamo, l'80% di precisione, ma all'interno di una particolare classe, il classificatore lavora a dismisura non definendo correttamente nemmeno un terzo dei documenti.

Un modo per uscire da questa situazione è addestrare il classificatore su un corpus di documenti appositamente addestrato e bilanciato. Lo svantaggio di questa soluzione è che si toglie al classificatore l'informazione sulla frequenza relativa dei documenti. Queste informazioni, a parità di condizioni, possono essere molto utili per prendere la decisione giusta.

Un'altra via d'uscita è cambiare l'approccio alla valutazione formale della qualità.

Accuratezza e completezza

Precisione e richiamo sono metriche che vengono utilizzate per valutare la maggior parte degli algoritmi di estrazione delle informazioni. A volte sono usati da soli, a volte come base per metriche derivate come F-measure o R-Precision. L'essenza dell'accuratezza e della completezza è molto semplice.

L'accuratezza di un sistema all'interno di una classe è la proporzione di documenti che appartengono realmente a quella classe, rispetto a tutti i documenti che il sistema ha assegnato a quella classe. La completezza è la proporzione di documenti che appartengono alla classe trovata dal classificatore rispetto a tutti i documenti di questa classe nel campione di prova.

....

Misura F

È chiaro che più alta è la precisione e la completezza, meglio è. Ma nella vita reale la massima accuratezza e la completezza non sono raggiungibili allo stesso tempo e dobbiamo cercare un equilibrio. Ecco perché vorremmo avere un qualche tipo di metrica che combini le informazioni sulla precisione e l'esaustività del nostro algoritmo. In questo caso sarà più facile per noi decidere quale implementazione lanciare in produzione (quella che ne ha di più è meglio). Questa è esattamente una metrica di questo tipo - F-measure1.

La misura F èuna media armonicatra la precisione e la completezza. Tende a zero se la precisione o la completezza tende a zero.


ecc., ci sono vari bei grafici nell'articolo.

 
Dr.Trader:

Ho provato a classificare lo zigzag, sì, ma non il pivot point, ma l'intera tendenza che lo zigzag mostra, il risultato è 0 se l'attuale tendenza zz sta andando giù, e 1 se la tendenza sta andando su. Le tendenze zz sembrano piuttosto sbilanciate, ma non è per questo che ho rinunciato a loro. Quello che non mi piace è che il modello ha bisogno di una precisione molto alta. Se il modello commette un errore o due nel trend e inverte un trade al momento sbagliato, anche solo di una barra, di solito porta a ulteriori perdite più il pagamento di una commissione sullo spread ogni volta. Il modello sarà redditizio solo se aprirà il trade, aspetterà la fine del trend e invertirà. Senza un solo errore all'interno di ogni tendenza.

Se predice la prossima barra piuttosto che la tendenza, allora ogni errore si tradurrà in meno soldi persi.


Non faccio bilanciamenti, per la prossima previsione della barra la diffusione delle classi è minima e non credo che il +-10% di una classe influenzerà molto il risultato.

Qui nell'articolo scrivono che il bilanciamento può essere sostituito da una stima corretta del modello (F-measure o R-Precision). Questo è l'analogo russo dell'articolo che SanSanych ha linkato prima.

http://bazhenov.me/blog/2012/07/21/classification-performance-evaluation.html

ecc, ci sono vari grafici carini nell'articolo

Un piccolo consiglio. Qualsiasi sistema porta ad un unico fenomeno. È un segnale!!! L'insieme di tutte le condizioni porta al fatto compiuto, che è il punto di decisione. Quindi, qualsiasi sistema, non importa quanto sia complesso, porta a segnali per comprare o vendere. Quindi si raccomanda di classificarli. Attraversamento dei carri. L'incrocio si è verificato, c'è un segnale di acquisto, l'incrocio nella direzione opposta, c'è un segnale di vendita, e non c'è un terzo. Quindi, per una classificazione corretta dovremmo farlo separatamente per vendere e separatamente per comprare. Così, possiamo raddoppiare un intervallo di allenamento e mantenere il livello di generalizzazione. All'inizio i miei modelli raramente superavano il 40-50% di generalizzazione, ma dopo ho capito cosa fare con i dati. Qual è il punto del modello ottenuto dopo la classificazione. Sugli stessi dati ora ottengo modelli non inferiori al 70% in media 80-90% e in futuro, su dati sconosciuti gli errori sono circa 1-2 su 10-12. Questo è abbastanza per fare soldi. Ma prendo il 30% dell'intervallo di allenamento come intervallo di confidenza. Cioè prendo 100 segnali di acquisto e 100 segnali di vendita e entro 30 o 50 segnali si può lavorare senza riallenare il modello. Nelle prime versioni del predittore si ottimizzavano 6 ingressi in circa 40 minuti, il che non era molto conveniente, e ora fa 9 ingressi in 10 minuti. E questo ha solo aumentato la qualità del modello. Ora il problema è dove trovare tanti input. Ma non siamo al buio. Abbiamo ancora qualcosa da offrire al predittore :-)
 
Mihail Marchukajtes:
Ho una domanda per Yuri. Quando calcolo i risultati di un modello trinario, quando inserisco manualmente i dati, i risultati a volte mostrano un simbolo di trattino. Cioè ho 0, 1 e un trattino. È questo il significato di un trattino?

Come la famosa frase socratica "so quello che non so". Il classificatore ternario, rispondendo con un meno, dice che nell'insieme di allenamento non ci sono stati esempi simili al modello da classificare e quindi non può attribuirlo senza ambiguità a nessuna classe, cioè non può dare una risposta affermativa al modello presentato. Ammette onestamente che gli manca la competenza in alcune aree di conoscenza, piuttosto che cercare di rispondere a domande di cui non conosce le risposte con un'espressione sfacciata sul viso.

 
Yury Reshetov:

È lo stesso della famosa frase socratica "so quello che non so". Un classificatore ternario che risponde con un meno ci dice che non c'erano esempi nel campione di allenamento simili al modello da classificare, quindi non può classificarlo senza ambiguità, cioè non può dare una risposta affermativa al modello presentato.

Hm. Ditemi, c'è la possibilità in un prossimo futuro di scaricare un modello ternario in un file, in modo da poterlo usare più tardi in MKUL? Così come il binario, ma quando si inserisce a mano, c'è la possibilità di fare un errore e tutto ciò che.....
 
Mihail Marchukajtes:
Hm. Bene, vedo... Dimmi, c'è la possibilità in un prossimo futuro di caricare un modello ternario in un file, in modo da poterlo usare in MKUL in seguito? Così come il binario, e quando si inserisce a mano, c'è la possibilità di fare un errore e tutto ciò.....
Ci sto lavorando ora. Cioè il generatore di codice non è ancora finito e al momento dà i sorgenti di uno solo dei classificatori binari e non dell'intero classificatore ternario.
 
Yury Reshetov:

La stessa cosa che significa la famosa frase di Socrate "So quello che non so". Il classificatore ternario, rispondendo con un meno, dice che nel campione di allenamento non c'erano esempi simili al modello da classificare, quindi non può attribuirlo senza ambiguità a nessuna classe, cioè non può dare una risposta affermativa al modello presentato. Ammettere onestamente l'assenza della propria competenza in alcune aree di conoscenza, invece di cercare di rispondere positivamente con una faccia compiaciuta a domande di cui non conosce le risposte.

A giudicare dalla foto allegata, ho capito bene? A sinistra è un classificatore binario; a destra è un classificatore ternario (la zona bianca è "meno")

Se è così, penso che l'idea sia buona, per qualche motivo non l'ho visto prima, puoi per favore consigliare qualche articolo sul classificatore ternario?



Finito questo più tardi:

Intuitivamente, questo compito è piuttosto semplice. Supponiamo che ci siano 2 predittori (X e Y), ciò significa che dobbiamo lavorare in uno spazio bidimensionale (come nelle immagini qui sopra). Poi abbiamo bisogno di racchiudere tale spazio bidimensionale che include tutte le classi "comprare" (riempimento blu). Poi, racchiudete un secondo spazio che comprende tutte le classi "vendere" (rosso). I due spazi recintati non devono sovrapporsi. Per classificare nuovi dati, basta guardare in quale spazio recintato cade il punto desiderato. Se non arriva da nessuna parte (bianco nell'immagine di destra) - allora è chiaro che il modello non può dire nulla su quel punto e il trade non dovrebbe essere eseguito al momento.

Con 3 predittori ci sarà uno spazio tridimensionale dove le classi saranno racchiuse da alcune forme volumetriche tridimensionali. Ecc, più predittori ci sono, più le forme sono multidimensionali.

Esistono modelli del genere? Di solito i classificatori trovano un qualche tipo di iperpiano nello spazio che separa le classi. Ma qui abbiamo bisogno di due iperfigure chiuse.

 

Mihail Marchukajtes:

...

Nelle prime versioni del predittore 6 ingressi venivano ottimizzati in circa 40 minuti, il che era estremamente scomodo, ma ora 9 ingressi lo fanno in 10 minuti. E questo ha solo aumentato la qualità del modello. Ora il problema è dove trovare così tanti input. Ma non siamo al buio. Abbiamo ancora qualcosa da offrire al predittore :-)
Sì, anch'io sto cercando di classificare rigorosamente acquisto/vendita. Ma come hai ottenuto i 6 ingressi originali, li hai semplicemente presi da qualche strategia conosciuta? Un input adeguato è una delle cose più importanti. Al contrario, ho migliaia di voci (prezzi e indicatori su un centinaio di barre) e ho bisogno di setacciarli lasciando un paio di dozzine perché su così tanti input qualsiasi modello si allena troppo.
 
Dr.Trader:

A giudicare dalla foto allegata, ho capito bene?


Classificatore binario a sinistra; classificatore ternario a destra (l'area bianca è "meno")

Se è primitivo per i manichini, andrà bene come aiuto visivo.

Dr.Trader:
Se è così, penso che sia una buona idea, per qualche motivo non mi sono imbattuto prima, puoi per favore consigliare qualche articolo sul classificatore ternario?

Se google non è vietato, potete cercare con la frase "apprendimento automatico del classificatore ternario".

 
Yury Reshetov:

Se non siete banditi da Google, potete cercare "apprendimento automatico del classificatore ternario".

In altre parole "cerca il primo link di google che porta al mio sito" :)

L'ho trovato, hai un comitato di due modelli, non è quello che ho capito e scritto sopra.