¿Pueden los algoritmos de aprendizaje automático realmente ayudar en el comercio?

El aprendizaje automático es un subconjunto de IA dedicado a clasificar y encontrar patrones y lo extrapola a nuevos datos. Vemos mucha implementación de aplicaciones de aprendizaje automático. Netflix utiliza un algoritmo basado en aprendizaje automático para seleccionar las mejores películas que se recomendarán. El portal de compras de Amazon utiliza la técnica de aprendizaje automático para recomendar los artículos de compra basados ​​en la búsqueda reciente y otros patrones reconocibles.

¿Pueden los algoritmos de aprendizaje automático realmente ayudar en el comercio?

¡La respuesta es rotundamente “Sí”! De hecho, existen fondos de cobertura que se basan exclusivamente en inteligencia artificial, a saber, Rebellion Research y KFL Capital. El aprendizaje automático es lógico y supera las limitaciones humanas. Esto es importante en el comercio donde las emociones pueden conducir a dificultades cuando se trata de tomar decisiones. El aprendizaje automático se clasifica en aprendizaje supervisado y aprendizaje no supervisado. El aprendizaje no supervisado es la capacidad de encontrar patrones en una secuencia de datos sin etiquetar los datos. Un ejemplo de este tipo es un mapa autoorganizado (SOM). La limitación de este tipo es que los parámetros en los que se deben clasificar los datos no se especifican. En las clases de aprendizaje supervisado / etiquetas de datos de entrenamiento se especifica.

La conclusión es comprar bajo y vender alto. Esto se logra mediante el uso de técnicas de aprendizaje automático que detectan un patrón en los datos y hacen predicciones. La construcción de modelos es la parte crucial de las estrategias comerciales. Según los datos del pasado y su agrupación en torno a los puntos de datos, se realizan predicciones para el futuro. Hay muchos modelos, modelo oculto de Markov, árbol de decisión, bosque aleatorio, por nombrar algunos.

Lea más en la fuente original: inteligencia artificial y aprendizaje automático en el comercio

He escrito una estrategia comercial de muestra usando Machine Learning. Puede aprovechar esto para mejorarlo aún más. El código está en Python, por lo que si está familiarizado con el lenguaje, debería poder entenderlo fácilmente.

Le mostraré cómo implementar una estrategia comercial utilizando las predicciones de régimen realizadas en el blog anterior. Léalo, hay un descuento especial para usted al final de esto.

Sin embargo, hay una cosa que debe tener en cuenta antes de leer este blog: el algoritmo es solo para demostración y no debe utilizarse para el comercio real sin una optimización adecuada.

Permítanme comenzar explicando la agenda del blog:

  1. Cree un algoritmo de ML (aprendizaje automático) sin supervisión para predecir los regímenes.
  2. Trace estos regímenes para visualizarlos.
  3. Entrene un algoritmo de clasificador de vectores de soporte con el régimen como una de las características.
  4. Utilice este algoritmo de clasificador de vectores de soporte para predecir la tendencia del día actual en la apertura del mercado.
  5. Visualice el rendimiento de esta estrategia en los datos de prueba.
  6. Código descargable para su beneficio

Importar las bibliotecas y los datos:

Primero, importé las bibliotecas necesarias. Tenga en cuenta que he importado el paquete fix_yahoo_finance, por lo que puedo extraer datos de yahoo. Si no tiene este paquete, le sugiero que lo instale primero o cambie su fuente de datos a google.

Luego, extraje los datos de la misma cita, ‘SPY’, que usamos en el blog anterior y los guardé como un marco de datos df. Elegí el período de tiempo para que estos datos sean del año 2000.

Después de esto, creé indicadores que pueden usarse como características para entrenar el algoritmo.

Pero, antes de hacer eso, decidí el período de tiempo para estos indicadores. Elegí un período de retrospectiva de 10 días. Puede probar cualquier otro número que le convenga. Elegí 10 para verificar las últimas 2 semanas de datos comerciales y para evitar el ruido inherente a los períodos de retrospectiva más pequeños.

Además del período de retrospectiva, decidamos también la división del tren de pruebas de los datos. Prefiero dar el 80% de datos para capacitación y el 20% restante para pruebas. Puede cambiar esto según su necesidad.

Luego, cambié las columnas Alta, Baja y Cerrar por 1, para acceder solo a los datos pasados. Después de esto, creé varios indicadores técnicos como RSI, SMA, ADX, Correlación, SAR parabólico y el Retorno de los últimos 1 día en una base abierta.

A continuación, imprimí el marco de datos.

Y se veía así:

Como puede ver, hay muchos valores de NaN. Necesitamos imputarlos o dejarlos caer. Si eres nuevo en el aprendizaje automático y quieres aprender sobre la función de imputer, lee esto. Dejé caer los valores de NaN en este algoritmo.

En la siguiente parte del código, creé una instancia de la función StandardScaler y creé un algoritmo de aprendizaje no supervisado para hacer la predicción del régimen. He discutido esto en mi blog anterior, por lo que no volveré a entrar en estos detalles nuevamente.

Hacia el final del último blog, imprimí los valores de Media y Covarianza para todos los regímenes y tracé los regímenes. El nuevo resultado con indicadores como conjunto de características se vería así:

Luego, escalé el marco de datos de Regímenes, excluyendo las columnas Fecha y Regímenes, creadas en el código anterior y las guardé nuevamente en las mismas columnas. Al hacerlo, no perderé ninguna característica, pero los datos se escalarán y estarán listos para entrenar el algoritmo clasificador de vectores de soporte. Luego, creé una columna de señal que actuaría como los valores de predicción. El algoritmo se entrenaría en el conjunto de características para predecir esta señal.

A continuación, ejemplifiqué un clasificador de vectores de soporte. Para esto, utilicé el mismo modelo SVC utilizado en el ejemplo de sklearn. No he optimizado este clasificador de vectores de soporte para los mejores hiperparámetros. En el curso de aprendizaje automático sobre Quantra ™, hemos discutido ampliamente cómo utilizar hiperparámetros y optimizar el algoritmo para predecir los máximos y mínimos diarios, a su vez la volatilidad del día.

Volviendo al blog, el código para el clasificador de vectores de soporte es el siguiente:

A continuación, dividí los datos de prueba del algoritmo de régimen no supervisado en datos de prueba y de tren. Utilizamos estos nuevos datos de tren para entrenar nuestro algoritmo clasificador de vectores de soporte. Para crear los datos del tren, eliminé las columnas que no forman parte del conjunto de características:

‘Señal’, ‘Retorno’, ‘market_cu_return’, ‘Fecha’

Luego ajusto los conjuntos de datos X e y al algoritmo para entrenarlo.

Luego, calculé el tamaño del conjunto de prueba e indicé las predicciones de acuerdo con el marco de datos df.

La razón para hacer esto es que los valores de retorno originales de ‘SPY’ se almacenan en df, mientras que aquellos en Regímenes se escalan, por lo tanto, no serán útiles para tomar una suma acumulativa para verificar el rendimiento.

Luego, guardé las predicciones hechas por el SVC en una columna llamada Pred_Signal.

Luego, en base a estas señales, calculé los retornos de la estrategia multiplicando la señal al comienzo del día con el retorno en la apertura (porque nuestros retornos son de abierto a abierto) del día siguiente.

Finalmente, calculé los rendimientos acumulativos de la estrategia y los rendimientos acumulados del mercado y los guardé en df. Luego, calculé la relación de nitidez para medir el rendimiento. Para obtener una comprensión clara de esta métrica, tracé el rendimiento para medirlo.

El resultado final se ve así.

Después de tanto código y esfuerzo, si el resultado final se ve así, entonces alguien sin experiencia en aprendizaje automático diría que no vale la pena. Estaría de acuerdo por ahora. Pero mira esta línea de código:

Acabo de cambiar los datos de SPY a IBM. Entonces el resultado se ve así:

Sé lo que estás pensando: solo estoy ajustando los datos para obtener los resultados. Lo cual no está del todo mal. Te mostraré otra acción y luego tú decides.

Cambié el stock a Freeport-McMoRan Inc y el resultado se ve así:

Puede cambiarlo más a GE u otra cosa y verificarlo usted mismo. Esta estrategia funciona en algunas acciones pero no en otras, como es el caso de la mayoría de las estrategias cuantitativas. Hay algunas razones por las cuales el algoritmo funcionó de manera consistente y enumeraré algunas de ellas aquí.

  1. Sin autocorrelación de devoluciones
  2. Sin optimización de hiperparámetros de Vector de soporte
  3. Sin propagación de error
  4. Sin selección de funciones

No hemos verificado la autocorrelación de los retornos, lo que habría aumentado la previsibilidad del algoritmo. Intente eso por su cuenta desplazando la columna de devoluciones por 1 y pasándola como conjunto de características. El resultado se vería así:

Aunque la mejora de 3.4 a 3.49 no es mucha, sigue siendo una buena característica.

Tenga en cuenta que el código se ejecutará mejor con Python 2.7

Espero que haya entendido bien la máquina de vectores de soporte utilizada en el comercio. Hemos cubierto este tema ampliamente en nuestro último curso de aprendizaje automático ‘Trading with Machine Learning: Classification and SVM’, donde obtendrá una buena comprensión de las técnicas de clasificación utilizadas en Machine Learning. Este curso forma parte del paquete de 3 cursos ‘Trading With Machine Learning’. Este paquete cubre estrategias sobre regresión, clasificación y SVM. El paquete ofrece un descuento del 30%, haga clic aquí para saber más.

Este es solo un ejemplo de juguete, y no está destinado para el comercio real.

El aprendizaje automático y la inteligencia artificial son temas candentes con respecto a las finanzas cuantitativas. La compañía de fondos más grande del mundo (Blackrock) anunció recientemente que reemplazaría a algunos de sus analistas con computadoras que emplean aprendizaje automático e inteligencia artificial. El fundador y CEO de Blackrock, Laurence Fink, dice: “La democratización de la información ha dificultado mucho la gestión activa. Tenemos que cambiar el ecosistema, eso significa confiar más en big data, inteligencia artificial, factores y modelos dentro de las estrategias de inversión cuantitativa y tradicional ”

La empresa cree que los algoritmos de aprendizaje automático adecuados podrían elegir acciones y también analistas tradicionales.

Aquí hay una publicación que lo ayudará a comprender la aplicación del aprendizaje automático en el comercio algorítmico: una introducción al aprendizaje automático con Quantiacs

En caso de que quiera aprender cómo funciona ML en el comercio, consejos sobre ML en el comercio, ejecutar una estrategia de negociación ML en una plataforma, puede registrarse para este próximo seminario web que se realizará el jueves 15 de junio a las 8:30 PM IST | 8:00 AM PST | 11:00 AM EST:

Introducción al aprendizaje automático para las finanzas cuantitativas

Espero que esto ayude 🙂

Al negociar, supongo que estás implicando el comercio de acciones.

Para aplicar el aprendizaje automático a un problema, es necesario que existan varias condiciones. En primer lugar, debe haber datos, ya que los datos son estrictamente necesarios para cualquier aprendizaje automático. Otra condición importante es que debe existir algún patrón subyacente en los datos. Esta segunda condición es lo que veremos.

Si no hay un patrón, la aplicación de aprendizaje automático devolverá un modelo que se ajuste al ruido aleatorio, e interpretar un modelo de ruido aleatorio es peligroso. Esto se debe principalmente a que, aunque su modelo puede ajustarse muy bien a los datos históricos, especialmente con un modelo complejo, no se ajustará bien a los datos futuros sin algún patrón.

Por lo tanto, aquí está mi respuesta a su pregunta. Si analiza sus datos y encuentra evidencia de un patrón (por ejemplo, un error de baja validación para un modelo entrenado al reservar algunos datos de entrenamiento para la validación y algunos datos para el entrenamiento en sí), entonces el aprendizaje automático definitivamente ayudará. Además, antes de aplicar inmediatamente su modelo al comercio de acciones, le sugiero que lo ejecute por un tiempo y mida sus éxitos antes de usarlo para ganar dinero. Finalmente, recuerde que el mercado de valores es una entidad volátil. Deberá definir cuidadosamente su enfoque, como si es a corto plazo, a largo plazo o en algún punto intermedio entre el comercio u otros factores.

TL; DR El aprendizaje automático se puede utilizar para descubrir estrategias comerciales exitosas. Los algoritmos de ML son métodos sofisticados de prueba y error y optimización, y no hay una razón inherente por la que no puedan reemplazar al humano que realiza la misma función.

Una cosa sobre el aprendizaje automático es que los conceptos de eficiencia de datos, sobreajuste versus regularización, resultados fuera de la muestra y similares han sido conocidos y admitidos desde el principio.

Si alguien con un sólido historial de aprendizaje automático hace algo sobre el comercio, ya se dará cuenta de que la simple prueba inversa no da resultados útiles, que no debe ajustarse a su modelo, que no puede confiar en datos escasos, etc. . Sin embargo, al no entender nada sobre el mercado, pueden arrojar un montón de basura inútil en el modelo, con la esperanza de encontrar algo de oro (leo demasiados trabajos de investigación como ese).

Si alguien con experiencia en comercio va y comienza a hacer aprendizaje automático, esa es una configuración menos afortunada desde el primer aspecto: usarán muy pocos datos, un modelo que es demasiado grande y sin restricciones de regularización; exceso de equipamiento asegurado. Sin embargo, al conocer más sobre el mercado, pueden tener una mejor oportunidad de encontrar el tipo correcto de información (a menos, por supuesto, que hayan comprado alguna teoría mística de mierda, en cuyo caso no tiene remedio).

En ambos casos, creo que el error más frecuente es tratar de predecir el precio o usar un enfoque de sí / no sobre las posiciones. Es mejor optar por un modelo más matizado y probabilístico.

Si por aprendizaje automático te refieres a algún algoritmo ad-hoc que todavía no tiene pruebas matemáticas rigurosas, entonces sí, algunos de los algoritmos que construyes podrían ser útiles para generar alfa.

Pero si el ML que usted dio a entender es cualquier publicación aleatoria que pueda obtener de artículos / libros, entonces debo decir que aún no he encontrado ninguno de ellos útil incluso contra los métodos tradicionales más simples como la regresión lineal, etc.

Sí, pero es un medio extraordinariamente difícil de llegar a la meta.

Personalmente, conozco a comerciantes y programadores muy talentosos que han invertido miles de horas en ese agujero de conejo sin nada más que dolor por sus problemas.

Hay formas más fáciles

Claro, solo mira los resultados de Renaissance Technologies – Wikipedia

More Interesting

¿Qué es el generador Deep Dream?

¿Por qué las arquitecturas de aprendizaje profundo como CNN, Faster R-CNN o SSD están abiertas a todos? ¿Por qué estas personas no pueden patentar estas arquitecturas?

¿Qué piensa sobre el estudio de posgrado especializado en recuperación de información y sistemas de recomendación?

¿Cuál es la diferencia entre agrupar sin PCA y agrupar con PCA?

¿Cuál es la diferencia entre un conjunto de datos y una característica?

¿Es aconsejable automatizar el trabajo del presidente de la Fed con un software de aprendizaje automático dado que sus decisiones se basan principalmente en datos?

¿Cuál es la diferencia entre la red neuronal profunda y la factorización de matriz profunda?

Cómo crear un sistema de predicción de calificación a partir de los comentarios de los revisores para comentarios 360 dados un comentario del revisor y el conjunto de datos de calificación correspondiente

¿Cómo funciona un mecanismo de atención en el aprendizaje profundo?

Desde un punto de vista práctico, ¿por qué es tan importante saber programar en Machine Learning?

¿Por qué las personas usan Keras en el back-end de TensorFlow y no solo en TensorFlow?

¿Es una idea loca aprender el aprendizaje automático y el aprendizaje profundo sin ningún conocimiento avanzado de matemáticas?

¿Por qué las redes neuronales profundas no pueden extraer la estacionalidad de las series de tiempo?

¿Cuál es el mejor algoritmo para implementar un reconocimiento de voz robusto en entornos ruidosos?

¿Los analistas de datos serán reemplazados por aprendizaje automático e inteligencia artificial pronto?