Elegir una librería de backtesting es, sobre todo, una apuesta de mantenimiento. El código que valora tu estrategia tiene que seguir vivo cuando un exchange cambie una API, cuando una nueva versión de pandas rompa un import o cuando encuentres un bug a las 2 de la mañana. Por eso esta review arranca por la señal menos glamurosa y más decisiva — ¿el proyecto recibe mantenimiento de verdad? — y solo después entra en arquitectura, velocidad y características.

Cada número de GitHub que aparece más abajo se obtuvo en vivo desde la API de GitHub el 2026-06-22, y las afirmaciones más delicadas se contrastaron con fuentes primarias (repos de los proyectos, documentación oficial) y se verificaron de forma adversarial. Cuando una cifra es el mejor caso reportado por el propio proveedor, se señala como tal.

La prueba de realidad del mantenimiento

Aquí está todo el ecosistema ordenado por estrellas de GitHub, con un código de color según si realmente se está trabajando en él:

Herramientas de backtesting en Python ordenadas por estrellas de GitHub y coloreadas según su estado de mantenimiento (2026-06-22): freqtrade, NautilusTrader y LEAN encabezan el grupo de proyectos con mantenimiento activo, mientras que Backtrader está dormido y Zipline, PyAlgoTrade y QSTrader están abandonados.

La conclusión incómoda: dos de los nombres con más estrellas y de los que más se ha escrito en blogs son, en la práctica, legado.

Mientras tanto, los proyectos que publican releases reales en 2026 son Freqtrade (51.7k ⭐), NautilusTrader (24.1k ⭐), LEAN (20k ⭐), backtesting.py (8.5k ⭐), Jesse (8.1k ⭐), vectorbt (8.0k ⭐), PyBroker (3.4k ⭐), bt (2.9k ⭐) y Lumibot (1.7k ⭐). Las estrellas miden la historia; las fechas de los commits miden si alguien va a arreglar tu bug.

Dos arquitecturas: orientada a eventos vs vectorizada

La otra bifurcación que lo decide todo es cómo el motor ejecuta tu estrategia.

Ninguno gana de forma absoluta. Investigas con el rápido y validas con el realista. Más sobre ese compromiso más abajo.

Los líderes con mantenimiento activo

NautilusTrader — grado de producción, orientado a eventos, núcleo en Rust

NautilusTrader (24.1k ⭐, LGPL-3.0) se describe a sí mismo como un "production-grade Rust-native trading engine with deterministic event-driven architecture" — el código es ~70% Rust con bindings de Python. Hace backtesting a través de múltiples venues e instrumentos con resolución de nanosegundos usando datos de ticks y de order-book, e incluye ~20 integraciones en vivo (Binance, Coinbase, Kraken, OKX, Bybit, Interactive Brokers, Betfair y más). Su promesa estrella: el mismo código de estrategia, idéntico, desde la investigación hasta el despliegue en vivo. Es la opción más fuerte para una audiencia de cripto+acciones que necesita realismo a nivel de tick y un camino real a producción. El coste: una curva de aprendizaje más pronunciada y una arquitectura más pesada que la de las librerías sencillas.

vectorbt — investigación vectorizada a escala

vectorbt (8.0k ⭐, Apache-2.0 + Commons Clause) es el motor vectorizado. Su README: "instead of looping through bars one strategy at a time, it packs thousands of configurations into NumPy arrays, accelerates the hot path with Numba and Rust, and runs them all at once, turning hours of grid search into seconds." Probar 10.000 combinaciones de ventanas dual-SMA en segundos es el ejemplo canónico; terceros reportan aceleraciones de ~1000× sobre Backtrader en algunas cargas de trabajo (cifras del proveedor/de terceros, no un benchmark independiente). El barrido de parámetros que ves abajo — 25 backtests a través de distintas ventanas de SMA — es exactamente lo que vectorbt industrializa:

Un mapa de calor de barrido de parámetros: retorno total a través de 25 combinaciones de ventanas de SMA rápida/lenta, desde −5% hasta +54%. Esta grid search es la optimización masiva de parámetros que vectorbt está construido para ejecutar en segundos.

Dos salvedades que conviene conocer: la Commons Clause restringe la reventa comercial (relevante si estás construyendo un producto), y la pulida y de pago vectorbt PRO es un producto separado de la build open-source. vectorbt es solo backtesting — sin trading en vivo.

backtesting.py — la favorita ligera

backtesting.py (8.5k ⭐, AGPL-3.0) es a la que recurrir cuando quieres un backtest limpio, rápido y legible sin toda la ceremonia de un framework. Defines init() y next(), ejecutas, y obtienes un objeto de estadísticas y un gráfico interactivo de Bokeh. La licencia AGPL-3.0 importa: es copyleft fuerte con cláusulas de uso en red, así que resulta incómoda dentro de un SaaS de código cerrado. Es solo backtesting. La curva de equity de esta página (portada) y las estadísticas de abajo provienen de una ejecución real de backtesting.py — un simple cruce de SMA(20/50) sobre una serie sintética:

Estadísticas de rendimiento de backtesting.py para un cruce de muestra SMA(20/50): +1.6% de retorno frente a +46% de buy & hold, Sharpe 0.05, máximo drawdown −38%, 4 operaciones. Un resultado honesto — el cruce ingenuo rindió por debajo de mantener.

Fíjate en el resultado honesto: el cruce ingenuo rindió un +1.6% frente al +46% del buy & hold, con un brutal drawdown del −38%. Ese es el primer resultado normal de un backtest real, y exactamente la razón por la que barres parámetros y validas supuestos antes de creerte nada.

Freqtrade — el estándar de cripto

Freqtrade (51.7k ⭐, GPL-3.0) es el proyecto con más estrellas de esta lista y el bot de trading de cripto open-source de facto. Hace backtesting, dry-run (trading en papel) y trading en vivo en los principales exchanges, controlado a través de Telegram o de una interfaz web integrada, y publica releases mensuales. Es solo cripto — sin acciones — pero para cripto es el estándar con mantenimiento y respaldado por la comunidad.

Lumibot, bt, PyBroker, Jesse, LEAN, zipline-reloaded

El cementerio — evítalos para proyectos nuevos

Estos siguen apareciendo en los resultados de búsqueda y en posts de blog antiguos, pero no empieces por aquí en 2026:

La arquitectura importa: el compromiso de realismo

La división vectorizado-vs-orientado a eventos no es académica. La velocidad de vectorbt viene de asumir que cada fill ocurre al precio de la siguiente barra sin slippage. Para un screen de momentum sobre 500 activos eso está bien. Para una estrategia cuyo edge vive en la ejecución intrabarra — colocación de stops, fills parciales, posición en la cola — un backtest vectorizado te mentirá en silencio, y necesitas un motor orientado a eventos (NautilusTrader, Backtrader) o un dry-run en vivo (Freqtrade, Lumibot) para obtener un número honesto. El flujo de trabajo profesional usa ambos: vectorbt para explorar el espacio de parámetros, un motor orientado a eventos para validar a los supervivientes.

Licencias — lee esto antes de construir un producto

Las librerías de backtesting tienen una carga de licencias inusualmente alta, y varias son copyleft:

Licencia Librerías Lo que hay que saber
AGPL-3.0 backtesting.py El copyleft más fuerte; el uso en red/SaaS puede activar la divulgación del código fuente
Apache-2.0 + Commons Clause vectorbt (build OSS) Permisiva excepto que no puedes venderlo como producto
GPL-3.0 Backtrader, Freqtrade, Lumibot Copyleft; distribuir un derivado implica liberar su código
LGPL-3.0 NautilusTrader Copyleft más débil; enlazar contra ella suele estar bien
MIT bt, Jesse, QSTrader, fastquant Permisiva — haz casi cualquier cosa
Apache-2.0 LEAN, zipline-reloaded, finmarketpy Permisiva, con concesión de patentes incluida

Si estás construyendo algo comercial y de código cerrado, las herramientas MIT/Apache son las opciones sin fricción; AGPL y Commons Clause requieren la lectura de un abogado.

La comparativa de un vistazo

Herramienta ⭐ Estrellas Arquitectura Licencia Mantenimiento Trading en vivo Mejor para
NautilusTrader 24.1k Orientada a eventos (Rust) LGPL-3.0 🟢 Activo Producción, realismo de tick/order-book
vectorbt 8.0k Vectorizada Apache+CC 🟢 Activo No Búsqueda masiva de parámetros
backtesting.py 8.5k Orientada a eventos AGPL-3.0 🟢 Activo No Backtests únicos, rápidos y limpios
Freqtrade 51.7k Orientada a eventos GPL-3.0 🟢 Activo Sí (cripto) Bot de cripto con mantenimiento
Backtrader 22.1k Orientada a eventos GPL-3.0 🟡 Dormido Proyectos legado (cuidado con el estancamiento)
Lumibot 1.7k Orientada a eventos GPL-3.0 🟢 Activo Multiactivo, backtest/vivo unificados
LEAN 20k Orientada a eventos Apache-2.0 🟢 Activo Plataforma multiactivo de peso pesado
bt 2.9k Vectorizada/pesos MIT 🟢 Activo No Estrategias de asignación de cartera
PyBroker 3.4k Orientada a eventos OSS 🟢 Activo No Estrategias de ML + walk-forward
zipline-reloaded 1.8k Orientada a eventos Apache-2.0 🟢 Activo No Ámbito académico, libro ML4T
Zipline (orig.) 19.9k Orientada a eventos Apache-2.0 🔴 Abandonado Nada — usa reloaded
PyAlgoTrade 4.7k Orientada a eventos 🔴 Archivado Nada nuevo

Las estrellas y los estados son una instantánea del 2026-06-22 y cambiarán; el mantenimiento es la dimensión más volátil, así que vuelve a comprobar la actividad de los commits antes de comprometerte.

Cómo elegir, en una frase

La única regla que sobrevive a cualquier régimen de mercado: mira la fecha del último commit antes de mirar el conteo de estrellas. Una librería de 22k estrellas que no publica nada desde 2023 es un camino más lento a producción que una de 8k que sacó un release la semana pasada.


Metodología: las métricas de GitHub se obtuvieron en vivo desde la API de GitHub el 2026-06-22; las afirmaciones sobre arquitectura, mantenimiento, licencia y trading en vivo se contrastaron con los repositorios de los proyectos y la documentación oficial y se verificaron de forma adversarial, apoyándose en catálogos curados (PyTrade.org, awesome-systematic-trading) y en la lista de alternativas de kernc. La curva de equity, las estadísticas y el mapa de calor de parámetros son salida real de una ejecución de backtesting.py sobre una serie de precios sintética reproducible — ilustrativa, no una recomendación de estrategia. Las cifras de rendimiento atribuidas a proveedores (las aceleraciones de vectorbt, la resolución de nanosegundos de NautilusTrader) son auto-reportadas, no benchmarks independientes.