Introduction: The Trap Every Quant Beginner Falls Into
Get into quantitative investing and you'll inevitably encounter three names: Backtrader, VnPy, and Qlib.
After reading about all three, most beginners end up more confused—"Backtrader is easiest," "VnPy is the real deal," "Microsoft's Qlib is the future." The paralysis begins.
But the question itself is framed wrong.
These three frameworks serve fundamentally different purposes. They are not substitutes for each other. Once you understand what problem each one solves, the choice becomes obvious.
Part 1: Three Frameworks, Three Roles
| Dimension | Backtrader | VnPy | Qlib |
|---|---|---|---|
| Core Role | Event-driven backtesting engine | Full-stack quant trading platform | AI quantitative research platform |
| Developer | Independent dev (mementum) | Shanghai Liangbei / OSS community | Microsoft Asia Research |
| Primary Language | Pure Python | Python + C++ | Python |
| Maintenance | ⚠️ Abandoned (no major updates since 2019) | ✅ Active (VnPy 4.0 / Python 3.12) | ✅ Active |
| GitHub Stars | ~14,000 | ~24,000 | ~14,000 |
| Markets | Global (US stocks/futures primary) | China A-shares + futures + crypto | Global (official China A-share dataset) |
The most important thing to internalize: these are tools for different phases of your journey, not competing alternatives.
Part 2: Backtrader — Best for Learning, but with a Fatal Flaw
Backtrader's design philosophy is genuinely elegant. The Cerebro (brain) object manages strategies, data feeds, and analyzers in a clean abstraction. A full strategy with backtesting and chart output in 30 lines:
class SmaCross(bt.SignalStrategy):
def __init__(self):
sma1, sma2 = bt.ind.SMA(period=10), bt.ind.SMA(period=30)
self.signal_add(bt.SIGNAL_LONG, bt.ind.CrossOver(sma1, sma2))
cerebro = bt.Cerebro()
cerebro.addstrategy(SmaCross)
cerebro.run()
cerebro.plot() # one line to chart
Strengths:
- 100+ built-in technical indicators; TA-Lib integration supported
- High-quality documentation; rich community Q&A archive
- Gentle learning curve; best for grasping "event-driven backtesting" concepts
Fatal problems:
- Unmaintained since 2019; Python 3.10+ compatibility issues are common
- Single-threaded event loop; backtests on large datasets are painfully slow
- Poor fit for China A-shares; no built-in CTP interface
Verdict: Use it to learn framework design patterns and validate strategy logic on small datasets. Don't use it for China A-share production environments.
Part 3: VnPy — The De Facto Standard for China A-share Quant
VnPy is not just a backtesting framework—it's a full-stack quantitative trading platform:
VnPy Ecosystem
├── Backtesting Engine (CTA / Options / Portfolio Strategies)
├── Live Trading Engine
│ ├── CTP (China Futures standard interface)
│ ├── Futu / Tiger / Interactive Brokers (stocks)
│ └── Major crypto exchanges
└── GUI Frontend (Qt5)
├── Strategy monitoring panel
├── Risk management panel
└── Backtest analysis interface
Key capabilities:
- Seamless backtest → live trading transition: same strategy code runs from backtest directly to live without rewriting
- GUI-based backtesting: no Jupyter required; run tests and parameter optimization from the interface
- CTA-specialized design: stop-loss, take-profit, slippage, and commission handling built in—trend-following strategies work out of the box
Performance benchmarks (real-world):
- VnPy vs. DolphinDB: same dataset (20K minute bars), VnPy takes ~5–8x longer
- VnPy vs. VectorBT: vectorized computation in VectorBT reads data 6x+ faster from SQLite
Limitations:
- Only supports single-instrument backtests (multi-factor stock selection requires custom extension)
- Weak ML integration; machine-learning-driven strategies are not its strength
- New users typically need 1–2 weeks to ramp up
Verdict: First choice for China A-share/futures CTA strategy development. Covers the full pipeline from backtest to live trading.
Part 4: Qlib — Not a Backtesting Framework; an AI Quant Research System
This is the biggest misconception: Qlib is not a traditional backtesting framework.
Its full name is "AI-oriented Quantitative Investment Platform." Its core is a machine learning quantitative research pipeline:
Infrastructure → DataServer (10x faster than Pandas for time-series data)
Learning Framework → LSTM / LightGBM / TCN / Transformer built-in
Workflow → Feature Engineering → Alpha Signal → Portfolio Optimization → Execution Simulation
Qlib's distinctive capabilities:
- Alpha158/Alpha360 built-in factor libraries (158/360 technical factors, ready to use)
- Complete ML model library: LSTM, LightGBM, Temporal Fusion Transformer, and more
- Order execution optimization: TWAP, VWAP, and other execution algorithms
- Microsoft's continued investment: LLM capabilities integrated in 2025; strong academic output
Limitations:
- Very high onboarding cost (requires both ML and quant foundations)
- Not designed for CTA trend-following strategies
- Live trading connectivity is weak (requires bridging to broker APIs)
Verdict: Best choice for ML factor research, cross-sectional stock selection strategies, and academic-grade quantitative research.
Part 5: Decision Matrix — Which One for Your Situation?
| Your Needs | Recommendation | Reason |
|---|---|---|
| Quant learning / first steps | Backtrader | Most elegant syntax, clearest concepts |
| China A-share CTA trend strategy | VnPy | Native CTP, seamless backtest → live |
| China futures live trading | VnPy | Most mature live interface ecosystem in China |
| ML factor mining / Alpha research | Qlib | Designed specifically for this; factor library rich |
| Multi-factor cross-sectional stock selection | Qlib | Portfolio optimization module is strongest |
| Crypto quantitative trading | VnPy | Broadest exchange interface coverage |
| International market backtesting | Backtrader / Zipline | Better compatibility with global historical data |
Conclusion: Not "Pick One," But "Combine All Three"
The recommended practical path:
- Learning phase: Use Backtrader to understand event-driven mechanics and strategy logic (1–2 weeks)
- Research phase: Use Qlib for factor mining and ML strategy validation
- Production preparation: Use VnPy to connect to CTP or a data provider, test live trading stability
If you can only choose one:
- China A-share CTA → VnPy (most complete ecosystem, end-to-end from learning to live)
- ML quantitative → Qlib (Microsoft-backed, rich factor library)
The real moat in quant trading isn't which framework you use—it's the Alpha in your strategy itself. Frameworks are tools. Choose the right tool for the right phase, then let data and thinking do the work.
Sources: qlib.readthedocs.io, backtrader GitHub, VnPy official documentation, Microsoft Asia Research
Top comments (0)