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

 
Aleksey Vyazmikin:

Tengo 3 clases, es decir, el árbol tiene señal para comprar, vender y esperar, ahora estoy experimentando con catbust y he simplificado los objetivos para que se compriman en una sola clase...

No sé nada sobre las clases ctree y cnode, así como sobre la POO en general - no soy muy bueno programando, así que difícilmente se puede entender el código de las clases sin un programador...

Es más una cuestión de cómo construirlos y por qué. Puedes ramificarlos a través de la genética en el optimizador también, pero no se verá como el tuyo. Más bien, será similar a un árbol de algoritmos que se va optimizando y que se van haciendo más complejos por sí mismos, como en capas... cuando se alcanza el óptimo, vamos a cribar los algoritmos innecesarios en el optimizador. Es sólo una manera, no estoy seguro de que funcione.

 
Maxim Dmitrievsky:

Sí, es más una cuestión de cómo construirlos y por qué. Es posible ramificarlos a través de la genética en el optimizador, pero no será como el tuyo. Más bien, será similar a un árbol de algoritmos, que se optimiza, y como que capa por capa se vuelven más complejos por sí mismos o algo así... cuando se alcanza el óptimo entonces se eliminan los innecesarios en el optimizador. Es una opción, pero no sé si funcionará.

Es difícil discutir cuando no se entiende la esencia del código...

He hecho un experimento sobre la rotación de los grupos de predictores - justo lo que estaba diciendo - algunos predictores son buenos para dividir una muestra e ir a la raíz pero estropean todo el panorama.

En total obtuve 9 grupos - los desglosé por lógica de predicción, aún más generalizada que la simple lógica. Obtenido 512 combinaciones de grupos, a continuación gráfico muestra la dispersión de los resultados en función de las combinaciones de grupos - para la selección utilizada métrica "Precisión", establecer que el otro día - ningún cambio, el objetivo columns_100, árbol 4 niveles, iterado sólo 1000 hizo.

La tabla muestra el resultado del conjunto con todos los predictores: 1710 unidades, así como los resultados máximos de 3511 y mínimos de 607.


A continuación, hice un cálculo con una pena, es decir, multiplicar el grupo de la bandera de bloqueo para el resultado financiero de la combinación, si el valor es cero (el grupo se utilizó), a continuación, fijar un resultado positivo para el grupo, pero si el valor no es cero, entonces el grupo está bloqueado - multiplicar el resultado por -1, y luego sumar los valores para cada grupo. La idea es que el grupo con más penalizaciones cuando se bloquea es el peor grupo en el conjunto, y ahí se pueden clasificar, por supuesto, para seguir investigando.

Este es el aspecto de la acumulación de indicadores en el gráfico

Por supuesto, la forma de las curvas depende del algoritmo de combinación, ya que todas tienen el mismo número de ceros y unos, el resultado final sigue siendo justo. Y es como sigue - en la tabla de abajo.



La tabla muestra que la desactivación de los grupos 1, 8 y 9 tiene un buen efecto en la mejora del resultado financiero.

Veamos la combinación del mejor resultado financiero



Y ahora la combinación del peor resultado



En general, el método de estimación ha funcionado: el mejor resultado tiene los grupos 3,4,5,7 desbloqueados y los peores bloqueados, mientras que la situación es casi calcada a la del peor caso.

Conclusión: este enfoque tiene derecho a la vida y puede identificar agresivamente los grupos de predicción con influencia negativa.

Hay dos maneras de proceder: o bien encontrar la razón de esos malos resultados dividiendo los grupos negativos o bien dividir los grupos positivos e intentar averiguar dónde están los predictores mágicos que dan buenos resultados. Por otro lado, puedes ir por dos caminos...

Las diez mejores y peores combinaciones:

Y tenemos que ver qué pasa con el otro objetivo...

Y aquí hay otro gráfico - que muestra claramente. Cuantas más decisiones buenas (Proc_All es un delta de decisiones buenas/erróneas en relación con todas las decisiones (ceros y unos en total)), mayor es el beneficio, especialmente si es la entrada correcta en una operación (Proc_1_V02) en relación con todas las entradas.


 
Aleksey Vyazmikin:

Entonces, ¿cómo se procesan estos predictores en producción para obtener señales?

 
Maxim Dmitrievsky:

Entonces, ¿cómo se procesan estos predictores en el proceso de producción para obtener señales?

Todavía no tengo mucho tiempo para la producción (comercio real), pero estoy planeando emparejar modelos y construir andamios a partir de ellos, la siguiente etapa, pero todavía no puedo averiguar cómo automatizar este proceso...

Los predictores en su forma final se obtienen en Expert Advisor, por lo que es fácil elegirlos para utilizarlos.
 
Maxim Dmitrievsky:

ok. buena suerte ) si montas el mt y katbust, escribe un artículo :)

justo hoy estaba haciendo un trabajo de cerebrito... Modificaciones en el algo, montañas cada vez más altas, montañas cada vez más empinadas... vaya que vale la pena usar un lenguaje de bajo nivel

Los últimos 3 meses de trien, el resto funcionó hasta principios de 2018, 15 min.

Me pregunto si debería hacer un seguimiento y relajarme... aunque todavía tengo mucho trabajo que hacer. Y cometí errores infantiles, uno de los... arrays estaba girado al revés originalmente (como las series) y estaba entrenando todo el tiempo en fichas invertidas, preocupado porque estaba aprendiendo mal.

Por supuesto, la cuestión de la implementación del modelo CatBoost en EA sigue abierta, por un lado es posible descargar el código en C++, que no entiendo en absoluto, por otro lado quiero obtener datos de la hoja para corregir el modelo, y para ello necesito intérprete, que no puedo escribir yo mismo...

Sí, usted tiene su propio enfoque: los modelos funcionan para distancias relativamente cortas, pero por qué no probar las condiciones reales de la historia, es decir, estudiar el pasado durante 3 meses y el comercio 1 para el futuro y luego coser los resultados, podría obtener un resultado interesante adecuado para la aplicación.

He cometido un error curioso: me olvidé de marcar un objetivo no entrenado en la muestra de entrenamiento como "no usar" y me alegré durante un par de minutos mientras evaluaba los resultados :)

 
Aleksey Vyazmikin:

Es difícil discutir si no entiendes el código...

Hice un experimento sobre la rotación de grupos de predictores - justo lo que dije - algunos predictores son buenos para dividir la muestra e ir a la raíz, pero estropean todo el panorama.

En total obtuve 9 grupos - los desglosé por lógica de predicción, aún más generalizada que la simple lógica. Obtenido 512 combinaciones de grupos, a continuación gráfico muestra la dispersión del resultado financiero en función de las combinaciones de grupos - para la selección utilizada métrica "Precisión", establecer que el otro día - ningún cambio, el objetivo columns_100, árbol 4 niveles, iterado sólo 1000 hizo.

La tabla muestra el resultado del conjunto con todos los predictores: 1710 unidades, así como los resultados máximos de 3511 y mínimos de 607.


A continuación, hice un cálculo con una pena, es decir, multiplicado el grupo de la bandera de bloqueo para el resultado financiero de la combinación, si el valor es cero (el grupo se utilizó), a continuación, fijar un resultado positivo para el grupo, pero si el valor no es cero, entonces el grupo está bloqueado - multiplicar el resultado por -1, y luego sumar los valores para cada grupo. La idea es que el grupo con más penalizaciones cuando se bloquea es el peor grupo en el conjunto, y ahí se pueden clasificar, por supuesto, para seguir investigando.

Este es el aspecto de la acumulación de indicadores en el gráfico

Por supuesto, la forma de las curvas depende del algoritmo de combinación, ya que todas tienen el mismo número de ceros y unos, el resultado final sigue siendo justo. Y es como sigue - en la tabla de abajo.



La tabla muestra que la desactivación de los grupos 1, 8 y 9 tiene un buen efecto en la mejora del resultado financiero.

Veamos la combinación del mejor resultado financiero



Y ahora la combinación del peor resultado



En general, el método de estimación ha funcionado: el mejor resultado tiene los grupos 3,4,5,7 desbloqueados y los peores bloqueados, mientras que la situación es casi calcada a la del peor caso.

Conclusión: este enfoque tiene derecho a la vida y puede identificar agresivamente los grupos de predicción con influencia negativa.

Hay dos maneras de proceder: o bien encontrar la razón de esos malos resultados dividiendo los grupos negativos o bien dividir los grupos positivos e intentar averiguar dónde están los predictores mágicos de los buenos resultados. Por otro lado, puedes ir por dos caminos...

Las diez mejores y peores combinaciones:

Y tenemos que ver qué pasa con el otro objetivo...

Y aquí hay otro gráfico - muestra claramente. cuantas más decisiones correctas (Proc_All - delta de decisiones correctas/incorrectas en relación con todas las decisiones (ceros y unos en total)), mayor es el beneficio, especialmente si son entradas comerciales correctas (Proc_1_V02) en relación con todas las entradas.


Es un infierno, es fácil de leer, pero el significado es imposible de comprender - un juego de palabras o una figura retórica está más allá de mi comprensión... Además de la sugerencia de Maksim para un artículo :)

En cuanto a la vinculación de EAs con la consola de Python, ya ofrecí mi propio motor que permite enviar y ejecutar bloques de código Python en tiempo real desde MQL, funciona incluso en el probador.

 
Ivan Negreshniy:

Es un poco tímido, se lee con facilidad, pero es imposible captar el significado - un juego de palabras o una figura retórica que me supera... Añado la sugerencia de Maksim sobre el artículo:)

En cuanto a la vinculación de los EAs a la consola de Python, ya propuse mi propio motor, que permite enviar y ejecutar bloques de código Python en tiempo real desde MQL, incluso en tester.

Y dices artículo - si no puedo expresar un simple pensamiento, entonces qué clase de artículo es este...

La cuestión es que al construir un árbol se utiliza el principio de codicia, que impide las relaciones lógicas de los predictores, inicialmente divididos en dos grandes grupos (entiendes cómo se construye un árbol de decisión, ¿verdad?), por lo que el modelo puede resultar mejor con menos predictores, tanto por esta razón, como por comprobar más combinaciones de predictores para el mismo intervalo de tiempo, pero esto en menor medida.

Haga una pregunta concreta si mi verborrea no le revela el significado de las palabras que tiene delante.

 
Aleksey Vyazmikin:

Y usted dice artículo - si no puedo expresar un simple pensamiento, qué clase de artículo es...

La cuestión es que en la construcción del árbol se utiliza el principio de avaricia, que impide la aparición de enlaces lógicos de predictores, inicialmente divididos en dos grandes grupos (entiendes cómo se construye un árbol de decisión, ¿verdad?), por lo que el modelo puede resultar mejor con menos predictores, tanto por esta razón como por comprobar más combinaciones de predictores en el mismo intervalo de tiempo, pero esto en menor medida.

Haz una pregunta concreta si mi verborrea no te revela el significado de las palabras que tienes delante.

Una expresión superficial de pensamientos en un foro y la publicación de un artículo son géneros diferentes.

En este hilo ya se ha discutido mucho, pero no hay ninguna utilidad ni resultados prácticos.

Y no tiene sentido discutir estas cuestiones, especialmente las fundamentales como la estructura de los árboles.

Es mejor escribir artículos y/o código - para comparar la eficacia de los modelos MI, las bibliotecas utilizadas, probar y supervisar los Asesores Expertos...

 
Ivan Negreshniy:

Hacer una breve expresión de pensamientos en un foro y publicar un artículo son géneros diferentes.

Sólo hay que ver esta rama, cuánto se ha discutido ya, pero no hay ningún efecto ni resultados prácticos.

Y no tiene sentido discutir estas cuestiones, especialmente las fundamentales como la estructura de los árboles.

Es mejor escribir artículos y/o código - para comparar la eficacia de los modelos de IG, las bibliotecas utilizadas, para probar y supervisar los Asesores Expertos...

Hay artículos en el MOE, donde todo está científicamente fundamentado, pero aquí más probablemente o los principiantes pueden hacer preguntas, o discutir algunas ideas para probar. En general, el artículo debe ser escrito cuando usted ya está seguro de los resultados de sus acciones, estoy tan lejos de esto.

 

Ayer escribí sobre los diferentes indicadores financieros cuando se utilizan diferentes grupos de predictores, diciendo que a veces no es racional poner todo en el mismo montón. En ese post utilicé un indicador como el beneficio para seleccionar la importancia de los grupos. Hoy, teniendo en cuenta la pregunta de Maxim, decidí mirar los resultados del modelo con una muestra de prueba (antes sólo había mirado la muestra de prueba), realicé las mismas manipulaciones y me decepcioné: la significación de los grupos había cambiado al revés, ¿cómo es posible? Cuando comparé los resultados de las dos muestras, quedó claro que el criterio del beneficio puro no era adecuado, por lo que tuve que buscar otras formas de resolver el problema.

Así que se me ocurrió una idea: ¿y si no me vuelvo codicioso y considero como un buen resultado la selección de aquellos modelos que dan un beneficio mayor en conjunto que el beneficio medio de los 512 modelos? Decidí buscar el mejor indicador que lo hiciera. La metodología es sencilla, utilizamos una muestra de prueba para determinar el valor medio del índice, luego comprobamos la variante de cada modelo -si es mayor que la media, será 1 y si es menor, será 0 (lo hice en Excel y los cálculos intermedios pueden ser útiles para entenderlo), luego hacemos lo mismo con la muestra de prueba y comparamos los resultados de ambas muestras, obteniendo así una estadística que muestra si el índice pertenece a un grupo (por encima de la media o por debajo). Después de eso también miré cuánto beneficio hace cada indicador en la muestra de prueba, dividiendo la muestra de prueba según si es mayor que el valor medio o menor que el valor medio, manteniendo el beneficio medio.

Obtuvimos un resultado interesante



La tabla muestra que la selección por beneficios (FinRez) dio el peor porcentaje de coincidencia entre las dos muestras, y además, al filtrar "por debajo de la media" (la columna con el número "0") este grupo incluyó más modelos rentables en la muestra de prueba que el grupo que mostró resultados en la prueba por encima de la media. Si lo piensas, tiene sentido, porque el entrenamiento se basa en la clasificación, no en la regresión, y si tengo un take profit establecido en la estrategia, entonces el stop loss es flotante, lo que distorsionará los resultados incluso con el mismo número de señales correctamente clasificadas. Si se observan los demás indicadores, su capacidad de predicción es mucho mayor, es decir, significa que la tendencia es, por término medio, la misma para el modelo, ya sea en la muestra de pruebas o en la de exámenes. Hasta ahora he decidido detenerme en el indicador Proc_1_V01 - es el porcentaje de unidades correctamente clasificadas del objetivo de todas las unidades de la muestra, este indicador muestra una tasa muy alta de la preservación de su relación en, digamos, el espacio bidimensional (por encima / debajo de la media) - 87,3%, que es muy bueno en mi opinión, además de la partición de la muestra de acuerdo a su método da aproximadamente el mismo beneficio promedio, e incluso ligeramente por encima del valor medio - 1488. Entonces resulta que tenemos más posibilidades de obtener un buen resultado financiero cuando seleccionamos los modelos por este indicador, ¿o me estoy perdiendo algo?

Hasta ahora, he decidido revisar los grupos teniendo en cuenta no FinRez(beneficio) sino Proc_1_V01, la metodología sigue siendo la misma y el resultado es bastante atractivo


La significación de los grupos mantuvo su consistencia en la muestra de prueba, así como en la muestra de prueba, con la excepción del grupo 7, en contraste con la situación con la definición del grupo por el indicador - el resultado financiero, proporcionado a continuación en la tabla.



La conclusión a la que llego aquí es que la estabilidad de los valores absolutos más importantes del beneficio, que puede ser más bien aleatoria.

También añadiré un gráfico en el que se puede ver cómo se distribuye el beneficio por muestras (reducidas al 100% en relación con la prueba y el examen, respectivamente) - en el lado izquierdo se filtran los indicadores, y en el lado derecho se toman, esto es si se aumenta el valor medio de Proc_1_V01 por el coeficiente de 1,25.

Y esto es para comparar - si hacemos la selección por ganancias - la densidad aumentó, pero también obtuvimos una cola gorda del 20% al -15%, lo que no es bueno.

En definitiva, tenemos que pensar en un indicador que defina la tendencia de la mejor manera posible.

Pero combinando los dos indicadores y añadiendo el filtrado por porcentaje de beneficio a Proc_1_V01 - >20% - porque hay demasiadas pérdidas en el menos, y <80% porque los valores extremos suelen ser accidentales, podemos obtener una imagen más satisfactoria.


Razón de la queja: