SYS-03RepositorioJupyter Notebook
Quantstack
Research y backtesting en un contenedor. Con la imagen compilada, un comando levanta JupyterLab con Zipline y ArcticDB.
- Estrellas
- 7
- Lenguaje
- Jupyter Notebook
Qué es
Quantstack es una plataforma de investigación y backtesting de trading algorítmico con Zipline, ArcticDB y JupyterLab, empaquetada en Docker. La imagen parte de Miniconda sobre Debian.
Resuelve un problema de entorno. Las librerías de research no se diseñaron para usarse juntas, y en un equipo cada
miembro trabaja con un sistema operativo y una configuración distintos. El contenedor fija el sistema, el gestor de
paquetes y las herramientas para todos. Una vez compilada la imagen, docker compose up -d deja el entorno listo.
Qué incluye
docker-compose.yml: servicionotebooken el puerto 8888, conJUPYTER_TOKEN(por defecto,testing). Montaquantarmy_repo/como carpeta de trabajo (/WorkingData).DockerSource/Dockerfile: imagencontinuumio/miniconda3. Instala con conda JupyterLab y TA-Lib, y con pip el resto dereq.txt. Copia a la imagen la extensión de Zipline, el conector y el.env.DockerSource/req.txt: zipline-reloaded, pyfolio-reloaded, alphalens-reloaded, empyrical-reloaded y exchange_calendars; arcticdb y yfinance; pandas, numpy, scipy, scikit-learn, matplotlib, plotly, seaborn y pyarrow; extensiones de JupyterLab (git, LSP, monitor del sistema, tiempo de ejecución).DockerSource/extension.py: registra el bundleqa_datalakecon el calendario NYSE.DockerSource/qa_datalake.py: conector ArcticDB → Zipline. Lee de ArcticDB precios, dividendos y splits de los ETF de la tabla, desde 2010, y los escribe en el bundle.DockerSource/overrides.json: configuración de JupyterLab (tema, fuentes).quantarmy_repo/: notebooks.backtest/(plantillatemplate_zipline_jupyterlab.ipynby ejemplo de volatilidad01-bt-zipline-variance.ipynb),datalake/(conexión, contenidos y exploración del datalake),models/(01_101_ALPHAS.ipynb) ytools/(zipline_db_management.ipynb).analisis/,theory/yhowtos/tienen, de momento, un notebook vacío.
ETF del bundle qa_datalake:
| Ticker | Descripción |
|---|---|
| XLE.US | Energy Select Sector |
| XLF.US | Financial Select Sector |
| XLI.US | Industrial Select Sector |
| XLK.US | Technology Select Sector |
| XLP.US | Consumer Staples Select Sector |
| XLU.US | Utilities Select Sector |
| XLV.US | Health Care Select Sector |
| XLY.US | Consumer Discretionary Select Sector |
| XLB.US | Materials Select Sector |
| XLC.US | Communication Services Select Sector |
| ITA.US | iShares U.S. Aerospace & Defense |
Instalación y primer uso
Requisitos: Docker y Docker Compose, y credenciales de acceso al QA Datalake (S3/ArcticDB).
git clone https://github.com/quantarmyz/quantstack.git
cd quantstackAntes de compilar hay que crear DockerSource/.env con las credenciales del datalake. El Dockerfile lo copia dentro de
la imagen (/root/.env).
ENDPOINT=tu-endpoint.com
DB=tu-bucket
ACCESS_KEY=tu-access-key
SECRET_KEY=tu-secret-keySe compila la imagen y se arranca el stack, en segundo plano con -d:
docker compose build --no-cache
docker compose up -dJupyterLab queda en http://localhost:8888, con la contraseña testing. Para cambiarla, se edita JUPYTER_TOKEN en
docker-compose.yml.
Desde un terminal de JupyterLab se ingieren los datos del datalake en el bundle de Zipline:
zipline ingest -b qa_datalakeDespués, en backtest/, template_zipline_jupyterlab.ipynb sirve de base para un backtest nuevo.
Cómo encaja
Quantstack es la pieza central de la cadena del laboratorio. Su conector lee del Datalake en ArcticDB, con las mismas cuatro variables de entorno, y alimenta un bundle de Zipline. La cuarta parte de la serie Big Data Management explica ese conector. Para el informe, la imagen trae pyfolio-reloaded; QAStats, la librería de reporting del laboratorio, se instala aparte.