大多數量化策略不是死在市場手上,是死在回測方法上。
回測 Sharpe 2.5、實盤三個月虧掉 15%,這個劇本在程式交易圈重複出現的頻率,比多數人願意承認的高很多。問題通常不在策略邏輯,而在驗證流程只做了一件事:把參數調到最貼合歷史數據,然後把「貼合歷史」誤認成「有優勢」。Walk-Forward Analysis 就是為了堵住這個缺口而存在的驗證框架。
實務上通常簡稱 WFA,它的核心動作只有一個:嚴格模擬「當時的你」,讓每一段時間的參數,只能用那段時間之前的數據決定,然後看策略在它從沒見過的數據上還剩多少績效。
這篇文章拆四件事:過擬合為什麼幾乎無法靠肉眼發現、WFA 的運作機制與設計決策、結果怎麼判讀、以及 WFA 本身會在哪些條件下失效。讀完不會得到保證賺錢的方法,但你會知道怎麼在投入真金白銀之前,先把大部分假訊號濾掉。
回測績效是怎麼被「做」出來的
先看一個典型案例。
2025 年 3 月,阿哲把一套動量策略放在 BTC 上回測了三年:年化 64%,Sharpe 2.8,最大回撤 11%。他檢查過沒有未來函數,手續費和滑價也都算了。上線第一個月虧 6%,第二個月虧 9%,第三個月他關掉了機器人。
程式沒有 bug。真正的問題是,那三年回測裡他前後試了兩百多組參數,最後留下的那一組,剛好最貼合 2023 到 2024 的單邊行情。他優化出來的不是交易邏輯,是那段歷史的形狀。
這件事在量化回測裡有數學上的必然性。只要嘗試的參數組合夠多,就一定找得到一組在歷史數據上表現驚人的配置,跟策略有沒有真實優勢無關。Bailey、Borwein、López de Prado 與 Zhu 在 The Probability of Backtest Overfitting 裡把這件事量化過:隨著測試次數增加,「最佳回測結果來自雜訊」的機率快速逼近 1。試得越多,冠軍參數越可能是假的。
更麻煩的是,過擬合無法靠肉眼識別。一條擬合雜訊做出來的權益曲線,和一條真有優勢的權益曲線,在圖上長得一模一樣。你沒辦法「看出」差別,只能用流程把它逼出來。這正是 WFA 存在的理由。
至於除了參數以外,回測還會用哪些方式騙人,回測過擬合的九種死法拆得更完整,兩篇搭配看效果更好。
Walk-Forward Analysis 的運作機制
WFA 的做法,是把一次性的樣本外測試變成滾動流程:歷史數據切成一連串「優化窗+驗證窗」的配對,往前推進。
- 取一段數據當 in-sample(IS,優化窗),在裡面做參數優化、找出最佳組合
- 把這組參數原封不動拿到緊接著的 out-of-sample(OOS,驗證窗)上跑,參數不准再動
- 整個視窗往前推移一步,重複上面兩件事
- 把所有 OOS 段的績效串接起來,得到一條「純樣本外」的權益曲線
舉個具體的例子。六年的數據,IS 設 12 個月、OOS 設 3 個月、步長 3 個月,會得到 20 段 OOS。這 20 段拼起來的曲線,每一天用的參數都只來自「那一天之前」的資訊。它模擬的是你真的在 2020 年啟動這套流程、每季重新優化一次、一路跑到今天的結果。
這和傳統「一次優化、全期回測」的差別是本質性的。全期優化等於讓策略偷看了整段歷史的答案;WFA 把答案收走,只留下考古題。策略在 OOS 上的表現,才比較接近它上線之後會給你的東西。
Rolling 與 Anchored 兩種切法
滾動方式有兩種,選擇會直接影響結論。
Rolling(滾動窗):IS 長度固定,視窗整體往前滑。舊數據會被丟掉,策略只記得最近一段市場。適合結構變化快的市場,代價是每次優化的樣本量比較少。
Anchored(錨定窗):IS 起點固定在數據開頭,視窗越滾越長。策略記得所有歷史,參數比較穩定,但對新環境的適應慢。
哪種比較好,取決於市場結構的半衰期。這裡再看一個案例。老 K 在 2025 年用 anchored WFA 驗證一套 ETH 波段策略,結果很漂亮,因為錨定窗一路把 2021 年的大牛市包在裡面,優化出來的參數天然偏多頭。換成 18 個月的 rolling 窗重跑,他發現每滾動一次,最佳參數就大幅跳動,前後兩期的持倉週期參數從 5 天跳到 34 天。這不是策略在適應市場,是參數在追著雜訊跑。他最後放棄了這套策略,省下的錢比任何一次獲利都多。
加密市場的 regime(市場結構環境)切換速度快,流動性結構、參與者組成、衍生品槓桿水位每一兩年就換一輪。從數據來看,rolling 通常是加密策略比較誠實的選擇;anchored 更適合結構穩定的傳統市場長週期策略。
設計 WFA 的四個關鍵決策
WFA 不是跑一個函數就結束,有四個設計決策會直接決定結果可不可信。
1. IS 與 OOS 的長度比例
常見配置是 IS:OOS 在 70:30 到 80:20 之間,但比例本身不是重點,重點是兩個下限。IS 要長到涵蓋至少一個完整的市場循環,不然參數只學到單邊行情;OOS 要長到累積足夠的交易筆數,一段 OOS 裡只有 3 筆交易,好壞都是運氣。
2. OOS 段數
段數太少,結論沒有統計意義。兩三段 OOS 表現好,可能只是剛好踩到順風期。實務上至少要 10 段以上,能到 20 段更好。段數不夠時,寧可縮短步長增加段數,也不要拿三段結果說服自己。
3. 重新優化的頻率
步長多長,等於問「實盤時你打算多久重新優化一次參數」。這件事必須在 WFA 裡如實模擬。如果你實盤打算每季調參,WFA 的步長就是三個月。回測用月頻重優化、實盤半年才動一次,兩邊跑的根本不是同一套系統。
4. 優化的目標函數
在 IS 裡選「最佳參數」時,用什麼標準選,本身就是一個自由度。用總報酬選,會選到重倉賭對一次的參數;用 Sharpe 或 MAR(年化報酬除以最大回撤)選,比較能挑出風險調整後的穩定性。目標函數要在動手前定下來,事後換標準重跑,就是另一種形式的偷看答案。
結果判讀:WFE、段一致性與參數平原
WFA 跑完之後,看三個東西。
Walk-Forward Efficiency
WFE 是最核心的量化指標:把所有 OOS 段的年化績效,除以對應 IS 段的年化績效。它回答一個問題:策略離開訓練數據之後,還剩幾成功力。
Robert Pardo 在 The Evaluation and Optimization of Trading Strategies 裡給出的經驗門檻是 50% 到 60%:OOS 績效至少要保住 IS 績效的一半以上,策略才值得繼續往下驗證。WFE 只有兩三成,代表大部分的回測績效是擬合出來的;WFE 明顯超過 100% 也不是好消息,通常代表 OOS 剛好踩到極端順風行情,或者段數太少。
OOS 段的一致性
WFE 是平均值,平均值會騙人。20 段 OOS 裡如果獲利集中在其中 2 段、其他 18 段平盤或虧損,整體 WFE 再漂亮都是紅旗,因為你實盤等到那 2 段行情之前,可能早就停掉策略了。健康的分佈是六成以上的 OOS 段獲利、虧損段的深度可控,而且獲利來源分散在不同時期。
參數平原
把 IS 優化的結果攤開成參數對績效的曲面。真有結構性優勢的策略,最佳參數周圍會是一片「平原」:均線從 20 改成 25,績效只差一點。如果曲面上是一根孤峰,參數 21 很賺、20 和 22 都虧,那根峰就是雜訊的形狀。每次滾動時最佳參數大幅跳動,是同一個問題的另一種表現。
順帶一提,這三個判讀角度是可以互相驗證的:WFE 低、段分佈集中、參數跳動大,三件事通常會一起出現,因為它們指向同一個病因。
WFA 的極限:它擋不住哪些東西
WFA 是目前散戶可執行的驗證方法裡強度最高的一種,但它不是萬靈丹。有四類失效條件,必須在使用前想清楚。
對 WFA 本身過擬合。這是最隱蔽的一種。WFA 的配置(窗長、步長、目標函數)自己也是參數。Lab 裡有位成員去年做過一件很有代表性的事:一套策略的 WFA 結果不理想,他前後換了 40 種窗長與步長的組合,終於找到一組 WFE 過 60% 的配置。這個動作等於把過擬合從策略參數層搬到了驗證框架層,問題原封不動。正確做法是在碰數據之前就把 WFA 配置寫死,跑出來是什麼就是什麼。
Regime 的結構性斷裂。WFA 假設「不久前的市場」對「不久後的市場」有預測力。這個假設在 2022 年的加密市場被直接打斷:Luna 與 FTX 連環爆之後,流動性結構、槓桿水位、參與者組成整批換血。任何在 2021 年數據上優化的參數,不管驗證流程多嚴謹,都無法預見這種斷裂。WFA 能過濾統計上的假訊號,過濾不了結構性的黑天鵝。
成本建模的落差。OOS 績效再真實,如果回測裡的滑價、手續費、資金費率、深度衝擊沒有如實建模,實盤還是會把利潤吃掉。高頻策略尤其如此,永續合約策略還要把資金費率的路徑算進去,不能用平均值帶過。
通過 WFA 不等於證實有優勢。這是觀念上最重要的一條。WFA 是證偽工具:它能告訴你一套策略「在這一關沒有被殺掉」,不能告訴你它一定有 alpha。嚴謹的流程會在 WFA 之後再加 Monte Carlo 重抽、以及 Deflated Sharpe Ratio 這類校正多重測試的指標,把「試了很多次才找到」這件事對顯著性的稀釋算回來。這個指標怎麼算、門檻怎麼定,可以接著看Deflated Sharpe Ratio 的完整拆解。
這部分的工具鏈與實作細節,我們在付費實驗室裡有完整的討論串與程式範本,適合已經在跑實盤、想把驗證流程系統化的交易者。
實務工作流:把 WFA 放進完整的驗證流程
把前面的內容收斂成一套可執行的順序。這也是這個頻道的研究立場:框架的價值在於可重複,不在於單次結果。
- 先寫假設,再碰數據。策略邏輯、參數範圍、WFA 配置、目標函數、通過門檻,全部先寫下來。事後任何修改都要記錄原因。
- 切出最終保留集。留最近 10% 到 15% 的數據當 holdout,整個開發與 WFA 過程都不碰它,只在最後驗一次。這是你唯一一次「乾淨」的測試機會,用掉就沒有了。
- 跑 WFA。加密市場優先考慮 rolling 窗、較短步長,確保 OOS 段數在 10 段以上。
- 三角驗證。WFE 過 50%、六成以上 OOS 段獲利、參數曲面是平原不是孤峰,三項同時成立才放行。
- Monte Carlo 重抽。把交易序列打亂重抽,看最大回撤的分佈而不是單一路徑。實盤資金配置用分佈的尾部來定,不用回測那條最漂亮的線。
- 小資金實盤。用最小可行倉位跑至少 30 到 50 筆交易,比對實盤成交與回測假設的落差,特別是滑價和成交率。
每一步都在回答同一個問題:這套策略的績效,有多少來自結構,多少來自運氣。答案不會是非黑即白,但流程走得越完整,你對那個比例的估計就越可信。
結論
把這篇的重點收斂成五條:
- 回測績效的預設立場是「有罪推定」:試的參數夠多,漂亮的曲線必然出現,跟有沒有優勢無關
- Walk-Forward Analysis 的核心是時間紀律:每個時點的參數只能用該時點之前的數據決定,OOS 串接的曲線才接近實盤
- 判讀看三件事:WFE 至少 50%、OOS 段獲利分佈均勻、參數曲面是平原
- WFA 配置必須事前寫死,事後調整驗證框架本身就是過擬合
- 通過 WFA 只代表「還沒被證偽」,後面要接 Monte Carlo、Deflated Sharpe 與小資金實盤
量化交易真正的分水嶺,不在於誰找到更神的策略,在於誰的驗證流程更難被自己騙過。市場不會獎勵漂亮的回測,只會獎勵在樣本外還站得住的結構。
如果你想持續追蹤這類驗證框架、市場微結構與資金流的拆解,可以訂閱電子報,每週一篇,不喊單,只拆結構。




