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 报告。

image

image

image

 

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和期权策略回测

资源链接:

LEAN 是你用过的第一个回测引擎,还是从其他框架转过来的?你觉得它的搭建门槛值不值得?欢迎在评论区分享你的 LEAN 使用经验和踩坑记录。如果你有用 LEAN 跑了不错的策略想分享,也欢迎留言交流。

posted @ 2026-07-24 16:16  PC修复电脑医生  阅读(15)  评论(0)    收藏  举报