这是个什么东西
QuantConnect 是一个在线量化交易平台,有点像当年的 Quantopian。而 Lean 是 QuantConnect 开源的回测引擎。
为什么把它们放一起说?因为它们本质上是一套东西,只是部署方式不同——QuantConnect 是云端的 SaaS,Lean 是你可以本地部署的开源版本。
QuantConnect 的定位很清楚:做一个工业级的量化平台,支持股票、期货、期权、外汇、加密货币,支持 C# 和 Python 双语言,支持本地部署和云端运行。
这野心够大吧?
架构设计
Lean 的架构是我见过的量化框架中最专业的。分层设计的核心好处是:你可以只换掉某一层的实现,而不影响其他层。
比如你想换一个数据源,只需要实现一个新的 DataFeed,策略代码完全不用动。这对生产环境的维护来说太重要了。
代码示例
用 Lean 写策略是这样的:
class DualMovingAverageAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2020, 1, 1)
self.SetCash(100000)
self.spy = self.AddEquity("SPY", Resolution.Daily).Symbol
self.fast = self.SMA(self.spy, 10, Resolution.Daily)
self.slow = self.SMA(self.spy, 30, Resolution.Daily)
def OnData(self, data):
if not self.fast.IsReady: return
if self.fast.Current.Value > self.slow.Current.Value:
if not self.Portfolio[self.spy].IsLong:
self.SetHoldings(self.spy, 1.0)
elif self.fast.Current.Value < self.slow.Current.Value:
if self.Portfolio[self.spy].IsLong:
self.Liquidate(self.spy)
代码风格跟 Backtrader 挺像,也是事件驱动。但 Lean 的 API 设计更规范,命名也更专业。
优点:全面和专业
Lean 最大的优点就是全面:
- 支持 10+ 种资产类别(股票、期货、期权、外汇、加密货币)
- 内置 200+ 个技术指标
- 支持秒级到月级的所有时间周期
- 完善的订单类型(市价、限价、止损、跟踪止损)
- 支持融资融券
- 完整的风险管理模块
- 回测和实盘代码一致——本地回测没问题,直接就能部署到实盘
这些功能在其他框架里,要么没有,要么需要自己实现。Lean 是开箱即用。
缺点:学习成本和性能
学习曲线陡峭
文档虽然很全,但要真正掌握这个框架,至少得花一两个月。概念太多了:Universe Selection、Alpha Model、Portfolio Construction、Risk Management……每一个概念都能写一篇长文。
性能一般
Lean 也是事件驱动的,速度跟 Backtrader 差不多。我跑同样的测试(5000 只股票 10 年数据),花了 43 分钟。对比 VectorBT 的 23 秒,差了两个数量级。
C# 和 Python 的裂缝
Lean 是用 C# 写的,Python 只是一个绑定。有时候会遇到诡异的 bug,追根溯源发现是 C# 和 Python 之间的类型转换问题。这种 bug 特别难调试。
评分
| 维度 | 评分 |
|---|---|
| 性能 | ⭐⭐ 4 |
| 易用性 | ⭐⭐⭐ 5 |
| 功能完整度 | ⭐⭐⭐⭐⭐ 10 |
| 扩展性 | ⭐⭐⭐⭐⭐ 9 |
| 社区活跃度 | ⭐⭐⭐⭐ 8 |
| 综合 | 7.2 |
VectorBT vs Lean:怎么选
| 场景 | 推荐 |
|---|---|
| 快速验证策略想法 | VectorBT |
| 参数优化、因子挖掘 | VectorBT |
| 生产级策略开发 | Lean |
| 多资产、复杂订单 | Lean |
| 策略需要直接对接实盘 | Lean |
| 刚入门量化 | VectorBT(先熟悉向量化思维)→ Lean(再学工程化) |
工具选的对,事半功倍。工具选错了,越努力越远。
免责声明:本文仅为技术评测,不构成投资建议。