这是个什么东西

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(再学工程化)

工具选的对,事半功倍。工具选错了,越努力越远。

免责声明:本文仅为技术评测,不构成投资建议。