Rankia España
Blog Sistemas de trading
Sistemas automáticos de trading y money management.

Estrategia de impulso con Quantopian

Durante el último artículo instalamos el paquete Zipline y posteriormente escribimos y ejecutamos un algoritmo simple de trading. Todo lo hicimos de una manera relativamente superficial pero nos sirvió para adquirir una visión general de todo el procedimiento. En esta parte final de nuestra serie Phyton, ahondaremos en más detalles y crearemos un nuevo algoritmo de negociación basado en una estrategia de impulso.

alan koska

La base de las estrategias de impulso es su rendimiento pasado, el cual tiene algún poder explicativo sobre el futuro. Por ello, si el precio de una acción ha subido en el pasado, debería subir en el futuro. Así podremos utilizar esta idea con las acciones que hayan ido bien en el pasado.

En este artículo nos centramos en el ejemplo de Microsoft. Si la acción está un 2 % por encima de su media de 5 días, la compraremos con una ponderación del 6 % de nuestra cartera. Si el precio vuelve a estar por debajo de la media de 5 días, venderemos nuestras acciones. Esta estrategia simple se utiliza a largo, lo que significa que no venderemos las acciones si estamos en una tendencia bajista.

 

Documentación de Quantopian

Dado que este es el último artículo de esta serie, trabajaremos con ejemplos de algoritmos concretos similares a los de la documentación de Quantopian. Lo cual tiene la ventaja de que, en retrospectiva, también podremos obtener una explicación del algoritmo desde otra fuente.

Es importante que entendamos que el algoritmo presentado es solo un ejemplo. Utilice la documentación de Quantopian para configurar el algoritmo. Por ejemplo, hay varias formas en que se puede negociar una acción.

No es necesario que emplee un cierto porcentaje de su cartera en ella, pero podrá indicar cantidades específicas por separado. Lo cual es ventajoso si al mismo tiempo utiliza la documentación de Quantopian. La información la tiene en el sitio web https://www.quantopian.com/help.

En el lado izquierdo de este sitio, verá un resumen de todos los temas que se incluyen. En la parte superior está la “Descripción general de Quantopian”, justo debajo del apartado “Conceptos importantes”. Si continúa bajando, encontrará el apartado “Documentación de las APIs”. Si usted desea continuar trabajando con Quantopian esta área le será de mucho interés. Por ejemplo, cubriremos las funciones básicas “initialize”, “trading _data” y “before_trading_start” (estamos escribiendo “funciones”, no “métodos”, porque no cubrimos los métodos de “programación orientada a objetos”). Por ejemplo, si desea comprar una acción, encontrará varias funciones en el apartado “Métodos para órdenes” el cual se usa para comprar. Uno de ellos es “orden (activo, cantidad, estilo = OrderType )” (ver Figura 1).

documentación quantopian

Es inmediatamente evidente lo que hace esta función a partir de la descripción: compra un cierto número de acciones o futuros. También verá que al llamar a esta función, debe pasar los valores de los parámetros “activo” y “cantidad”.

El tercer parámetro es un parámetro opcional, que está preconfigurado. Por supuesto que puede sobrescribirlo. Por ejemplo, si quiere comprar 50 acciones de Apple, teóricamente, podrá hacerlo de esta manera: “Orden (activo = Apple, cantidad = 50 lotes)”. Pero el problema es que necesitará llevar esa teoría a la práctica. Python no entendería lo que quiere decir con “Apple” y “50 lotes”. Por lo tanto, solo podrá pasar valores que Python conozca y por ello lo haremos con nuestro algoritmo.

El último tema de importancia son los “Algoritmos de muestra”. Desde esta área crearemos un algoritmo similar. Con fines de comparación y aprendizaje, será útil que compare nuestro algoritmo con los algoritmos Quantopian.

 

Programando la estrategia

El algoritmo a programar se puede dividir en 3 áreas. En la primera importamos los paquetes requeridos. En la segunda, trabajamos con la función de inicializar que ya conoce. La última contiene la definición de una función, a la que luego se llama.

La función especialmente desarrollada para nuestro caso, también ocultará el elemento central del algoritmo. Dentro de la función de inicialización, podrá ver que al comienzo de la variable “context.share “ pasamos el objeto llamado por la función “símbolo (, msft ‘)”.

Lo cual significa que ahora podrá acceder al recurso compartido de Microsoft dentro del algoritmo cada vez que escriba “context.share”. Lo cual también funciona fuera de la función de inicialización, pero solo mientras use el “contexto”, simplemente escriba “compartir = símbolo (, msft ‘)”, siempre que esté dentro de la función de inicialización.

El segundo comando que puede encontrar dentro de la función de inicialización es “schedule_function (...)”. Este comando es importante si desea escribir su propia función y, por ejemplo, llamarla una vez al día. La frecuencia y el momento en que se llame a esta función personalizada está determinada por “schedule_function (...)”. Esta función tiene parámetros predefinidos a los que puede o debe llamar para determinar cómo se llamará a su propia función en particular. 

código algoritmo quantopian

Los parámetros son los siguientes:

  • “ func “: Especifica cómo se llama la función que debería llamarse.
  • “ date_rule “: Determina el día específico en el que se llama a la función.
  • “ time_rule “: Determina a qué hora se llama a la función.

“calendario”: Determina qué calendario se utilizará para su función, por ejemplo, para poder considerar días festivos.

En nuestro caso específico escribimos: “ Schedule_function ( func = own function, date_rule = date_rules.every_day ())” . Lo cual significa que queremos llamar a la “función personalizada” una vez al día. No especificamos más detalles, por lo que se aplican las configuraciones predeterminadas para “time_rule “ y “calendar”.

Hasta ahora hemos determinado en el algoritmo las acciones en las cuales estamos interesados ​​e indicamos que nos gustaría ejecutar nuestra propia función una vez al día. Lo que ahora falta es la estrategia de impulso la cual se hará en una función separada. Como en los artículos anteriores de esta serie, ahora simplemente definimos una función con “def own function (context, data)”.

Para nuestro algoritmo, ahora necesitamos datos para que sepa, por ejemplo, si una acción está por encima del precio medio. Para ello definimos la variable “price_history”. La función “data.history (...)” nos proporciona los datos de la base de datos. Para ello tenemos que indicar a la función “data.history (...)” los datos que necesitaremos. Nuevamente, lo hacemos con “schedule_function” incluyendo los parámetros. Específicamente, lo definiremos de la siguiente manera: “Price_history = data.history (símbolos = context. Share , fields = ‘price’, bar_count = 5, frequency = ‘1d’) .

Lo cual significa que queremos tener precios diarios para la acción “context.share” durante 5 días. Para nuestro algoritmo necesitamos el precio medio de los últimos 5 días y el precio actual de las acciones. Con este propósito nos referiremos de nuevo a la variable previamente definida “price_history”. Luego definiremos 2 variables “through_price” y “currentprice” para usarlas dentro de la “función IF”. La primera “función IF” usa “data.can_trade ( context. Share )” para determinar si el recurso compartido “context.share” fue, o es ahora, negociable. En este caso, se usa la siguiente “función IF”, que quiere saber si el precio actual de la acción está un 2 % por encima de la tasa media.

Si este es el caso, las acciones se comprarán al 6 % del valor de la cartera con: “Order_target_percent ( context. Share , 6)” que nos devolverá la información de compra de la acción. Sin embargo, dentro de la segunda “If function”, también existe la posibilidad de que el precio actual caiga por debajo del precio medio, lo que significa que se cancelarán todas las participaciones en la acción. Nuestro segundo algoritmo ya está terminado.

terminal wuantopian

Ejecución

Como se describe en el artículo anterior, es necesario el paquete Zipline para realizar una prueba histórica de dicha estrategia. También es importante que inicie el archivo Python, que contiene el algoritmo, desde el entorno de Python en el que Zipline ya está instalado. Después de escribir el algoritmo, es útil realizar una prueba con Zipline para ver cuál ha sido el rendimiento en el pasado.

Para hacerlo, debe abrir de nuevo el terminal y el entorno Python, que al tener ya instalado Zipline, podrá iniciar las pruebas históricas con el siguiente comando: “Zipline run -f C: /User/alank/Desktop/traders-momentum.py --start 2010-1-1 --end 2018-1-1-b quantopian-quandl”. La prueba se ha realizado desde principios de 2010 hasta principios de 2018. Los resultados no son exactamente intoxicantes. Por lo tanto, realizar las pruebas históricas le brinda la oportunidad de evaluar críticamente su estrategia de inversión.

 

Conclusión

Aunque nuestra serie básica termina con este artículo, es importante que continúe programando a pesar de que pueda tener problemas de programación que sean completamente evidentes. Para que continúe teniendo una curva de aprendizaje importante, le recomendamos los siguientes contenidos:

  • El tutorial de Python por Micha el Markert ( https://py-tutorial-de.readthedocs.io/en/python-3.3/appetite.html ) / • Tutoriales de Youtube sobre Python / • Clases y tutoriales de Quantopian

Para comprender las API como Quantopian, también es importante que se centre en la programación orientada a objetos (OOP).

 

Este artículo ha sido extraído de la edición de verano de la revista TRADERS' by Rankia, si estás interesado en leer más artículos relacionados con el Trading, puedes suscribirte de forma gratuita a continuación.

 Suscríbete Gratis >>> ¡Recibirás todos los meses el nuevo número de la revista TRADERS' by Rankia! Cada mes, nuevos artículos, entrevistas y noticias relacionados con el mundo del Trading. 

¿Qué Bróker se adapta mejor a tu perfil?

¿Quieres dar tus primeros pasos en bolsa o cambiar a un bróker que se adapte mejor a tus necesidades? Te ayudamos a encontrar el mejor bróker de acciones y derivados que mejor se adapta a ti en menos de 2 minutos. El estudio es gratuito y sin compromiso.


¡Comenzar búsqueda!
Herramienta gestionada por Rankia S.L.
Lecturas relacionadas
Programe para tener el éxito (Parte IV): El paquete Zipline
¡Sé el primero en comentar!
Este sitio web usa cookies para analizar la navegación del usuario. Política de cookies.
Cerrar