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

 
Aleksey Vyazmikin:

Qual è l'input per il clustering - tutti i predittori del campione o cosa?

Beh, sì... ma possiamo anche sperimentare.

 
Aleksey Nikolayev:

Porterò l'idea ad una conclusione logica. Supponiamo di avere un insieme di sistemi sullo stesso asset. Ogni sistema, quando è sul mercato, mantiene una posizione di volume fisso, ma la direzione può cambiare. 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.

Tutto vero quello che dici. Ma non prenderei in considerazione solo il tempo di entrata nel mercato - abbiamo bisogno di qualche misura di performance durante questo periodo, perché non è sufficiente entrare nel mercato, ma dobbiamo anche uscire in tempo, e qui condizionatamente due strategie simili, ma una con presa fissa e un'altra senza presa, daranno alta correlazione temporale ma diversi risultati finanziari. Due strategie simili possono essere utili, per esempio, una di esse darà profitto in condizioni piatte e l'altra darà più profitto in condizioni di tendenza che insieme appianeranno la curva di equilibrio.

Se non ci sono troppe strategie, è possibile la loro ricerca diretta e la stima congiunta.

 
mytarmailS:

Credo di sì... ma possiamo anche sperimentare.

E quale algoritmo dovrei scegliere per ottenere un risultato accettabile senza randomizzazione e con un tempo di calcolo ragionevole? Non sono molto bravo a fare clustering.

 
Aleksey Vyazmikin:

Ho studiato CatBoost, quindi ne parlerò.

La profondità dell'albero è raccomandata 4-6 spaccature. Questa è la profondità che sto cercando in generale.

La divisione dei predittori è fatta da tre diversi algoritmi tra cui scegliere. Viene creata una cosiddetta griglia.

I risultati della divisione sono interessanti da tirare fuori e vedere da soli. In che modo AlgLib divide equamente i predittori quando costruisce l'albero della foresta?

AlgLib divide il pezzo in arrivo per la mediana (correzione - non per la media, ma per la mediana. ). Cioè, se sono arrivati 100 esempi, ordina i valori e divide per il valore del 50° esempio. C'è un'opzione quantile nel codice, ma non viene usata.

Mi sono ricordato di XGBoost che ha una variante di divisione casuale. Sembra essere lo stesso in catbusto.

In generale è strano che raccomandino alberi così poco profondi.
Come ho scritto prima, con un albero così poco profondo è improbabile che un settore come il 20-30% del valore venga selezionato. Nel migliore dei casi 1 o 2 volte si dividerà per le mediane o per valori casuali in Boosts.
Se la profondità fosse 100, potrebbe benissimo arrivare a un settore del 20-30% secondo qualche previsione.

Suppongo che in Boosts sia compensato da un gran numero di alberi di raffinamento, che possono usare altri predittori che non sono stati usati nell'albero principale, ma anche loro saranno separati solo 1 -2 volte.

 
Aleksey Vyazmikin:

E quale algoritmo dovrei scegliere per ottenere un risultato accettabile senza casualità e con un tempo di calcolo ragionevole? Non sono molto bravo a fare clustering.

Sì, in un rimorchio qualsiasi (knn, som, dtwclust...), la migliore variante certamente mostrerà l'esperimento ...

Non fraintendetemi, non sto usando quello di cui ho scritto, ho solo letto la vostra idea e l'ho guardata da un lato leggermente diverso dell'implementazione, così ho parlato... Non garantisco alcun risultato

 
elibrarius:

Algib divide la fetta in arrivo per la mediana. Cioè, se arrivano 100 esempi, ordina i valori e divide per il valore del 50° esempio. C'è una variante per quantili nel codice, ma non viene utilizzata.

Mi sono ricordato che XGBoost ha un'opzione di divisione casuale. Sembra essere lo stesso in catbusto.

In generale è strano che raccomandino alberi così poco profondi.
Come ho scritto prima, con un albero così superficiale è improbabile che un settore come il 20-30% del valore venga selezionato. Nel migliore dei casi 1 o 2 volte si dividerà per le mediane o per valori casuali in Boosts.
Se la profondità fosse 100, potrebbe benissimo arrivare a un settore del 20-30% secondo qualche previsione.

Presumo che in Boosts questo sia compensato dal grande numero di alberi di raffinamento, che possono usare altri predittori che non sono stati usati nell'albero principale.

La realtà potrebbe non essere quella che immaginiamo - dovremmo provare a riprodurre gli algoritmi di separazione di CatBoost e vedere cosa succede realmente e quanto è corretto.

Per quanto riguarda la casualità - c'è una casualità sulla scelta della partizione della griglia del predittore, come non la migliore, ma casuale, se ho capito bene. E, ci sono algoritmi che rendono lo stack non uniformemente diviso per intervalli.

 
mytarmailS:

Sì, in un rimorchio puoi usare qualsiasi (knn, som, dtwclust...), l'opzione migliore sarà ovviamente mostrata dall'esperimento...

Non fraintendetemi, non sto usando quello di cui ho scritto, ho solo letto la vostra idea e l'ho guardata da un lato leggermente diverso dell'implementazione, così ho parlato... Non garantisco alcun risultato.

Sto parlando di garanzie - sono solo interessato a capire la tua idea.

 


L'indicatore Neuro è quasi pronto )) Questo è un EA, puramente un indicatore che mi mancava l'abilità.
 
Area arancione in alto - predice il movimento verso il basso, verde in basso - movimento verso l'alto, spessore del livello di fiducia della rete neurale. Funziona solo su BTCUSD M1 (per ora...).
È bello? ))
 
Evgeny Dyuka:
La zona arancione sopra prevede un movimento verso il basso, quella verde sotto - un movimento verso l'alto. Funziona solo su BTCUSD M1 (per ora).
È bello? ))

Direi che non è male, ma è frustrante.

Fondamentalmente funziona come un normale indicatore di ipercomprato/ipervenduto.

A volte è giusto, a volte è sbagliato, non dovrebbe essere...

Avete testato questa rete per il trading? La mia esperienza mi dice che non farà soldi...

A meno che non si metta un filtro sulla "fiducia" della rete.