Skip to content

第 6 讲:参数扫描——寻找最优均线

本讲要点

在同一段历史上挑出的「最优」参数,常常只是运气最好的那个。


1. 本讲任务

上一讲只试了 3 个均线天数。本讲做参数优化:在固定样本上系统扫描,找出收益率最高的均线周期 (N)。

  • 扫描 MA = 5, 10, 15, …, 120(步长 5,共 24 个)
  • 每个都跑一遍「定投 + 均线门禁」
  • 挑最终收益率最高的当「样本内最优」
  • 同时与无门禁定投对照

听起来很科学——危险也在这里:本讲只负责「找最优」;该参数换一段时间是否仍成立,留给第 7 讲检验过拟合。


2. 完整代码

python
rows = []
for ma in range(5, 121, 5):
    r = backtest_dca_with_ma(df, ma_period=ma)
    rows.append({"ma": ma, "return": r["return"].iloc[-1]})

scan = pd.DataFrame(rows)
best = scan.loc[scan["return"].idxmax()]
dca_ret = backtest_dca(df)["return"].iloc[-1]

print(f"冠军参数: MA{int(best['ma'])}")
print(f"冠军收益: {best['return']:.2%}")
print(f"定投:   {dca_ret:.2%}")
print(f"提升:     {best['return'] - dca_ret:.2%}")

colors = ["green" if x > dca_ret else "steelblue" for x in scan["return"]]
plt.figure(figsize=(10, 4))
plt.bar(scan["ma"], scan["return"] * 100, color=colors, alpha=0.75)
plt.bar(best["ma"], best["return"] * 100, color="gold", edgecolor="black", label="冠军")
plt.axhline(dca_ret * 100, color="gray", linestyle="--", label="定投")
plt.axhline(0, color="black", linewidth=0.8)
plt.xlabel("均线天数")
plt.ylabel("收益率 (%)")
plt.legend()
plt.tight_layout()
plt.show()

脚本:easy-quant/code/06_param_scan.py


3. 运行结果

固定窗口 2021-01-012026-03-04,标的沪深 300ETF(510300.SS):

text
冠军参数: MA5
冠军收益: 18.53%
定投:   17.70%
提升:     0.82%
跑赢定投: 1/24
对照 MA  5: 18.53%  vs定投 +0.82%  买入 37/63
对照 MA 10: 15.83%  vs定投 -1.88%  买入 33/63
对照 MA 20: 14.71%  vs定投 -3.00%  买入 26/63
对照 MA 60: 14.36%  vs定投 -3.34%  买入 28/63
对照 MA120: 16.26%  vs定投 -1.44%  买入 27/63
方案收益相对定投买入次数
定投(无门禁)17.70%63/63
冠军 MA518.53%+0.82%37/63
MA1015.83%−1.88%33/63
MA2014.71%−3.00%26/63
MA6014.36%−3.34%28/63
MA12016.26%−1.44%27/63

参数扫描:均线 vs 定投


4. 柱状图与表格怎么读

  • 金色柱:样本内收益率最高的参数(本例为 MA5)
  • 灰虚线:定投水平(17.70%)
  • 24 个参数中,仅 MA5 略高于定投;MA10 / 20 / 60 等常用周期全部低于定投
  • 冠军相对定投只高 0.82 个百分点,且 MA5 门禁较松(仍买入 37/63 个月)——更像轻微择时,而非稳定优势

因此,就本样本而言:谈不上「哪条均线适合沪深 300ETF」;扫描给出的只是这段历史上终点收益最高的 (N),不是可外推的配置结论。


5. 为什么这时候要警惕

想象教室里测 24 个人的身高,挑最高的那个:

  • 他确实最高
  • 但这不代表「挑人规则」能迁移到隔壁班

参数扫描也一样:你给了波动 24 次「碰巧第一」的机会。冠军只比定投高一点点时,更要怀疑这是选择偏差,而不是找到了规律。

下一讲冻结本讲得到的最优参数(MA5),拿到 2017–2021 另一段历史上再考——专门看过拟合


上一讲 · 下一讲:过拟合