Walk-Forward Analysis 看不見的市場結構性風險:五種驗證流程擋不住的斷裂

Walk-Forward 過關的策略還是會賠錢,多半死在市場結構性風險上。本文拆解五種驗證流程測不出來的斷裂:regime 轉換、規則變更、流動性折舊、策略擁擠與尾部相關性。

一套通過 Walk-Forward 的策略,最後多半不是被參數殺死的。殺死它的是前提。

Walk-Forward Analysis 檢查的是同一套邏輯在沒看過的數據上還剩幾成績效。它成立的條件很明確:產生樣本內數據的市場結構,和產生樣本外數據的市場結構是同一個。這個條件在加密市場的有效期,通常比多數人假設的短。

市場結構性風險講的就是這個條件被破壞的情況。不是價格走得跟預期不同,是產生價格的那套機制被換掉了:造市商退場、保證金規則改版、同一個 edge 突然被十倍的資金追、原本互不相關的策略在同一天一起虧。這幾件事在價格序列上留下的痕跡,永遠是事後的。

這篇拆五種 WFA 在結構上就測不出來的風險、滾動重優化為什麼反而會讓人低估它們,以及實務上可以怎麼補。WFA 的滾動樣本外測試機制、切窗設計與判讀門檻,Walk-Forward Analysis 深度解析已經拆過完整流程,這裡不重複。

參數失效與前提失效是兩件事

參數失效是程度問題:市場還是同一個市場,只是最佳均線長度從 20 漂到 28。WFA 處理這件事的效率很好,重優化一次就跟上了。

前提失效是類別問題:策略賴以獲利的那個機制不見了。統計上這叫非平穩性,交易上它的意思是你的樣本和你的未來,來自兩個不同的世界。判斷一件事屬不屬於結構性風險,看三個特徵就夠。

  • 不可逆:交易所改掉的保證金規則不會自己改回來,倒閉的造市商不會回來報價
  • 作用在規則、參與者或成本上:它先改變市場怎麼運作,才間接改變價格
  • 在你的資料欄位裡沒有對應的欄位:OHLCV 和資金費率記不下「誰在對面接單」

第三點是關鍵。回測引擎讀得到的東西,決定了驗證流程能看見的東西。

滾動重優化的適應延遲有算術上限

WFA 的滾動重優化常被講成「策略會自己適應市場」。適應速度可以直接算出來。

設定 IS 24 個月、OOS 3 個月、步長 3 個月。假設結構斷裂發生在某一段 OOS 的第一天:

  1. 這一整段 OOS 全程用斷裂前的參數跑完,延遲已經是 3 個月
  2. 下一次重優化時,24 個月的 IS 裡只有 3 個月屬於新結構,佔 12.5%,優化目標函數幾乎不可能被這一小塊主導
  3. 要等到新結構佔滿 IS 的一半以上,選出的參數才會真的轉向,那是斷裂發生 12 個月之後

所以「會自己適應」的實際速度是:一個步長之後開始學,半個 IS 長度之後才學會。中間這段時間,你跑的是一套為已經消失的市場優化過的系統。Rolling 窗至少會遺忘舊結構,anchored 窗連遺忘都不會,這也是加密策略優先用 rolling 的實際理由。

五種 WFA 看不見的市場結構性風險

五種風險攻擊的都不是參數,是回測讀不到的那一層。先給全表,後面逐項拆。

結構性風險 WFA 為什麼看不到 最早出現的訊號
Regime 斷裂 斷裂被記成一段難看的 OOS,再被其他視窗平均掉 單段 OOS 的極端虧損、參數大幅跳動
規則層變更 規則沒有對應的資料欄位 交易所公告、保證金與槓桿參數
流動性折舊與容量 滑價假設在整條回測上是常數 深度分位、實際成交與回測的價差
擁擠度與 alpha 衰減 重優化會陪著縮小的 edge 一起縮 edge 絕對水位:基差、資金費率、價差
尾部樣本不足與相關性歸一 樣本裡的尾部事件只有個位數,且逐策略分開驗證 壓力視窗下的策略間相關係數

1. Regime 斷裂被平均值稀釋

WFA 不是完全看不到 regime 斷裂,它會把斷裂記錄成一段很難看的 OOS,然後和其他二十段一起平均掉。

算一次給你看。20 段 OOS、每段 3 個月、共 5 年,其中 19 段平均 +4%,一段 -30%。串接起來總報酬 46%,簡單年化 9.2%;IS 年化 18%,Walk-Forward Efficiency 算出來是 51%,按 Pardo 的門檻壓線過關。

壓線過關的那條線底下,埋著一次三個月虧掉 30% 的路徑。實盤走到那裡,多數人不會等到下一段。WFE 是平均值,結構斷裂是事件,用平均值去描述事件本來就會失真。

2022 年的加密市場是現成的樣本:Luna 崩盤、三箭資本清算、FTX 倒閉,連續三次把流動性結構、槓桿水位和參與者組成整批換血,一年之內走完三次 regime 轉換。任何在 2021 年數據上優化過的參數,驗證流程做得再嚴謹,都預見不了這種結構性斷裂。

判讀時該做的動作很簡單:逐段報酬單獨攤開看,把最差的那一段拿出來問「這一段發生的時候,我的倉位撐得住嗎」。總分永遠比分佈好看。

2. 規則層的變更不在你的資料欄位裡

你的回測資料通常是 OHLCV、資金費率、未平倉量,比較用功的會加上訂單簿快照。以下這些東西不在裡面:

  • 槓桿上限與維持保證金階梯
  • 自動減倉(ADL)的觸發規則
  • 手續費階梯與 maker 返佣
  • 撮合與限價規則、單筆委託上限
  • 上架、下架與流動性遷移
  • 監管造成的地區性停止服務

這些變數改變的是價格怎麼被產生出來的,價格序列本身照樣有值,回測照樣跑得完。

Lab 裡有位成員做的是清算級聯:抓強平量堆積的價位,在級聯啟動時跟著做動能。這套策略在 2021 年上半年的數據上表現非常好。2021 年下半年多家交易所把新開戶的槓桿上限壓到 20 倍、同時調整了維持保證金階梯之後,同樣幅度的下跌推不出同樣規模的強平量,級聯的深度和速度都變了。

他那年底重跑 WFA,WFE 還有 58%。原因不複雜:新規則當時只覆蓋到 IS 的最後幾個月,權重不夠。真正的答案要到 2022 年才在 OOS 上顯現,而那時候策略已經跑了半年多的實盤。

想知道回測還會用哪些方式騙你,回測過擬合的九種死法整理得比較完整,那篇講的是統計層的陷阱,這篇補的是規則層。

3. 流動性折舊與容量上限

流動性風險在回測裡只用一個形式存在:滑價假設。這組假設在整條 WFA 上通常是常數,或是拿歷史平均估出來的簡單模型。市場深度不是常數,它會隨造市商的進出、庫存能力與風險偏好結構性地變動。

2022 年 11 月 FTX 倒閉之後,Alameda 從多個山寨幣市場的報價端消失。Kaiko 的市場深度追蹤在那段時間記錄到主要交易所的 1% 深度出現腰斬級的萎縮,部分中小市值幣種恢復得更慢。價格照樣有得跑,但同樣一張單的成交品質已經是另一個世界。

一位成員的山寨幣均值回歸策略吃到的就是這一刀。回測滑價假設 8 bps,用 2021 到 2022 上半年的深度估出來的;2023 年上線之後實際成交平均超過 30 bps。他的 WFA 每一段 OOS 都過關,因為每一段用的都是同一組成本假設。年化 22% 的紙上績效,扣掉真實滑價剩不到 5%,再扣資金費率就是負的。

容量是同一個問題的另一面。WFA 測的是參數,不是規模。回測預設你的單子不影響市場,所以倉位放大五倍的衝擊不會出現在任何一段 OOS 裡。策略容量的上限必須另外測,用訂單簿深度和真實成交回饋去估,不能從 OOS 績效推。

4. 擁擠度與 alpha 衰減,會被重優化蓋住

回測資料裡沒有其他人。它預設你不影響市場,也預設沒有人在跟你搶同一個價差。真實世界裡,一個公開、好複製、容量有限的 edge,被發現之後就開始折舊。

2024 年 1 月美國現貨比特幣 ETF 上市,期現套利的資金結構整個換了一輪。CME 年化基差在 2024 年 3 月一度回到兩位數,隨後多數時間壓在個位數。一套用 2022 到 2023 年資料開發的期現套利策略,WFA 逐段滾下來幾乎沒有警訊:每次重優化,參數會自動往「更低的進場門檻、更長的持有期」移動,帳面上維持正報酬。

這正是最容易騙過 WFA 的死法。滾動重優化會陪著縮小的 edge 一起縮,讓報告持續顯示「參數還在適應」,實際發生的是「可分配的利潤在消失」。等到扣掉借貸與轉倉成本轉負,重優化才會停止生效,那時候已經賠了幾個月。

策略擁擠度沒有直接的觀測值,edge 本身的絕對水位是可用的代理指標。基差多少、資金費率中位數多少、價差幾個 tick,這些數字比策略報酬更早給訊號。策略報酬是結果,edge 水位是原因。對策不在驗證流程裡,在監控裡。

5. 尾部樣本不足,而尾部正是相關性歸一的時刻

六年日線資料大約 2,190 個交易日,其中真正的流動性事件,2020 年 3 月 12 日、2021 年 5 月 19 日、2022 年 5 月、2022 年 11 月、2024 年 8 月 5 日,大概就這幾次。任何從五個樣本估出來的尾部參數,信賴區間寬到不該拿來設槓桿。

樣本還會被生存偏差再砍一刀。倒掉的交易所、下架的幣種、停止報價的資料源不會留在你的資料庫裡,最慘烈的那幾段路徑在資料清洗階段就消失了。這類偏誤怎麼進到資料集,量化交易數據層的建法拆過完整流程。

更麻煩的是相關性。2024 年 8 月 5 日日圓套利平倉那天,BTC 一度跌到 5 萬美元以下,趨勢、均值回歸、期現、做市,邏輯完全不同的策略同一天同向虧損。強制平倉的時候,賣的不是看法,是所有能賣的東西。

WFA 是逐策略、逐路徑的工具。你對五套策略各跑一次 WFA,得到五條 OOS 曲線,它不會告訴你這五條在尾部其實是同一條。組合層的檢查要另外做:把壓力視窗單獨抽出來算策略間的相關係數,全樣本相關係數在尾部沒有參考價值。

補法:把結構前提寫成可監控的清單

前面五種風險有一個共同點,它們都不在回測的輸入裡,所以也不會在回測的輸出裡。要處理它們,得把監控從績效層移到前提層。

第一步,寫下策略的結構前提。 每套策略 3 到 5 條,每一條都要可觀測、可量化。寫不出來,代表你其實不知道這套策略為什麼會賺錢。

結構前提 觀測變數 資料來源 失效門檻 觸發動作
永續資金費率長期偏正 30 日資金費率中位數 交易所 API 連續 14 日為負 倉位減半
深度吃得下我的規模 1% 深度 ÷ 單筆委託金額 訂單簿快照 比值低於 20 倍 降規模或換場所
基差 edge 尚未被擁擠 CME 年化基差 CME、交易所 低於成本加 3% 停止新倉
波動環境在樣本內覆蓋範圍 30 日已實現波動率分位 自建資料 落在樣本外分位 標記為未驗證環境
交易規則穩定 交易所公告台帳 人工加爬蟲 保證金或槓桿規則變更 重跑成本假設

表裡的門檻是示範值。門檻要由策略邏輯決定,拿歷史資料去優化這幾個數字,等於把過擬合搬到監控層。

鏈上部位的變化也可以掛進這張表,交易所存量、巨鯨轉帳、長期持有者行為都是可量化的結構變數,鏈上籌碼分析入門整理過幾個可以直接用的指標。

第二步,建事件台帳。 把規則變更、上下架、造市商事件、ETF 與監管節點記成一張帶時間戳的表,疊到 OOS 權益曲線上做歸因。哪一段 OOS 的虧損對得上哪一個事件,一眼就看得出來,這比事後解釋「那段行情不好」有用得多。

第三步,分 regime 報績效,不是分視窗。 用波動率、資金費率狀態、深度分位把時間切成幾個桶,看策略在每個桶的績效與樣本數。某個桶只有 30 天樣本,就誠實承認那個環境沒有被驗證過。

第四步,壓力重放與成本壓測。 把幾段真實的斷裂視窗抽出來單獨跑,重點不看報酬,看最壞路徑與距離強平還有多遠。成本端做三組情境:滑價乘三、深度砍半、剔除最好的 5% 成交。結構性風險多半先從成本端顯現。

第五步,下線條件綁變數,不綁回撤。 回撤是落後指標,等它觸發,結構已經換完了。把停用條件寫在前提變數上,跌破門檻就縮規模,不必等虧到停損線。

統計工具可以補一部分。CUSUM、SADF 這類結構斷裂檢定(實作可以參考 López de Prado 的 Advances in Financial Machine Learning)能比人眼更快確認斷裂已經發生,但它們仍然是事後偵測,而且會給假警報。它們的價值是把「我覺得市場變了」變成可以記錄、可以回頭檢驗的訊號。

想看實際的監控腳本與前提清單怎麼寫,付費實驗室裡有持續的工具與流程討論,適合已經在跑實盤的人。

這套補法擋不住什麼

前提清單本身也可能不完整。你寫得出來的前提,是你已經想到的那些;真正殺死策略的,經常是清單上沒有的那一條。

監控門檻同樣會被過擬合。對著歷史資料去調「連續幾天為負才算失效」,等於把過擬合從策略層搬到監控層,跟對 WFA 配置本身做優化是同一個錯誤。門檻要由邏輯決定,寫下來就不動。

還有一類結構變化根本不可觀測。場外的部位、未公開的做市協議、交易所內部的風控參數,這些東西你拿不到資料。

所以結構性風險的最後一道防線不在驗證流程,在倉位。Pardo 那本書把驗證流程寫得很細,但驗證流程能給的是「這套策略還沒被證偽」,給不了「市場不會變」。能撐過一次未知斷裂的規模與槓桿,比能通過所有檢定的策略更值錢。

結論

收攏成五句話:

  1. WFA 驗證的是參數在沒看過的數據上的表現,前提是市場結構沒換人。市場結構性風險攻擊的正是這個前提。
  2. 滾動重優化的適應速度有算術上限:一個步長之後開始學,半個 IS 長度之後才學會。中間跑的是為已消失的市場優化過的系統。
  3. 五種測不出來的風險:regime 斷裂被平均值稀釋、規則變更不在資料欄位裡、流動性折舊與容量、擁擠度衰減被重優化蓋住、尾部樣本不足與相關性歸一。
  4. 補法是把監控從績效層移到前提層:寫下 3 到 5 條可量化的結構前提,配事件台帳、分 regime 績效、壓力重放,下線條件綁變數不綁回撤。
  5. 前提清單會有缺口,監控門檻會被過擬合,總有不可觀測的變化。最後一道防線是倉位規模,不是更精細的回測。

量化回測能處理的是統計上的假訊號。結構性風險屬於另一個問題類別,它要的不是更嚴格的檢定,是對「我的策略靠什麼吃飯」這個問題有明確答案,並且持續盯著那個答案還在不在。

想持續追蹤這類驗證框架、市場微結構與流動性條件的拆解,可以訂閱電子報,每週一篇,不喊單,只拆結構。

個人頭像照片
AD.Trader Lab

AD.Trader Lab 創辦人 | 量化交易員 專注於在充滿雜訊的市場中,尋找數學上的必然性。AD.Trader Lab 實驗室主理人,帶你用數據看透漲跌背後的真相。

每日更新 · 免費

每日選幣清單

我每天在 Telegram 發一份選幣名單——標的、為什麼選它、我自己有沒有進場。

  • 每日選幣名單,附上選它的理由
  • 新文章與研究上架,第一時間通知
  • 討論區:有問題可以直接問我
免費加入 Telegram

340+ 人已經在頻道裡

已經在交易了?用我的連結註冊 OKX,手續費終身退 20% 月成交 20 萬 U,一年約退你 NT$6,000 — 交易越多退越多