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

 
СанСаныч Фоменко #:

I quantitativi sono probabilità. Pertanto, rimuoviamo/sostituiamo i dati la cui probabilità di rientrare nell'intervallo meno dell'1%/più del 99% o altre quantità. Non possiamo tagliare le quantità - abbiamo distribuzioni oblique e a coda.

Scrivono che il valore di sostituzione è meglio considerato come una previsione di quella quantità da parte del MOE. Ma questo mi sembra un po' eccessivo.

Il punto è che spesso è difficile determinare la distribuzione sull'automa.

Spesso si suppone che sia lognormale, ma è solo a causa degli outlier: non c'è alcuna logica che lo giustifichi.

E se si prende un quantile, significa tagliare l'intero intervallo, il che non è sufficiente a rimuovere i valori anomali.


Nel secondo campione ho ottenuto un risultato molto strano: l'apprendimento è stato rapido senza alcuna manipolazione, ma dopo aver rimosso le righe con gli outlier l'effetto dell'apprendimento è diventato quasi pari a zero.

Ora ho attivato il tasso di apprendimento lento - lo metterò per tutta la notte - per vedere se darà qualche risultato.

Altrimenti, risulta che l'intero processo di apprendimento si basa sulla memorizzazione degli outlier, almeno con i predittori pubblici che utilizzo nell'esperimento.

 
Aleksey Vyazmikin #:

Il punto è che spesso è difficile determinare la distribuzione su un automatico.

Spesso si suppone che sia lognormale, ma ciò è dovuto solo alle emissioni: non c'è alcuna logica che lo giustifichi.

E se si prende un quantile, significa tagliare l'intero intervallo, il che non è sufficiente per eliminare i valori anomali.


Nel secondo campione ho ottenuto un risultato molto strano: l'apprendimento è stato rapido senza alcuna manipolazione, ma dopo aver rimosso le righe con i valori anomali, l'effetto dell'apprendimento è diventato quasi pari a zero.

Ora ho attivato il tasso di apprendimento lento - lo metterò in funzione durante la notte - e vedrò se darà qualche risultato.

In caso contrario, risulta che l'intero processo di apprendimento si basa sulla memorizzazione degli outlier, almeno con i predittori pubblici che utilizzo nell'esperimento.

Ho eseguito il modello fino a EA in inverno (ho postato i risultati su questo thread). Ho avuto il risultato opposto: gli errori di classificazione, e sono stati meno del 20%, sono stati catturati dagli outlier. Di conseguenza, l'80% delle previsioni corrette sono state annullate da questi errori.

Una cosa mi è chiara: gli outlier devono essere eliminati. E il vero risultato del modello è senza outlier.

 
СанСаныч Фоменко #:

Ho aggiornato il modello a EA in inverno (ho postato i risultati su questo thread). Ho avuto il risultato opposto: gli errori di classificazione, che erano inferiori al 20%, sono stati catturati dagli outlier. Di conseguenza, l'80% delle previsioni corrette sono state annullate da questi errori.

Una cosa mi è chiara: gli outlier devono essere eliminati. E il vero risultato del modello è senza outlier.

Ai margini c'è chiaramente uno spostamento di probabilità verso qualche classe - e questo non è un male in sé, è un male che queste osservazioni non siano sufficienti per trarre conclusioni statisticamente significative.

Quindi è normale che uno abbia più zeri negli outlier e un altro più uno - dipende dall'insieme dei predittori.

Succede anche che se un outlier viene osservato da due lati, un lato è più vicino agli zeri e l'altro agli uni.

 
Aleksey Vyazmikin #:

Dove posso vedere il codice finale?

Ho postato tutto in questo thread.

 
Rorschach #:

I sorgenti sono aperti, potete dare un'occhiata. Funzione per il calcolo della correlazione, sulla destra c'è una scritta [source], dopo averla cliccata si accede al codice. Ci interessano le righe 2885-2907. Nella riga 2889 viene utilizzata la covarianza, dopo aver fatto clic su cov, tutte le menzioni di cov nel codice appariranno sulla destra, dopo aver fatto clic sulla riga con def cov... si passa alla funzione di covarianza e così via. MQL è un linguaggio simile al C, tutti i linguaggi simili al C sono simili al 90%, si possono capire C#, Java, Python, JavaScript senza problemi.

Grazie. Mi sono un po' raffreddato sull'algoritmizzazione, ci darò un'occhiata quando mi tornerà l'entusiasmo.

 
fxsaber #:

Credo di aver postato tutto in questo thread.

Naturalmente ho letto, ma secondo la cronologia Forester ha trovato qualche errore, tu hai concordato con esso, poi qualche parte del codice è stata corretta.

E alla fine non ho visto la versione completa del codice finale. Non voglio dire che tu sia obbligato a postare il codice, ho solo chiesto...

 
Aleksey Vyazmikin #:

L'ho letto, naturalmente, ma secondo la cronologia Forester ha trovato un errore, tu hai concordato con esso, poi qualche parte del codice è stata corretta.

E alla fine non ho visto la versione completa del codice finale qui. Non voglio dire che tu sia obbligato a pubblicare il codice, ho solo chiesto...

Veloce e riga per riga (corretto).

Forum sul trading, sui sistemi di trading automatizzati e sulla verifica delle strategie di trading.

Machine learning nel trading: teoria, modelli, pratica e algo-trading

fxsaber, 2023.10.01 09:38

#include <Math\Alglib\statistics.mqh> // https://www.mql5.com/ru/code/11077

const matrix<double> CorrMatrix( const matrix<double> &Matrix )
{
  matrix<double> Res = {};
  
  const CMatrixDouble MatrixIn(Matrix);
  CMatrixDouble MatrixOut;  

  if (CBaseStat::PearsonCorrM(MatrixIn, MatrixIn.Rows(), MatrixIn.Cols(), MatrixOut)) // https://www.mql5.com/ru/code/11077
    Res = MatrixOut.ToMatrix();
  
  return(Res);
}

const matrix<double> CorrMatrix2( const matrix<double> &Matrix )
{
  matrix<double> Res = {};
  Res.Init(Matrix.Cols(), Matrix.Cols());
  
  const CMatrixDouble MatrixIn(Matrix);
  CMatrixDouble Vector(Matrix);
  CMatrixDouble Corr;

  for (int i = 0; i < (int)Matrix.Cols(); i++)
  {
    if (i)
      Vector.SwapCols(0, i);
    
    CBaseStat::PearsonCorrM2(Vector, MatrixIn, MatrixIn.Rows(), 1, MatrixIn.Cols(), Corr);
      
    Res.Col(Corr.Row(0), i);
  }
  
  return(Res);
}
 
fxsaber #:

Rapidamente e riga per riga (corretta).

Grazie!

 
Maxim Dmitrievsky #:

L'ho messo da parte per ora, i risultati non sono migliori di MO, anche se MO è anche zoppo in termini di fluidità del bilanciamento.

5 minuti, metà allenamento


non è altro che un'analogia del graal 4-rosh con un breve arresto.

 
Renat Akhtyamov #:

non è altro che un'analogia tra un graal a 4 rosh e uno short stop.

l'analogia del vostro hedge fund con un saldo negativo.