Featured image of post MacdCross-4h 通过 WFO 终审:从回测爆赚到有资格进模拟盘

MacdCross-4h 通过 WFO 终审:从回测爆赚到有资格进模拟盘

14 策略 × 4 时间线唯一幸存者 MacdCross-4h,固定公开参数 12/26/9 做滚动原点样本外验证:OOS 5/5 全盈利、MCPT p=0.003、DSR=1.000、参数高原 100% 盈利——四道统计闸全绿,拿到进模拟盘的资格。

这是 LynxCrypto 的实证更新篇。上一篇工具篇讲了方法论,这一篇是把方法论真正跑在一个策略上的完整记录:14 个策略 × 4 个时间线里唯一的幸存者 MacdCross-4h,刚刚通过了 walk-forward 终审,拿到了进模拟盘的资格。


一、先泼冷水:为什么"回测 +1072"一文不值

先对齐一个很多人不愿意接受的事实:任何"全样本回测爆赚"的数字,本身都不能作为上线依据。

我的画廊回测里,MacdCross(12,26,9) 在 ZECUSDT 4h 上,365 天、143 笔、净利 +1072 USDT、Sharpe 2.56。这个数字看起来很诱人——但它恰恰是最不可信的,因为:

  1. 它是在**同一段数据上被发现、又被同一段数据"验证"**的——这是循环论证。
  2. 14 策略 × 4 时间线 = 56 个组合里,纯靠运气也会有几个是正的(多重比较问题)。
  3. beta 剥离后 alpha 年化 132%,但 t 值只有 2.35,低于 3.0 的严格线。

所以我没有拿 +1072 去开实盘。我把它送进了终审:walk-forward 样本外验证 + 三重统计闸。这篇文章就是那个终审的完整记录。


二、终审设计:固定参数,不做优化

这是整个终审最关键、也最反直觉的一个决定:我不优化参数。

很多人会想:为什么不每个 fold 都网格搜索最优参数?因为 t=2.35 这个统计强度撑不起参数优化——在这么短的样本上去挑"最优参数",本身就是过拟合,挑出来的参数大概率是噪声。

所以我用的是滚动原点(rolling-origin)样本外验证:

  • MACD 参数固定用公开的 12/26/9(这组参数是几十年前公开的经典值,不是我调出来的)。
  • 把 365 天的 4h K 线切成 5 个 fold,每个 fold 用前 70% 训练、后 30% 做样本外,中间留 24 小时 embargo(防泄漏)。
  • 策略只在它从未见过的样本外窗口上跑,记录每折的净盈亏和 Sharpe。

这样一来,如果 MacdCross 的 edge 是真的,它应该在每一段新数据上都稳得住;如果只是过拟合,样本外就会现原形。


三、终审结果:四道统计闸全绿

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[full-sample] n=143 net=+1072.08 sharpe=2.56 maxDD=-19.6%

  [fold 0] OOS 2025-11-06..2026-01-04  n=23 net=+122.87 sharpe=2.92
  [fold 1] OOS 2026-01-05..2026-03-06  n=19 net= +27.03 sharpe=0.90
  [fold 2] OOS 2026-03-07..2026-05-06  n=15 net=+316.64 sharpe=7.28
  [fold 3] OOS 2026-05-07..2026-07-06  n=23 net=+169.19 sharpe=4.32
  [fold 4] OOS 2026-07-07..2026-09-05  n=26 net= +47.43 sharpe=1.58

=== 统计闸 ===
  mean OOS Sharpe : +3.40    gate > 0     PASS
  OOS folds net>0 : 5/5
  MCPT p-value    : 0.0030   gate < 0.01  PASS
  DSR (56 trials) : 1.000    gate > 0.95  PASS
  params-plateau  : median +998, 100%>0   PASS

逐项解释这四道闸:

  • 平均 OOS Sharpe +3.40(>0 过关):五个从未见过的窗口,Sharpe 全为正。
  • 样本外 5 折全部盈利(5/5):没有靠某一折的运气撑起来。
  • MCPT p=0.003(<0.01 过关):蒙特卡洛置换检验——把所有交易的盈亏符号随机打乱 2000 次,只有 0.3% 的随机排列能凑出这么好的总收益。这几乎排除了"纯运气"。
  • DSR = 1.000(>0.95 过关):Deflated Sharpe Ratio,校正了我试过 56 个组合这个事实之后,这个 Sharpe 依然统计显著。这是对抗"试太多次"的最后一道闸。

还有一个我额外加的参数敏感度检验:把 fast/slow/signal 在 12/26/9 附近扰动(8/12/17 × 21/26/35 × 7/9/12),18 个邻近组合 100% 盈利,中位数 +998。这说明 12/26/9 不是一个孤立的尖峰(孤峰=过拟合),而是一个真实的高原。


四、诚实的保留意见:它过了终审,但不是印钞机

我必须把保留意见说全,否则这篇就是在卖梦:

  1. 样本仍偏短。 每折样本外只有约 350 根 4h K 线。365 天对加密来说只是一个市场周期——它没见过 2021 年那种级别的牛市崩盘。
  2. Sharpe 波动很大。 五折从 0.90 到 7.28,这不是稳态收益,意味着有些月份它可能不赚钱甚至小亏。
  3. 它是"小 edge",不是"提款机"。 beta 剥离后 alpha 年化约 132% 听着高,但那是建立在 0.2 强度、1 倍杠杆、880 美金本金上的小基数。折算下来,合理的期望是每天 1-2 美金量级,不是每天 200。
  4. 过终审 ≠ 能实盘。 它只证明了"历史样本外稳得住",还没证明"实盘和回测对得上"——那是下一步 dry-run 要验证的事。

五、下一步:模拟盘 dry-run

终审通过,意味着 MacdCross-4h 有资格进入蚂蚁仓验证了。下一步是 Phase 5:

  • 用 OKX 模拟盘 API key,把 MacdCross-4h 接上跑 dry-run。
  • 跑至少 2 周,对比实盘成交和回测预期是否对得上(滑点、资金费、成交率)。
  • 对得上,才考虑投不超过本金 5% 的真钱蚂蚁仓。

这就是整个流程的意义:不是靠"我觉得这个策略行"就上真钱,而是让它一关一关地过——回测初筛 → beta 剥离 → WFO 终审 → 模拟盘 dry-run → 蚂蚁仓实盘。 每一关都可能把它杀掉,能活到最后的才配碰我的 880 美金。


本系列:

代码在本地 /home/li/lynxcrypto,107 个测试全绿。run_wfo_macd.py 可复现本文全部数字。非投资建议。