RQAlpha实战:SMA 5/20回测贵州茅台三年半亏损15%,为什么短周期均线在A股失效
茅台上赚不到钱的策略,问题出在哪
RQAlpha 是国内最知名的 A 股开源回测框架之一,专门为中国市场设计——T+1 交易规则、印花税、涨跌停限制、分红送转处理,这些在海外框架里需要手动配置的东西,RQAlpha 都内置好了。
我拿它跑了茅台三年半的 SMA 5/20 双均线策略——57 笔交易、总收益 -15.46%、夏普比率 -1.29。同期沪深 300 涨了 6.5%。这是目前为止所有回测中**一个跑输基准且绝对亏损的策略。之前 Backtesting.py 在苹果上虽然跑输买入持有 1000%,但至少还是正收益(+32.8%)。这次是实打实的亏了 15 万。
本文用自然语言驱动的方式把 RQAlpha 变成了一个可以直接对话的回测 Skill。不需要手动配 A 股交易规则、不需要写策略代码、不需要处理 RQAlpha 的数据格式。
起步
从 EasyClaw 官网下载安装。不需要手动安装 RQAlpha、不需要配 A 股数据源。
打开后左侧找「Skill」→「Skill Creator」。灰显的话去「设置 → 通用」打开「开发者模式」重启。
创建 Skill
在 Skill Creator 里告诉 EasyClaw:
帮我把 GitHub 上的 RQAlpha(https://github.com/ricequant/rqalpha)做成一个 A 股回测 Skill。我希望输入股票代码、起止日期和均线参数就能跑双均线策略回测,自动处理 T+1、印花税等 A 股交易规则,输出完整的绩效报告、逐笔交易流水和回测图表。
EasyClaw 会自动拉代码、配置 A 股数据源、封装成 Skill。A 股特有的 T+1 规则、印花税计算、涨跌停处理——这些 RQAlpha 底层都支持,Skill 自动启用。
Skill 创建好后:
用 RQAlpha 回测贵州茅台,2023 年初到现在,SMA 快线 5 日慢线 20 日

回测结果:三年半亏了 15%,跑输基准 22 个百分点
| 指标 | 策略(SMA 5/20) | 基准(沪深300) | 差距 |
|---|---|---|---|
| 总收益率 | -15.46% | +6.50% | -21.96% |
| 年化收益 | -4.97% | — | |
| 最大回撤 | -16.87% | -15.00% | 略高 |
| 年化波动率 | 3.89% | 18.00% | 波动反而更小 |
| 夏普比率 | -1.29 | 0.36 | 负数——承担风险反而亏钱 |
| 交易次数 | 57 | — | 三年半 57 笔,偏高 |
| 最终权益 | ¥845,394 | — | 亏了 15.5 万 |

交易流水(前 6 笔)
57 笔交易中,前 6 笔就能看出策略的问题——频繁交易、单笔盈亏都很小、手续费不断累积:
| 日期 | 方向 | 成交价 | 成交额 | 累计收益 |
|---|---|---|---|---|
| 2023-02-21 | BUY | ¥1,651.81 | ¥300,000 | -30.00% |
| 2023-02-28 | SELL | ¥1,604.69 | ¥291,442 | -0.86% |
| 2023-03-30 | BUY | ¥1,592.53 | ¥297,433 | -30.60% |
| 2023-04-13 | SELL | ¥1,524.41 | ¥284,709 | -2.13% |
| 2023-06-15 | BUY | ¥1,552.72 | ¥293,845 | -31.44% |
| 2023-07-12 | SELL | ¥1,539.54 | ¥291,352 | -2.30% |
57 笔交易,一买一卖就是 28.5 个完整来回。每次交易扣佣金和印花税,累积下来手续费也是一笔不小的数目。SMA 5/20 的短周期参数导致信号频繁切换——在茅台这种趋势性不强的标的上,频繁交易就是慢性失血。
为什么会亏?
之前 VNPY 文章里用 SMA 10/30 回测 2022-2023 年的茅台拿到了 +28.7%,这里用 SMA 5/20 回测 2023-2026 年却亏了 15.5%。三个变量同时变了:
- 参数变短了。快线从 10 降到 5,慢线从 30 降到 20——信号更敏感、假突破更多
- 区间换到了 2023-2026。茅台在这个区间整体呈震荡下行趋势,SMA 5/20 在震荡市被反复打脸
- 基准换了。VNPY 用茅台自身做基准(bench=600519),RQAlpha 用了沪深 300。基准不同,跑输的定义也不同
前两点结合起来,结论很明确:在震荡下行的市场中,短周期均线策略是做空自己的最快方式。57 笔交易意味着每 22 个交易日就有一笔交易——这个频率根本抓不住任何趋势,只是在来回付手续费。
第三点值得单独说:年化波动率只有 3.89%,远低于基准的 18%——策略虽然亏钱,但波动控制得很"好"。波动低不是因为策略高明,而是因为频繁空仓和半仓操作降低了风险暴露。问题在于,降低风险暴露的同时也降低了赚钱机会——最后的结果是"稳稳地亏钱"。
常见报错
| 错误 | 原因 | 解决方法 |
|---|---|---|
| "Data bundle not found" | RQAlpha 需要先下载数据包才能回测 | Skill 自动处理,如仍有问题在设置中手动触发数据下载 |
| 策略运行但无交易记录 | 均线参数在回测区间内从未交叉 | 缩小 fast/slow 差值或延长回测区间 |
| 回测结果中夏普比率为负 | 策略年化收益低于无风险利率 | 这就是策略失败的信号——不需要改,正视结果 |
RQAlpha 和之前那些回测框架的区别
之前写过 VNPY、Backtrader、LEAN 等通用回测框架,也写过 Freqtrade、Hummingbot 等加密回测框架。RQAlpha 和它们最大的不同是对中国市场的原生支持:T+1 交易规则自动处理、印花税自动计算、分红送转自动复权、2007 年以来的 A 股历史数据开箱即用。如果你主要做 A 股,RQAlpha 比通用框架少了很多"手动配规则"的麻烦。
但这次回测也暴露了 RQAlpha 的一个问题——它更适合中低频策略(月频或周频调仓),SMA 5/20 这种接近日频的策略在 RQAlpha 上跑起来虽然没问题,但A 股的 T+1 和涨跌停限制会让高频策略的实际效果和回测结果产生偏差——回测里当天买第二天卖是理想情况,实际可能因为涨停买不进、跌停卖不出。
下一步
- 把参数从 5/20 换成 10/30,回测区间换到 2022-2023,验证之前 VNPY 的 +28.7% 是否能在 RQAlpha 上复现
- 尝试 RQAlpha 的因子选股模块——不再依赖单一均线策略,而是用多因子打分选股
资源链接:
- EasyClaw 下载:https://easyclaw.cn/?f=732
- RQAlpha GitHub:https://github.com/ricequant/rqalpha
你用过 RQAlpha 吗?在 A 股回测上踩过 T+1 或者涨跌停导致的"回测和实盘不一致"的坑吗?欢迎聊聊。

浙公网安备 33010602011771号