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 日

image

回测结果:三年半亏了 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 万

image

交易流水(前 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%。三个变量同时变了:

  1. 参数变短了。快线从 10 降到 5,慢线从 30 降到 20——信号更敏感、假突破更多
  2. 区间换到了 2023-2026。茅台在这个区间整体呈震荡下行趋势,SMA 5/20 在震荡市被反复打脸
  3. 基准换了。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 的因子选股模块——不再依赖单一均线策略,而是用多因子打分选股

资源链接:

你用过 RQAlpha 吗?在 A 股回测上踩过 T+1 或者涨跌停导致的"回测和实盘不一致"的坑吗?欢迎聊聊。

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