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

 
Aleksey Nikolayev:

Se, per esempio, tutte le strategie fanno solo BUY, allora probabilmente si tratta di minimizzare la loro intersezione nel tempo (minimizzando le correlazioni, che sono sempre positive). Se BUY e SELL sono permessi, gli incroci temporali possono essere utili per compensare reciprocamente le parti cattive delle strategie (le correlazioni negative sono solitamente buone per il portafoglio).

Credo che la correlazione possa essere determinata semplicemente attraverso il tempo delle strategie e il tempo della loro sovrapposizione.

In generale, sono d'accordo sulla compensazione reciproca di segnali diversamente diretti, ma per questo nel mio caso ho bisogno di applicare diverse strategie, e fare un markup per ciascuno - è un'altra canzone, ma ho intenzione di applicarla anche io.

Ma per trovare strategie simili per selezionarle da un gruppo o per dividere il loro rischio (lotto), dobbiamo considerare non solo i tempi di entrata e di uscita ma anche la direzione di entrata. Dovrei pensare a come farlo meglio.

 
Aleksey Vyazmikin:

Cosa vuol dire che lo fa perfettamente? Non lo faccio manualmente, scrivo uno script che lo fa come lo vedo ora.

Nel mio caso, l'ideale sarebbe una valutazione separata di ogni variante del valore del predittore. E, voglio unire gli intervalli di attivazione di un predittore che amplifica un obiettivo in un predittore, cosa che le maglie che conosco non fanno dividendo gli intervalli in modo sequenziale, allo stesso modo unendo il predittore nella classifica a spar (costruendo un nodo) con un altro predittore. Finora in teoria.


Che tipo di griglia di partizionamento aggregherebbe gli intervalli in un'unica divisione, eliminando i valori intermedi, come nella figura sottostante i valori 1 e 4?


Perfetto - nel senso di perfettamente accurato secondo la funzione di stima della divisione. Valuterà migliaia di opzioni e ricorderà la migliore, e diventerà un nodo.

È più facile addestrare 24 foreste/boost standard, ognuna delle quali alimenta predittori dell'ora appropriata.

 
elibrarius:

Perfetto - nel senso di perfettamente accurato secondo la funzione di valutazione della divisione. Valuta migliaia di scelte e ricorda la migliore, che diventa il nodo.

Questo è chiaramente secondo l'algoritmo, ma quale algoritmo è corretto? Solo in CatBoost ci sono 3 algoritmi per la costruzione di una griglia.

elibrarius:

Il modo più semplice è quello di addestrare 24 foreste/busti standard, ciascuno alimentando predittori dell'ora appropriata.

Questo ridurrebbe il campione di circa 24 volte (e il mio campione è già piccolo), e poi, osservando il principio greedy della costruzione degli alberi (non sempre vero, come si è scoperto dai miei esperimenti con gli alberi di divisione) selezioneremmo solo quei predittori per la ramificazione dell'albero, che esattamente in una particolare ora statisticamente aveva la migliore probabilità, Ma secondo me, dovremmo trovare i predittori e metterli nell'albero, quelli che indipendentemente da altre condizionalità hanno dato un vantaggio in tutto il campione, allora otterremo non un fitting per un'ora concreta del giorno (descrizione condizionalmente più precisa di un evento per l'attivazione), ma un accumulo di probabilità indipendenti in una foglia.

 
Aleksey Vyazmikin:

Questo è un algoritmo che controlla la gamma di valori predittivi per la capacità predittiva e cerca di dividere le parti della gamma in modo da evidenziare meglio la capacità predittiva. Supponiamo che ci sia un campione con 3 obiettivi, il campione è distribuito come 1 - 24%, 2 - 50%, 3 - 26%, e c'è qualche predittore con una gamma di valori, quindi l'obiettivo della griglia è quello di trovare aree di valori del predittore dove, diciamo l'obiettivo 1 sarà "predetto" da più del 24%, e la divisione evidenzierà questa area. Ci sono diverse varianti di algoritmi per costruire tali griglie.

Idea interessante, ma non è più facile farlo in questo modo...?

p.1) Abbiamo una specie di algoritmo di apprendimento automatico. MO

p.2) C'è un campione che è diviso in un treno e un test.

p.3) c'è un prezzo che è raggruppato secondo un certo principio (tempo, modello grafico, tutti insieme, qualcos'altro ... ...) (può essere percepito come una situazione di mercato o solo un cluster)

pp. ci dovrebbero essere molti o moltissimi cluster


algoritmo di azioni :

1) insegnare MO su un vassoio

2) prevedere il test utilizzando un modello semantico.

3) sul test identifichiamo quei punti che il modello ha predetto senza errori, li chiamiamo XT (punto buono)

4) ogni ht corrisponde a un cluster dal passo 3 sopra...

Ecco, ora sappiamo in quali cluster (stati) del mercato il modello commercia bene... I cluster (stati) sono come un analogo della vostra griglia, quindi cerchiamo di stimare attraverso i cluster ciò che possiamo prevedere e ciò che non possiamo prevedere...


Ma entrambi gli approcci hanno problemi concettuali che dovrebbero essere risolti prima. Il problema non è nemmeno nell'approccio, ma nel modo in cui le informazioni sono presentate.

 
mytarmailS:


p.3) c'è un prezzo che è raggruppato secondo qualche principio (tempo, modello grafico, tutti insieme, qualcos'altro... ...) (può essere percepito come una condizione di mercato o solo un cluster)

pp. ci dovrebbero essere molti o moltissimi cluster

Qui non capisco, stai suggerendo di prendere il prezzo nudo dei punti di markup target e raggrupparli o cosa?


mytarmailS:


3) durante un test identifichiamo quei punti che il modello ha predetto senza errori, chiamiamoli HT (buon punto)

4) ogni punto caldo corrisponde a un cluster dal passo 3 sopra...

Ecco, ora sappiamo in quali cluster (stati) del mercato il modello commercia bene... I cluster (stati) sono come un analogo della tua griglia, cioè cerchiamo di usare i cluster per dividere ciò che possiamo prevedere e ciò che non possiamo prevedere...

L'idea è interessante, ma il suo principio non è collegato al mio suggerimento o non lo capisco completamente. Abbiamo scoperto che il modello ha attivato una certa percentuale di cluster, e poi cosa farne? Capisco che dobbiamo guardare a quale foglia (se stiamo parlando di un albero) quanti cluster sono stati attivati, e se la foglia attiva un cluster molto più spesso, si dirà solo che ha imparato a identificarlo. Qui potrebbe essere che una grande proporzione di foglie si attivi correttamente in modo uniforme su diversi cluster, il che indicherebbe una casualità, apparentemente. Di nuovo, devi essere sicuro dell'algoritmo di clustering - assicurati che il risultato siano cluster unici e non molti simili...

 
Aleksey Vyazmikin:

Questo è chiaramente secondo l'algoritmo, ma quale algoritmo è corretto? Solo CatBoost ha 3 algoritmi per costruire la griglia.

Questo ridurrà il campione di circa 24 volte (e il mio campione è già piccolo), e poi, osservando il principio di greedy tree building (non è sempre vero, come si è scoperto dai miei esperimenti con alberi di divisione) selezioneremo solo quei predittori per la ramificazione dell'albero, che è in una particolare ora statisticamente hanno la migliore probabilità, e la necessità, a mio parere, per trovare segni e metterli in albero, quelli che, indipendentemente da altre condizioni ha dato il vantaggio su tutto il campione, quindi si ottiene non adatto a una particolare ora del giorno (condizionata).

Che differenza fa dove si riduce il campione? Fuori, facendo 24 foreste o dentro, per esempio aggiungendo i primi 24 nodi separati da ore? Da questi 24 nodi, ogni ramo rimanente prenderà 1/24 del campione.

 
A proposito, quello che non mi piace del boosting è che la profondità dell'albero raccomandata è 7-10.
Cioè, se abbiamo 100 predittori e la divisione inizia a metà di ogni predittatore. È molto probabile che avremo 7 diversi predittori divisi a metà. Forse 1 o 2 si divideranno in un quarto, difficilmente più piccolo.
O negli algoritmi di boosting l'algoritmo non lavora per mezza divisione, ma in pezzi più piccoli? Qualcuno lo sa?
E chi usa quale profondità d'albero?
 
elibrarius:

Che differenza fa dove si riduce il campionamento? All'esterno, facendo 24 foreste o all'interno, per esempio aggiungendo i primi 24 nodi con un orologio diviso? Da questi 24 nodi, ogni ramo rimanente prenderà 1/24 del campione.

Non si tratta di riduzione, ma della statistica del comportamento del predictor sul campione al di fuori della divisione - questo dovrebbe ridurre la casualità della selezione del valore del predictor.

A proposito, AlgLib fa la griglia su ogni divisione o una volta sola e poi usa quella griglia? Da quanto ho capito, gli sviluppatori di CatBoost sostengono che la griglia è fatta una volta sola da loro.

 
Aleksey Vyazmikin:

Non capisco, stai suggerendo di prendere il prezzo nudo dei punti di markup target e raggrupparli o cosa?

L'obiettivo è tuo, qualsiasi obiettivo... Sono un po' combattuto ....

Avete bisogno di cluster solo per un obiettivo:


Qui abbiamo trovato gli HT sui test nuovi, e li abbiamo accettati come buoni...

Ora sui nuovi dati dobbiamo trovare questo TX per applicargli il modello, poiché il modello funziona bene solo sul TX, e come lo riconosciamo sui nuovi dati? come opzione dal numero di cluster

 
Aleksey Vyazmikin:

In generale, sono d'accordo sulla compensazione reciproca di segnali diversamente diretti, ma per questo nel mio caso ho bisogno di usare diverse strategie e fare un markup per ciascuna - questa è un'altra canzone, ma ho intenzione di usarla anche io.

Ma per trovare strategie simili per selezionarle da un gruppo o per dividere il loro rischio (lotto), dobbiamo considerare non solo i tempi di entrata e di uscita ma anche la direzione di entrata. Devo pensare a come farlo meglio.

Porterò l'idea alla sua logica conclusione. Supponiamo di avere un insieme di sistemi su una risorsa. Ogni sistema mantiene la posizione di volume fisso quando è sul mercato, ma la direzione può variare. I rendimenti e le volatilità della strategia sono noti. Definiamo la correlazione tra le strategie usando la formula (t1-t2)/sqrt(T1*T2) dove T1 e T2 sono la durata del loro tempo sul mercato, t1 e t2 sono la durata del tempo in cui queste strategie sono simultaneamente sul mercato e dirette rispettivamente nella stessa direzione e in quella opposta. Questa è una formula semplificata derivata sotto il presupposto della vicinanza del prezzo al SB. Ora ci sono tutti i dati per applicare la teoria di Markowitz per trovare il portafoglio ottimale.

Ovviamente, non otterremo alcun portafoglio significativo in questo modo (almeno perché viene utilizzato un solo asset). Abbiamo bisogno di alcune modifiche.

1) Cambiare l'algoritmo di ottimizzazione (limiti dei parametri, penalità). Chiarire la definizione della correlazione tra le strategie.

2) Ottimizzare il portafoglio già al momento della creazione della strategia. Cioè, cercare strategie basate sulla condizione di ottimalità del portafoglio su di esse. Non è del tutto chiaro come questo possa essere formalizzato in un modo praticamente applicabile, ma l'approccio sembra più logico in generale. Anche se, come hai già scritto, richiederebbe la riscrittura di algoritmi, ecc. ecc. Non sono sicuro che ne valga la pena.