Red de conocimiento informático - Material del sitio web - Cómo ganar dinero negociando acciones usando Python y aprendizaje automático

Cómo ganar dinero negociando acciones usando Python y aprendizaje automático

Creo que mucha gente ha pensado en dejar que la inteligencia artificial les ayude a ganar dinero, pero ¿cómo hacerlo? Ga?tan Rickter, consultor de datos financieros en Ginebra, Suiza, publicó recientemente un artículo que presenta su experiencia en el uso de Python y el aprendizaje automático para ayudar al comercio de acciones. El resultado final tiene una tasa de rendimiento que supera al índice S&P 500, que ha estado en. un mercado alcista a largo plazo. Aunque este artículo no describe completamente su método, el contenido revelado puede brindarnos información sobre cómo utilizar la inteligencia artificial para negociar acciones.

¡Finalmente superé al S&P 500 por 10 puntos porcentuales! Puede que no parezca mucho, pero cuando se trata de grandes cantidades de capital altamente líquido, las ganancias de los fondos de cobertura pueden ser considerables. Los enfoques más agresivos también pueden generar mayores retornos.

Todo empezó cuando leí un artículo de Gur Huberman titulado "Especulación contagiosa y una cura para el cáncer: un no evento que hizo que los precios de las acciones se dispararan". El estudio describe un incidente ocurrido en 1998 que involucró a EntreMed, una empresa que cotizaba en bolsa (entonces código de acciones: ENMD):

"Un artículo publicado en el New York Times del domingo sobre el desarrollo de nuevos medicamentos para el tratamiento del cáncer. El potencial El artículo provocó que el precio de las acciones de EntreMed subiera de 12.063 al cierre del viernes a 85 el lunes, y cerró por encima de 30 durante las próximas tres semanas. Este entusiasmo por la inversión también llevó a que otras empresas de biotecnología recibieran una prima. La investigación se había publicado en Nature y en varios periódicos populares, incluido The Times, hace al menos cinco meses, por lo que se trataba simplemente de un público entusiasta. ¡La atención puede desencadenar un aumento continuo de los precios de las acciones, incluso si no aparece ninguna información nueva real! /p>

Entre las muchas observaciones esclarecedoras hechas por los investigadores, se destaca una conclusión:

p>

Los movimientos (del precio de las acciones) pueden concentrarse en acciones que tienen algunas similitudes, pero aquellas Las diferencias no son necesariamente fundamentos económicos."

Sólo me pregunto si las acciones se pueden dividir en función de indicadores distintos de los comúnmente utilizados. Empecé a investigar en la base de datos y unas semanas más tarde encontré una que contenía una puntuación que describía la solidez de las "relaciones conocidas y ocultas" entre acciones y elementos de la tabla periódica.

Tengo experiencia en genómica computacional y esto me recordó lo poco que se comprenden las relaciones entre los genes y sus redes de señalización celular. Pero cuando analizamos los datos, comenzamos a ver nuevas relaciones y correlaciones que quizás no hubiéramos predicho antes.

Patrones de expresión de genes seleccionados implicados en vías de señalización implicadas en la plasticidad, el crecimiento y la diferenciación celular

Al igual que los genes, las poblaciones se ven afectadas por una red gigante en la que los factores son fuertes o débiles. relaciones ocultas entre ellos. Algunos de estos efectos y relaciones son predecibles.

Uno de mis objetivos es crear grupos de acciones largos y cortos, a los que llamo "grupos de cesta", que puedo utilizar como cobertura o simplemente para obtener beneficios. Esto requiere el uso de un método de aprendizaje automático no supervisado para crear grupos de acciones de modo que existan relaciones fuertes o débiles entre los grupos. Estos grupos funcionarán como una "canasta" de acciones que mi empresa podrá negociar.

Primero descargué un conjunto de datos: Descubrimiento de relaciones ocultas de empresas públicas. Este conjunto de datos se basa en la relación entre los elementos de la tabla periódica y las empresas que cotizan en bolsa.

Luego usé Python y algunas herramientas comunes de aprendizaje automático: scikit-learn, numpy, pandas, matplotlib y seaborn, y comencé a comprender la forma de la distribución del conjunto de datos con el que estaba trabajando.

Para este propósito, me referí a un kernel de Kaggle titulado "Análisis de componentes principales con elementos visuales de KMeans": Análisis de componentes principales con elementos visuales de KMeans

importar numpy como npimportar pandas como pdfdesde sklearn.decomposition importar PCAdesde sklearn.cluster importar KMeansimport matplotlib.pyplot as pltimport seaborn as sbnp.seterr(divide='ignore', invalid='ignore')# Manera rápida de probar solo algunas características de las columnas# stocks = pd.read_csv('supercolumns-elements-nasdaq-nyse-otcbb -general-UPDATE-2017-03-01.csv', usecols=range(1,16))stocks = pd.read_csv('supercolumns-elements-nasdaq-nyse-otcbb-general-UPDATE-2017-03-01. csv')print(stocks.head())str_list = ,x_9d, c='goldenrod',alpha=0.5)

plt.ylim(-10,30)

plt .show()

Salida:

Aquí ni siquiera observamos el más mínimo contorno de los clusters, por lo que probablemente deberíamos seguir ajustando el valor de n_component hasta que obtengamos lo que queremos. quiero resultado. Esta es la parte "arte" de la ciencia y el arte de los datos.

Ahora probemos K-means para ver si podemos visualizar alguna agrupación obvia en la siguiente sección.

Agrupación de K-Means

Utilizaremos PCA para proyectar los datos para implementar una K-means simple.

Usando la llamada KMeans() de scikit-learn y el método fit_predict, podemos calcular los centros de los conglomerados y predecir los índices de los conglomerados para la primera y tercera proyecciones PCA (para comprender si podemos observar algún conglomerado ajustado). ). Luego podemos definir nuestro propio esquema de color y dibujar un diagrama de dispersión, el código se ve así:

# Establecer una agrupación de 3 KMeans

kmeans = KMeans(n_clusters=3) p>

# Calcular los centros de los clusters y predecir los índices de los clusters

X_clustered = kmeans.fit_predict(x_9d)# Definir nuestro propio mapa de colores

LABEL_COLOR_MAP = {0 : 'r ', 1 : 'g',2 : 'b'}

label_color = ,x_9d, c= label_color, alpha=0.5)

plt.show()

Resultado:

Este diagrama de dispersión de K-medias parece más prometedor, como si los supuestos de nuestro modelo de agrupamiento simple fueran correctos. Podemos observar 3 grupos distinguibles con este esquema de visualización de colores.

Utilizando la práctica función de diagrama de pares de Seaborn, puedo trazar automáticamente todas las características en un marco de datos en pares. Podemos emparejar las primeras 3 proyecciones una por una y visualizarlas:

# Crear un marco de datos temporal a partir de nuestros datos de proyección PCA "x_9d"

df = pd.DataFrame(x_9d)

df = df]

df['X_cluster'] = X_clustered

# Llame al diagrama de pares de Seaborn para visualizar nuestra agrupación de KMeans en los datos proyectados de PCA

sb.pairplot(df, hue='X_cluster', paleta='Dark2', diag_kind='kde', size=1.85)

sb.plt.show()

Resultado:

Creación de clústeres de cesta

Depende de usted decidir cómo ajustar sus clústeres. No existe una solución mágica a este respecto; el método específico depende del entorno en el que se opera. En este caso se trata de los mercados bursátiles y financieros definidos por relaciones ocultas.

Una vez que tenga sus grupos a su gusto, puede establecer umbrales de puntuación para controlar si acciones específicas califican para un grupo y luego puede extraer acciones para un grupo determinado, agregando que se negocian como cestas o se usan. estas cestas como señales. Lo que puede hacer con este enfoque depende en gran medida de su propia creatividad y del nivel en el que optimice utilizando variantes de aprendizaje profundo para optimizar los rendimientos de cada grupo en función del concepto de grupos o puntos de datos, como interés corto o flotación corta (acciones disponible en el mercado abierto).

Puedes notar algunas características interesantes en la forma en que estos clusters se utilizan como cestas de comercio. A veces existen diferencias entre el S&P y el mercado general. Esto puede brindar oportunidades de arbitraje que se basan esencialmente en el "arbitraje de información". Algunos grupos están relacionados con las tendencias de búsqueda de Google.

Es realmente interesante ver la agrupación relacionada con los materiales y sus cadenas de suministro, como dice este artículo: Acercándonos a 10 materiales y sus cadenas de suministro - Fairphone

i Simplemente usando esto conjunto de datos Ejecuté las etiquetas de las columnas Cobalto, Cobre, Galio y Grafeno solo para ver si podía encontrar a alguien trabajando en este campo o influenciado por él. ¿Existen conexiones ocultas entre los riesgos de las empresas que cotizan en bolsa? Estas cestas se compararon con los rendimientos del S&P.

Al utilizar datos históricos de precios (disponibles directamente en Quantopian, Numerai, Quandl o Yahoo Finance), puede agregar los datos de precios para generar rendimientos proyectados, que se pueden visualizar usando HighCharts:

Mis rendimientos de este grupo superaron al S&P por un margen justo, lo que significa que puedes ganar un 10% más por año que el S&P (el S&P ganó un 16% durante el año pasado). También he visto enfoques más agresivos que generan más del 70%. Ahora debo admitir que hago otras cosas, pero debido a la naturaleza de mi trabajo tengo que mantener esas cosas en caja negra. Pero por lo que he observado hasta ahora, al menos explorar y envolver nuevos modelos cuantitativos en torno a este enfoque podría resultar muy valioso, y el único inconveniente es que es un tipo diferente de señal que se puede incorporar en los procesos de otros sistemas.

Generar clusters de cesta corta puede ser más rentable que generar clusters de cesta larga. Este enfoque merece otro artículo, preferiblemente antes del próximo cisne negro.

Si se utiliza el aprendizaje automático, es posible adelantarse a las relaciones parásitas, parasitarias y eróticas de las empresas públicas con relaciones conocidas y ocultas, lo cual es interesante y posible. Al final, la rentabilidad de uno parece depender de la capacidad de crear combinaciones poderosas de etiquetas de características (es decir, conceptos) al generar datos en estas categorías.

Mi próxima iteración en este tipo de modelo debería incluir un algoritmo separado para generar automáticamente combinaciones de características o listas únicas. Quizás basándose en eventos casi en tiempo real, esto podría afectar a grupos de acciones con relaciones ocultas que sólo los humanos equipados con algoritmos de aprendizaje no supervisados ​​podrían predecir.