Discusión sobre el artículo "Utilización del modelo de aprendizaje automático CatBoost como filtro para estrategias de seguimiento de tendencias"

 

Artículo publicado Utilización del modelo de aprendizaje automático CatBoost como filtro para estrategias de seguimiento de tendencias:

CatBoost es un potente modelo de aprendizaje automático basado en árboles que se especializa en la toma de decisiones basada en características estacionarias. Otros modelos basados en árboles, como XGBoost y Random Forest, comparten características similares en cuanto a su solidez, capacidad para manejar patrones complejos e interpretabilidad. Estos modelos tienen una amplia gama de usos, desde el análisis de características hasta la gestión de riesgos. En este artículo, vamos a explicar el procedimiento para utilizar un modelo CatBoost entrenado como filtro para una estrategia clásica de seguimiento de tendencias con cruce de medias móviles.

La regla general en la industria para desarrollar una estrategia CTA (Commodity Trading Advisor) es que es mejor tener una explicación clara e intuitiva detrás de cada idea de estrategia. Básicamente, así es como la gente piensa en las ideas de estrategia en primer lugar, sin mencionar que también evita el sobreajuste. Esta sugerencia es subordinada incluso cuando se trabaja con modelos de aprendizaje automático. Intentaremos explicar la intuición que hay detrás de esta idea.

Por qué esto podría funcionar:

El modelo CatBoost crea árboles de decisión que toman las entradas de características y generan la probabilidad de cada resultado. En este caso, solo estamos entrenando con resultados binarios (1 es ganar, 0 es perder). El modelo modificará las reglas de los árboles de decisión para minimizar la función de pérdida en el conjunto de datos de entrenamiento. Si el modelo muestra un cierto nivel de previsibilidad en los resultados de las pruebas fuera de la muestra, podríamos considerar su uso para filtrar las operaciones que tienen pocas probabilidades de éxito, lo que a su vez podría aumentar la rentabilidad general.

Una expectativa realista para los operadores minoristas como usted y yo es que los modelos que entrenamos no serán como oráculos, sino solo ligeramente mejores que un paseo aleatorio. There are plenty of ways to improve the model precision, which I will discuss later, but nevertheless it's a great endeavor for slight improvement.

Modelo ML de CatBoost

Autor: Zhuo Kai Chen

 

Desde mi propia experiencia, sólo puedo añadir que entrenar modelos con datos de más de tres meses no aporta nada a la ecuación. El modelo debe ser capaz de captar los patrones actuales y centrarse en ellos. Hay que mantenerse cerca del mercado.

 
Krzysztof Tadeusz Kanacki #:

Por experiencia propia, sólo puedo añadir que entrenar modelos con datos de más de tres meses no aporta nada a la ecuación. El modelo debe ser capaz de captar las pautas actuales y centrarse en ellas. Hay que mantenerse cerca del mercado.

Su argumento es absolutamente válido. En mi experiencia, también encuentro que utilizar datos recientes facilita el entrenamiento de un modelo que produce mejores resultados. Sin embargo, el principal problema es que este enfoque limita el tamaño del conjunto de entrenamiento, a menos que se utilice un marco temporal muy corto. Las estrategias de seguimiento de tendencias funcionan mejor en plazos más largos que en plazos más cortos, según los estudios académicos. Por lo tanto, es posible que se entrene un modelo con mayor capacidad de predicción pero con menos muestras de entrenamiento, lo que es propenso al sobreajuste, y la estrategia original tiene menos ventaja para empezar. Hay un equilibrio entre estos factores, por no mencionar que los diferenciales también influyen.

Mi solución consiste en asignar más peso a los datos recientes del conjunto de entrenamiento, pero conservando los datos más antiguos. De este modo, podemos adaptarnos a las nuevas pautas tras un cambio de régimen, sin dejar de beneficiarnos de las pautas antiguas que han permanecido constantes a lo largo de los años. Sin embargo, como he mencionado antes, siempre hay compensaciones en estas decisiones.

 
Zhuo Kai Chen #:

Su argumento es absolutamente válido. En mi experiencia, también encuentro que utilizar datos recientes facilita el entrenamiento de un modelo que produce mejores resultados. Sin embargo, el principal problema es que este enfoque limita el tamaño del conjunto de entrenamiento a menos que se utilice un marco temporal muy corto. Las estrategias de seguimiento de tendencias funcionan mejor en plazos más largos que en plazos más cortos, según los estudios académicos. Por lo tanto, es posible que se entrene un modelo con mayor capacidad de predicción pero con menos muestras de entrenamiento, lo que es propenso al sobreajuste, y la estrategia original tiene menos ventaja para empezar. Existe un equilibrio entre estos factores, por no mencionar que los diferenciales también influyen.

Mi solución consiste en asignar más peso a los datos recientes del conjunto de entrenamiento, pero conservando los datos más antiguos. De este modo, podemos adaptarnos a las nuevas pautas tras un cambio de régimen, sin dejar de beneficiarnos de las pautas antiguas que han permanecido constantes a lo largo de los años. Sin embargo, como he mencionado antes, siempre hay compensaciones en estas decisiones.

Reajustar el modelo cada tres meses utilizando los datos de los tres últimos meses probablemente sería suficiente. Intentaré poner en práctica esta idea de la optimización continua del modelo más adelante. Gracias por la sugerencia.

 

Estoy tratando de seguir sus instrucciones y, lamentablemente, debido a la falta de detalle no soy capaz de continuar a través de la salida final debido a la falta de referencias de archivos y no hay enlaces de descarga

Me tomaré la molestia de enseñarle lo que le falta porque parece un buen proceso.

Te falta;

1. Un enlace directo a FileCSV.mqh que requiere pasar por el otro artículo para obtenerlo.

2. La declaración de todas las características maneja

3. Una explicación adecuada del proceso para crear o descargar los archivos

CatOnnx.mqh

"\Files\CatBoost_Momentum_test.onnx"

4. Enlaces directos e instrucciones relevantes sobre cómo instalar catboot usando pip o similar asegurándose de tener instaladas las dependencias necesarias para python. (no para mi pero otros necesitarán saberlo)

5. 5. Instrucciones para leer el CB2.ipynb instrucciones y flujo de trabajo.


En general, todo esto lleva a que el estudiante llegue a la mitad de su artículo y se quede buscando durante horas el proceso correcto para completar el tutorial y replicar sus resultados.

En general, le doy a este artículo un 4 de 10 por la información con puntos adicionales para su Estrategia Clásica de Seguimiento de Tendencias que está bien elaborada.

Por favor, edite el artículo para que sea más instructivo y paso a paso para que todos podamos aprender y seguir.


PS

¡recomendaciones sobre cómo esto podría ser adaptado a otras estrategias sería genial!

 
Benny Addams puntos adicionales para su Estrategia Clásica de Seguimiento de Tendencia que está bien elaborada.

Por favor, edite el artículo para ser más instructivo y paso a paso para que todos podamos aprender y seguir.


PS

Sería estupendo recibir recomendaciones sobre cómo adaptar esto a otras estrategias.

Gracias por los comentarios. Por desgracia, al final sólo describí brevemente los artículos pertinentes porque pensé que ocuparía demasiado espacio, y no incluí enlaces de descarga por cuestiones de derechos de autor. La mejor forma de conocer todos los detalles es consultar la fuente original. No obstante, creo que pasé por alto algunas instrucciones cuidadosas para mi código python y enlaces directos a instrucciones python aunque añadí comentarios para cada línea. Si tienes obstáculos específicos en tu propio proceso de implementación, puedes discutirlo aquí o agregarme al chat.

 
El CatOnnx.mqh llamado en el archivo ML-Momentum.mq5 es el mismo que el CatBoost.mqh que cité en este artículo. Perdón por causar confusiones en los nombres de los archivos.
Data Science and ML (Part 31): Using CatBoost AI Models for Trading
Data Science and ML (Part 31): Using CatBoost AI Models for Trading
  • www.mql5.com
CatBoost AI models have gained massive popularity recently among machine learning communities due to their predictive accuracy, efficiency, and robustness to scattered and difficult datasets. In this article, we are going to discuss in detail how to implement these types of models in an attempt to beat the forex market.
 
Zhuo Kai Chen #:
El CatOnnx.mqh llamado en el archivo ML-Momentum.mq5 es el mismo que el CatBoost.mqh que cité en este artículo, perdón por causar confusiones en los nombres de los archivos.

Gracias genial que me aclaren esto parece muy interesante, cuando vuelva a intentar completar la guía de este artículo guardaré algunas notas para abonarlas más adelante en el foro.

Si alguien más está interesado en la cría de gatos...

 

Hola. Estoy jugando con CatBoost y he llegado a un punto en el que una estrategia entrenada en (todos) los datos de 2024 produce más de un 300% de rentabilidad cuando se realiza una prueba retrospectiva (en MetaTrader) en 2024, pero funciona mal en otros años. ¿Alguien tiene experiencia con esto? Intuitivamente se siente como overfitting, pero incluso si entreno con iteraciones mucho más bajas (como 1k) obtengo el mismo resultado.

Estoy entrenando con ~40 - 50 características, en datos de minutos, así que algo así como 250.000 filas por año. El tamaño del archivo .cbm tiende a ser 1000 veces el número de iteraciones (por ejemplo, 1000 iteraciones = 1MB, 10.000 iteraciones = 10MB, y así sucesivamente). El backtesting en Metatrader me limita a unos 100.000 MB antes de que el backtester se detenga. Puedo hacer backtesting con C++ hasta un tamaño arbitrariamente alto pero mis rendimientos en metatrader vs C++ son salvajemente diferentes.

 
johnboy85 CatBoost y he llegado a un punto en el que una estrategia entrenada en (todos) los datos de 2024 produce más de un 300% de rentabilidad cuando se realiza una prueba retrospectiva (en MetaTrader) en 2024, pero funciona mal en otros años. ¿Alguien tiene experiencia con esto? Intuitivamente se siente como overfitting, pero incluso si entreno con iteraciones mucho más bajos (como 1k) obtengo el mismo resultado.

Estoy entrenando con ~40 - 50 características, en datos de minutos, así que algo así como 250.000 filas por año. El tamaño del archivo .cbm tiende a ser 1000 veces el número de iteraciones (por ejemplo, 1000 iteraciones = 1MB, 10.000 iteraciones = 10MB, y así sucesivamente). El backtesting en Metatrader me limita a unos 100.000 MB antes de que el backtester se detenga. Puedo hacer backtesting con C++ hasta un tamaño arbitrariamente alto pero mis rendimientos en metatrader vs C++ son salvajemente diferentes.

Hola a todos. En primer lugar, Metatrader backtester tiene en cuenta de los diferenciales y comisiones, lo que puede explicar por qué es diferente de sus resultados en C ++. En segundo lugar, en mi opinión, el aprendizaje automático es esencialmente un proceso de sobreajuste. Hay muchas formas de reducir el sobreajuste, como el ensemble, el abandono y la ingeniería de características. Pero al fin y al cabo, dentro de la muestra siempre es mucho mejor que fuera de la muestra. El uso del aprendizaje automático para predecir series temporales financieras es un problema antiguo. Si usted está tratando de predecir el rendimiento (estoy asumiendo cuz usted está diciendo 250k filas), cuz ruido es de esperar cuz usted y otros jugadores tienen el mismo objetivo de predicción. Mientras que lo que he introducido en este artículo es un método de metalabeling donde hay menos ruido cuz su objetivo de predicción se limita a su propia estrategia, pero tendría menos muestras para aprender, haciendo restricción complejidad aún más estrictas. Yo diría que reduzcas tus expectativas con el método ML y explores formas de reducir el sobreajuste.

 

Gracias por responder tan rápidamente a un tema que tiene más de 6 meses. Aquí hay mucho en lo que pensar. Me estoy acostumbrando al enorme espacio de parámetros e intento encontrar formas de reducir el sobreajuste.

Gracias de nuevo.