本帖最后由 云栈运维云原生 于 2025-12-28 23:10 编辑
有些策略在研究里很好看:信号稳定、回撤也能接受。但一到回测就开始打折,上实盘更像换了个世界。很多时候真不是因子突然失效,而是数据口径、成交假设、滑点费用、订单回报这些底层细节没对齐。
我最近在看 QuantConnect/Lean。它给我的感觉不像“又一个策略模板”,更像是一套把交易系统拆开、拼起来的开源引擎:你可以先用默认模块跑通,再把自己在意的那一块一点点替换掉。
Lean 是什么(用一句话讲清楚)
Lean(QuantConnect/Lean) 是一个开源、事件驱动的算法交易引擎,用来做策略研究、回测和实盘接入。它把数据、撮合成交、订单处理、组合与风控等能力做成模块,方便扩展。
目录从哪里读起(不迷路)
如果你准备认真看源码,建议按这个顺序:
- Engine/:核心运行逻辑(时间推进、事件分发、回测/实盘调度)
- Common/:通用抽象(证券、订单、组合、现金、时间等)
- Data/:数据规范与读取(本地数据目录、订阅、切片)
- Algorithm/、Algorithm.CSharp/、Algorithm.Python/:算法接口与示例
- Algorithm.Framework/:把策略拆成 Alpha、组合、执行、风控的流水线
- Brokerages/:券商/交易所的接入与适配
如果你是团队协作开发,我会更推荐用 Framework 的方式组织策略:信号单独迭代,执行和成本模型单独迭代,后期复盘也更清楚。我们在云栈社区做过类似的协作项目,这种拆分能明显降低“改一处全身抖”的概率。
为什么量化/高频的人更该关注它(说三点实在的)
1)事件驱动,不是脚本跑一遍数据
Lean 的运行方式更接近真实交易:行情来一次、策略算一次;订单回报来一次、组合状态更新一次。
这种结构的好处是:你能更自然地把注意力放在“交易闭环”上,而不是只看一条收益曲线。
2)成交、滑点、费用能当成“策略的一部分”来建模
回测差异最容易出现在成交与成本上。Lean 把撮合、滑点、费用等环节做成可替换的模型:你可以先用默认设定跑通,然后按品种、按市场微结构慢慢逼近真实。
3)订单生命周期的边界清楚,适合做稳定性
下单、部分成交、撤单、拒单、回报同步……这些在实盘里比“信号对不对”更容易出事故。Lean 把订单处理边界拆得很明确,方便你加规则、加延迟、加限制,也方便测试回归。
适合哪些场景(别硬上)
- 因子到策略落地:不仅是算信号,还要能跑组合、能执行、能控风险
- 成本敏感策略:你在意滑点/费用/成交假设,回测不能太“理想化”
- 多资产研究:想在同一套系统里做统一的组合层研究
- 研究和实盘想尽量一致:减少迁移时的“二次开发”成本
上手建议(更像真实创作的经验)
- 先把数据口径讲明白:你用的是 tick、秒级还是分钟级?哪些时段缺数据?复权怎么处理?
- 先跑通再求真:默认模型跑通闭环以后,再逐步替换成交/滑点/费用,不然一上来就会掉进细节泥潭。
- 别只盯信号:很多策略的差距最后来自执行与成本,尤其是交易频率一高,误差会被放大。
- 把复现当习惯:数据版本、配置、参数都能复跑,才有迭代效率。云栈社区里做共建时,这点尤其重要。
延伸学习(少放点链接,够用就行)
配套资源
- GitHub:
github.com/QuantConnect/Lean
- 官方文档:
quantconnect.com/docs/v2/lean-engine
- 后端架构学习:
https://yunpan.plus/f/14
关注《alphaFind》,后面我会继续写更具体的:怎么用 Lean 组织“因子 → 组合 → 执行”的结构;以及回测里最容易让人踩坑的成交与成本假设,怎么一步步校准。
来自圈子: 云栈运维云原生 |