simon·geofin
Sections
WWeekly
每週觀察
為什麼 walk-forward 的 OOS 還是會騙你:strict-OOS 紀律的八個漏洞
Research · 方法論研究

為什麼 walk-forward 的 OOS 還是會騙你:strict-OOS 紀律的八個漏洞

一個通過 walk-forward OOS 的回測,仍然可能是 overfit。本文把回測知識論當成可證偽的假設來談:列出八種會穿透 walk-forward 的洩漏類型,說明為什麼 Sharpe 大於 2 應該先當成 bug,以及為什麼一套多道 gate 紀律的真正目的,是讓大多數候選策略死在驗證階段。

2026-05-169 min read回測方法論 · walk-forward · strict-OOS · overfit · 量化研究
ShareXThreads

目錄

這篇文章延續本站的公開承諾:每月至少一篇誠實記錄回測與方法論的紀錄,包含失敗與 overfit。這次不談任何一條可交易的規則,只談一件事——一個「通過了 walk-forward out-of-sample 驗證」的回測,為什麼仍然極可能是 overfit。

1. 問題陳述

多數人把 walk-forward 當成回測誠實度的終點:把資料切成多段、用前段擬合、用後段驗證、滾動前進,只要 OOS 段還有正報酬,就宣稱「策略有效」。

問題在於,walk-forward 解決的是「單一切分太脆弱」這一個問題,卻完全沒有解決「研究者本人就是最大的洩漏源」這個問題。當同一個人對同一份資料反覆嘗試上百種設定,walk-forward 的 OOS 段早已被間接看過無數次,它只是換了一個名字的 in-sample。回測知識論的核心矛盾就在這裡:你越想知道一個策略是否真的有效,你就越會對同一份資料施加更多次決策,而每一次決策都在悄悄消耗這份資料剩餘的樣本外純度。研究者通常感覺不到這個消耗,因為每一次調整都看起來合理、局部、無害;但這些「合理的小調整」累積起來,等價於一場規模龐大、卻沒有做任何多重檢定校正的搜尋。

本文要回答的是:在 walk-forward 之上,還需要哪些紀律,才能讓「通過」這兩個字真的有意義;以及為什麼大多數候選策略,本來就應該死在這些紀律手上。要先說清楚的前提是——這不是在否定 walk-forward,而是在指出它被誤當成終點。它是一個必要的起點,真正的工程在它之後才開始。

2. 假設明列

本文把以下幾點當成可證偽的方法論假設,而非定論:

  1. walk-forward OOS 是必要條件但非充分條件(若有人能在反覆調參下,仍讓 walk-forward OOS 與一個完全 frozen、從未被任何決策碰過的測試段表現一致,則此假設被推翻)。
  2. 任何回測的有效性,上限由「研究者對該資料集做過幾次決策」決定,而非由樣本長度決定(若多重檢定校正後,效應仍穩定存在,則此假設過於悲觀)。
  3. 異常高的 Sharpe 在被反證之前應視為 bug,而非 alpha(若逐筆拆解後,獲利並非來自少數日、未模擬的成本或填單幻覺,則該個案不適用此假設)。
  4. 一套設計良好的 gate 紀律,其價值衡量標準是「殺掉多少候選」,不是「放行多少候選」(若放行率高且放行者事後仍穩健,則 gate 設得太鬆或此假設有誤)。

以上四點都附帶了明確的證偽條件。若讀者能提出反例,本站視為方法論的進步,而不是丟臉。

3. 八種洩漏類型

以下八種洩漏,walk-forward 單獨一招都擋不住,因為它們發生在切分邏輯之外:

  1. Lookahead(前視):特徵或標籤用到了當下還不可得的資訊;walk-forward 照樣切,只是每一段都同樣前視。
  2. Survivorship(倖存者偏誤):資料集只剩下活到今天的標的;每一個 OOS 段都缺席了已消失的失敗者。
  3. Data-snooping(反覆檢定):同一份資料被測過上百次,最佳結果是搜尋雜訊的產物;walk-forward 對「你看過幾次」一無所知。
  4. Feature leakage(特徵洩漏):特徵在建構時混入了未來統計量(如用全期均值標準化);切分前的污染,切分後也救不回來。
  5. Label leakage(標籤洩漏):標籤定義隱含了未來才能確定的事件邊界;OOS 段的標籤本身就帶著未來。
  6. 跨來源時間戳錯位:兩個資料源以不同的對齊慣例合併,造成毫秒到分鐘級的隱性前視;walk-forward 不檢查資料源一致性。
  7. Dense-scan 視窗偏誤 / 後段救援:全期看似穩健的設定,實際上是後段的樂透行情救了前段的虧損;滾動切分若不要求每一段獨立達標,就會被整體平均掩蓋。
  8. 在測試集上選參數:用 OOS 段的表現回頭挑最佳參數或最佳濾網——這是把測試集偷偷變成驗證集,是最常見也最致命的一種,而它穿著 walk-forward 的外衣。

觀察重點 1 — 為什麼單一 train/test 切分不是 OOS

單一 train/test 切分提供的不是樣本外證據,只是樣本外的一個樣本點;而 walk-forward 把這個樣本點重複了很多次,卻沒有改變「研究者已經看過後段」這個事實。

真正的 OOS 要求:在你對資料做任何決策之前,有一段資料被 frozen,從此不再被任何調參、選濾網、看圖、回頭比較所觸碰。一旦你因為某個設定在後段表現不好而調整它,那段資料就從測試集降格成驗證集,而你已經沒有測試集了。這個降格是不可逆的——你不能事後宣稱「我只看了一眼,沒有真的根據它調整」,因為你的大腦無法證明它沒被那一眼影響;在統計上,只要該段資料參與了任何選擇過程,它就不再是樣本外。

walk-forward 的滾動結構讓人產生「我驗證了很多段」的安全感,但如果每一輪的參數或結構選擇,都隱含參考了後段的整體表現,那麼所有 OOS 段其實共享同一個被污染的決策過程。更隱蔽的情況是:研究者跑完整個 walk-forward,看到總績效不理想,於是換一組超參數空間、換一種特徵、換一個切分起點,再跑一次——這整個外層迴圈本身就是一次對全期資料的搜尋,而 walk-forward 內部的切分對這個外層迴圈完全無感。換句話說,切分方式再精巧,也擋不住決策層的洩漏;OOS 的純度由紀律保證,不是由演算法保證。能用程式自動化的部分,從來不是最難的部分;最難的是承認自己已經看過資料、並因此把那段資料當成已燒毀。

觀察重點 2 — 為什麼 Sharpe 大於 2 要先當成 bug

在這個研究室裡,Sharpe 明顯偏高(以 2 作為內部的警戒啟發值,而非任何實測結果)不是好消息,而是一條「在被反證之前先當成 bug」的內規。

理由有四個,且彼此獨立:其一,seed 樂透——換一個隨機種子或資料起點,效應就消失,代表你看到的是抽樣噪音的尾端;其二,單日集中——把累積績效拆到每一天,常發現絕大部分來自極少數交易日,移除最賺的兩天後策略就崩潰,這不是策略而是少數行情的殘影;其三,填單幻覺——在高頻或低流動性情境假設能以理論價成交,真實滑價與排隊根本無法實現;其四,成本未模擬——把來回交易成本與 break-even 點放回去後,漂亮的曲線往往直接翻負。把高 Sharpe 預設為 bug,逼自己先回答「它為什麼不是上述四者之一」,通過不了這四問,數字再好也不採信。這是啟發式自律,不是對任何特定結果的描述。

觀察重點 3 — 多道 gate 紀律:大多數策略應該死在這裡

一套設計良好的驗證紀律,衡量它好不好的標準,是它殺掉了多少候選,而不是放行了多少;大多數候選策略死在某一道 gate,正是這套紀律在正常運作,而不是它失敗。

抽象地說,一個候選要拿到「GREEN」這種最高信任標記,應通過數道彼此獨立的 gate:跨來源一致性(同一現象在兩個獨立資料源上量級一致、不變號,任一邊出現變號或數量級差距過大就自動退場)、單日集中度(績效不能由最賺的少數日撐起,移除頂部少數交易日後策略不應崩潰)、訊號多樣性(獲利不能集中在單一簽名上,有效訊號的有效數量要夠分散)、strict-OOS frozen-test 加冷卻期(測試段永久凍結,且通過後一段時間內不得反覆回測同一假設,以免冷卻期一過又開始 data-snooping)、以及高頻填單真實性(成交假設要對得起真實流動性,延遲一根 bar 後不應崩潰)。

這些 gate 的設計關鍵在於「彼此獨立」:如果它們會被同一個結構性弱點同時穿透,那麼通過全部 gate 並不提供額外保證。獨立的 gate 才能讓不同形態的 overfit 各自在不同的地方暴露。它們不是用來幫策略加分的,是用來找它怎麼死的。經驗上,絕大多數候選會在其中一道倒下——這正是重點:這套紀律存在的目的,就是讓 overfit 在被當成 alpha 之前先死掉。一個從不殺候選的驗證流程,不是寬容,是失靈;它唯一的產出,就是把研究者的搜尋雜訊重新包裝成「發現」。把候選的死亡記錄下來、而不是悄悄丟棄它,是這套紀律能持續校正自己的唯一方式,也是本站每月公開記錄失敗的理由。

7. 局限與下一步

這篇文章本身也有局限,誠實地列出來:其一,它是一篇方法論散文,刻意不含任何市場數字、任何可交易規則、任何「這招有用」的訊號,因此無法用單一實證案例向讀者證明這套紀律一定比 naive walk-forward 好——它只能作為一個可被挑戰的假設提出。其二,八種洩漏類型的清單未必窮盡,任何分類法都可能漏掉新形態的洩漏,尤其當資料源、特徵工程方式改變時。其三,gate 的門檻值(例如把 Sharpe 2 當警戒線)是內部啟發式自律,不是從理論推導的最適值,本身也可能 overfit 到本研究室過去踩過的坑。下一步,本站會在後續的方法論紀錄裡,針對其中某一道 gate 給出可重現的失敗案例拆解(仍不洩漏任何可交易內容),把「為什麼它會殺掉候選」講得更具體。

來源

本站為觀察研究,不作價格預測或個股薦股;方法論為可被重新檢驗的假設,歡迎讀者挑戰。

Geofin Research Weekly

地緣優先的投資觀察週報

每週一封。方法論、失敗紀錄、量化驗證結果。不寄明牌,不寄投資建議。 免費訂閱即可收到精選摘要,付費解鎖完整深度研究。

  • 免費版:每週 1 篇精選 + 市場速覽
  • 付費版:每週 3 篇深度研究 + 數據附件
免費訂閱 →隨時取消,不綁約