¿Cómo funciona el aprendizaje automático en el comercio algorítmico (finanzas)?

TL: DR

Las técnicas y herramientas de aprendizaje automático tienen un espacio de problema implícito donde pueden ser extremadamente efectivas. Se pueden aplicar con éxito a los datos financieros si encuentra el tipo correcto de problema. Pero a pesar de que tenemos una herramienta más avanzada, nos enfrentamos a otro enigma y nos encontramos con un problema apropiado. Esencialmente, hemos reemplazado un martillo (regresión lineal) y un destornillador (ARIMA) con un taladro eléctrico (ML: KNN, RF, SVM, ect,) mientras que definitivamente puede comenzar a perforar (arrojando todo tipo de datos) en cualquier lugar que desee, pero lo más probable es que sea bastante tonto si no piensa en comprender la herramienta y el tipo de problemas que puede resolver.

Respuesta larga

He aplicado el aprendizaje automático a una variedad de estrategias algorítmicas, pero con resultados variables. Aquí hay varios desafíos que encontré (no dude en corregirme o agregar / comentar)

Los datos del mercado no son iid y estacionarios.

La mayoría de las veces cuando aplicamos ML en los datos del mercado, estamos utilizando algún tipo de clasificación, regresión, técnica de reducción dimensional o una combinación de estos. La mayoría de las técnicas de ML asumen que el proceso de generación de datos es estacionario e iid. Si utiliza estas técnicas para ajustar los datos del mercado, puede funcionar bien en un régimen (datos de capacitación), pero puede ser completamente ineficaz en otro régimen (datos de prueba, fuera de la muestra).

Los datos del mercado exhiben una alta relación ruido / señal.

Algunas técnicas de ML asumen muestras de iid, este es un gran problema, porque no todas las señales se crean de la misma manera . Si un modelo está entrenado en datos que se deben principalmente a la posibilidad aleatoria y al ruido, el modelo estará sobreajustado con señales débiles. Cuando el modelo se usa para la predicción, puede generar costosas señales falsas. Hacer que la estrategia sea altamente volátil y / o inconsistentemente rentable. (por supuesto, esto se puede mejorar, es decir, registro, embolsado y ect). Esto no es en lo que quieres poner tu dinero.

Idealmente, el modelo necesita generar señales predictivas que aprovechen una fluctuación o una fijación de precios lo suficientemente grande, en la que después de los costos aún puede capturar algo de alfa. Además, las ganancias de sus verdaderos positivos deben superar las pérdidas de los falsos positivos de manera consistente.

Señal vs realidad

A veces, su modelo puede producir una señal de generación alfa, pero después de la ejecución, el deslizamiento y la oferta y la demanda difunden la estrategia puede ser poco práctica.

En resumen, el aprendizaje automático se puede aplicar con éxito al comercio algorítmico. Pero tienes que tenga en cuenta las fortalezas y debilidades de la técnica de ML, y sea inteligente al seleccionar el contexto adecuado para aplicar estas herramientas, es decir, limite el espacio del problema en el que son aplicables estas técnicas.

Algunas referencias y discusiones que encontré útiles o relevantes:

Aplicaciones financieras del aprendizaje automático

¿Previsión del mercado de valores mediante el aprendizaje profundo? • / r / MachineLearning

En los últimos años, el aprendizaje automático ha sido la palabra de moda en el comercio algorítmico y las empresas cuantitativas. En su búsqueda para buscar el escurridizo alfa, varios fondos y empresas comerciales han adoptado el aprendizaje automático. Esta publicación ofrece una breve descripción del desarrollo del aprendizaje automático y su creciente importancia para los quants y los comerciantes por igual.

El aprendizaje automático gana popularidad en el comercio algorítmico

Las técnicas de aprendizaje automático pueden aplicarse al comercio utilizando lenguajes de programación como Python, R, C ++, etc. Los paquetes / bibliotecas de aprendizaje automático son desarrollados internamente por las empresas para su uso exclusivo o por terceros que lo ponen a disposición de la comunidad de usuarios. En los últimos años, el número de paquetes de aprendizaje automático ha aumentado sustancialmente, lo que ha ayudado a la comunidad de desarrolladores a acceder a diversas técnicas de aprendizaje automático y a aplicar las mismas a sus necesidades comerciales.

Fuente: análisis, minería de datos y ciencia de datos

Hay cientos de algoritmos ML, estos algoritmos se pueden clasificar en diferentes tipos dependiendo de cómo funcionen. Por ejemplo, los algoritmos de regresión se usan para modelar la relación entre variables; Los algoritmos de árbol de decisión construyen un modelo de decisiones y se usan en problemas de clasificación o regresión (Machine Learning: An Introduction to Decision Trees). De estos, algunos algoritmos se han vuelto populares entre los cuantos. Algunos de estos incluyen:

  • Regresión lineal
  • Regresión logística
  • Bosques al azar (RM)
  • Máquina de vectores de soporte (SVM)
  • Vecino k más cercano (kNN)
  • Árbol de clasificación y regresión (CARRITO)
  • Aprendizaje profundo

Estos algoritmos de ML son utilizados por empresas comerciales para diferentes propósitos. Algunos de estos incluyen:

  • Análisis del comportamiento histórico del mercado utilizando grandes conjuntos de datos.
  • Determinar entradas óptimas (predictores) para una estrategia
  • Determinar el conjunto óptimo de parámetros de estrategia
  • Hacer predicciones comerciales, etc.

Aquí hay un par de ejemplos de aprendizaje automático para nuestros lectores:
Aprendizaje automático y su aplicación en los mercados de divisas [MODELO DE TRABAJO]
Modelado predictivo en R para el comercio algorítmico

Lea más sobre: ​​Machine Learning para Quants y Traders – QuantInsti

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.

Cole Fun hizo un gran punto en su respuesta. . . En la era moderna, estamos rodeados de una gran cantidad de datos e información, y esto es especialmente cierto con respecto a los mercados y sus datos históricos de precios, pero la pregunta es si puede hacer las preguntas correctas para clasifique y tamice eficientemente dichos datos y obtenga conclusiones significativas.

En nuestro caso, el aprendizaje automático se manifiesta como un sistema de “factores” y sus respectivos “pesos”, que se alteran y ajustan en tiempo real, con cada nuevo flujo de datos de precios de los mercados. Estos pesos informan a nuestra estructura de cuán fuertemente considerar una estadística o punto de datos dado, en relación con todos los demás. . . y estos pesos varían hacia arriba y hacia abajo, de forma automática, en función de lo significativo que resulte ser ese dato de datos, en lo que respecta a la predicción confiable del movimiento futuro de precios, con ‘confiable’ es un término completamente relativo, ya que nunca tendrá nada predicción casi perfecta, simplemente estás buscando mejores que el promedio. Esencialmente, estos están en la forma de pregunta / respuesta de ‘Cuando acaba de ocurrir X, ¿qué tipo de comportamiento de precios tiende a ocurrir justo después?’

Encadena varios de estos potentes pesos juntos, y comenzarás a formular una base para algunos juicios muy reales y objetivos.

Aquí hay varios secretos comerciales patentados, por lo que solo puedo llegar muy lejos con esta respuesta. . pero diré que las estructuras de aprendizaje automático pueden ser muy útiles cuando se trata de analizar objetivamente el comportamiento del mercado. . . estructuras específicamente ágiles, con varias partes móviles, capaces de evolucionar y adaptarse rápidamente.

Además del trabajo de aprendizaje automático para ayudar a medir el valor de una estrategia comercial dada, o de una operación comercial dada, también puede ser muy eficaz para analizar las condiciones actuales del mercado, el régimen de mercado e intentar cuantificarlo / medirlo / etiquetarlo en consecuencia.

La estructura de aprendizaje automático ideal, en mi opinión, debería ser una estructura esquelética con todos los cálculos relevantes innatos, que se actualiza automáticamente a la llegada de los datos de mercado recién importados. . . y este es uno de los desafíos intelectuales más difíciles y emocionantes que existen. Crear una estrategia comercial sistemática es complicado, pero crear un medio sistematizado para crear estrategias comerciales sistemáticas es mucho más difícil. Los conceptos de aprendizaje automático lo hacen posible, lo que le libera de tener que hacer los mismos tipos de cálculos y reinventa la rueda una y otra vez, y permite que su estructura general se refine y mejore a medida que el tiempo avanza, ya que se educa a sí mismo al digerir alimentos frescos. datos y procesarlos de acuerdo con sus reglas / marco.

Finalmente, y esta es la clave, las estructuras de aprendizaje automático pueden probarse / verificarse completamente utilizando datos históricos antes de que se usen en el comercio o el desarrollo en tiempo real. Lo que esto significa es, por ejemplo, que uno puede probar su estructura de aprendizaje automático en una parte de sus datos históricos (un conjunto de datos tan grande como sea posible), proceder a crear estrategias comerciales de acuerdo con las conclusiones y finalmente probar la rentabilidad de esos estrategias sobre los datos fuera de la muestra, para ayudar a determinar la fuerza / validez de su estructura de aprendizaje. Se necesita una gran cantidad de tiempo y esfuerzo para hacerlo correctamente, pero prácticamente no hay mejor manera de tener una confianza justificada y objetiva en su negociación que demostrar claramente la eficacia de sus métodos sobre un conjunto de datos históricos en expansión.

espero que esto ayude

Para demostrar cómo funciona el algoritmo de aprendizaje automático, he escrito a continuación un modelo simple de clasificador de vectores de soporte en datos S & P500 que generó un retorno del 15% +.

Estrategia

Se proporciona un conjunto de datos de entrenamiento al algoritmo de clasificación de aprendizaje automático, cada uno de los cuales pertenece a una de las categorías. Por ejemplo, las categorías pueden ser comprar o vender una acción. El algoritmo de clasificación crea un modelo basado en los datos de entrenamiento y luego clasifica los datos de prueba en una de las categorías.

Fuente: Estrategia de clasificación de aprendizaje automático en Python

Paso 1: importa las bibliotecas

En este paso, importaremos las bibliotecas necesarias que serán necesarias para crear la estrategia.

# Bibliotecas de clasificación de aprendizaje automático
desde sklearn.svm import SVC
desde sklearn.metrics import goleador
de sklearn.metrics import precision_score

# Para manipulación de datos
importar pandas como pd
importar numpy como np

# Para trazar
importar matplotlib.pyplot como plt
importar seaborn

# Para buscar datos
de pandas_datareader importar datos como pdr

Paso 2: recuperar datos

Descargaremos los datos de S & P500 de google finance mediante pandas_datareader.

Después de eso, eliminaremos los valores faltantes de los datos y trazaremos la serie de precios de cierre de S & P500.

Df = pdr.get_data_google (‘SPY’, start = “2012-01-01”, end = “2017-10-01”)
Df = Df.dropna ()
Df.Close.plot (figsize = (10,5))
plt.ylabel (“Precio S & P500”)
plt.show ()

Paso 3: determinar la variable objetivo

La variable objetivo es la variable que predecirá el algoritmo de clasificación de aprendizaje automático. En este ejemplo, la variable objetivo es si el precio de S & P500 se cerrará o cerrará el próximo día de negociación.

Primero determinaremos la señal de negociación real utilizando la siguiente lógica: si el precio de cierre del próximo día de negociación es mayor que el precio de cierre de hoy, compraremos el índice S & P500, de lo contrario venderemos el índice S & P500. Almacenaremos +1 para la señal de compra y -1 para la señal de venta.

y = np.where (Df [‘Cerrar’]. shift (-1)> Df [‘Cerrar’], 1, -1)

Paso 4: creación de variables predictoras

La X es un conjunto de datos que contiene las variables del predictor que se utilizan para predecir la variable objetivo, ‘y’. La X consta de variables como ‘Abrir – Cerrar’ y ‘Alto – Bajo’ . Estos pueden entenderse como indicadores basados ​​en los cuales el algoritmo predecirá el precio de la opción.

Df [‘Abrir-Cerrar’] = Df.Open – Df.Close
Df [‘High-Low’] = Df.High – Df.Low

X = Df [[” Abrir-Cerrar ‘,’ Alto-Bajo ‘]]

En la parte posterior del código, el algoritmo de clasificación de aprendizaje automático utilizará los predictores y la variable objetivo en la fase de entrenamiento para crear el modelo y luego, predecirá la variable objetivo en el conjunto de datos de prueba.

Paso 5: probar y entrenar la división del conjunto de datos

En este paso, dividiremos los datos en el conjunto de datos del tren y el conjunto de datos de prueba.

  1. El primer 80% de los datos se usa para capacitación y los datos restantes para pruebas
  2. X_train e y_train son conjuntos de datos del tren
  3. X_test e y_test son conjuntos de datos de prueba

split_percentage = 0.8
split = int (split_percentage * len (Df))

# Conjunto de datos del tren
X_train = X [: división]
tren_y = y [: división]

# Conjunto de datos de prueba
X_test = X [split:]
y_test = y [split:]

Paso 6: cree el modelo de clasificación de aprendizaje automático utilizando el conjunto de datos del tren

Crearemos el modelo de clasificación de aprendizaje automático basado en el conjunto de datos del tren. Este modelo se utilizará más adelante para predecir la señal comercial en el conjunto de datos de prueba.

cls = SVC (). fit (X_train, y_train)

Paso 7: la precisión del modelo de clasificación

Calcularemos la precisión del modelo de clasificación en el tren y el conjunto de datos de prueba, comparando los valores reales de la señal comercial con los valores predichos de la señal comercial. La función precision_score () se utilizará para calcular la precisión.

Sintaxis: precision_score (target_actual_value, target_predicted_value)

  1. target_actual_value: valores de señal correctos
  2. target_predicted_value: valores de señal pronosticados

precision_train = precision_score (y_train, cls.predict (X_train))

precision_test = precision_score (y_test, cls.predict (X_test))
print (‘\ nPrecisión del tren: {: .2f}%’. format (precision_train * 100))
print (‘Precisión de prueba: {: .2f}%’. format (precision_test * 100))

Una precisión de más del 50% en los datos de prueba sugiere que el modelo de clasificación es efectivo.

Paso 8: predicción

Vamos a predecir la señal (comprar o vender) para el conjunto de datos de prueba, utilizando la función cls.predict (). Luego, calcularemos los retornos de la estrategia en función de la señal predicha por el modelo en el conjunto de datos de prueba. Lo guardamos en la columna ‘Strategy_Return’ y luego, graficamos los retornos acumulativos de la estrategia.

Df [‘Predicted_Signal’] = cls.predict (X)

# Calcular las devoluciones de registro
Df [‘Retorno’] = np.log (Df.Close.shift (-1) / Df.Close) * 100
Df [‘Strategy_Return’] = Df.Return * Df.Predicted_Signal
Df.Strategy_Return.iloc [split:]. Cumsum (). Plot (figsize = (10,5))
plt.ylabel (“Estrategia Devuelve (%)”)
plt.show ()

Como se ve en el gráfico, la estrategia de clasificación de aprendizaje automático genera un retorno de alrededor del 15% en el conjunto de datos de prueba.

Fuente: Estrategia de clasificación de aprendizaje automático en Python

Existen innumerables estrategias comerciales posibles que podrían utilizar bibliotecas, modelos y algoritmos de aprendizaje automático de alguna manera. Admite máquinas de vectores, redes neuronales, árboles de decisión, bosques aleatorios, máquinas de aumento de gradiente, la lista sigue y sigue. Las construcciones de aprendizaje automático bien implementadas nos permiten hacer inferencias a partir de datos, y en los mercados financieros no faltan fuentes de datos de alta calidad.

Usando el aprendizaje automático, podría hacer intercambios de las señales de las redes sociales, o usar la lingüística computacional para determinar el sentimiento por las noticias de última hora. Podría clasificar los valores en varios grupos en función de numerosos factores y sopesar las asignaciones de cartera hacia los grupos con el mejor rendimiento en un período de tiempo variable. Las posibilidades son infinitas.

Aquí hay un ejemplo de Quantopian (entonces Python) que usa RandomForestRegressor.

# Use los movimientos de las 10 barras anteriores para predecir el próximo movimiento.

# Use un clasificador de bosque aleatorio. Más aquí: http://scikit-learn.org/stable/user_guide.html
de sklearn.ensemble import RandomForestRegressor
importar numpy como np

def initialize (contexto):
context.security = sid (8554) # Trade SPY
context.model = RandomForestRegressor ()

context.lookback = 3 # Mira hacia atrás 3 días
context.history_range = 400 # Solo considere el historial de los últimos 400 días

# Genera un nuevo modelo cada semana
función_programación (create_model, date_rules.week_end (), time_rules.market_close (minutos = 10))

# Comercio al comienzo de cada día
función_programación (trade, date_rules.every_day (), time_rules.market_open (minutos = 1))

def create_model (contexto, datos):
# Obtenga los precios diarios relevantes
Recent_prices = data.history (context.security, ‘price’, context.history_range, ‘1d’). values

# Obtenga los cambios de precio
price_changes = np.diff (Recent_prices) .tolist ()

X = [] # Independiente, o variables de entrada
Y = [] # Dependiente, o variable de salida

# Por cada día en nuestra historia
para i en rango (context.history_range-context.lookback-1):
X.append (price_changes [i: i + context.lookback]) # Almacenar cambios de precios anteriores
Y.append (price_changes [i + context.lookback]) # Almacena el cambio de precio del día

context.model.fit (X, Y) # Genera nuestro modelo

def comercio (contexto, datos):
if context.model: # Compruebe si se genera nuestro modelo

# Obtener precios recientes
Recent_prices = data.history (context.security, ‘price’, context.lookback + 1, ‘1d’). values

# Obtenga los cambios de precio
price_changes = np.diff (Recent_prices) .tolist ()

# Predecir usando nuestro modelo y los precios recientes
predicción = context.model.predict (cambios de precio)
registro (predicción = predicción)

# Avance mucho si predecimos que el precio aumentará, de lo contrario será corto
si predicción> 0:
order_target_percent (context.security, 1.0)
más:
order_target_percent (context.security, -1.0)

* Fuente (ejemplo simple de aprendizaje automático Mk II).

Aquí hay un trabajo de investigación en la intersección del comercio y el aprendizaje automático:

arXiv: predicción de acciones supervisada basada en clasificación y optimización de cartera

El proceso de Machine Learning en Algo Trading

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 en la creación de soluciones ML requiere los siguientes pasos

  • Identifique el problema que ML resolverá (por ejemplo, si está clasificando, prediciendo o realizando un análisis de regresión sobre algo, etc.)
  • Determine qué datos se utilizarán como entrada y cuál es la salida anticipada.
  • 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?
  • Divida sus datos en un conjunto de datos de entrenamiento y un conjunto de datos de prueba.
  • Utilice los datos de entrenamiento para “enseñar” el algoritmo. En este caso, el algoritmo recibe los datos de entrada y resultado.
  • 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.

Aprenda cómo puede hacerlo con el kit de herramientas Quantiacs: una introducción al aprendizaje automático con Quantiacs

Comencemos con el resumen, ya que con la mayoría de las cosas en la vida, incluido el aprendizaje automático, recibirá un flujo constante de tonterías o una parte fraccional del todo, lo que significa que está solo para comprender el proceso.

Cuando vayas a cualquier persona con habilidades en aprendizaje automático, o pidas consejo en este tema, escucharás muchas cosas sobre lo complejo que es, debes pasar meses y años entendiendo las dinámicas básicas, etc. Excepto para anomalías estadísticas, es basura. Vamos a guiarte a través de la evolución, tienes a alguien que diseña una estrategia, el estratega, hace la pregunta. Luego tiene a alguien que desarrolla el algoritmo, la Implementación o el programador, que le brindan la respuesta. El arquitecto, Quant en el mundo de las finanzas, se sienta en el medio con algunas habilidades de estratega (negocios) e implementación (técnicas), que proporcionan la solución.

La respuesta de Bir Zos a ¿Cuál es la forma más rápida de convertirse en millonario?

Cada habilidad usa una herramienta diferente, el estratega usará cosas como las herramientas de Bloomberg u Office para encontrar conjuntos de datos comerciales. Quant utilizará herramientas como R, Python, Matlab, Tensorflow, y la implementación será C ++ o similar. Ninguno de ellos habla el idioma del otro, por lo que, obviamente, tiene muchos “perdidos en la traducción”. El punto es ganar dinero, necesita encontrar probabilidades estadísticas que otros pierdan (una reversión), o dónde la masa salta a bordo y compró temprano (Bitcoin). Cuando comenzamos a utilizar el aprendizaje automático, no apreciamos completamente la limitación central, es necesario conocer los límites de la respuesta. La mayoría de la gente dirá: Quiero que el aprendizaje automático me encuentre el mejor precio que genere la mayor cantidad de dinero. Bien, pero cuál es el “mejor precio” y cuál es “la mayoría del dinero”, un movimiento del 2%, un movimiento del 5%, un movimiento del 10%, y ahí radica el problema fundamental, debe proporcionar un límite contextual, que requiere humanos y experimentados en eso.

Lo que sucede cuando se equivoca ese límite en el aprendizaje automático, se producen bloqueos financieros repentinos y Teslas se estrella contra objetos aleatorios en el mundo real, es por eso que los mercados financieros están tan altamente regulados, para “eliminar” el problema del límite. Excepto que la naturaleza humana siempre encontrará una manera de romper un algo, ya sea por error o intencionalmente. Dado que los humanos son horriblemente ineficientes en estos días, no es complejo hacer algo de aprendizaje automático, el problema viene con los límites, sin embargo, los humanos en estos días también son terriblemente inexpertos, por lo que no conocerían una ruptura de límites hasta mucho tiempo después del evento. Lo que es menos peor, hoy son algos de aprendizaje automático, son increíblemente estables hasta que se rompen y luego sale terriblemente mal rápidamente.

Estuvimos en conversaciones con Matlab sobre su producto para el aprendizaje automático, vimos una demostración y tuvimos una llamada en conferencia, nos dijeron que era el ciclo completo de principio a fin, Strategist to Implementation. Bien, excepto después de explicar cómo usamos productos de grado institucional, dijo uno de los representantes, es demasiado costoso. Obviamente nunca tuvieron un jefe de herramientas como SAP, esto levantó nuestras alarmas. Resulta que Matlab como solución solo resuelve realmente la parte Quant, pero trata de resolver la pregunta del estratega y la respuesta de implementación. En este caso, el Strategist todavía tiene que codificar para el aprendizaje automático, y la Implementación solo puede manejar 24 “objetos” por servidor, ya que intercambiamos doce marcos de tiempo por instrumento, C ++ no lo es.

En el aprendizaje automático, debe evolucionar de Strategist a Quant a Implementation, todas las herramientas disponibles dificultan el aprendizaje automático de los datos sin el conocimiento técnico, esto significa que el conjunto de datos de Strategist solo tiene un 50% de posibilidades de éxito , luego el Quant 80% y la Implementación 95%. Así que emprendimos un viaje y encontramos una manera de aprender de forma automática sin codificación, ser 95% exactos en los datos, pasarlos a Arquitectura para una precisión del 99% y luego a Implementación para una precisión del 99.9%.

Pasé algún tiempo este fin de semana probando un conjunto de datos, me tomé unas horas, sin codificar, encontré algunas anomalías, que mostraron una anomalía menor en nuestros algos, y estoy revisando el conjunto de datos para tener en cuenta que sea factible. Luego pasará unos días implementándolo en un 4GL como prueba de concepto, y luego unas pocas semanas en un 3GL para Implementación y producción, en total de horas, días, semanas. En un entorno estándar, serán semanas, meses, trimestres o incluso meses, trimestres, años. Entonces, se pregunta cuál es la solución, curioso, nuestro proceso es de 10x a 100x más eficiente que las instituciones, pero proporcionaré la respuesta, todas son herramientas listas para usar con la configuración predeterminada aplicada. Solo tiene que evolucionar los conjuntos de datos, como un proceso de ósmosis inversa, el problema es encontrar la combinación exacta de herramientas para que una fluya a la siguiente.

El aprendizaje automático se puede utilizar en todos y cada uno de los entornos, fraude, métricas de riesgo, análisis, comercio, sin embargo, siempre se centrará en el área que gana más dinero con el menor esfuerzo y el menor riesgo para el capital. Me han pedido que realice un trabajo de Estratega, Arquitectura (Quant) e Implementación para fondos e instituciones externas (sí, tengo la rara habilidad que puedo hacer en los tres). Después de observar su entorno, todos tenían una cosa en común, eran ineficaces y realmente tenía mejores cosas que hacer, las compañías le pagan en función de su ineficiencia, no de su eficiencia.

Es por eso que el mundo ha diseñado QE, porque si no hubiera estado allí, puedo prometerle que todas las ganancias recientes de los mercados bursátiles, toda la riqueza de los fondos de cobertura, nunca habrían existido, todo el tiempo haciendo que los pobres sean más pobres. Los algos de aprendizaje automático están ahí para generar ingresos incrementales a partir del flujo lento y constante de dinero de QE, al conocer los límites exactos que no cambian, sin embargo, hay una cosa que los algos no pueden hacer, y eso es compensar la estupidez humana, tienen la costumbre de magnificándolo

Alguna versión de Deep Learning se usa en estrategias de fondos de cobertura como FX de alta frecuencia donde hay una cantidad significativa de datos y tiempo para procesar.

Se puede utilizar la red recurrente y el tensor multidimensional para la predicción anticipada.

También se pueden utilizar otras técnicas de aprendizaje automático.

Aquí, una aplicación de Machine / Deep Learning in Finance:

https://goo.gl/MLNwlN

Se pueden utilizar varios algoritmos de aprendizaje automático para generar señales comerciales en un intento de predecir el movimiento del mercado al día o período siguiente. Considere el ejemplo en el que un operador desea predecir si el mercado se moverá hacia arriba o hacia abajo al día siguiente. Uno puede idear un modelo basado en un clasificador binario, que clasificará el movimiento del mercado del día siguiente en una de las dos categorías, ya sea hacia arriba o hacia abajo. Se podría clasificar el movimiento del día siguiente en tres categorías, es decir, el mercado subirá (tomará una posición larga), el mercado caerá (tomará una posición corta) o el mercado se moverá de lado (no tome ninguna posición). Hay muchas otras formas en que las técnicas de aprendizaje automático se pueden utilizar para generar señales comerciales. Recientemente me inscribí en cursos en línea para comprender los diversos enfoques de negociación utilizando algoritmos de aprendizaje automático. Siga el siguiente enlace para saber más:

Introducción al aprendizaje automático para el comercio | Quantra por QuantInsti

No parece que esté promoviendo esto, pero encontré que este curso es bastante útil para comprender las aplicaciones de Machine Learning en Trading.

https://quantra.quantinsti.com/c…

More Interesting

¿Es necesario aprender Python para seguir la especialización en cursos de Machine Learning, de Coursera?

¿Cómo se calculan las curvas de recuperación de precisión?

¿Qué es la regresión logística?

¿El CAPM está muerto, en el sentido de que el aprendizaje automático moderno y el modelado financiero han hecho que su aplicación en el mundo real sea redundante?

¿Qué significa una probabilidad gaussiana en el clasificador bayesiano ingenuo gaussiano?

¿Cuál es la mejor base de datos para almacenar vectores de características de gran tamaño para su posterior recuperación y calcular las mediciones de distancia para la coincidencia de similitudes?

¿Cuál debería ser el primer paso para aprender IA y aprendizaje automático?

¿Qué libro de los dos es más completo para PNL: el de Jurafsky o el de Manning?

Cómo identificar la ubicación de cualquier mensaje de texto usando ML o NLP

¿Cómo se puede aplicar el aprendizaje profundo a la clasificación de palabras?

¿Alguien ha intentado combinar las redes neuronales con un aprendizaje profundo?

¿Cómo puede un investigador practicar las estadísticas bayesianas sin suficientes conocimientos matemáticos?

¿Por qué los jóvenes estudiantes dedican más tiempo a la programación competitiva en lugar de otras áreas como aprendizaje automático, seguridad, big data y sistemas operativos?

¿Cómo debo saber que estoy interesado en el aprendizaje automático?

Cómo predecir cuándo ocurrirá el próximo evento (tiempo) usando variables cuantitativas independientes