Volver al inicio

Pronóstico de volatilidad EURUSD en 4 líneas de código

El artículo explica cómo la biblioteca dquant simplifica el pronóstico de volatilidad usando XGBoost para traders sin profundos conocimientos de aprendizaje automático. Describe la arquitectura VolClustXGB, generación automática de características, parámetros de entrenamiento e integración práctica en estrategias de trading.

ML para trading sin conocimientos de aprendizaje automático
Advertisement 728x90

Pronóstico de volatilidad del EUR/USD en 4 líneas: cómo dquant simplifica el ML para traders sin conocimientos de ciencia de datos

Las estrategias algorítmicas modernas exigen una evaluación precisa y en tiempo real del riesgo. La volatilidad es el factor clave que determina las órdenes stop, el tamaño de las posiciones y la gestión del capital. Sin embargo, los enfoques tradicionales como GARCH y EWMA a menudo no logran adaptarse a los cambios en los regímenes del mercado, mientras que las soluciones de machine learning siguen siendo inalcanzables para la mayoría de los traders debido a las altas barreras de entrada: ingeniería de características, validación cruzada y ajuste de hiperparámetros. La biblioteca dquant aborda este desafío a nivel de API: encapsula todo el preprocesamiento, entrenamiento y validación en solo tres llamadas a métodos, eliminando la necesidad de comprender la arquitectura interna de XGBoost o de diseñar manualmente las características.

Cómo funciona VolClustXGB: de los datos OHLCV brutos a la predicción

El modelo VolClustXGB es un regresor especializado de XGBoost diseñado específicamente para la predicción de la volatilidad. No solo prevé el precio o la dirección; genera una estimación escalar de la volatilidad esperada (similar a un indicador tipo ATR) para un número específico de barras futuras. Bajo el capó, implementa un pipeline optimizado:

  • Generación automática de características técnicas a partir de los datos OHLCV: Rango Verdadero, rendimientos logarítmicos, rendimientos absolutos, gaps de precios, relación cuerpo-rango, relación sombra-cuerpo, posición del cierre respecto al rango y un ATR móvil de 14 períodos (roll_atr_14).
  • División de la serie temporal en ventanas de entrada (input_bars=70) y valores objetivo (horizon=20). La variable objetivo es la volatilidad de las próximas 20 barras, calculada como el ATR mediano o promedio durante ese horizonte.
  • Segmentación automatizada de los conjuntos de entrenamiento y validación teniendo en cuenta la serie temporal para evitar filtrado de datos.
  • Parada temprana durante el entrenamiento (early_stopping=True) basada en la disminución del error de validación (RMSE o MAE), lo que evita el sobreajuste incluso con un gran número de árboles (trees_count=200).
  • Visualización del proceso de entrenamiento: un gráfico de convergencia que muestra la tendencia del error tanto en el conjunto de entrenamiento como en el de validación, permitiendo evaluar la estabilidad del modelo.

Todos estos pasos se ejecutan en una sola llamada .fit(), sin necesidad de manejar manualmente índices, escalado ni conversiones de tipos de datos.

Google AdInline article slot

Implementación práctica: código, interpretación y limitaciones

El ejemplo de referencia utiliza datos horarios del EUR/USD provenientes de Yahoo Finance. Es crucial reconocer que la fuente de datos influye directamente en la calidad del pronóstico: yfinance limita los datos intradía a 730 días, lo que puede no ser suficiente para entrenar en ciclos de mercado diversos, desde periodos de baja volatilidad hasta picos provocados por reuniones del FOMC o eventos geopolíticos. Una alternativa es MetaTrader 5, que ofrece acceso a historiales más extensos (hasta más de 1.000 días) a través del terminal local y la cuenta del bróker.

Los parámetros clave para la llamada .fit() incluyen:

  • feature_list: una lista de características que se calcularán automáticamente. Por defecto, utiliza un conjunto optimizado para pares de divisas, pero se puede ampliar o reemplazar.
  • input_bars: la longitud de la ventana de entrada. Un valor de 70 corresponde aproximadamente a tres días en un marco horario, suficiente para capturar patrones de volatilidad a corto plazo.
  • horizon: el horizonte de pronóstico. Para datos horarios, horizon=20 significa un pronóstico de 20 horas, útil para estrategias de gestión de riesgo intradía.
  • show_results: muestra el gráfico de entrenamiento. Recomendado para uso en desarrollo para diagnosticar sobreajuste.

Tras el entrenamiento, el pronóstico se genera con una llamada .forecast() utilizando el mismo número de barras que input_bars. El resultado es un array de valores de volatilidad predichos, compatible con cualquier módulo de gestión de riesgo.

Google AdInline article slot

Conclusiones clave

  • No es necesario crear características manualmente: la biblioteca genera automáticamente TR, rendimientos, roll_atr_14 y otras métricas técnicas a partir de los datos OHLCV.
  • Robustez ante series temporales: la división integrada de series temporales garantiza que los datos de validación siempre estén en el futuro respecto a los de entrenamiento.
  • Parada temprana por defecto: el entrenamiento se detiene cuando el error de validación comienza a aumentar, independientemente del número especificado de árboles (trees_count).
  • Persistencia y reutilización: el modelo se puede guardar en formato serializado mediante .save() y cargar con .load(), lo que permite su uso en producción sin necesidad de volver a entrenarlo.
  • Licencia MIT abierta: el código está disponible para auditoría, modificación e integración en sistemas propietarios sin restricciones legales.

Integración en el flujo de trabajo del trader

Para una aplicación práctica, recomendamos la siguiente cadena de procesos:

  • Actualizaciones diarias de los datos históricos a través de MT5 (o yfinance si 730 días son suficientes).
  • Recálculo del pronóstico de volatilidad para las próximas 20 barras antes de abrir cada sesión de trading.
  • Uso del valor pronosticado para calibrar dinámicamente los stops-loss; por ejemplo, stop_distance = forecasted_volatility * 1.5.
  • Guardar el modelo después de cada entrenamiento exitoso y comparar su desempeño con versiones anteriores utilizando RMSE en datos de prueba fuera de muestra.

Cabe destacar que dquant no es una plataforma de trading completa. Es una herramienta para generar señales de riesgo. Sus resultados deben integrarse en estrategias existentes a través de interfaces estándar (DataFrames de pandas, arrays de numpy). La integración directa con MT5 es posible mediante mt5.order_send(), utilizando el valor pronosticado como parámetro de entrada para el cálculo del volumen.

— Editorial Team

Google AdInline article slot
Advertisement 728x90

Leer después