一、回看周期参数:如何选择回看周期

回看周期,说白了就是「用过去多少天的数据来计算均值」。这个参数直接影响你的交易信号什么时候触发、什么时候失效。我个人习惯把它叫做「记忆长度」——你让系统记住多久以前的价格行为。

举个例子:你设置回看周期为20天,那系统就只盯着最近20天的收盘价算均值。超过20天的数据,系统会自动遗忘。嗯,这里有个关键点——遗忘机制决定了信号的灵敏度。

1.1 回看周期的本质

回看周期本质上是一个低通滤波器。周期越长,曲线越平滑,信号越少;周期越短,曲线越敏感,信号越多。我在项目中遇到过一位交易员,他坚持用5日均线做均值回归,结果一天能触发十几次交易,手续费都亏麻了。

为什么会这样?因为短周期对噪声太敏感了。你想想看,市场里每分钟都有随机波动,5日均线几乎跟着价格一起跳舞,哪来的回归机会?

核心原则:回看周期应该大于你预期持仓周期的2-3倍。比如你打算持仓5天,那回看周期至少10-15天。

1.2 不同周期的信号特征

我整理了一张表,方便你直观对比不同周期的表现:

回看周期 信号频率 信号质量 适用场景
5-10天 高(每天1-3次) 低(噪声多) 高频短线、剥头皮
15-30天 中(每2-3天1次) 中(有参考价值) 中线波段、日线级别
40-60天 低(每周1-2次) 高(趋势明确) 长线投资、周线级别
100天以上 极低(每月几次) 极高(大周期回归) 机构级、宏观对冲

我曾经用20天周期跑过沪深300的均值回归策略,效果还不错。但换到比特币上,20天周期就完全失效了——波动太大,均值根本稳不住。后来我改成7天周期,才勉强能用。

我的经验:不同品种要配不同周期。股票用20-30天,加密货币用7-14天,外汇用10-20天。这不是死规矩,但可以作为起点。

二、不同周期对信号的影响

周期参数一变,整个信号系统就变了。我见过太多人死磕一个参数,结果换了个品种就崩盘。说白了,周期就是信号的「脾气」——你调得越短,信号越暴躁;调得越长,信号越沉稳。

2.1 短周期(5-10天)的陷阱

短周期信号多,但假信号也多。我记得有一次用8天周期跑回测,收益率曲线漂亮得不像话。结果实盘第一天就连续亏损——因为回测数据里没有考虑滑点和手续费。

短周期的问题在于:

  • 均值容易被极端值带偏
  • 信号反转太快,来不及反应
  • 交易成本占比过高

避坑指南:我曾经用5天周期做螺纹钢期货,一天交易20多次,手续费吃掉了一半利润。后来我把周期拉到15天,交易次数降到每天3-4次,净利润反而翻了一倍。

2.2 中周期(15-30天)的平衡

中周期是我个人最常用的区间。它既不会太敏感,也不会太迟钝。你想想看,15-30天刚好覆盖一个完整的市场情绪周期——从恐慌到贪婪,再从贪婪回到恐慌。

中周期的优势:

  • 信号稳定,不容易被单日波动干扰
  • 交易频率适中,手续费可控
  • 适合大多数流动性好的品种

建议:新手从20天周期开始。跑三个月回测,看看胜率和盈亏比。如果胜率低于40%,就缩短周期;如果胜率高于60%,就拉长周期。

2.3 长周期(40天以上)的延迟

长周期信号少,但一旦出现信号,成功率很高。不过有个致命问题——延迟太大。等信号出来,价格可能已经回归了一半。

我记得有个学员用60天周期做美股,信号出来时股价已经涨了15%。他犹豫了两天没进场,结果股价又跌回去了。嗯,这就是长周期的尴尬——信号准确,但执行困难。

三、周期参数的优化方法

优化周期参数,说白了就是找到那个「甜点」——信号够多,质量够好,延迟能接受。我常用的方法有三种,下面一个个说。

3.1 网格搜索法

最简单粗暴的方法。把周期从5到100,每隔5天跑一次回测,看哪个参数表现最好。

# 伪代码示例
best_period = 0
best_sharpe = -999

for period in range(5, 101, 5):
    signals = generate_signals(data, period)
    sharpe = calculate_sharpe(signals)
    
    if sharpe > best_sharpe:
        best_sharpe = sharpe
        best_period = period

print(f"最优周期: {best_period}天")
print(f"最优夏普比: {best_sharpe:.2f}")

这个方法虽然笨,但有效。我建议你先用网格搜索缩小范围,再手动微调。比如网格搜索发现20-30天表现最好,那就把21、22、23...都跑一遍。

注意:网格搜索容易过拟合。你找到的最优参数可能只是历史数据的巧合。一定要用样本外数据验证。

3.2 滚动优化法

这个方法更稳健。把数据分成多个时间段,每个时间段独立优化参数,然后看参数是否稳定。

具体做法:

  1. 把5年数据分成5段,每段1年
  2. 每段独立跑网格搜索
  3. 看最优参数是否集中在某个区间

我曾经用这个方法优化过黄金的均值回归策略。5段数据的最优周期分别是22、25、19、28、23天。你看,基本都在20-28天之间。这说明这个参数是稳定的,不是偶然。

3.3 自适应周期法

这是进阶玩法。让周期参数随着市场波动率自动调整。波动大的时候用短周期,波动小的时候用长周期。

# 自适应周期计算
def adaptive_period(data, base_period=20):
    volatility = calculate_volatility(data, window=10)
    vol_ratio = volatility / np.mean(volatility)
    
    # 波动率越高,周期越短
    adjusted_period = base_period / vol_ratio
    
    # 限制范围
    adjusted_period = max(5, min(60, adjusted_period))
    
    return int(adjusted_period)

这个方法的好处是能适应市场变化。我有个朋友用自适应周期做原油期货,2020年负油价那波行情里,他的策略自动缩短了周期,躲过了大坑。

小技巧:自适应周期不要调得太频繁。我建议每周更新一次参数,或者每20根K线更新一次。太频繁反而会引入噪声。

知识体系总览

下面这张图总结了本章的核心逻辑,方便你快速回顾:

回看周期参数知识体系 回看周期参数 如何选择回看周期 不同周期对信号的影响 周期参数的优化方法 本质:低通滤波器 持仓周期×2-3倍 不同品种不同周期 短周期:噪声多 中周期:平衡点 长周期:延迟大 网格搜索法 滚动优化法 自适应周期法 核心:找到信号质量与交易频率的平衡点 新手建议从20天周期开始,逐步调整 优化后一定要用样本外数据验证

这张图把本章的三个核心内容串起来了。你从「如何选择」开始,理解周期的本质;然后看「不同周期的影响」,知道长短周期的利弊;最后用「优化方法」找到最适合你的参数。

我个人建议你先把网格搜索跑一遍,看看你的品种在哪个周期区间表现最好。然后在这个区间里,用滚动优化法验证参数的稳定性。如果参数稳定,再考虑要不要上自适应周期。

最后说一句:参数优化不是一劳永逸的事。市场在变,你的参数也要跟着变。我每季度都会重新跑一次优化,看看之前的参数还管不管用。别偷懒,这个习惯能帮你省很多钱。

专注资料整理