Apéndice B · Entorno de laboratorio
Setup completo del entorno: dependencias, APIs, paper trading y convenciones del laboratorio.
Este apéndice define el entorno reproducible con el que se han ejecutado y verificado todos los ejemplos del curso. La filosofía es la que el propio ecosistema impone: la cadencia de releases de LangChain es de minors cada 1–2 meses y patches semanales (questdb.com) , de modo que la única defensa real contra la deriva de versiones es el pin estricto y un entorno recreable desde cero. Se asume Python 3.12 (LangChain v1 exige ≥3.10), pip o uv, y Docker para el servicio de Postgres.
14.1 Setup reproducible
14.1.1 Versiones pineadas, variables de entorno, Docker Compose con Postgres para checkpointer, datasets del curso
Dependencias pineadas. La tabla siguiente recoge las versiones con las que se ha validado el material. Las del stack LangChain se verificaron contra la API JSON de PyPI el 29-jul-2026 (questdb.com) ; las cuantitativas y de datos son las probadas en laboratorio (Riskfolio-Lib 7.0.0 según registro PyPI (DataDrivenInvestorDataDrivenInvestor) ).
Tabla B.1 — Versiones pineadas del entorno del curso (verificadas contra PyPI el 29-jul-2026)
| Paquete | Versión | Propósito en el curso |
|---|---|---|
| langchain | 1.3.14 | create_agent, init_chat_model, middleware (transversal: módulos 2–12) |
| langchain-core | 1.5.2 | Runnables/LCEL, content blocks, mensajes |
| langchain-openai | 1.4.1 | Modelos GPT (análisis batch, structured output) |
| langchain-anthropic | 1.5.3 | Modelos Claude (tesis, razonamiento) |
| langgraph | 1.1.3 | Grafos de estado, checkpointers, HITL (módulos 3, 7 y 12) |
| langsmith | 0.4.27 | Tracing, datasets, evaluación (módulo 11) |
| langgraph-checkpoint-postgres | 3.0.1 | AsyncPostgresSaver para memoria durable |
| langchain-mcp-adapters | 0.4.0 | MultiServerMCPClient para datos de mercado vía MCP |
| pydantic | 2.12.4 | Esquemas de señales/tesis validados |
| numpy | 2.3.2 | Cómputo numérico base |
| pandas | 2.3.1 | Series temporales de precios y fundamentales |
| scipy | 1.16.1 | Estadística y optimización auxiliar |
| cvxpy | 1.7.3 | Motor de optimización convexa de carteras |
| PyPortfolioOpt | 1.5.6 | Frontera eficiente, Black-Litterman, HRP |
| riskfolio-lib | 7.0.0 | Optimización con 24 medidas de riesgo, HERC/NCO |
| vectorbt | 0.28.0 | Backtesting vectorizado y parameter sweeps |
| yfinance | 0.2.66 | Descarga OHLCV (solo laboratorio, no producción) |
| ragas | 0.4.2 | Métricas RAG: faithfulness, relevancy, precision, recall |
| datasets | 4.1.0 | Gestión del subset de evaluación estilo FinanceBench |
| chromadb | 1.2.0 | Vector store local para el RAG de filings |
| rank-bm25 | 0.2.2 | Retrieval léxico para el hybrid search |
| matplotlib | 3.10.5 | Gráficos de equity curves y fronteras eficientes |
requirements.txt
langchain==1.3.14
langchain-core==1.5.2
langchain-openai==1.4.1
langchain-anthropic==1.5.3
langgraph==1.1.3
langsmith==0.4.27
langgraph-checkpoint-postgres==3.0.1
langchain-mcp-adapters==0.4.0
pydantic==2.12.4
numpy==2.3.2
pandas==2.3.1
scipy==1.16.1
cvxpy==1.7.3
PyPortfolioOpt==1.5.6
riskfolio-lib==7.0.0
vectorbt==0.28.0
yfinance==0.2.66
ragas==0.4.2
datasets==4.1.0
chromadb==1.2.0
rank-bm25==0.2.2
matplotlib==3.10.5
Variables de entorno (.env.example). Nunca se commitea el .env real; el repositorio solo incluye esta plantilla.
# LLM providers
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
# Observabilidad LangSmith
LANGSMITH_API_KEY=lsv2_pt_...
LANGSMITH_TRACING=true
LANGSMITH_PROJECT=langchain-quant-course
# Datos de mercado (Massive, antes Polygon)
MASSIVE_API_KEY=...
# SEC EDGAR — obligatorio por la política de fair access de la SEC:
# formato "Nombre Apellido [email protected]"
SEC_USER_AGENT="Ana García [email protected]"
# Alpaca paper trading (nunca claves live en el laboratorio)
ALPACA_API_KEY=PK...
ALPACA_API_SECRET=...
# Checkpointer Postgres (debe coincidir con docker-compose)
POSTGRES_URI=postgresql://quant:quant@localhost:5432/checkpoints
Docker Compose para el checkpointer. Los agentes con memoria durable de los módulos 3 y 12 usan AsyncPostgresSaver, que requiere un Postgres accesible. Un servicio mínimo basta:
services:
postgres:
image: postgres:16
container_name: quant-postgres
environment:
POSTGRES_USER: quant
POSTGRES_PASSWORD: quant
POSTGRES_DB: checkpoints
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U quant -d checkpoints"]
interval: 5s
timeout: 5s
retries: 5
volumes:
pgdata:
Nota de inicialización: no hay que crear ninguna tabla a mano. En la primera ejecución, el checkpointer crea su esquema invocando una vez await checkpointer.setup() (los notebooks de los módulos 3 y 12 ya lo hacen de forma idempotente). El volumen pgdata preserva los checkpoints entre reinicios del contenedor; bórrelo con docker compose down -v solo si quiere un estado limpio.
Datasets del curso. Tres conjuntos de datos, todos regenerables, sustentan los ejemplos:
- Precios OHLCV diarios: 10 tickers líquidos estadounidenses (mega-caps y ETFs sectoriales), 5 años de historia (jul-2021 a jul-2026), descargables vía la API de Massive o, como fallback gratuito, vía
yfinance. Los notebooks cachean el resultado endata/ohlcv.parquetpara que los módulos de backtesting sean deterministas y no dependan de la red.yfinancese declara solo para laboratorio: sin SLA, con esquema cambiante y sujeto a rate limiting; en producción se usa un proveedor con contrato. - Corpus de 3 earnings calls: transcripciones (texto plano) de tres earnings calls trimestrales de emisores del universo anterior. Alimentan el pipeline RAG del módulo 5 (chunking, indexación en ChromaDB, hybrid retrieval con BM25) sin costes de licencia: son documentos sintéticos curados para el curso que imitan la estructura de una transcripción real (apertura de operador, prepared remarks del CEO/CFO, Q&A de analistas).
- Subset de evaluación estilo FinanceBench: 20 preguntas de respuesta abierta con respuesta de referencia y evidencia asociada, construidas sobre el corpus anterior siguiendo la metodología del benchmark FinanceBench de Patronus AI (QA open-book sobre documentos financieros, tolerancia numérica en el scoring) (API EvangelistAPI Evangelist) . Se usa en el módulo 11 como golden dataset para evaluar el agente RAG con RAGAS y con exact-match numérico, y como semilla del dataset de regresión en CI.
Verificación del entorno. Tras pip install -r requirements.txt, la comprobación mínima es:
python -c "import langchain; print(langchain.__version__)"
# Salida esperada: 1.3.14
Conviene además levantar Postgres (docker compose up -d) y ejecutar el notebook 00_smoke_test.ipynb del repositorio, que valida la conexión del checkpointer, la clave de LangSmith (debe aparecer una traza en el proyecto langchain-quant-course) y la descarga de un ticker de muestra.
Advertencia final. Todas las versiones, precios de APIs y condiciones de los proveedores citados en el curso están verificados a julio de 2026 (questdb.com) . La cadencia semanal de patches del ecosistema LangChain y la frecuente revisión de tarifas de datos y de LLMs hacen imprescindible re-verificar versiones y costes antes de cualquier uso en producción, y ejecutar la suite de tests de integración del repositorio tras cada actualización de dependencias.
Apéndice B de 3 — LangChain para Trading Cuantitativo. Datos y versiones verificados a julio de 2026; precios y cifras de mercado sujetos a cambio. LangChain 1.3.14 / langchain-core 1.5.2.