---
title: "El entorno de trabajo - 1"
description: "Crea un entorno profesional de trading algoritmico con Docker y Python. Despliegue, contenedores y research sin complicaciones de infraestructura."
url: "https://pythonparatrading.com/docker-para-trading/"
lang: "es"
date: "2024-04-10"
updated: "2026-09-04"
image: "https://pythonparatrading.com/content/images/2025/04/dockertrading.png"
tags: ["Big Data"]
authors: ["Jesús Cuesta"]
---

# El entorno de trabajo - 1

> Un contenedor Docker con Debian, Miniconda, JupyterLab y zipline-reloaded para tener el entorno de research listo con un comando.

- Idioma: es (español)
- Publicado: 2024-04-10
- Actualizado: 2026-09-04
- Temas: Big Data
- Requisitos: Docker · Docker Compose · git
- Código: https://github.com/quantarmyz/quantstack
- Resumen: En este nuevo artículo, vamos a tratar como crear un entorno profesional para trading quant algorítmicos. Para ello vamos a utilizar un stock de tecnologías, que nos van a facilitar el deployeo, focalizando nuestra actividad en el research puro, y no en la infraestructura.

Puntos clave:

- Por qué empaquetar sistema operativo, entornos y librerías en una imagen común para el equipo.
- Estructura del proyecto: Dockerfile, .env, optimizaciones de Zipline y de JupyterLab.
- Compilar y arrancar el stack con docker compose y abrir JupyterLab en localhost:8888.
- Ingesta del datalake en Zipline con zipline ingest -b qa_datalake.

---

## Antecedentes

Dentro de la labor de la ingeniería financiera, utilizamos una amplia colección de herramientas y librerías, que en ningún punto estuvieron diseñadas, para ser usadas en conjunto. Por consecuencia, necesitamos empaquetar todas las librerías necesarias y evitar problemas, con otros proyectos o permitir la portabilidad.

Si añadimos, que los miembros de un equipo, no utilizan los mismos sistemas operativos, etc. Se genera una amalgama de configuraciones que necesitamos que el entorno de desarrollo sea homogéneo para todos los miembros del equipo. Por consecuencia, necesitaríamos también añadir el sistema operativo y las configuraciones adicionales dentro del paquete.

Para solucionar esto vamos a crear una imagen de Docker, un sistema de contenedores, donde nos permite virtualizar aplicaciones concretas, en lugar de todo un sistema operativo.

El plan será, crear un contenedor Docker, con el sistema operativo, el gestor de entornos y paquetes de Python, y las herramientas necesarias para la investigación quant.

Una vez creado el contenedor y compilarlo. Únicamente se necesitará una línea de comandos, para tener el entorno listo para acceder, en menos de 10 segundos.

## ¿Qué hay dentro del stack?

Dentro de nuestra imagen de Docker, vamos a tener una configuración global, que se utilizara en todos los proyectos, y otra configuración con una configuración más especifica del proyecto.

Dentro de la configuración global, utilizaremos como sistema operativo debían. ¿Por qué? Porque es estable, y requiere de muy poco manteamiento. Alpine no es una posibilidad, porque nuestro objetivo no es ahorrar recursos, y cualquier otro sistema operativo, está automáticamente descartado.

Para gestionar el tema de los entornos y los paquetes, utilizamos miniconda. Que nos proporcionara un entorno Python listo para funcionar. Ademas de otras librerías necesarias como los add-ons del entorno, el propio JupyterLab, …

Y dentro de la parte específica de los proyectos, instalaremos los paquetes y personalizaciones necesarias. En este caso, vamos a crear una configuración sencilla y inicial, donde utilizaremos zipline-reloaded y pyfolio-reloaded.

Crearemos un "Hola Mundo" dentro de zipline, donde una vez este todo el entorno desplegado, realizamos un backtest básico, para verificar el funcionamiento del proyecto. De todas formas, el proyecto está en constante mantenimiento y mejoras, dado que personalmente utilizo este mismo entorno ()en unas versiones más avanzadas, aquí liberamos métodos algo más antiguos.

Resumen de componentes del stack:

-   Debian GNU Linux
-   Miniconda3
-   JupyterLab
-   Archivos de configuración y librerías de configuración de JupyterLab
-   Archivos de configuración, optimizaciones y librerías para poder funcionar con zipline.
-   Extras: Archivos como ejemplos de research, optimizaciones de código, un datalake local, o cualquier otra información necesaria para el stack.

## Ventaja Final

Una vez la imagen esté compilada, necesitaremos hacer únicamente el comando

```shell
docker compose up -d
```

para tener el entorno funcional.

## Creación de un stack

Primero, debemos crear la estructura del proyecto donde se compone de:

![Explorador del proyecto Quantstack: carpeta DockerSource con Dockerfile, .env y req.txt, y docker-compose.yml](https://pythonparatrading.com/content/images/external/quantarmy.com/content/images/2024/01/image-13.png)

Dos carpetas principales. En la carpeta llamada DockerSource, tenemos todo lo relacionado con la construcción de la imagen.

-   .env: Datos privados de entorno para conectarse al datalake etc.
-   Dockerfile: Instrucciones de compilación de la imagen de Docker, es donde se dan los pasos concretos que se automatizan hasta la creación de la imagen+
-   extension.py: Optimizaciones de Zipline
-   overrides.json: Optimizaciones JupyterLab
-   req.txt: Lista detallada de paquetes necesarios para instalar en el entorno vía pip.
-   qa\_datalake.py. Código de ingesta del datalake a zipline.

Dentro de la segunda carpeta, ya se incluye los denominados workdirs, o directorios de trabajo, son los directorios donde se almacena la información inicial con la cual interactuara el researcher.

En este caso disponemos de una serie de carpetas, que agrupar por temáticas notebooks o documentación que en algún punto han sido o serán relevantes.

![Explorador del proyecto Quantstack: carpeta quantarmy_repo con los directorios de trabajo (backtest, datalake, models…)](https://pythonparatrading.com/content/images/external/quantarmy.com/content/images/2024/01/image-14.png)

## Compilar la imagen

### 1 - Clonar la imagen

Descarga la versión más reciente del código desde el repositorio.

```bash
    git clone https://github.com/quantarmyz/quantstack.git
```

### Crear archivo de entorno .env

Crea un archivo `.env` dentro de la carpeta `DockerSource como`:

`/quantstack/DockerSource/.env`

Formato del archivo:

```bash
ENDPOINT=TuEndPoint.COM
DB=TuBucket
ACCESS_KEY=TuAccessKey
SECRET_KEY=TuSecretKey
```

### Compilar la imagen

Desde la terminal, en la ruta `/quantstack`, ejecuta:

```bash
docker compose build --no-cache
```

### Configuración Opcional del Docker Compose

Edita `/quantstack/docker-compose.yml` según sea necesario (se recomienda configurar el token).

### Iniciar el stack

Ejecuta el siguiente comando para el modo debug:

```bash
docker compose up
```

Para ejecutar en segundo plano:

```bash
docker compose up -d
```

### Acceso a JupyterLab

Si no se han realizado modificaciones, la dirección es:

```bash
localhost:8888
```

Contraseña:

```bash
testing
```

### Añadir Feed de datos a Zipline

Desde el JupyterLab, abre un terminal y ejecuta:

```bash
conda activate base
zipline ingest -b qa_datalake
```

Esto conectará al datalake, descargará los datos y los añadirá a la base de datos de Zipline.

## Ejemplo de Backtesting

![Ejemplo de Backtesting](https://pythonparatrading.com/content/images/external/quantarmy.com/content/images/2024/01/image-15.png)

En la imagen se puede apreciar, como hemos lanzado el template por defecto de backtesting en el qastack

## Video

Para facilitar la tarea, he grabado un video donde compilo la imagen y la ejecuto. En menos de 9 minutos, se puede tener el stack funcionando.

[Vídeo: quantstackPoC.mp4](https://pythonparatrading.com/content/images/external/quantarmy.com/content/media/2024/01/quantstackPoC.mp4)

## Repo completa

> **[GitHub - quantarmyz/quantstack: QUANTARMY quantstack | One-click quantitative envoirment based in docker, debian, conda, jupyterlabs,zipline-reloaded and arcticdb](https://github.com/quantarmyz/quantstack.git)**
> QUANTARMY quantstack | One-click quantitative envoirment based in docker, debian, conda, jupyterlabs,zipline-reloaded and arcticdb - GitHub - quantarmyz/quantstack: QUANTARMY quantstack | One-click…

**Related posts:** [Big Data Management 3: Creando un Datalake sobre el Nasdaq con ArcticDB](https://pythonparatrading.com/big-data-con-arcticdb/).
