LEAN实战:用双均线策略回测贵州茅台,跑赢沪深300超过40%
一、问题引入:LEAN 引擎是机构级的,但搭建起来有多麻烦?
LEAN 是 QuantConnect 开源的算法交易引擎,全球最大的量化社区之一背后的技术核心。它支持股票、期货、期权、外汇、加密货币的多资产回测,支持 C# 和 Python 双语言开发策略——机构级的回测精度,开源免费。但 LEAN 的搭建门槛也是出了名的高:需要安装 .NET 环境、配置 Docker 或本地编译、拉取历史数据、编写算法代码、调试回测运行。光是把环境跑通,熟练的人也要小半天。
有没有办法把 LEAN 封装为一个 Skill——输入股票代码和策略参数,自动完成环境配置、数据拉取、回测执行和 HTML 报告生成?本文分 5 步完整展示:如何用自然语言让 EasyClaw 自动拉取 LEAN、分析引擎架构、转化为 Skill,并以贵州茅台(600519)的真实回测结果作为输出演示。
二、成果展示:贵州茅台双均线策略的真实回测结果
以下是 Skill 创建完成后,对贵州茅台(600519)运行双均线策略(快线10日/慢线30日)的真实回测输出。所有数据由 LEAN 引擎计算,EasyClaw Skill 自动采集并渲染为 HTML 报告。



2.1 回测概览
| 项目 | 值 |
|---|---|
| 标的 | 600519.SS(贵州茅台) |
| 策略 | MA Crossover(快线 10 日 / 慢线 30 日) |
| 回测区间 | 2022-01-01 → 2023-12-31(约2年) |
| 初始资金 | ¥1,000,000.00 |
| 最终权益 | ¥1,115,225.85 |
| 总收益率 | +11.52% |
2.2 核心绩效指标
| 类别 | 指标 | 值 | 说明 |
|---|---|---|---|
| 收益 | 净收益 | +11.523% | 两年绝对收益 |
| 年化复合收益 | 5.392% | 年化后收益水平 | |
| 超额收益(vs 沪深300) | +40.69% | 同期沪深300跌29.17%,茅台策略逆势跑赢40%+ | |
| Alpha | 0.087 | 独立于大盘的超额能力 | |
| 风险 | 最大回撤 | 14.940% | 两年内最深亏损幅度 |
| 年化波动率 | 0.122 | 波动水平适中 | |
| Beta | 0.298 | 与大盘联动性低,独立性强 | |
| 综合 | 夏普比率 | 0.288 | 单位风险的超额回报 |
| 信息比率 | 1.277 | 主动管理能力较强 | |
| 交易 | 总交易次数 | 7 | 低频趋势策略特征 |
| 胜率 | 43%(3胜 / 4负) | 胜率不高 | |
| 盈亏比 | 2.30 | 赚一次顶亏两次,胜率低但赔率高 |
2.3 逐笔交易明细
7笔交易的完整记录——低频策略的特征一目了然:等待时间长、出手次数少、靠赔率而非胜率赚钱。
| # | 入场日 | 入场价 | 出场日 | 出场价 | 持仓 | 盈亏 | 结果 |
|---|---|---|---|---|---|---|---|
| 1 | 2022-04-13 | ¥1,528.92 | 2022-05-18 | ¥1,522.00 | 35天 | -¥4,149.82 | ❌ |
| 2 | 2022-06-07 | ¥1,571.18 | 2022-07-22 | ¥1,700.92 | 45天 | +¥77,820.86 | ✅ |
| 3 | 2022-11-23 | ¥1,353.22 | 2023-02-14 | ¥1,631.27 | 83天 | +¥194,575.62 | ✅ |
| 4 | 2023-04-04 | ¥1,605.44 | 2023-04-14 | ¥1,515.93 | 10天 | -¥62,675.04 | ❌ |
| 5 | 2023-06-16 | ¥1,590.49 | 2023-08-23 | ¥1,593.62 | 68天 | +¥2,194.62 | ✅ |
| 6 | 2023-09-07 | ¥1,651.11 | 2023-09-15 | ¥1,600.80 | 8天 | -¥35,231.03 | ❌ |
| 7 | 2023-11-09 | ¥1,611.69 | 2023-12-06 | ¥1,529.84 | 27天 | -¥57,309.35 | ❌ |
关键洞察:最大盈利来自第3笔交易(+¥194,575.62),持仓83天;最大亏损来自第4笔(-¥62,675.04),持仓仅10天。盈利交易平均持仓65天,亏损交易平均持仓仅20天——策略的核心逻辑是"让利润奔跑、快速截断亏损",这正是趋势跟踪策略的典型特征。
2.4 超大盘表现
回测期内沪深300下跌 -29.17%,同期茅台双均线策略实现 +11.52% 正收益,超额收益高达 +40.69%。在A股全面下跌的两年里,这个策略不仅保住了本金还赚了11.5%——Beta仅0.298,说明策略收益与大盘走势关联度很低,独立性较强。
[此处插入 LEAN HTML 报告完整截图或 equity curve 图表]
三、Step 1:环境准备
从 EasyClaw 官网下载并安装最新版。本文所有操作均通过自然语言对话完成,不需要手动安装 .NET、Docker 或编译 LEAN 源码。
打开 EasyClaw → 左侧面板 →「Skill」→「Skill Creator」。如看不到该入口,在「设置 → 通用」中启用「开发者模式」后重启。
| 问题 | 解决方法 |
|---|---|
| Skill Creator 灰显 | 「设置 → 通用 → 启用开发者模式」,重启 EasyClaw |
| 网络连接失败 | 「设置 → 网络 → 检查代理设置」,确保能访问 GitHub |
四、Step 2:项目架构分析
在 Skill Creator 中输入:
从 GitHub 拉取 LEAN 项目(https://github.com/QuantConnect/Lean),先展示目录结构,标注出引擎核心、算法框架、数据源和报告模块等关键模块的位置和职责。
EasyClaw 自动扫描后输出关键模块结构:
Lean/
├── Engine/ ← ★ 回测引擎核心(事件驱动架构)
├── Algorithm/ ← ★ 算法框架基类(继承它来写策略)
│ └── Framework/ ← 算法框架(QCAlgorithm)
├── Data/ ← 数据源抽象层
├── Indicators/ ← 技术指标库
├── Report/ ← ★ 报告生成模块(HTML 报告)
├── Brokerages/ ← 券商接口
└── Launcher/ ← 启动器(配置+运行入口)
| 模块 | 职责 | Skill 中的角色 |
|---|---|---|
| Engine/ | 事件驱动回测核心,调度数据→策略→执行→记录 | Skill 的主控引擎 |
| Algorithm/ | QCAlgorithm 基类,策略继承入口 | Skill 根据参数自动生成策略代码 |
| Data/ | 多资产数据源接口 | Skill 自动拉取指定标的的历史数据 |
| Report/ | HTML 报告生成 | Skill 输出交互式回测报告 |
| Launcher/ | 配置管理和启动入口 | Skill 根据参数自动配置 |
这是 EasyClaw 自动识别出的结果,不需要你手动翻目录、读源码。
五、Step 3:核心参数配置与 Skill 创建
3.1 回测参数一览
| 参数名 | 所属模块 | 含义 | 默认值 | 推荐值 | 说明 |
|---|---|---|---|---|---|
| symbol | Data | 交易标的 | — | — | 必填,如 600519.SS |
| start_date | Engine | 回测起始日 | — | — | 至少覆盖1年以上 |
| end_date | Engine | 回测结束日 | — | — | 格式 YYYY-MM-DD |
| initial_cash | Engine | 初始资金 | 100000 | 100000-1000000 | 根据实际资金设置 |
| strategy | Algorithm | 策略类型 | ma_crossover | — | 可选:ma_crossover/macd/rsi |
| fast_period | Algorithm | 快线周期 | 10 | 5-20 | 双均线策略参数 |
| slow_period | Algorithm | 慢线周期 | 30 | 20-60 | 双均线策略参数 |
| benchmark | Report | 基准对比标的 | 000300.SS | — | 通常是沪深300 |
3.2 用自然语言创建 Skill
在 Skill Creator 中粘贴以下内容。EasyClaw 自动完成代码拉取、架构分析、依赖安装和 Skill 封装。
从 GitHub 拉取 LEAN 项目(https://github.com/QuantConnect/Lean),自动分析项目架构。
识别以下核心模块:
- Engine/:事件驱动的回测引擎,负责数据调度→策略执行→绩效记录
- Algorithm/:QCAlgorithm 基类,根据 strategy 参数自动生成继承策略
- Data/:多资产数据源,自动拉取 symbol 对应的历史行情
- Report/:HTML 报告生成器,输出交互式回测报告
额外加入能力:
- 根据 strategy 参数自动生成完整的 LEAN 算法代码
- 回测完成后自动渲染 HTML 报告:KPI 卡片 + 权益曲线 + 交易明细表 + 逐笔盈亏柱状图
- 报告中同时展示基准(benchmark)对比和超额收益
封装为 EasyClaw Skill:
- 名称:LEAN回测
- 输入:symbol、start_date、end_date、initial_cash(默认100000)、strategy(默认ma_crossover)、fast_period(默认10)、slow_period(默认30)、benchmark(默认000300.SS)
- 输出:lean_backtest_report.html(交互式报告)
点击「创建 Skill」,等待完成。
六、Step 4:运行回测与结果解读
4.1 启动回测
@LEAN回测 symbol=600519.SS start_date=2022-01-01 end_date=2023-12-31 initial_cash=1000000
使用默认双均线策略(快线10/慢线30)。回测完成后输出 lean_backtest_report.html,在浏览器中打开即可查看完整报告。
4.2 报告内容解读
| 报告板块 | 内容 | 怎么看 |
|---|---|---|
| 头部概览 | 标的、策略、区间、初始/最终资金、总收益率 | 快速了解回测基本参数和最终结果 |
| KPI 卡片 | 净收益、年化收益、最大回撤、夏普比率、胜率、交易次数 | 一屏看完核心绩效 |
| 权益曲线 | 每日权益走势的交互式折线图 | 看资金曲线的平滑度和趋势 |
| 风险指标 | Alpha/Beta/波动率/信息比率/超额收益 | 判断策略独立性和风险调整收益 |
| 交易明细 | 7笔交易:入场/出场时间价格、盈亏、持仓天数 | 逐笔复盘,分析盈亏分布 |
| 逐笔盈亏图 | 每笔交易的盈亏柱状图(红负绿正) | 直观感受盈亏大小和分布 |
4.3 真实回测的关键发现
贵州茅台双均线策略在 2022-2023 年的回测揭示了三个重要特征:
- 低胜率 + 高赔率 = 正期望:7笔交易仅3笔盈利(43%胜率),但盈利交易的平均收益(¥91,530)远超亏损交易的平均亏损(¥39,841),盈亏比 2.30——赚一次顶亏两次
- 跑赢大盘 40%+:同期沪深300跌 29.17%,策略正收益 11.52%。Beta 仅 0.298,说明策略与大盘几乎不相关
- 持仓周期差异明显:盈利交易平均持仓 65 天,亏损交易仅 20 天。策略本质是"让利润奔跑、快速截断亏损"
4.4 效率对比
| 环节 | 手动搭建 LEAN + 手写策略 | EasyClaw Skill |
|---|---|---|
| 环境搭建 | .NET 环境 + Docker 或本地编译 + 依赖配置,约 1-2 小时 | 0 分钟(EasyClaw 内置环境) |
| 策略代码 | 手写 QCAlgorithm 子类 + 调试,约 30-60 分钟 | Skill 自动生成,0 分钟 |
| 数据配置 | 手动拉取/导入历史行情数据,约 15-30 分钟 | Skill 自动拉取,0 分钟 |
| 报告生成 | LEAN 自带 HTML 报告但需额外配置渲染 | 自动输出交互式报告,0 分钟 |
| 总计 | 约 2-3.5 小时 | — |
[注:本文方式的具体耗时取决于网络环境和硬件配置,实际测试后填写]
七、Step 5:进阶用法与常见问题
5.1 切换策略类型
@LEAN回测 symbol=600519.SS strategy=macd ← MACD 策略
@LEAN回测 symbol=600519.SS strategy=rsi ← RSI 超买超卖
5.2 调整均线参数
@LEAN回测 symbol=000858.SS fast_period=5 slow_period=20 ← 更敏感的短线参数
@LEAN回测 symbol=000858.SS fast_period=20 slow_period=60 ← 更稳健的长线参数
5.3 常见问题排查
| 错误信息 | 原因 | 解决方法 |
|---|---|---|
| 回测无交易记录 | 均线参数在回测区间内未产生交叉信号 | 调整 fast_period/slow_period 使参数更敏感,或延长回测区间 |
| "symbol not found" | 股票代码格式不正确 | A股使用 .SS 后缀(如 600519.SS),检查代码和交易所后缀 |
| 报告中的权益曲线为空 | 数据源返回的历史数据不完整 | 检查回测区间内该股票是否有连续交易日数据 |
八、总结
LEAN 是机构级回测引擎中难得的开源选择——精度高、资产覆盖全、社区活跃。但搭建门槛让大多数个人投资者望而却步。本文通过 EasyClaw Skill 将 LEAN 封装为一条指令即可触发的回测工具,用贵州茅台的真实回测数据验证了双均线策略的有效性:两年正收益 11.52%,在沪深300下跌 29.17% 的同期跑出 40.69% 的超额收益。低胜率(43%)高赔率(盈亏比 2.30)的策略特征也提醒我们——趋势跟踪不需要每次都赢,关键是对的时候赚得足够多。
下一步可以尝试:
- 参数优化:对快线/慢线做参数网格扫描,找到夏普比率或卡玛比率最优的参数组合
- 多标的测试:用同一策略参数在五粮液、泸州老窖等上测试,验证策略普适性
- 多资产延伸:LEAN 支持期货和期权,可以延伸到商品CTA和期权策略回测
资源链接:
- EasyClaw 下载:https://easyclaw.cn/?f=703
- LEAN GitHub:https://github.com/QuantConnect/Lean
- QuantConnect **文档:https://www.quantconnect.com/docs/
LEAN 是你用过的第一个回测引擎,还是从其他框架转过来的?你觉得它的搭建门槛值不值得?欢迎在评论区分享你的 LEAN 使用经验和踩坑记录。如果你有用 LEAN 跑了不错的策略想分享,也欢迎留言交流。

浙公网安备 33010602011771号