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

Programe para tener el éxito (Parte IV): El paquete Zipline

Alan Koska


Pruebas históricas

Hay ciertos obstáculos que superar para crear un buen plan de pruebas con un retorno aceptable. Por ello, se debe tener precaución con los supuestos expertos del mercado de valores que luchan por obtener su atención mostrando unos resultados fenomenales en sus pruebas. No hace falta mucho esfuerzo para que los resultados de las pruebas sean fenomenales, aunque no debemos fiarnos. Al principio, vamos a explicar el término “pruebas “ con más detalle. Para realizar las pruebas se necesita un proceso, un modelo, la teoría o la estrategia que aplicar a los datos históricos. La suposición que se hace es que los datos históricos contienen todos los elementos que nos permitirán hacer previsiones sobre el futuro. Sin embargo, esta suposición no siempre está justificada, por lo que algunas pruebas históricas no tienen ningún significado.

Sobreajuste

En el camino hacia el plan de pruebas perfecto se encontrará con varios problemas. Uno de estos se llama “Overfitting” y es ampliamente utilizado. Por ello lo tratamos en este artículo.

“Overfitting” significa que ha identificado más factores que pueden influir en un modelo de los que realmente son necesarios. Todo ello se puede describir usando el ejemplo de una tostadora.

Imagínate que eres un niño curioso y estás sentado en la silla mientras mamá prepara el desayuno. Cada vez que por la mañana mamá pone una rebanada de pan dentro de la tostadora, al saltar la tostada, le dan una excelente tostada de Nutella. Como niño pequeño que es, usted no entiende por qué de repente tiene este delicioso pan tostado delante de usted y por qué el pan de repente está tan crujiente. Entonces, ¿qué hace que la rebanada de pan se tueste? Combine los datos, y así llegará a la conclusión de que necesita a su madre para hacer la tostada. Además, podría creer que el periodo del día (por la mañana) o el brillo del sol son la razón de tener en frente la tostada preparada en su punto. Incluso puede ser que piense que para obtener un pan crujiente su madre es más importante que la tostadora.

Éste es un caso claro de sobreajuste. Se introducen factores de influencia insignificantes en el modelo y, por lo tanto, se eliminan los esenciales.

Un ejemplo homólogo en el trading sería que el trader tenga más en cuenta al tipo de luna que hubo ayer que observar el movimiento fundamental de las acciones respectivas. Dicho ajuste excesivo se puede dar si utiliza pocos datos. De esta manera los factores esenciales no se pueden distinguir de los factores influyentes no esenciales. Otra razón podría ser una complejidad demasiado alta. Ocurre, por ejemplo, cuando usando reglas desea incluir factores completamente disjuntos en un modelo.

A continuación, intente ver un contexto en donde no haya nadie real. Tu mamá, o la hora del día, no son la razón por la que el pan se va a tostar. Otro ejemplo de sobreajuste se da cuando se usa el mismo registro de datos desde el que creó una estrategia para las pruebas históricas. Para evitar todo esto debe hacer lo siguiente: Supongamos que tiene datos de la acción de Apple desde el 01/01/2010. Ahora podrá dividir los datos en las secciones necesarias. El primer conjunto de datos será su zona de entrenamiento y, por ejemplo, irá desde el 01/01/2010 al 01/01/2012. Entonces desarrollará su estrategia de trading. Sin embargo, ahora está realizando una prueba histórica de dicha estrategia con un segundo registro de datos, esta es la zona de validación la cual va desde el 02.01.2012 al 01.01.2019. Así que asegúrese de usar la mayor cantidad de datos posible. Además, no debe tener en cuenta demasiado los eventos individuales. Y, por último, pero no menos importante por ello, no use los mismos datos en la estrategia que los que utilizó para crearlos.

Pruebas históricas utilizando Zipline

Para probar las estrategias simples de nuestro ejemplo, usaremos el paquete Python Zipline proporcionado por Quantopian. Podremos, como discutimos en la Parte 4, descargarlo gratis e instalarlo. La ventaja de Zipline es que fue escrito en Python y es relativamente fácil de manejar. La otra cara: Zipline no es uno de los paquetes de pruebas históricas más completos. Por lo tanto, las estrategias más complejas no se pueden implementar fácilmente. Lo cual no es necesario como parte del aprendizaje.

Usando Zipline

Crea un nuevo entorno para Python

En la parte anterior de este artículo, ya vimos lo que se necesita para crear nuevos entornos para Python. Por otro lado, ahora lo crearemos para Python versión 3.5 en donde instalaremos el paquete Zipline. Para ello se inicia, como es habitual, el navegador Anaconda. Desde el menú de la izquierda se llega al punto “Entornos”. En el campo central podrá ver el “root” del entorno de Python que hemos utilizado. Ahora tendrá que añadir uno nuevo. Podrá hacerlo haciendo clic en “Crear”. Luego, seleccione la versión de Python deseada, en nuestro caso 3.5, y asigne un nombre al entorno. Una vez que lo haya completado, podrá iniciar directamente el entorno de Python, como en el artículo anterior, haciendo clic en la flecha verde y luego en “Abrir Terminal”.

Después de configurar un nuevo entorno para Python, puede descargarse e instalarse el paquete Zipline. Para hacerlo, escriba “ conda install zipline -c Quantopian” en el terminal. Este comando funciona sólo - como mencionamos en el artículo anterior - con la etiqueta “-c Quantopian”, que le indica exactamente a Conda que es el gestor de paquetes dónde buscar el paquete Zipline.

Gestionar con Zipline

Si tiene instalado Zipline, podrá directamente teclear “zipline - help “ en el terminal, para ver qué opciones y comandos podrá ejecutar con su paquete (consulte la Figura 1). 3 de estos 4 comandos serán utilizados en este artículo.

El primer comando es “paquetes” y se refiere a los paquetes de datos disponibles durante las pruebas históricas. Escriba “paquetes de zipline” y listará los paquetes de datos disponibles actualmente que se utilizarán para sus pruebas históricas.

Si desea incluir nuevos paquetes de datos en su paquete, utilice “ingest”.

Por otro lado, use “ejecutar” para llevar a cabo una prueba histórica.

Ahora veamos cómo integrar nuevos paquetes de datos en Zipline. Use el comando zipline bundles para determinar si existe el paquete de datos llamado quantopian -quandl. Si es el caso, aparecerá una fecha a la derecha del nombre. Éste no es el caso de nuestro ejemplo. Debido a que los paquetes de datos proporcionados no cumplen con nuestras expectativas, primero debe descargar datos de precios prefabricados de Quantopian y Quandl. Puede, como ya se indicó anteriormente, hacerlo con el comando “ingerir”. El comando: “ zipline ingest --help” también le mostrará las opciones que puede usar con “ingerir”.

Para descargar los datos requeridos, escriba lo siguiente: “zipline ingest -b quantopian -quandl “. Luego comienza la descarga y podrá usar el comando “paquetes de zipline” para ver si la descarga tuvo éxito. En realidad, Zipline ya estaría listo para usarse y usted podría realizar una prueba histórica de su primera estrategia. El problema es que no se ha programado aún ninguna estrategia.

Estrategia de trading

La simplicidad de Python y Zipline nos permitirá revisar fácilmente la estrategia. Al principio, nos centraremos en 2 funciones: “initialize ()” y “handle_data ()”.

La función “initialize ()” se llama una vez en cada una de las pruebas históricas al inicio. Por ejemplo, puede utilizar esta función para definir parámetros iniciales.

La segunda función “handle_data ()” se llama durante las pruebas históricas con cada entrada de datos. Entonces, si se reciben datos de precio a diario, la función handle_data () se llamará todos los días.

En este artículo vamos a comprar una acción a diario durante las pruebas históricas. Para implementarlo, se requiere un nuevo archivo de Python. En este archivo se escribe “ from zipline.api import order, symbol”. Esto significa que podrá importar las siguientes funciones del paquete “ zipline “ y del módulo “api “: “order ()” y “symbol ()”. Por ejemplo, podrá utilizar la función order () para comprar acciones. La función requiere los 2 parámetros “activo” y “cantidad”. Como parámetros se pasarán las acciones y el número de acciones “acción” y “cantidad”, aquellos que desee comprar. Por otro lado, con la función “símbolo ()”, podrá pasar una abreviatura de la acción a la función.

Si desea saber más acerca de las características incorporadas en Zipline, puede utilizar la documentación Quantopian (www.quantopian.com/help). Al definir las funciones “initalize()” y “handle_data ()” seguramente notará que el “contexto” está configurado como parámetro (no introduciremos “datos” ahora porque no los usaremos en absoluto).

Contexto” es un diccionario de Python vacío que se usa para acceder a los objetos dentro de las funciones que se configuran dentro de la función “inicializar ()”. También podrá leerlo con más detalle en la documentación, el resto le quedará más claro con ejemplos. Busque el código fuente en la imagen 2.

Funciones initialize () y handle_data ()

 

Cuántica

Realizar las pruebas históricas

Si desea ejecutar el algoritmo, vuelva ahora al terminal desde donde ya se ha iniciado el entorno de Python con el paquete “zipline”. Escriba allí el comando “zipline run -f C: /Users/alank/Desktop/test.py --start 2016-1-1 - end 2018-1-1 -b quantopian-quandl “. Luego ejecute las pruebas históricas hasta llegar a la salida (ver imagen 3).

Salida de las pruebas históricas

El archivo en el que se encuentra el algoritmo lo podrá encontrar en la siguiente ruta “C: / Users / alank /Desktop/test.py”. La ruta está marcada con la opción “-f”. A ello le sigue la definición de las fechas en donde se indica desde cuándo a cuándo se deben ejecutar las pruebas históricas. Las opciones “--start” y “--end” se usan con esta finalidad.

Por último, usted especifica qué paquete de datos se debe usar para las pruebas históricas. Utilizaremos el paquete de datos previamente descargado “ quantopian-quandl “.

Conclusión

En esta parte de nuestra serie de artículos, hemos analizado la instalación de Zipline y su uso práctico en pruebas históricas con las que le hemos ofrecido una descripción general del proceso.

Seguramente aún le podrán quedar algunas preguntas las cuales las aclararemos en la siguiente parte de esta serie de artículos. En esta nueva parte entraremos en los detalles sobre la implementación práctica.
 

Este artículo ha sido extraído de la edición de marzo 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 con éxito: el uso de paquetes y módulos
Conceptos básicos de la programación con Python: tipos de datos, funciones y comandos
El entorno de programación: programe para ganar
Este sitio web usa cookies para analizar la navegación del usuario. Política de cookies.
Cerrar