Discusión sobre el artículo "Pipelines en MQL5"

Artículo publicado Pipelines en MQL5:

En este artículo, analizaremos un paso clave en la preparación de datos para el aprendizaje automático que está cobrando cada vez más importancia: los pipelines de preprocesamiento de datos. En esencia, supone una secuencia optimizada de pasos de transformación de datos que preparan los datos brutos antes de introducirlos en un modelo. Por muy poco interesante que pueda parecer a primera vista para quienes no estén familiarizados con el tema, esta «estandarización de datos» no solo ahorra tiempo de entrenamiento y costos de ejecución, sino que contribuye en gran medida a garantizar una mejor generalización. En este artículo nos centraremos en algunas funciones de preprocesamiento de SCIKIT-LEARN y, aunque no vamos a utilizar el asistente de MQL5, volveremos a él en próximos artículos.

La biblioteca SCIKIT-LEARN de Python se ha convertido, a todos los efectos, en el estándar de referencia del sector en lo que respecta al preprocesamiento en el aprendizaje automático. Con tan solo escribir unas pocas líneas de código, los desarrolladores pueden aplicar un escalador estándar para centrar las características; un escalador min-max para comprimir las características dentro de un rango fijo; un escalador robusto, que sirve para reducir la influencia excesiva de los valores atípicos; o un codificador one-hot, que ayuda a convertir las características en representaciones binarias. Más aún, la clase pipeline de SCIKIT-LEARN permite encadenar estos pasos sin problemas, lo que significa que todos los conjuntos de datos que se pasan al modelo se benefician de las mismas secuencias de transformación. Este mecanismo modular «plug-and-play» ha propiciado una rápida adopción del aprendizaje automático en una amplia variedad de sectores.

Por el contrario, los desarrolladores de MQL5 se enfrentan a una realidad muy diferente. Aunque MQL5 es relativamente eficaz a la hora de gestionar datos de trading, sigue sin ofrecer de forma nativa métodos de preprocesamiento comparables a los de SCIKIT-LEARN. En cada transformación —ya sea escalado, codificación o incluso imputación de valores ausentes—, el código debe escribirse manualmente y, a menudo, de forma fragmentada. Esto no solo aumenta la probabilidad de que se produzcan errores, sino que también dificulta la reproducción de los resultados de las pruebas o el mantenimiento de la coherencia entre los datos de entrenamiento y los de prueba.

En mi opinión, la solución podría consistir en diseñar una clase de pipeline de preprocesamiento en MQL5 que emule esta filosofía de SCIKIT-LEARN. Si logramos implementar módulos reutilizables como CStandardScaler, CMinMaxScaler, CRobustScaler y COneHotEncoder, podríamos encadenar un pipeline de preprocesamiento en un contenedor. Esta estructura garantizaría que los datos brutos de las series temporales financieras se sometieran a un proceso de preparación sistemático antes de introducirse en los modelos de aprendizaje profundo. Esto sería así tanto si los modelos están programados de forma nativa en MQL5 como si se importan a través de ONNX. Utilizando esta estructura, los desarrolladores de MQL5 pueden adoptar en MQL5 un flujo de trabajo de Python que les resulta familiar, lo que permite una experimentación más limpia, un desarrollo más rápido y, presumiblemente, sistemas de IA más fiables.


Autor: Stephen Njuki