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

 
Aleksey Vyazmikin:

Sì, le impostazioni di base sono ben date lì, soprattutto se si esegue subito in Python. Ma questo non è abbastanza per me.

È vero, Anna Veronica è una narratrice migliore e balla di più.

 
Maxim Dmitrievsky:

Lo spettacolo è vero, Anna Veronica è una narratrice migliore, e balla anche.

Non lo so, non ci faccio caso, di solito lo guardo in modalità veloce.

In ogni caso, ci sono domande che richiedono una risposta da parte dei creatori, e non so come farle, in termini di dove farle.

 
Aleksey Vyazmikin:

Non lo so, non ci faccio caso, di solito lo guardo in fast track.

Comunque, ci sono domande che hanno bisogno di risposte dai creatori, e non so come farle, in termini di dove farle.

su githab probabilmente

 
Maxim Dmitrievsky:

su un githab, forse.

Sono tutti così anglofoni lì - non so dove sono :)

 
Aleksey Vyazmikin:

Lì tutti parlano così bene l'inglese - non so dove mi trovo :)

sembra che dobbiamo pompare R invece di python, Renat ha scritto che presto ci sarà un collegamento diretto senza stampelle

cioè sarete in grado di eseguire catbust in 1 linea da mt5

 
Maxim Dmitrievsky:

sembra che dobbiamo pompare R piuttosto che python, Renat ha scritto che presto ci sarà un bundle diretto senza stampelle

cioè catbust può essere eseguito in 1 linea da mt5

Non sono mai stato in grado di eseguire catbust sotto R.... Forse non sono troppo pratico. Se sarà bundle, è buono, ma non permetterà di eseguire l'ottimizzazione e la velocità di risposta è in discussione...

 

Completato uno studio sull'impatto della divisione del campione in campioni di formazione e di convalida (quello per cui si ferma la formazione e avviene la selezione del modello).

Il campione utilizzato era dal 2014 al 2018, ogni 20% equivale a circa 1 anno. La metodologia è la seguente: si è preso il campione totale e si è iniziato ad aumentare il campione di convalida del 10 per cento, riducendo il campione di formazione dello stesso 10 per cento, ottenendo 9 serie di campioni. Per ogni campione è stato creato un modello con Seed da 1 a 200, cioè in totale 200 modelli per campione, 1800 modelli in totale.

Il test del modello è stato condotto su un campione fisso - 2018, non coinvolto nella formazione.

Lo strumento è la colla del contratto Si futures.

Sotto nella tabella ci sono indicatori per giudicare i risultati dei modelli - la parte sinistra sono indicatori finanziari, come siamo abituati a vedere nel terminale, e la parte destra sono indicatori sull'equilibrio dell'errore (lo chiamo così - non so come correggerlo, se qualcuno lo usa del tutto), cioè se il target 1 è stato determinato correttamente, allora +1, se non correttamente, allora -1, permette di valutare esattamente la qualità della classificazione su tutto il campione. In verde chiaro ho segnato la migliore performance in termini di media.

Di seguito sono riportati i valori metrici dei modelli

I risultati mostrano chiaramente che la formazione per il 2014 (80%-90%) ha dato i risultati più scadenti, e il calo del 70% è stato significativo, il che suggerisce piuttosto non che la dimensione del campione era piccola, ma che i modelli del 2014 non sono quasi mai soddisfatti, cioè il mercato è cambiato significativamente, il che significa che teoricamente questo periodo può essere rimosso dalla formazione del tutto.

Ora uso il seguente criterio per la selezione dei modelli nel campione del test (esame)

if(t==2)if (FinRez>1000 && DD_Balans_Proc_DMM<30 && Proc_Max_Balans> 70 && Proc_Min_Balans<30 && Pribolnost_Balans> 10 && ProfitFaktor_Balans>1.2)Filter_03=1;

Ecco i dati sul numero di modelli che soddisfano questo criterio

Di seguito una tabella che elenca la selezione dei modelli tenendo conto degli indicatori di tutti e tre i campioni secondo i seguenti criteri

if(t==0)if (FinRez>10000 && DD_Balans_Proc_DMM<30 && Proc_Max_Balans> 70 && Proc_Min_Balans<30 && Pribolnost_Balans> 10 && ProfitFaktor_Balans>1.2)Filter_01=1;
if(t==1)if (FinRez>3000 && DD_Balans_Proc_DMM<30 && Proc_Max_Balans> 70 && Proc_Min_Balans<30 && Pribolnost_Balans> 10 && ProfitFaktor_Balans>1.2)Filter_02=1;
if(t==2)if (FinRez>1000 && DD_Balans_Proc_DMM<30 && Proc_Max_Balans> 70 && Proc_Min_Balans<30 && Pribolnost_Balans> 10 && ProfitFaktor_Balans>1.2)Filter_03=1;


Qui dobbiamo tenere conto del fatto che il criterio del profitto è fisso e il tempo per raggiungere questo profitto è diverso per i diversi set (probabilmente, dovremmo ridurre le cifre per fare un confronto corretto).

E quale conclusione si può trarre? Sembra che il volume ottimale sia il 60%-70% del campione di convalida, cioè l'allenamento dovrebbe avvenire su un campione più piccolo della convalida del modello. Ma è impossibile non sottolineare la ripartizione del 30%, anche lì il risultato di tutti gli indicatori non è male, e i fallimenti abbastanza vicino al 40% e 50%. Non so cosa influenza di più la dimensione del campione o il contenuto e come stabilirlo...

E qual è la tua opinione sui risultati di questo esperimento, forse sto interpretando male i risultati? Qualche idea per un cambio di metodologia o qualche altro suggerimento per risolvere questo problema della proporzione dei campioni di allenamento e di selezione?

Aggiunto:

Per quanto riguarda le medie all'80%-90%, ci sono molti zeri (nessun segnale in ingresso dai modelli) e per questo c'è distorsione, questo può essere visto nell'indicatore StDV_K_Korrekt_Balans

istogramma per StDV_K_Korrekt_Balans 90%


istogramma per StDV_K_Korrekt_Balans 70%


Istogramma per StDV_K_Korrekt_Balans 30%

E questo è come appaiono i grafici (gli istogrammi sono cliccabili in modo da non sfarfallare fastidiosamente)

30%


40%


50%


60%

 

Dovrei anche notare che l'addestramento è sempre fatto su dati più vecchi di quelli su cui viene fatto il controllo dell'addestramento - forse dovremmo scambiarli e vedere cosa succede...

Il Recall medio piccolo attira l'attenzione - forse abbiamo bisogno di addestrare ulteriormente i modelli, piuttosto che fermare l'addestramento quando non c'è miglioramento dopo 100 alberi, o non ci sono tanti modelli stabili come vorremmo.

Dobbiamo vedere quanto i modelli si sovrappongono, se il Recall è basso, c'è la possibilità che ci siano modelli con poca correlazione, ma ugualmente redditizi, allora sono ideali da combinare in un unico pool.

 
Aleksey Vyazmikin:
E noterò anche che l'allenamento va sempre su dati più vecchi di quelli su cui va il controllo dell'allenamento - forse bisognerebbe scambiarli e vedere cosa succede...

Tutto quanto sopra è bello e molto informativo, ma "controllo dell'allenamento", cosa significa?

Cioè per esempio si addestra il sistema su un campione di dati del 2014 e poi si dà un campione del 2015 e si vuole vedere la probabilità dei modelli? Se è così, allora non c'è bisogno di cambiare nulla, tutto è corretto. Solo che non vedo un problema se il controllo dà risultati diversi da quelli attesi, sarà sempre così.

 

Se l'applicazione pratica del MO nel tuo caso è la seguente, secondo me.

Dal momento che non è semplicemente realistico ottenere il 100% di probabilità del risultato vero, allora vai con un metodo semplice, per esempio il rapporto tra risultati veri e falsi, se è nella regione di 50/50, allora ancora una volta dobbiamo capire quali profitti si ottengono con questi risultati, se il 50% del profitto è una media di 100 punti e il restante 50% perdite medie 50 punti, allora penso che il tuo sistema è già adatto per l'uso pratico.