Introducción al comercio de aprendizaje profundo en fondos de cobertura
Publicado: 2022-03-11En los últimos años, las redes neuronales profundas se han vuelto extremadamente populares. Este campo emergente de la informática se creó en torno al concepto de redes neuronales biológicas, y el aprendizaje profundo se ha convertido en una especie de palabra de moda en la actualidad.
Los científicos e ingenieros de aprendizaje profundo intentan describir matemáticamente varios patrones de los sistemas nerviosos biológicos. Los sistemas de aprendizaje profundo se han aplicado a varios problemas: visión por computadora, reconocimiento de voz, procesamiento de lenguaje natural, traducción automática y más. Es interesante y emocionante que, en algunas tareas, el aprendizaje profundo haya superado a los expertos humanos. Hoy, analizaremos el aprendizaje profundo en el sector financiero.
Una de las aplicaciones más atractivas del aprendizaje profundo se encuentra en los fondos de cobertura. Los fondos de cobertura son fondos de inversión, organizaciones financieras que recaudan fondos de los inversores y los administran. Por lo general, trabajan con datos de series temporales e intentan hacer algunas predicciones. Existe un tipo especial de arquitectura de aprendizaje profundo que es adecuada para el análisis de series temporales: redes neuronales recurrentes (RNN), o incluso más específicamente, un tipo especial de red neuronal recurrente: redes de memoria a corto plazo (LSTM).
Los LSTM son capaces de capturar las características más importantes de los datos de series temporales y modelar sus dependencias. Se presenta un modelo de predicción del precio de las acciones como un estudio de caso ilustrativo sobre cómo los fondos de cobertura pueden usar dichos sistemas. El marco PyTorch, escrito en Python, se usa para entrenar el modelo, diseñar experimentos y dibujar los resultados.
Comenzaremos con algunos conceptos básicos de aprendizaje profundo antes de pasar a ejemplos del mundo real:
- Introducir el aprendizaje profundo como un concepto abstracto.
- Presente RNN, o, más específicamente, LSTM, y cómo se pueden usar para modelar datos de series temporales.
- Familiarice a los lectores con datos financieros adecuados para el aprendizaje profundo.
- Ilustre cómo un fondo de cobertura real utiliza el aprendizaje profundo para predecir los precios de las acciones.
- Finalmente, brinde recomendaciones prácticas para fondos de cobertura nuevos y existentes sobre cómo usar/aprovechar el aprendizaje profundo para aumentar su rendimiento.
Presentación del caso para el comercio de aprendizaje profundo
Una de las tareas más desafiantes y emocionantes de la industria financiera es predecir si los precios de las acciones subirán o bajarán en el futuro. Hoy en día, somos conscientes de que los algoritmos de aprendizaje profundo son muy buenos para resolver tareas complejas, por lo que vale la pena intentar experimentar con sistemas de aprendizaje profundo para ver si pueden resolver con éxito el problema de predecir precios futuros.
Como concepto, la red neuronal artificial existe desde hace mucho tiempo, pero el hardware no era lo suficientemente bueno para permitir experimentos rápidos en aprendizaje profundo. Nvidia ayudó a revolucionar las redes de aprendizaje profundo hace una década, cuando comenzó a ofrecer unidades de procesamiento de gráficos (GPU) muy rápidas para computación de uso general en productos de la serie Tesla. En lugar de sombrear polígonos en juegos y aplicaciones de diseño profesional, las GPU altamente paralelizadas también pueden calcular otros datos y, en muchos casos, son muy superiores a las CPU.
Hay muy pocos artículos científicos sobre el uso del aprendizaje profundo en las finanzas, pero la demanda de expertos en aprendizaje profundo de las empresas de tecnología financiera es fuerte, ya que obviamente reconocen su potencial. Este artículo ayudará a explicar por qué el aprendizaje profundo en finanzas se está volviendo cada vez más popular al describir cómo se utilizan los datos financieros en la construcción de sistemas de aprendizaje profundo. También se presentará un tipo especial de red neuronal recurrente, la red LSTM. Describiremos cómo se puede resolver una tarea relacionada con las finanzas utilizando redes neuronales recurrentes.
Este artículo también presenta un estudio de caso ilustrativo sobre cómo los fondos de cobertura pueden usar dichos sistemas, presentado a través de experimentos. También consideraremos cómo se pueden mejorar los sistemas de aprendizaje profundo y cómo los fondos de cobertura pueden contratar talento para construir esos sistemas, es decir, qué tipo de experiencia debe tener el talento de aprendizaje profundo.
Qué hace que los fondos de cobertura sean diferentes
Antes de pasar al aspecto técnico del problema, debemos explicar qué hace que los fondos de cobertura sean únicos. Entonces, ¿qué es un fondo de cobertura?
Un fondo de cobertura es un fondo de inversión: una organización financiera que recauda fondos de los inversores y los coloca en inversiones a corto y largo plazo, o en diferentes productos financieros. Por lo general, se forma como una sociedad limitada o una sociedad de responsabilidad limitada. El objetivo de un fondo de cobertura es maximizar los rendimientos. Un rendimiento es una ganancia o pérdida en el patrimonio neto de los fondos de cobertura durante un período de tiempo determinado. En general, se acepta que cuando se toma más riesgo, existe un mayor potencial para mayores ganancias y pérdidas.
Para lograr buenos rendimientos, los fondos de cobertura se basan en varios tipos de estrategias de inversión, tratando de ganar dinero explotando las ineficiencias del mercado. Debido a varios tipos de estrategias de inversión que no están permitidas en los fondos de inversión ordinarios, los fondos de cobertura no se registran como fondos, es decir, generalmente no están supervisados por el estado como otros fondos. No necesitan publicar sus estrategias de inversión y resultados comerciales, lo que puede hacer que sean bastante riesgosos. Algunos fondos de cobertura generan más dinero que el promedio del mercado, pero algunos pierden dinero. Algunos de ellos generan resultados permanentes, mientras que algunos de los resultados de los fondos de cobertura son variables.
Al invertir en fondos de cobertura, los inversores aumentan el patrimonio neto del fondo. Sin embargo, no cualquiera puede invertir en fondos de cobertura. Los fondos de cobertura están destinados a un pequeño número de inversores adinerados. Por lo general, los que quieren participar en los fondos de cobertura deben estar acreditados. Eso significa que deben tener un estatus especial con respecto a las leyes de regulación financiera. Hay una distinción de un país a otro con respecto a quién puede tener ese estatus especial. Por lo general, el patrimonio neto de un inversionista debe ser muy alto; no solo los individuos, sino también los bancos y las grandes corporaciones también pueden operar en fondos de cobertura. Esa acreditación está diseñada para permitir que solo participen personas con un conocimiento de inversión significativo, protegiendo así del riesgo a los inversores pequeños e inexpertos.
Este artículo considera el marco regulatorio de los Estados Unidos, ya que Estados Unidos tiene el mercado financiero más desarrollado del mundo. Así, en los Estados Unidos de América, el término “inversionista acreditado” se define en la Regla 501 de la Regulación D de la Comisión de Bolsa y Valores de los Estados Unidos (SEC).
Según esta normativa, los inversores acreditados pueden ser:
- Bancos
- Empresas privadas de desarrollo de negocios.
- Organizaciones
- Directores, funcionarios ejecutivos y socios generales de los emisores de los valores que se ofrecen o venden
- Personas naturales cuyo patrimonio neto individual, o patrimonio neto conjunto con el cónyuge de esa persona, exceda $1,000,000
- Personas naturales que tuvieron un ingreso individual superior a $200,000 en cada uno de los dos años más recientes o ingresos conjuntos con el cónyuge de esa persona en exceso de $300,000 en cada uno de esos años y tiene una expectativa razonable de alcanzar el mismo nivel de ingresos en el año en curso
- Fideicomisos con activos totales en exceso de $5,000,000
- Entidades en las que todos los accionistas son inversores acreditados
Los administradores de fondos de cobertura administran el fondo de cobertura. Un administrador de fondos de cobertura debe encontrar una manera de crear una ventaja competitiva para tener éxito, es decir, para crear una ventaja sobre los rivales y la capacidad de generar mayor valor. Puede ser una elección de carrera muy atractiva, ya que puede ser muy rentable si una persona sobresale en la gestión del fondo.
Por otro lado, si muchas de las decisiones de los administradores de fondos de cobertura resultan ser malas, no se les pagará y obtendrán una reputación negativa. Los mejores administradores de fondos de cobertura constituyen una de las profesiones mejor pagadas en todas las industrias. Los administradores de fondos de cobertura obtienen un porcentaje de los rendimientos que obtienen para los inversores, además de la tarifa de administración. Esta forma de compensación hace que los gestores de fondos de cobertura inviertan de forma más agresiva con el fin de obtener mayores rendimientos, pero por otro lado, eso también conduce a un aumento del riesgo del inversor.
Una breve historia de los fondos de cobertura
El primer fondo de cobertura apareció en 1949, establecido por el ex escritor y sociólogo Alfred Winslow Jones. Fue mientras escribía un artículo sobre las tendencias de inversión actuales para Fortune, allá por 1948.
Intentó administrar el dinero y tuvo mucho éxito. Recaudó dinero utilizando su innovación de inversión, que ahora se conoce ampliamente como acciones largas/cortas. La estrategia sigue siendo muy popular entre los fondos de cobertura. Las acciones se pueden comprar (comprar: largo) o vender (vender: corto).
Cuando el precio de una acción es bajo y se espera que el precio de una acción suba, es lógico comprar una acción (larga) y venderla (corta) tan pronto como alcance su precio máximo máximo, y eso Ese es exactamente el punto de la innovación que hizo Alfred Winslow Jones: tomar posiciones largas en acciones que se espera que se aprecien y posiciones cortas en acciones que se espera que bajen.
Datos financieros y conjuntos de datos
Los datos financieros pertenecen a los datos de series temporales. Una serie temporal es una serie de puntos de datos indexados en el tiempo. Por lo general, una serie de tiempo es una secuencia tomada en puntos sucesivos igualmente espaciados en el tiempo: una secuencia de datos de tiempo discreto. Ejemplos de series de tiempo son las alturas de las mareas oceánicas, el conteo de manchas solares y el valor de cierre diario del promedio industrial Dow Jones.
Los datos históricos en este contexto son datos de series temporales del pasado. Es una de las partes más importantes y valiosas para especular sobre los precios futuros. Hay algunos conjuntos de datos disponibles públicamente en línea, pero, por lo general, esos datos no contienen muchas características; por lo general, son datos de intervalos de 1 día, datos de intervalos de 1 hora o datos de intervalos de 1 minuto.
Los conjuntos de datos con características más ricas y en intervalos de tiempo más pequeños generalmente no están disponibles públicamente y pueden ser muy costosos de obtener. Los intervalos más pequeños significan más datos de series temporales en un período fijo: en un año hay 365 (o 366) días, por lo que hay un máximo de 365 (o 366) puntos de datos disponibles. Cada día tiene 24 horas, por lo que en un año hay 8760 (o 8784) puntos de datos por hora disponibles, y cada día tiene 86 400 minutos, por lo que en un año hay 525 600 (o 527 040) puntos de datos por minuto disponibles.
Con más datos, hay más información disponible, y con más información, es posible sacar mejores conclusiones sobre lo que sucederá en el próximo período de tiempo, suponiendo, por supuesto, que los datos constan de una característica lo suficientemente buena como para generalizar bien. Los datos de precios de acciones de 2007-2008, en el punto álgido de la crisis financiera mundial, están sesgados y probablemente no sean relevantes para hacer predicciones de precios en estos días. Con un intervalo de tiempo más pequeño, es más fácil predecir lo que sucederá a continuación debido a una gran cantidad de puntos de datos en un intervalo fijo. Es más fácil predecir lo que sucederá en el próximo nanosegundo si tenemos todos los puntos de datos para cada nanosegundo en un intervalo fijo de n
años que lo que sucederá en el mercado de valores el próximo año si tenemos todos los n
puntos de datos para cada año en un intervalo fijo de n
años.
Sin embargo, eso no significa que, suponiendo que una serie rápida de predicciones a corto plazo sea correcta, la predicción a largo plazo también deba ser correcta. Cada predicción introduce un error y, al encadenar múltiples predicciones, la predicción a largo plazo contendrá una cantidad significativa de error al final y será inútil. A continuación se muestra un ejemplo de datos de intervalo de 1 día para acciones de Google extraídos en línea de Yahoo Finance.
Solo hay unas pocas columnas en el conjunto de datos: Fecha, Apertura, Máximo, Mínimo y Cierre, respectivamente, el precio al que un valor cotiza por primera vez en la apertura de un intercambio, el precio más alto que alcanzó el valor en un día de negociación determinado. , el precio más bajo alcanzado en un día de negociación determinado y el precio final al que se negocia un valor ese día.
Por lo general, hay dos columnas más en dichos conjuntos de datos: cierre ajustado y volumen, pero no son relevantes aquí. El cierre ajustado es el precio de cierre después de los ajustes correspondientes a las divisiones y distribuciones de dividendos, mientras que el volumen es la cantidad de acciones negociadas en el mercado durante un período de tiempo determinado.
Puede ver que faltan algunas de las fechas. Estos son los días en que la bolsa de valores no funciona, generalmente durante los fines de semana y días festivos. A los efectos de nuestra demostración del algoritmo de aprendizaje profundo, los días que faltan se complementan con el precio previamente disponible. Por ejemplo, los precios de cierre para 2010-01-16, 2010-01-17, 2010-01-18 serán todos 288,126007 porque eso es lo que era el 2010-01-15. Es importante para nuestro algoritmo que los datos no tengan espacios para que no los confundamos. El algoritmo de aprendizaje profundo podría aprender de aquí cuándo son los fines de semana y los días festivos; por ejemplo, aprenderá que después de cinco días hábiles, debe haber dos días con precios fijos desde el último día hábil.
Este es un gráfico de los movimientos del precio de las acciones de Google desde 2010-01-04. Tenga en cuenta que solo se utilizan los días de negociación para trazar el gráfico.
¿Qué es el aprendizaje profundo?
El aprendizaje profundo es una parte del aprendizaje automático y se basa en el aprendizaje de representaciones de datos. El aprendizaje automático examina algoritmos cuya funcionalidad no está programada sino que se aprende de los datos. Es esencialmente un acercamiento a la inteligencia artificial.
El aprendizaje profundo se ha aplicado a varios campos: visión por computadora, reconocimiento de voz, procesamiento de lenguaje natural, traducción automática, y en algunas de estas tareas ha logrado un rendimiento superior al de los humanos.
Una red neuronal profunda está en el centro del aprendizaje profundo. El ejemplo más simple y básico de una red neuronal profunda es una red neuronal feedforward. A continuación se muestra una imagen de una red neuronal feedforward simple. Consiste en las capas de entrada y salida y las capas ocultas.
Las capas ocultas son todas las capas entre las capas de entrada y salida. Decimos que una red neuronal es profunda si tiene más de una capa oculta. Cada capa está formada por varios números de neuronas. Las capas en esta red neuronal de retroalimentación básica se denominan capas lineales: las neuronas en la capa lineal solo multiplican valores de entradas 1-D (o 2-D si los datos se envían a través de la red en lotes) con el peso apropiado, suman productos juntos y dar el resultado final como la salida 1-D o 2-D.
La función de activación generalmente se aplica en redes feedforward para introducir no linealidades para que la red pueda modelar problemas no lineales más complejos. En las redes feedforward, los datos fluyen desde la capa de entrada a la capa de salida sin retroceder. Se ponderan las conexiones entre las neuronas. Los pesos deben ajustarse para que la red neuronal devuelva las salidas correctas para las entradas dadas. La red feedforward asigna datos desde el espacio de entrada al espacio de salida. Las capas ocultas extraen características importantes y más abstractas de las características de la capa anterior.
La canalización de aprendizaje profundo general es la misma que la canalización de aprendizaje automático y consta de los siguientes pasos:
- Recopilación de datos. Los datos se separan en tres partes: datos de entrenamiento, datos de validación y datos de prueba.
- Entrenamiento del DNN utilizando los datos de entrenamiento durante una serie de "épocas" (cada una de las cuales consta de una serie de iteraciones) y validación después de cada época utilizando los datos de validación.
- Probar el modelo (una instancia de una red neuronal con parámetros fijos) después de la secuencia de sesiones de entrenamiento y validaciones.
Entrenar la red neuronal en realidad significa ajustar los pesos entre los pares de neuronas minimizando la función de pérdida usando un algoritmo de retropropagación en combinación con el descenso de gradiente estocástico. A excepción de los pesos que se determinan a través del proceso de aprendizaje, los algoritmos de aprendizaje profundo generalmente requieren establecer los hiperparámetros, parámetros que no se aprenden sino que se fijan antes del aprendizaje. Los hiperparámetros son el número de capas, el número de neuronas en las capas, los tipos de capas, los tipos de neuronas y la inicialización del peso.
Hay restricciones de hardware en la configuración de hiperparámetros; actualmente no es físicamente posible configurar un billón de neuronas en una sola GPU. El segundo problema para la búsqueda exhaustiva de hiperparámetros es la explosión combinatoria; no es posible buscar a través de todas las combinaciones posibles de hiperparámetros porque llevaría un tiempo infinito. Debido a eso, los hiperparámetros se establecen al azar o usando algunas heurísticas y ejemplos bien conocidos que se describen en artículos científicos. Uno de los hiperparámetros usados para el análisis de datos financieros que se muestra más adelante en esta publicación de blog es el uso de neuronas recurrentes, como científicos e ingenieros. han demostrado que funcionan bien con datos de series temporales. Por lo general, la mejor manera de ver si los hiperparámetros para un problema dado son buenos o no es a través de experimentos.
El objetivo del entrenamiento es hacer que las redes neuronales se ajusten a los datos de entrenamiento. Tanto la validación del modelo, que se realiza después de cada paso de entrenamiento, como la prueba del modelo, que se realiza después de todo el procedimiento de entrenamiento, se realizan para ver si el modelo puede generalizarse bien. La generalización significa que la red neuronal puede hacer buenas predicciones sobre datos nuevos e invisibles.

Hay dos términos importantes relacionados con la selección del modelo: ajuste excesivo y ajuste insuficiente . Si una red neuronal es demasiado compleja con respecto a los datos en los que se entrena, si tiene demasiados parámetros (demasiadas capas y/o demasiadas neuronas en capas), la red neuronal puede sobreajustar los datos. Puede ajustarse bien a los datos de entrenamiento porque tiene capacidad más que suficiente para ajustar todos los datos, pero el rendimiento en los conjuntos de validación y prueba es deficiente.
Si la red neuronal es demasiado simple con respecto a los datos en los que se entrena, la red neuronal puede adaptarse a los datos. En ese caso, la red neuronal tiene un rendimiento deficiente en los conjuntos de entrenamiento, validación y prueba porque su capacidad no es lo suficientemente buena para adaptarse a los datos de entrenamiento y generalizar. En la imagen de abajo, esos términos se explican gráficamente. La línea azul representa lo que modela la red neuronal. La primera imagen muestra la situación cuando hay pocos parámetros de red neuronal, no suficientes para ajustar los datos de entrenamiento y generalizar. La segunda imagen muestra la situación cuando existe la cantidad óptima de parámetros y la red neuronal puede generalizar bien en datos no vistos, y la tercera imagen muestra la situación cuando la cantidad de parámetros de una red neuronal es demasiado grande y la red neuronal puede perfectamente ajusta todos los datos del conjunto de entrenamiento, pero tiene un rendimiento deficiente en los conjuntos de validación y prueba.
Redes neuronales recurrentes
Una versión más complicada de una red neuronal es una red neuronal recurrente. En las redes neuronales recurrentes, los datos pueden fluir en cualquier dirección, a diferencia de las redes neuronales de avance. Pueden aprender bien las dependencias de las series temporales. La arquitectura de una red neuronal recurrente general se muestra en la siguiente imagen.
En la imagen de abajo se muestra una neurona recurrente. Toma X_{t}
, punto en el tiempo t
, como entrada y devuelve h_{t}
, estado oculto en el tiempo t
, como salida. La salida oculta se propaga de nuevo a la neurona. La neurona recurrente se puede desenrollar como se muestra en la misma imagen del lado derecho. X_{t_0}
es el punto en el período de tiempo t_{0}
, X_{t_1}
en el período de tiempo t_{1}
y X_{t}
en el período de tiempo t
. Las salidas obtenidas usando las entradas X_{t_0}
, X_{t_1}
, …, X_{t_n}
en períodos de tiempo t_{0}
, t_{1}
, …, t_{n}
son las llamadas salidas ocultas: h_{t_0}
, h_{t_1}
, …, h_{t_n}
, respectivamente.
Una de las mejores arquitecturas de redes neuronales recurrentes es la arquitectura LSTM. LSTM se muestra a continuación:
Las LSTM tienen la misma estructura general que las redes neuronales recurrentes generales, pero la neurona recurrente es un poco diferente con una estructura más compleja. En la imagen de arriba se puede ver que se realiza una gran cantidad de cálculos dentro de una celda LSTM. Las celdas LSTM se pueden observar como una caja negra en el contexto de esta publicación, pero para los lectores más curiosos, esta excelente publicación de blog explica los cálculos dentro de las LSTM y mucho más.
Llamemos a la entrada de la red neuronal un "vector de características". Es un vector de n
dimensiones cuyos elementos son características: f_{0}
, f_{1}
, f_{2}
…, f_{n}
.
\vv{X} = [f_{0}, f_{1}, f_{2}, …, f_{n}]
Ahora, expliquemos cómo se pueden aplicar las redes neuronales recurrentes a una tarea relacionada con las finanzas. La entrada para la red neuronal recurrente es [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}]
. Digamos que n = 5
. Tomamos cinco precios de acciones de Google Close de cinco días consecutivos (ver la tabla con datos de Apertura/Alto/Bajo/Cierre arriba) entre, digamos, 2010-01-04 y 2010-01-08, es decir, [[311.35], [309.98], [302.16], [295.13], [299.06]]
. El vector de características en este ejemplo es unidimensional. La secuencia de tiempo consta de cinco de estos vectores de características. Las salidas de la red neuronal recurrente son funciones ocultas [h_{t_0}, h_{t_1}, h_{t_2}, …, h_{t_n}]
. Esas funciones están en un nivel más abstracto que las funciones de entrada [X_{t_0}, X_{t_1}, X_{t_2}, …, X_{t_n}]
—LSTM debe aprender las partes importantes de las funciones de entrada y proyectarlas a el espacio de características ocultas. Esas características ocultas y abstractas se pueden propagar en la siguiente celda LSTM, lo que dará el siguiente conjunto de características ocultas y más abstractas que luego se pueden propagar nuevamente al siguiente LSTM, y así sucesivamente. Después de la secuencia de LSTM encadenados, el componente final de la red neuronal es la capa lineal (la parte de construcción de la red de avance simple explicada en la sección anterior) que mapea características ocultas desde el último LSTM hasta el punto en un espacio unidimensional, y ese punto es el resultado final de la red: el precio de cierre previsto en el período de tiempo X_{t+1}
. La verdad básica en este ejemplo para X_{t+1}
es 298.61
.
Nota: También puede haber tan solo un LSTM: establecer el número de LSTM es un hiperparámetro, que generalmente se encuentra empíricamente, aunque podemos usar algunas heurísticas. Si los datos no son tan complejos, usamos una arquitectura menos compleja para que el modelo no se ajuste demasiado a los datos. Si los datos son complejos, usamos un modelo complejo para que el modelo no se ajuste a los datos.
En la fase de entrenamiento, los precios de cierre pronosticados se comparan con los precios reales del terreno, y la diferencia entre los precios de cierre pronosticados y los precios reales del terreno se minimiza utilizando un algoritmo de retropropagación y un algoritmo de optimización de gradiente descendente (o una de sus formas, concretamente, en este blog, se usa la versión llamada "Adam" de un algoritmo de optimización de descenso de gradiente) cambiando los pesos de la red neuronal.
Después del entrenamiento y las pruebas, en el futuro, el usuario solo necesita proporcionar datos de entrada a la red neuronal y devolverá el precio previsto (y, con suerte, un precio muy cercano al precio real del futuro).
Una cosa más para mencionar aquí es que, por lo general, los lotes de datos se envían a través de la red, tanto en las fases de entrenamiento como de prueba, para que la red calcule múltiples salidas en un solo paso.
A continuación se muestra una imagen de una arquitectura utilizada en este blog para experimentos. Consta de dos LSTM apilados y una capa lineal.
Experimentos con algoritmos de fondos de cobertura
Intente usar estrategias comerciales algorítmicas así de simples, de la siguiente manera: si el algoritmo predice que el precio subirá al día siguiente, entonces compre n
( n = 1
en este ejemplo) acciones de una empresa (larga), de lo contrario, venda todas las acciones de una empresa (corto). El valor inicial de la cartera (el valor combinado del efectivo y las acciones) se establece en $100,000. Cada acción larga o corta comprará n
acciones de una empresa (Google, en este ejemplo) o venderá todas las acciones de una empresa, respectivamente. Al principio, el sistema posee 0 acciones de una determinada empresa.
Recuerde siempre que este es un ejemplo muy básico y simple, no diseñado para su uso en el mundo real, ya que se necesitaría mucho más trabajo de I+D para modificar el modelo para que funcione bien en la práctica. Aquí se descuidan algunas cosas que deberían considerarse en un escenario del mundo real; por ejemplo, las tarifas de transacción no están incorporadas en el modelo. Se supone que el sistema puede negociar exactamente a la misma hora todos los días, y se supone que todos los días, incluso los fines de semana o festivos, son días de negociación.
Para las pruebas, se utiliza un método de backtesting. El método de backtesting utiliza datos históricos para reconstruir transacciones que se habrían producido en el pasado utilizando las reglas definidas con la estrategia que se desarrolla. El conjunto de datos se divide en dos partes: la primera parte es el conjunto de entrenamiento (pasado) y la segunda parte es el conjunto de prueba (futuro). El modelo se entrena en un conjunto de entrenamiento y, después del entrenamiento, simulamos el futuro en la segunda parte del conjunto de datos para ver cómo se habría comportado el modelo entrenado en el futuro sin haber sido entrenado en él.
La métrica para evaluar la estrategia comercial es el índice de Sharpe (su versión anualizada, asumiendo que todos los días del año son días comerciales y el año tiene 365 días: sqrt(365)*mean(returns)/std(returns))
, donde el rendimiento se define como p_{t}/p_{t-1} - 1
, y p_{t}
es el precio en el período de tiempo t
. El índice de Sharpe muestra la relación entre los rendimientos y el riesgo adicional en el que se incurre, por lo que es bueno tener un índice de Sharpe mayor. Por lo general, los inversores aceptan una relación superior a 1, 2 es muy buena y 3 es excelente.
Solo se utiliza como función el precio de cierre de cada día, de los precios históricos de Google del conjunto de datos de Yahoo Finance. Más características ayudarán, pero está fuera del alcance de este blog probar qué otras características del conjunto de datos (Abierto, Alto, Bajo) son importantes. Algunas otras características no incluidas en la tabla también podrían ser útiles, por ejemplo, el sentimiento de las noticias en un minuto en particular o los acontecimientos importantes en un día en particular. Sin embargo, a veces es muy difícil hacer representaciones de datos que sean útiles para la entrada de redes neuronales y combinarlas con funciones existentes. Por ejemplo, es fácil extender el vector de características y poner un número que represente el sentimiento de las noticias o el sentimiento del tweet de Trump ( -1
muy negativo, 0
neutral, +1
muy positivo, etc.) para cada período de tiempo dado, pero no es así. es tan fácil poner momentos particulares impulsados por eventos (piratas en el canal de Suez, bomba en una refinería en Texas) en el vector de características porque, para cada momento específico, necesitaremos tener un elemento adicional en el vector de características para poner 1
si el evento sucedió o 0
en caso contrario, lo que dará lugar a un número infinito de elementos para todos los momentos posibles.
Para ese dato más difícil, podríamos definir algunas categorías y, para cada momento, determinar a qué categoría pertenece. También podríamos agregar características de las acciones de otras empresas para que un sistema aprenda la correlación entre los precios de las acciones de diferentes empresas. Además, existe un tipo de red neuronal especializada en visión por computadora, las redes neuronales convolucionales, que sería interesante combinar con capas recurrentes y ver cómo las características visuales se correlacionan con los precios de algunas empresas. Tal vez podríamos usar la transmisión de la cámara desde una estación de tren abarrotada como una característica y adjuntar esa transmisión a una red neuronal y ver si lo que ve la red neuronal está correlacionado con los precios de las acciones de algunas empresas; podría haber algún conocimiento oculto incluso en eso. Ejemplo banal y absurdo.
A continuación, se muestra un gráfico que muestra cómo la pérdida de entrenamiento promedio disminuye con el tiempo, lo que significa que la red neuronal tiene suficiente capacidad para adaptarse a los datos de entrenamiento. Es importante decir que los datos deben normalizarse para que el algoritmo de aprendizaje profundo pueda converger.
A continuación se muestra un gráfico que muestra cómo la pérdida de prueba promedio disminuye con el tiempo, lo que significa que la red neuronal tiene la capacidad de generalizar datos no vistos.
El algoritmo es codicioso; si predijo que el precio subirá al día siguiente, entonces el algoritmo compra inmediatamente n=1
acción de una empresa (si hay suficiente efectivo en la cartera) y, de lo contrario, vende todas las acciones de la empresa (si tiene alguna). ). El período de inversión es fijo y dura 300 días. Después de 300 días, todas las acciones se venden. La simulación en datos no vistos, después de un poco de entrenamiento, se puede ver a continuación. Se muestra cómo el valor de la cartera aumenta con el tiempo mediante acciones largas/cortas (o no hacer nada) cada día.
La relación de Sharpe para la simulación anterior es 1,48. El valor final de la cartera después de 300 días es de $100.263,79. Si compráramos acciones el primer día y las vendiéramos después de 300 días, la cartera valdría $99,988.41.
A continuación se muestra una situación en la que la red neuronal no está bien entrenada y pierde dinero después de un período fijo de 300 días.
La relación de Sharpe es -0,94. El valor final de la cartera después de 300 días es de $99.868,36.
Aquí hay un ejemplo interesante: el algoritmo anterior es codicioso y solo predice el precio para el día siguiente, tomando medidas basadas solo en esa predicción. Es posible encadenar múltiples predicciones y predecir el precio en los próximos pasos en el futuro. Por ejemplo, con una primera entrada de [X_ground_truth_{t0}, X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}]
y la primera salida es [X_predicted_{t5}]
, podemos alimentar el red neuronal con esa predicción para que la siguiente entrada sea [X_ground_truth_{t1}, X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}]
y la salida sea [X_predicted_{t6}]
. La siguiente entrada desde allí es [X_ground_truth_{t2}, X_ground_truth_{t3}, X_ground_truth_{t4}, X_predicted_{t5}, X_predicted_{t6}]
que da como resultado [X_predicted_{t7}]
, y así sucesivamente. El problema aquí es que estamos introduciendo un error de predicción que aumenta con cada nuevo paso y finalmente termina con un resultado muy malo a largo plazo, como se muestra en la imagen a continuación. La predicción al principio sigue la tendencia decreciente de la verdad básica y luego se estanca y empeora cada vez más con el tiempo.
Se realizó un análisis de aprendizaje profundo muy simple sobre los precios de las acciones de Google, pero puede incorporar casi cualquier conjunto de datos financieros, siempre que la cantidad de datos sea lo suficientemente grande y de buena calidad. Los datos deben ser discriminativos y deben describir y representar bien el problema.
Terminando
Si funcionó y se generalizó bien en pruebas exhaustivas, este sistema podría permitir a los administradores de fondos de cobertura especular sobre los precios futuros de las acciones de una empresa utilizando el aprendizaje profundo y confiando en estrategias comerciales algorítmicas.
Los administradores de fondos de cobertura podrían darle al sistema una cantidad de dinero para operar automáticamente todos los días. Sin embargo, sería muy malo dejar que los algoritmos comerciales automatizados operen sin supervisión. El administrador de fondos de cobertura debe tener algunas habilidades de aprendizaje profundo o contratar a alguien con las habilidades necesarias para supervisar el sistema y determinar cuándo el sistema ha perdido la capacidad de generalizar y operar bien.
If the system lost the ability to generalize, then it would be necessary to retrain it from the beginning and test it again (maybe by introducing more discriminative features or new knowledge—using new data from the past that didn't exist when the model was first trained).
Sometimes, the data is simply not good enough for the deep learning system to be trained and generalize well and, in that case, an experienced deep learning engineer should be able to detect and rectify such a situation. To build a deep learning trading system, you need hedge funds data scientists, machine learning/deep learning experts (both scientists and engineers), R&D engineers familiar with machine learning/deep learning, etc. No matter which part of an application of machine learning they are familiar with, whether it's computer vision or speech recognition, seasoned professionals will be able to put their experience to good use in the financial sector. At its root, deep learning has the same basics regardless of application or industry, and it should be easy for someone experienced to switch from theme to theme.
The system we presented is very basic and, to be applied in the real world, more R&D should be done in order to increase the returns. Possible improvements of the system could be in developing better trading strategies. Collecting more data for training, which is usually very expensive, will help. A smaller time interval between the points is better. Improvements can also surface in using more features (eg, news sentiments or important happenings corresponding to each point in the dataset, despite being hard to code for a neural network) and extensive grid search for hyperparameters and RNN architecture discovery.
Also, more computing power (powerful GPUs are a must) is needed to make a lot of extensive experiments in parallel and to process a large amount of data, provided that a large amount of data is collected.
Referencias:
- https://www.datacamp.com/community/tutorials/finance-python-trading
- http://colah.github.io/posts/2015-08-Understanding-LSTMs/
- https://en.wikipedia.org
- https://www.investopedia.com/
- https://finance.yahoo.com/
- http://pytorch.org/
Author's Note: I would like to thank Ivan Capalija and Matej Paradzik for the constructive conversations and advice about deep learning in finance, which helped me in writing this blog.