tirolesa es un algoritmo trading biblioteca construida en Python. Fue utilizado en producción por Quantopian, que es una plataforma alojada para construir e investigar trading estrategias.
Zipline es un excelente sistema para trading investigación y desarrollo del sistema. En este artículo, solo repasaremos los detalles para instalar y probar la instalación. Zipline es una plataforma compleja con múltiples partes. Si se encuentra con algún error, desplácese hasta la solución de problemas de instalación.
Instalar Miniconda
Tú puedes descargar Miniconda desde el sitio web, o use wget en la terminal. Cuando ejecute el script de shell, siga las indicaciones.
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
$ chmod +x Miniconda3-latest-Linux-x86_64.sh
$ ./Miniconda3-latest-Linux-x86_64.sh
... follow the prompts
$ conda update conda
instalar tirolesa
Crearemos un entorno para instalar Zipline, luego lo activaremos configurándolo como nuestro entorno actual y luego instalaremos todos los paquetes necesarios. Debe configurar explícitamente la versión de python como se muestra a continuación.
$ conda create -n env_zipline python=3.5
$ conda activate env_zipline
$ conda install -c Quantopian zipline
Agreguemos bibliotecas útiles adicionales e ingiramos datos de Quandl. Tenga en cuenta que estoy usando pip para instalar Pyfolio. La versión de Pyfolio instalada con Conda estaba significativamente desactualizada y su uso causará problemas. Si falta algún paquete durante la instalación, use conda o pip install en ese orden. La última línea requerirá que tenga un Quandl cuenta con una clave API asociada. Reemplace your_key_here con su clave API de Quandl. Según su conexión a Internet y la velocidad de procesamiento, la ingesta de zipline puede llevar algún tiempo.
$ conda install jupyter matplotlib
$ conda install -c conda-forge alphalens
$ pip install pyfolio
$ QUANDL_API_KEY=your_key_here zipline ingest -b quandl
$ zipline ingest -b quantopian-quandl
Tirolesa de prueba
Cree un archivo llamado dual_moving_average.py con lo siguiente:
from zipline.api import order_target, record, symbol
def initialize(context):
context.i = 0
context.asset = symbol('AAPL')
def handle_data(context, data):
# Skip first 300 days to get full windows
context.i += 1
if context.i < 300:
return
# Compute averages
# data.history() has to be called with the same params
# from above and returns a pandas dataframe.
short_mavg = data.history(context.asset, 'price', bar_count=100, frequency="1d").mean()
long_mavg = data.history(context.asset, 'price', bar_count=300, frequency="1d").mean()
# Trading logic
if short_mavg > long_mavg:
# order_target orders as many shares as needed to
# achieve the desired number of shares.
order_target(context.asset, 100)
elif short_mavg < long_mavg:
order_target(context.asset, 0)
# Save values for later inspection
record(AAPL=data.current(context.asset, 'price'),
short_mavg=short_mavg,
long_mavg=long_mavg)
Ejecute Zipline usando el siguiente comando que produce el siguiente resultado:
$ zipline run -f dual_moving_average.py --start 2014-1-1 --end 2018-1-1 -o dma.pickle
INFO: zipline.finance.metrics.tracker: Simulated 1007 trading days
first open: 2014-01-02 14:31:00+00:00
last close: 2017-12-29 21:00:00+00:00
Si su sistema simuló el 1007[[trading dias/cuantos-trading-días-en-un-año), ya está todo listo para seguir los próximos artículos. Si tiene algún problema, comente a continuación o envíeme un mensaje en Twitter e intentaré ayudarlo.
Solución de problemas
Si tiene algún problema durante la instalación de Zipline, consulte la Problemas de Zipline Github y Tirolesa Grupos de Google paginas Además, asegúrese de que sus versiones estén actualizadas y de que tenga instalados los paquetes de Quandl. Veremos cómo crear nuestros propios paquetes en un artículo posterior.
$ conda list
$ zipline bundles