階段 03進階

不自欺的回測

回測很容易做得漂亮,也很容易做錯。它真正的用途是淘汰爛想法,不是承諾獲利。

2 分鐘閱讀進階

回測很容易做得漂亮,也很容易做錯。它真正的用途不是承諾獲利——而是在你拿錢去冒險之前,淘汰那些行不通的想法。

一個無法殺掉你想法的回測,不是證據。它是裝飾。

把每一種成本都算進去

點差、手續費與隔夜利息都必須在模型裡。點差是最常被漏掉的一項,而對短線策略來說傷害最大——它可能就是獲利因子 1.3 與 0.9 之間的差別。

滑價也應該被建模,至少以每筆交易一筆固定的不利金額來處理。如果你的優勢小於一個合理的滑價假設,那它並沒有優勢。

前視偏差

當一個訊號使用了在決策當下還拿不到的資訊,就發生了前視偏差。經典版本是用當根 K 線的收盤價,在同一根 K 線的收盤價進場——你不能交易一個你還沒看到的價格。

更細微的版本包括在開盤時用一個含當根 K 線的移動平均值來做決策,以及用全樣本的統計量來正規化參數。這些全部會膨脹結果,而且沒有一個能單靠淨值曲線被偵測出來。

存活者偏差

如果你在一個「今天還存在」的商品集合上測試,你就已經排除了每一個失敗或被下市的商品。你的結果描述的是一群存活者,而不是你當時原本要從中挑選的那一群。

對短線的 CFD 與外匯策略來說,這件事的影響比股票小,但在指數與個股 CFD 上仍然會咬人,因為成分股清單會在你測試的期間內改變。

過度擬合是預設結果

只要有足夠多的參數與足夠多次的嘗試,你幾乎可以把任何一段歷史擬合得很漂亮。擬合出來的結果精確地描述過去,對未來則毫無預測力。

防禦方式只有:少數參數、大樣本、以及樣本外確認。如果一個參數的小幅變動就大幅改變你的結果,你看到的是一個擬合出來的假象,不是一個穩健的效應。

策略庫

Explore our library of research-driven systematic trading strategies.

重點整理

  • 把點差、手續費、隔夜利息與滑價都建模——比成本還小的優勢不算優勢
  • 前視偏差代表任何訊號都不能使用決策當下還拿不到的資料
  • 存活者偏差排除了在你測試期間失敗的商品
  • 如果參數的小變動就讓結果崩壞,那是擬合出來的,不是找到的
重點一覽
  • 每一次測試都要把點差、手續費與隔夜利息算進去
  • 避免前視偏差,讓任何訊號都不使用未來資料
  • 當心你的商品集合裡的存活者偏差
  • 參數愈多,擬合雜訊的方式就愈多
常見錯誤

提出一份不含成本的回測報告,然後對實盤結果感到意外。

在 Strategist 上實作

閱讀不等於驗證

把你剛讀到的概念寫成明確的規則,然後測試它。那是唯一能知道它到底行不行的方法。

建立策略