如何回测 SMA 交叉策略
SMA 交叉策略在快线(短周期 SMA)上穿慢线(长周期 SMA)时买入、下穿时卖出,最常见的是 50 日 SMA 与 200 日 SMA 的黄金交叉。它在趋势市中往往表现良好,在区间震荡中会产生大量假信号,因此应计入交易成本,并用至少 10 年的日线数据回测。
简单移动平均线交叉是最古老的系统化交易信号之一。它机械、易懂,而且已被大量研究——这使它成为学习如何正确回测策略的理想起点。
什么是 SMA 交叉?
简单移动平均线(SMA)是在设定回看窗口内收盘价的算术平均值。SMA 交叉策略使用两条移动平均线——一条快线(周期较短)和一条慢线(周期较长)。当快线上穿慢线时,意味着可能出现上升趋势,产生买入信号;当快线下穿慢线时,意味着可能出现下降趋势,产生卖出或做空信号。
其逻辑很直观:如果近期价格高于长期均值,动量就是向上的。但让 SMA 交叉具有吸引力的简单性,也正是它的局限——它本质上是滞后指标,只有在价格走势已经开始之后才会做出反应。
常见参数组合
最常被提及的 SMA 交叉是黄金交叉 / 死亡交叉(Golden Cross / Death Cross):50 日 SMA 与 200 日 SMA 的交叉。机构交易者会关注这一组合,财经媒体也经常引用。
其他常被回测的组合包括:
- 10 / 30 日 —— 信号更快、交易更多、交易成本更高
- 20 / 50 日 —— 中期,适合波段交易的良好平衡
- 50 / 200 日 —— 慢速,每年交易很少,用于头寸交易
- EMA 变体 —— 指数移动平均线给近期价格更高的权重;两者都测试并比较
合适的组合取决于资产的波动性、时间周期以及你对持仓时长的容忍度。SPY 日线图上的 50/200 交叉每十年产生的信号不到 5 个;而 BTC 小时数据上的 10/30 交叉可能产生数百个。
设置回测
要正确回测 SMA 交叉,你需要明确:
- 标的范围与时间周期。哪些资产?什么日期区间?至少使用 10 年的日线数据,以覆盖多个市场周期。
- 入场与出场规则。你是在交叉 K 线收盘时入场,还是在下一根 K 线开盘时入场?后者更现实——通常你无法在触发信号的同一根 K 线上成交。
- 仓位规模。固定美元金额、固定股数,还是权益的一定百分比?这会显著影响回撤计算。
- 交易成本。计入佣金和合理的滑点估计(对于高频交叉策略,即使每边 0.05% 也会明显改变结果)。
- 基准。与同一资产的买入持有进行比较。如果策略年化收益 8%,而买入持有为 12%,那么无论资金曲线看起来如何,这个策略都没有用。
解读结果
回测完成后,在下结论之前先关注以下指标:
- 夏普比率:每单位波动率的收益。低于 0.5 较差,高于 1.0 良好,高于 2.0 则非常突出,值得怀疑。
- 最大回撤:测试期间从峰值到谷底的最大亏损。最大回撤达 40% 的策略,在实盘中心理上极难坚持。
- 胜率与盈亏比(profit factor):SMA 交叉策略的胜率常在 35–45%——亏损次数多于盈利次数,但盈利交易的幅度更大。盈亏比高于 1.5 即可弥补较低的胜率。
- 交易次数:如果测试期内交易少于 30 笔,结果在统计上不显著。交易越多,对指标的信心越高。
常见陷阱
过拟合是最大的风险。如果你测试了 50 种不同的 SMA 组合并只报告最好的一个,那你是在做数据挖掘,而不是发现了优势。任何参数组都要在优化过程中未使用过的预留区间上进行验证。
幸存者偏差(survivorship bias)会影响股票回测。如果你用今天的 S&P 500 成分股回测 20 年的 SMA 交叉,你测试的只是存活下来的公司——破产的公司早已不在指数中。请使用无幸存者偏差的数据集。
市场状态依赖是最容易被低估的问题。SMA 交叉在趋势市中有效,在反复震荡的区间行情中则会严重亏损。按年份检查结果——如果策略只在 2010–2021 年的牛市中有效,那它就不够稳健。
亲自试试
不写代码测试不同 SMA 参数组合的最快方法,是用自然语言描述策略。使用 QuantPrompt,你可以输入类似这样的内容:“在 SPY 日线数据上,当 20 日 SMA 上穿 50 日 SMA 时买入;反向交叉时卖出。每笔交易使用 100% 的权益。”AI 会解析策略,在历史 OHLCV 数据上运行回测,并返回包含资金曲线、回撤图和关键指标的完整绩效报告——无需任何代码。
这让快速迭代变得切实可行:几分钟内测试 10/30、20/50 与 50/200,并排比较夏普比率,找出每组参数在哪种市场状态下表现最好。