¿Cómo se utilizan las técnicas de aprendizaje automático en el comercio?

He escrito una estrategia de muestra usando el aprendizaje automático. Puede ayudarlo a comprender cómo usar estas técnicas para optimizar el resultado.

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.

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 🙂

Hay muchos tipos de algoritmos de ML, y algunos de los problemas de nivel superior que se utilizan para resolver incluyen: regresión, clasificación y predicción. El movimiento de código abierto ha proporcionado muchas herramientas de ML gratuitas, y he encontrado que Python es un gran lenguaje para usar con estas bibliotecas de ML debido a la cantidad de paquetes de código abierto disponibles y al soporte de la informática científica.

El flujo de trabajo básico utilizado para crear soluciones de ML requiere los siguientes pasos:

  1. Identifique el problema que ML resolverá (por ejemplo, si está clasificando, prediciendo o realizando un análisis de regresión sobre algo, etc.)
  2. Determine qué datos se utilizarán como entrada y cuál es la salida anticipada.
  3. Genere los datos que utilizará el algoritmo. Asegúrese de que los datos sean válidos y limpios. Si faltan algunos de los datos, ¿se tienen debidamente en cuenta?
  4. Divida sus datos en un conjunto de datos de entrenamiento y un conjunto de datos de prueba.
  5. Utilice los datos de entrenamiento para “enseñar” el algoritmo. En este caso, el algoritmo recibe los datos de entrada y resultado.
  6. Use los datos de prueba para ver lo que predice el algoritmo y compárelo con los datos reales.

Si los resultados no son satisfactorios, el algoritmo se puede modificar y repetir el proceso.

Aquí hay un ejemplo de negociación de ML usando el Mini SP-500 Futures

En realidad, es un poco interesante, ya que para la gente ahora está claro que los mercados no son realmente el mejor lugar para los métodos de aprendizaje, ya que pueden ser arbitrados con mucha facilidad porque los modelos suelen ser estúpidos en algún sentido, solo tienen en cuenta los valores locales. información, y puede usar esta característica para guiarlos por mal camino y luego secarlos. Dicho esto, si usa el aprendizaje automático y capacita a los actores y hace otras cosas más inteligentes que solo aplicar modelos a esto, entonces puede hacerlo realmente bien con el tiempo. Sin embargo, se pueden hacer muchos análisis sin utilizar el aprendizaje automático si conoce los factores involucrados.