Estrategias de Trading Algorítmico con Inteligencia Artificial

Estrategias de Trading Algorítmico con Inteligencia Artificial

Cuando se utiliza el trading algorítmico, lo que se busca es automatizar inversiones y también mejorar la precisión de determinadas estrategias. Los desarrolladores de software y los informáticos en general, siempre buscan automatizarlo todo. Es por eso, que los programadores y otros perfiles IT, cuando comienzan a estudiar sobre Forex, Trading, blockchain y demás, siempre intentan automatizarlo. Sin embargo, hay profesionales críticos sobre esto que argumentan, que antes también es mejor pasar por un proceso manual por el que aprender otras técnicas más sencillas.

boton formacion

¿Qué indicadores se utilizan más en el trading algorítmico?

Algunos ejemplos de los indicadores y datos en los que se fijan los desarrolladores de algoritmos de trading algorítmico, son los siguientes. Existen mucho más y cada desarrollador puede innovar con cosas totalmente novedosas, no mencionadas a continuación.

  • Medias móviles y bandas de Bollinger para reversión media: basándose en estos indicadores, se realizan cálculos para determinar si el precio se ha alejado de la realidad e invertir en relación a que ese valor vuelva a la normalidad o a un precio más realista.
  • Indicadores basados en el precio para hacer arbitraje: se invierte en dos plataformas a la vez o más, con la intención de aprovecharse de la diferencia de precios. Por ejemplo comprar un determinado valor en una plataforma y venderlo automáticamente en otra. Ejemplo: en una plataforma bitcoin está a $23.300 y en otra a $23.350, de forma que el algoritmo compre y venda de forma veloz, aprovechando esa divergencia. Existen diversos tipos de arbitraje más avanzados, como por ejemplo el arbitraje triangular o el arbitraje estadístico. Hay que tener en cuenta, que las comisiones, pueden acabar con el éxito de esta estrategia.
  • La información de terceros con algoritmos de rastreo: basados en la recopilación de información basadas en las órdenes de volumen de terceros, el libro de órdenes y en la interpretación de los movimientos de otros algoritmos. Existen algoritmos llamados “Sniffers” para detectar si otros algoritmos están trabajando en un mismo mercado, con la intención de aprovecharse de ellos.
  • Sentimiento del mercado: basados en el rastreo de noticias, el rastreo de redes sociales o en otros factores psicológicos de los inversores, como el pánico o las órdenes de venta.
  • Diversas variables que aplicar a Machine Learning o Deep learning: con una mente creativa o varias, se pueden recolectar datos que afecten al precio de un valor, para más tarde conseguir predicciones basadas en ML y DL. Incluso con algunos algoritmos de Deep Learning, se desconoce que variables está teniendo en cuenta el algoritmo.

Ejemplo de código de trading algorítmico (Python)

El siguiente bot está basado en porcentajes y el movimiento del precio, ejecutando una compra o una venta si el valor de percent_change es menor o mayor que medio punto de porcentaje 0.5%. Desarrollado para ser compatible con el Broker de Robin Hood, programado por Dante Sblendorio. Que es un doctor de física que vive en Suiza y está especializado en el análisis de datos.

					
#
import robin_stocks as r 
import pandas as pd
import time
username = ''
password = ''

login = r.login(username,password)
r.build_holdings() 
def extract_list():
    ticker_list = list(r.build_holdings().keys())
    return ticker_list

def visualize_price(ticker_list, span = 'year', bounds = 'regular'):    
    for t in range(len(ticker_list)):
        name = str(r.get_name_by_symbol(ticker_list[t]))
        hist = r.stocks.get_historicals(ticker_list[t], span=span, bounds=bounds)
        hist_df = pd.DataFrame()
        for i in range(len(hist)):
            df = pd.DataFrame(hist[i], index = [i])
            hist_df = pd.concat([hist_df,df])
        hist_df.begins_at = pd.to_datetime(hist_df.begins_at, infer_datetime_format=True)
        hist_df.open_price = hist_df.open_price.astype('float32')
        hist_df.close_price = hist_df.close_price.astype('float32')
        hist_df.high_price = hist_df.high_price.astype('float32')
        hist_df.low_price = hist_df.low_price.astype('float32')

        ax = hist_df.plot(x = 'begins_at', y = 'open_price', figsize = (16,8))
        ax.fill_between(hist_df.begins_at, hist_df.low_price, hist_df.high_price, alpha=0.5)
        ax.set_xlabel('Date')
        ax.set_ylabel('Price (USD)')
        ax.legend([ticker_list[t]])
        ax.set_title(name)

ticker_list = extract_list()
visualize_price(ticker_list, span = 'year', bounds = 'regular')
def trading_bot(trading_dict):
    holdings = r.build_holdings()
    holdings_df = pd.DataFrame()
    for i in range(len(holdings)):
        ticker = list(holdings.items())[i][0]
        holding_df = pd.DataFrame(list(holdings.items())[i][1], index = [i])
        holding_df['ticker'] = ticker
        holdings_df = pd.concat([holdings_df, holding_df])
    holdings_df = holdings_df[['ticker', 'price', 'quantity', 'percent_change','average_buy_price', 'equity', 'equity_change','pe_ratio', 'type', 'name', 'id' ]]

    for j in range(len(trading_dict)):
        holding_df = holdings_df[holdings_df.ticker == list(trading_dict.keys())[j]]
        if holding_df['percent_change'].astype('float32')[0] <= list(trading_dict.values())[j][0]:
            buy_string = 'Buying ' + str(holding_df['ticker'][0]) + ' at ' + time.ctime()
            print(buy_string)
            r.orders.order_buy_market(holding_df['ticker'][0],1,timeInForce= 'gfd')
        else:
            print('Nothing to buy')

        if holding_df['percent_change'].astype('float32')[0] >= list(trading_dict.values())[j][1]:
            sell_string = 'Buying ' + str(holding_df['ticker'][0]) + ' at ' + time.ctime()
            print(sell_string)
            r.orders.order_sell_market(holding_df['ticker'][0],1,timeInForce= 'gfd')
        else:
            print('Nothing to sell')    
trading_dict = {'KMI': [-0.50, 0.50]}
holdings_df = trading_bot(trading_dict)
r.logout() 

#Source: https://www.activestate.com/blog/how-to-build-an-algorithmic-trading-bot/

¿Qué lenguajes de programación aprender para trading algorítmico?

  • Python: debido a que tiene librerías relacionadas con el análisis de datos como pandas, IA y matemáticas (Numpy) Al ser el lenguaje líder en automatizaciones y big data, es normal, que Python sea uno de los favoritos para hacer trading algorítmico. También es muy compatible con otras herramientas de analítica de datos y trading. Además de ser fácil de aprender.
  • MQL4 y MQL5: se ha desarrollado especialmente para automatizar inversiones con el software de MetaTrader. Hay muchos tutoriales y documentación para aprender sobre este lenguaje de forma gratuita.
  • C++: es muy utilizado para el trading algorítmico, debido a que es un lenguaje muy eficiente y potente para trabajar con datos a gran escala. Es utilizado en los algoritmos de trading de alta frecuencia. Sin embargo es más difícil de aprender que Python y se tarda mucho más en programar determinadas cosas.
  • R o Matlab: son lenguajes que están entre los favoritos por los científicos de datos y de Inteligencia Artificial, por lo que muy compatibles con usos de trading algorítmico. También hay librerías para R, que con la especial utilidad de trading cuantitativo y finanzas. Entre los favoritos para expertos en matemáticas y estadística.

¿Dónde estudiar trading algorítmico?

En este caso el presupuesto es muy variable, desde másteres de decenas de miles de euros, hasta cursos y libros, de menos de 100€.

  • Másteres universitarios: la universidad Politécnica de Madrid, tiene un máster de Trading Algorítmico, por 2.300€ y se imparte de forma online. No es necesaria una titulación universitaria, para poder hacer este máster. La escuela de negocios de INESEM, oferta un curso superior que parece más teórico que práctico, de 250 horas, por 460€. Máster de IEB de Bolsa y Mercados Financieros, que contiene asignaturas de Inteligencia Artificial y Big Data, aplicada a la economía, con un coste de 21.000€. El centro de Estudios Financieros (CEF) oferta un curso de dos meses, por 500€ y online, en este caso, parece que tiene asignaturas más prácticas, que en otros anteriormente mencionados.
  • Formación de Udemy: hay varios profesionales que ofrecen formación muy práctica sobre el tema, con ejemplos reales y temario muy avanzado. Algunos de estos profesores son autodidactas y le dan una visión más emprendedora, los cursos están de 30€ a 200€
  • Libros de Trading Algorítmico: por 50€ aprox, es posible comprar el libro de Python para trading algorítmico y otros libros similares. Algunos están en inglés, por lo que es necesario, tener un determinado nivel.

Trading algorítmico para ocultar movimientos.

Los bancos de inversión y grandes fondos de inversión, también utilizan el trading algorítmico para ocultar sus movimientos y que afecten de forma diferente al mercado.


boton formacion
  • Técnica de Guerrilla: compañías como Credit Suisse, han inventado esta técnica y trata de dividir una inversión grande en muchas pequeñas, durante una determinada franja de tiempo, para afectar de forma diferente a un valor en bolsa.
  • Piscinas oscuras de liquidez: son utilizadas por bancos de inversión y otras instituciones, que ocultan las transacciones a la mayoría del público. Esto ayuda a que grandes bancos y compañías no llamen la atención con noticias de compras/ventas que puedan hacerse virales, dañar su reputación o considerarse extrañas, como en algunos casos inversiones en Bitcoin o con menos ética. Además de no ofrecer información que pueda beneficiar a la competencia. Por ejemplo: que un banco que critica las criptomonedas, a la vez invierta en una empresa relacionada con las criptomonedas y no quiera que lo relacionen con esta empresa.

Mi opinión personal.

Pienso que vivir del trading algorítmico es una cosa muy complicada y que tan solo un pequeño porcentaje lo consigue, similar a dedicarse al deporte de forma profesional. Sin embargo, lo veo una excelente forma de ganar dinero extra, de optimizar inversiones que igualmente íbamos a realizar o de aprender programación con algo que nos resulte realmente interesante, logrando ver los resultados económicos desde un primer momento.

Javier.Finance
Sígueme:

Deja un comentario