一、回看周期参数:如何选择回看周期
回看周期,说白了就是「用过去多少天的数据来计算均值」。这个参数直接影响你的交易信号什么时候触发、什么时候失效。我个人习惯把它叫做「记忆长度」——你让系统记住多久以前的价格行为。
举个例子:你设置回看周期为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 滚动优化法
这个方法更稳健。把数据分成多个时间段,每个时间段独立优化参数,然后看参数是否稳定。
具体做法:
- 把5年数据分成5段,每段1年
- 每段独立跑网格搜索
- 看最优参数是否集中在某个区间
我曾经用这个方法优化过黄金的均值回归策略。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线更新一次。太频繁反而会引入噪声。
知识体系总览
下面这张图总结了本章的核心逻辑,方便你快速回顾:
这张图把本章的三个核心内容串起来了。你从「如何选择」开始,理解周期的本质;然后看「不同周期的影响」,知道长短周期的利弊;最后用「优化方法」找到最适合你的参数。
我个人建议你先把网格搜索跑一遍,看看你的品种在哪个周期区间表现最好。然后在这个区间里,用滚动优化法验证参数的稳定性。如果参数稳定,再考虑要不要上自适应周期。
最后说一句:参数优化不是一劳永逸的事。市场在变,你的参数也要跟着变。我每季度都会重新跑一次优化,看看之前的参数还管不管用。别偷懒,这个习惯能帮你省很多钱。