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

 
Mihail Marchukajtes:
Yuri, ho deciso di usare il santo dei santi e fare un graal, ma ho un'iscrizione che dice che i valori previsti non possono essere più di 10. Si tratta di una restrizione deliberata o di un limite dell'algoritmo ???? Perché più di 10 è estremamente rilevante così....

Dopo 10 ci può essere un overflow di tipo int, e ha solo 32 bit, cioè prima dell'overflow può contenere numeri che non superano il valore 2^32=2147483648. Sono poco più di due miliardi. Naturalmente, è possibile implementare contatori con una capacità di cifre più alta, ma la velocità di calcolo sarà diverse volte più lenta.

Questo è il motivo per cui Dr.Trader non può eseguire l'intera libVMR riscritta in R - troppi calcoli e mangia molta memoria.

 
Yury Reshetov:

Dopo 10 ci può essere un overflow di tipo int, e ha solo 32 bit, cioè si adatta a numeri senza un overflow non superiore a 2^32=2147483648. Sono poco più di due miliardi. Naturalmente, è possibile scrivere contatori con una profondità di bit maggiore, ma la velocità di calcolo sarà diverse volte più lenta.

HMM... È meglio non ridurre la velocità... Nelle versioni precedenti era una vera seccatura. ok, 10 quindi 10, ora è meglio migliorare la qualità degli ingressi e penso che sia possibile lavorare....
 
Yury Reshetov:

Dopo 10 ci può essere un overflow di tipo int, e ha solo 32 bit, cioè prima dell'overflow contiene numeri che non superano il valore 2^32=2147483648. Sono poco più di due miliardi. Naturalmente, è possibile scrivere contatori con una capacità di cifre più alta, ma la velocità dei calcoli diminuirà di diverse volte.

Questo è il motivo per cui il Dr. Trader non poteva eseguire l'intera libVMR riscritta su R - troppi calcoli e troppo dispendiosi in termini di memoria.

Lasci che le racconti una storia: mi ricordo che le ho chiesto dei calcoli in parallelo. Per poter contare più ingressi sul coprocessore matematico. È arrivato uno stronzo che ha riscritto LibVMRx in C++ e l'ha messo in parallelo in qualche modo. Aveva un computer molto potente e ci ha messo circa 40 minuti per elaborare 8 colonne, come ha detto. Non mi ha nemmeno mandato il programma o altro, mi ha solo afflitto con scuse e stronzate. Anche se gli ho fornito tutti i dati ed era pronto a condividere il sistema e le considerazioni per costruire il modello. Ma si è rifiutato di aiutarmi. Ci sono persone così. Soffia dentro e fuori ....
 
Mihail Marchukajtes:
Lascia che ti racconti una storia - mi ricordo, ti ho chiesto dei calcoli in parallelo. Per poter contare più ingressi sul coprocessore matematico. È arrivato uno stronzo che ha riscritto LibVMRx in C++ e l'ha messo in parallelo in qualche modo. Aveva un computer molto potente e ci ha messo circa 40 minuti per elaborare 8 colonne, come ha detto. Non mi ha nemmeno mandato il programma o altro, mi ha solo afflitto con scuse e stronzate. Anche se gli ho fornito tutti i dati ed era pronto a condividere il sistema e le considerazioni per costruire il modello. Ma si è rifiutato di aiutarmi. Ci sono persone così. Soffia dentro e fuori ....

Ho messo tutto in parallelo nell'ultima versione 6.01. Non funziona nient'altro. Se fosse stato possibile, l'avrei messo in parallelo ancora un po'. Lo facevo per me stesso, cioè ho bisogno che tutto sia calcolato più velocemente.


Ora ho inventato un algoritmo per calcolare i predittori deboli in modo da poterli rimuovere. Ci vorrà molto tempo per calcolarlo, ma ne varrà la pena, perché invece di un predittore debole, potrete sostituirlo con uno più forte. Oppure sbarazzarsi dei predittori deboli, aumentando sia la velocità di calcolo che la capacità di generalizzazione. Perché, per il trading, è necessario eseguire costantemente un ricalcolo dei modelli non appena il mercato inizia ad andare a tradimento. E questo è il modo in cui il mercato è, non appena gli altri trader si fondono, cambiano le loro strategie e tu devi adattarti di nuovo a loro.

 
Yury Reshetov:

Ho messo tutto in parallelo nell'ultima versione 6.01. Non funziona nient'altro. Se fosse stato possibile, l'avrei messo in parallelo ancora un po'. Lo stavo facendo per me stesso, cioè ho bisogno di calcolare tutto più velocemente.

Ora ho trovato un algoritmo, come calcolare i predittori deboli, in modo che possano essere rimossi. Ci vorrà molto tempo per calcolarlo, ma ne varrà la pena, perché invece di un predittore debole, possiamo sostituirlo con uno più forte. Oppure sbarazzarsi dei predittori deboli, aumentando sia la velocità di calcolo che la capacità di generalizzazione. Perché, per il trading, è necessario eseguire costantemente un ricalcolo dei modelli non appena il mercato inizia ad andare a tradimento. Questo è il modo in cui il mercato è, non appena gli altri commercianti si fondono, cambiano le loro strategie e tu devi adattarti di nuovo a loro.

Hai ragione. Non vedo l'ora di vedere i cambiamenti. Sono dalla tua stessa parte. Penso anche che il mercato cambia costantemente e bisogna adattarsi ad esso ogni volta che succede qualcosa o esce una notizia. E non cercare un graal in 5 anni, come fanno alcuni qui. Questa è utopia, ma sono già esausto di spiegarlo...
 
HMM... Guarda, ora ho addestrato il modello ed entrambi i modelli hanno gli stessi valori di livello di generalizzazione, cioè entrambi i modelli hanno lo stesso segmento di mercato segato. Penso che questa sia la chiave per scegliere il modello appropriato. Continuo ad allenarmi, a cercare input, ecc.
 
A proposito, libero un core nel processo di ottimizzazione, altrimenti diventa impossibile lavorare sul computer....
 
Mihail Marchukajtes:
Questo è tutto. Non vedo l'ora di vedere i cambiamenti.

È possibile passare manualmente attraverso i predittori uno per uno, ma è lungo e doloroso, sebbene sia anche la direzione giusta. Avete bisogno di molto tempo, ma dovrebbe essere automatico e in un tempo ragionevole e non così straziante.

Mihail Marchukajtes:


Siamo dalla stessa parte della barricata, anch'io credo che il mercato sia in continuo cambiamento e deve essere regolato ogni volta che succede qualcosa o vengono rilasciate notizie. Non cercate un graal in 5 anni, come fanno alcune persone. Questa è utopia, ma sono già esausto di spiegarlo...

È possibile trovare dei graal deboli di lunga durata. Ne ho avuti alcuni. Ma il mio profitto è al limite del fallo, il mio profitto è da un centesimo anche se ho un buon deposito.

Teoricamente è possibile trovare un forte graal di lunga durata, ma la probabilità è probabilmente zero virgola zero?

Il modo più sicuro:

  1. Selezionare correttamente i predittori più forti
  2. Modelli a breve raggio con aggiustamenti sistematici al variare del mercato. Ma è meglio fare tutte queste cose in modo completamente automatico, o almeno mantenere l'intervento manuale al minimo.
 
Mihail Marchukajtes:
HM... Guarda, ora ho addestrato il modello, entrambi i modelli hanno ottenuto gli stessi valori di livello di generalizzazione, cioè il segmento di mercato è segato allo stesso modo da entrambi i modelli. Penso che questa sia la chiave per scegliere il modello appropriato. Continuo ad allenarmi, a cercare input, ecc.

Guarda nel file java. Se ci sono linee "Variabile ottenuta sotto riduzione", indicano predittori deboli. Tali predittori sono esclusi dal codice del modello - non sono calcolati da nessuna parte nel codice del classificatore binario.

È vero, se tutti i predittori sono approssimativamente uguali, tali linee non appaiono.

Ecco un esempio (evidenziato in grassetto). Il sesto predittore v5 (contato da zero) - la settima colonna in CSV può essere sostituita da qualche altro più forte:

double getBinaryClassificator1(double v0, double v1, double v2, double v3, double v4, double v5) {
   double x0 = 2.0 * (v0 + 1.0) / 2.0 - 1.0;
   double x1 = 2.0 * (v1 + 1.0) / 2.0 - 1.0;
   double x2 = 2.0 * (v2 + 1.0) / 2.0 - 1.0;
   double x3 = 2.0 * (v3 + 1.0) / 2.0 - 1.0;
   double x4 = 2.0 * (v4 + 1.0) / 2.0 - 1.0;
//Variable v5 got under reduction
   double decision = -0.23641879194630872 -0.10890380313199105 * x2
 -0.14546040268456376 * x0 * x2
 + 0.07270693512304251 * x1 * x2
 -0.07182997762863534 * x3
 -0.07383982102908278 * x0 * x1 * x2 * x3
 -0.4362541387024608 * x4
   ;
   return decision;

}
 
Yury Reshetov:

Guarda nel file java. Se ci sono linee "Variabile ottenuta sotto riduzione", indicano predittori deboli. Tali predittori sono esclusi dal codice del modello - non sono calcolati da nessuna parte nel codice del classificatore binario.

È vero, se tutti i predittori sono approssimativamente uguali, tali linee non appaiono.

Ecco un esempio (evidenziato in grassetto). Il sesto predittore v5 (contato da zero) - la settima colonna nel CSV può essere sostituita da qualche altro più forte:

doppio getBinaryClassificator1(doppio v0, doppio v1, doppio v2, doppio v3, doppio v4, doppio v5) {
doppio x0 = 2,0 * (v0 + 1,0) / 2,0 - 1,0;
doppio x1 = 2,0 * (v1 + 1,0) / 2,0 - 1,0;
doppio x2 = 2,0 * (v2 + 1,0) / 2,0 - 1,0;
doppio x3 = 2,0 * (v3 + 1,0) / 2,0 - 1,0;
doppio x4 = 2,0 * (v4 + 1,0) / 2,0 - 1,0;
/La variabile v5 ha subito una riduzione
doppia decisione = -0.23641879194630872 -0.10890380313199105 * x2
-0.14546040268456376 * x0 * x2
+ 0,07270693512304251 * x1 * x2
-0.07182997762863534 * x3
-0,07383982102908278 * x0 * x1 * x2 * x3
-0.4362541387024608 * x4
;
decisione di ritorno;

}

Lo so, è già un anno che uso la vostra biblioteca. Queste cose mi sono chiare..... Non ho tali stringhe, tutti i predicati sono coinvolti.....