Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 74

 
Mihail Marchukajtes:
Yuri, decidí usar el santo de los santos y hacer un grial, pero me sale una inscripción que dice que los valores predichos no pueden ser más de 10. ¿Es una restricción deliberada o un límite del algoritmo ???? Porque más de 10 es extremadamente relevante así que ....

Después de 10 puede haber un desbordamiento de tipo int, y sólo tiene 32 bits, es decir, antes del desbordamiento puede contener números que no superen el valor 2^32=2147483648. Son poco más de dos mil millones. Por supuesto, se pueden implementar contadores con mayor capacidad de dígitos, pero la velocidad de cálculo será varias veces más lenta.

Por eso Dr.Trader no pudo ejecutar la libVMR completa reescrita en R - demasiados cálculos y consume mucha memoria.

 
Yury Reshetov:

Después de 10 puede haber un desbordamiento de tipo int, y sólo tiene 32 bits, es decir, se ajusta a los números sin un desbordamiento no superior a 2^32=2147483648. Son poco más de dos mil millones. Por supuesto, se pueden escribir contadores con mayor profundidad de bits, pero la velocidad de cálculo será varias veces más lenta.

HMM... Es mejor no reducir la velocidad... En las versiones anteriores era una verdadera molestia. ok, 10 así 10, ahora es mejor mejorar la calidad de las entradas y creo que es posible trabajar....
 
Yury Reshetov:

Después de 10 puede haber un desbordamiento de tipo int, y sólo tiene 32 bits, es decir, antes del desbordamiento contiene números que no superan el valor 2^32=2147483648. Son poco más de dos mil millones. Por supuesto, se pueden escribir contadores con mayor capacidad de dígitos, pero la velocidad de los cálculos caerá varias veces.

Por eso el Dr. Trader no pudo ejecutar la libVMR completa reescrita en R - demasiados cálculos y demasiado consumo de memoria.

Te contaré una historia. Recuerdo que te pregunté sobre los cálculos en paralelo. Para poder contar más entradas en el coprocesador matemático. Sólo vino un imbécil que reescribió LibVMRx en C++ y lo puso en paralelo de alguna manera. Tenía un ordenador muy potente y tardó unos 40 minutos en procesar 8 columnas, según dijo. Ni siquiera me mandó el programa ni nada, sólo me plagó de excusas y tonterías. Aunque le he proporcionado todos los datos y estaba dispuesto a compartir el sistema y las consideraciones para construir el modelo. Pero se negó a ayudarme. Hay gente así. Suelta y mete ....
 
Mihail Marchukajtes:
Déjeme contarle una anécdota: recuerdo que le pregunté por los cálculos paralelos. Para poder contar más entradas en el coprocesador matemático. Sólo vino un imbécil que reescribió LibVMRx en C++ y lo puso en paralelo de alguna manera. Tenía un ordenador muy potente y tardó unos 40 minutos en procesar 8 columnas, según dijo. Ni siquiera me mandó el programa ni nada, sólo me plagó de excusas y tonterías. Aunque le he proporcionado todos los datos y estaba dispuesto a compartir el sistema y las consideraciones para construir el modelo. Pero se negó a ayudarme. Hay gente así. Suelta y mete ....

Lo he puesto en paralelo con la última versión 6.01. Nada más funciona. Si fuera posible, lo habría paralizado un poco más. Lo hacía por mí, es decir, necesito que todo se calcule más rápido.


Ahora he ideado un algoritmo para calcular los predictores débiles y así poder eliminarlos. Llevará mucho tiempo calcularlo, pero merecerá la pena, porque en lugar de un predictor débil, podrás sustituirlo por uno más fuerte. O eliminar los predictores débiles, aumentando tanto la velocidad de cálculo como la capacidad de generalización. Porque, para el trading, es necesario recalcular constantemente los modelos en cuanto el mercado empieza a hacer trampas. Y así es el mercado, en cuanto se fusionan otros operadores, cambian sus estrategias y tienes que volver a adaptarte a ellas.

 
Yury Reshetov:

Lo he puesto en paralelo con la última versión 6.01. Nada más funciona. Si fuera posible, lo habría paralizado un poco más. Lo hacía por mí mismo, es decir, necesito calcularlo todo más rápido.

Ahora he ideado un algoritmo, cómo calcular los predictores débiles, para que puedan ser eliminados. Llevará mucho tiempo calcularlo, pero merecerá la pena, porque en lugar de un predictor débil, podemos sustituirlo por otros más fuertes. O eliminar los predictores débiles, aumentando tanto la velocidad de cálculo como la capacidad de generalización. Porque, para el trading, es necesario recalcular constantemente los modelos en cuanto el mercado empieza a hacer trampas. Así es el mercado, en cuanto los demás operadores se fusionan, cambian sus estrategias y tienes que volver a adaptarte a ellas.

Has dado en el clavo. Estoy deseando ver los cambios. Estoy en el mismo bando que tú, también creo que el mercado cambia constantemente y hay que ajustarse a él cada vez que pasa algo o salen noticias. Y no buscar un grial en 5 años, como hacen algunos aquí. Esto es una utopía, pero ya estoy agotado de explicarlo...
 
HMM... Mira, ahora he entrenado el modelo, ambos modelos tienen los mismos valores de nivel de generalización, es decir, ambos modelos vieron el mismo segmento de mercado. Creo que esta es la clave para elegir el modelo adecuado. Sigo formándome, buscando aportaciones, etc.
 
Por cierto, libero un núcleo en el proceso de optimización, de lo contrario se hace imposible trabajar en el ordenador....
 
Mihail Marchukajtes:
Eso es todo. Estoy deseando ver los cambios.

Es posible recorrer manualmente los predictores uno por uno, pero es largo y doloroso, aunque también es la dirección correcta. Necesita mucho tiempo, pero debe ser automático y en un tiempo razonable y no tan insoportable.

Mihail Marchukajtes:


Estamos en el mismo lado de la valla, yo también creo que el mercado está en constante cambio y hay que ajustarlo cada vez que pasa algo o se publican noticias. No busques un grial en 5 años, como hacen algunos. Esto es una utopía, pero ya estoy agotado de explicarlo...

Es posible encontrar griales débiles de larga duración. Tuve algunos de ellos. Pero mi ganancia está al borde de la falta, mi ganancia es de un centavo aunque tenga un buen depósito.

Teóricamente es posible encontrar un grial fuerte de larga duración, pero la probabilidad es probablemente cero punto cero...

La forma más segura:

  1. Seleccionar correctamente los predictores más potentes
  2. Modelos de corto alcance con ajustes sistemáticos según la evolución del mercado. Pero es mejor hacer todo esto en automático, o al menos mantener la intervención manual al mínimo.
 
Mihail Marchukajtes:
HM... Mira, ahora he entrenado el modelo, ambos modelos obtuvieron los mismos valores de nivel de generalización, es decir, el segmento de mercado es aserrado de la misma manera por ambos modelos. Creo que esta es la clave para elegir el modelo adecuado. Sigo formándome, buscando aportaciones, etc.

Busca en el archivo java. Si hay líneas "La variable se redujo", indican predictores débiles. Dichos predictores están excluidos del código del modelo - no se calculan en ninguna parte del código del clasificador binario.

Es cierto que si todos los predictores son aproximadamente iguales, no aparecen estas líneas.

He aquí un ejemplo (resaltado en negrita). El sexto predictor v5 (contado desde cero) - la séptima columna en el CSV puede ser sustituida por alguna otra más fuerte:

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:

Busca en el archivo java. Si hay líneas "La variable se redujo", indican predictores débiles. Dichos predictores están excluidos del código del modelo - no se calculan en ninguna parte del código del clasificador binario.

Es cierto que si todos los predictores son aproximadamente iguales, no aparecen estas líneas.

He aquí un ejemplo (resaltado en negrita). El sexto predictor v5 (contado desde cero) - la séptima columna en el CSV puede ser reemplazada por alguna otra más fuerte:

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 tiene bajo reducción
doble decisión = -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
;
decisión de retorno;

}

Lo sé, ya llevo un año usando su biblioteca. Estas cosas están claras para mí ..... No tengo tales cadenas, todos los predicados están involucrados.....