← 研究動態
一般讀者2026/05/16 下午12:03

用 VIX 切三段看訂單流預測跳動:一次方法論的誠實失敗

方法論台指期訂單流跳動風險高波動樣本外

讀者互動

登入會員可按讚與收藏。

分享到:LINEFacebookX / Twitter

持續追蹤這項研究

收藏、追蹤與明日提醒只保存必要識別資料,可在會員中心檢視或刪除。

研究資訊不構成個人投資建議;提醒僅代表研究更新,不代表交易訊號。

訂閱研究摘要

研究摘要與新文章,不轉售、不寄廣告,隨時可退訂。

用 VIX 切三段看訂單流預測跳動:一次方法論的誠實失敗

研究上有一句話常被忽略:「失敗的實驗也是結果。」在 K1128 這次嘗試裡,我們本來想證明一個聽起來很合理的故事—— 當市場恐慌(VIX 高)的時候,訂單流的不平衡(OFI)對台指期下一根 K 棒是否「跳動」更有預測力 。結果是:原始的、能拿來實盤交易的設計 沒有過關 ;而退而求其次的描述性分析雖然出現耐人尋味的訊號,卻也讓我們看清,2020 年的疫情把「歷史能教未來什麼」這個假設撕裂得多徹底。

這篇文章把 K1128 的設計、為什麼失敗、以及我們從失敗裡學到什麼,都用一般讀者能跟上的方式說清楚。

故事的開頭:K1125 的尾巴

K1125 用台指期 5 分鐘 K 棒做了一件事:用「 訂單流不平衡 」(Order Flow Imbalance, OFI) 與它的絕對值,加上當下這根 K 棒是不是跳動,來預測 下一根 K 棒是不是會跳動 。所謂「跳動」是用 Lee-Mykland (2008) 的非參數方法偵測的,大致的概念是:把同期的「正常波動」估出來後,看當下這根 K 棒的報酬有沒有超出一個門檻,超出就標為「跳」。

K1125 的結果有個很尷尬的形狀:

  •  2020 年(疫情高波動) :整體 OOS(樣本外)AUC 約 0.580,看起來訂單流真的能預測跳動。
  •  2021 年(市場相對冷靜) :OOS AUC 掉到 0.547,幾乎沒什麼預測力。

K1125 也試過把 VIX 直接乘上 |OFI| 當成連續互動項(M4 模型),結果是 災難級失敗 ——樣本外比對連 baseline 都打不過。

於是 K1128 的問題很自然: 與其用一條連續曲線去描述「VIX 越高、訊號越強」,不如直接把資料切成三段(低 VIX、中 VIX、高 VIX),分開估三個模型 。這樣每段可以有自己的截距、自己的斜率,不用假設效果是線性的。

怎麼切?兩種方式都有問題

主設計:用 IS(樣本內)資料訂三段門檻

正派的做法是這樣:

  1. 用 2017-2019(IS 資料)算出 VIX 的 33% 與 67% 分位數當作切點
  2. 把這兩個切點 搬到  2020-2021(OOS 樣本外)資料上分組
  3. 在每一段裡,用 IS 子樣本去訓練 K1125 的 M3 模型,然後到對應 OOS 子樣本去驗證

這個設計的優點是:完全沒有偷看 OOS 資料,是真的能套到實盤的「明天用」。

 訂出來的切點 :

  • 低 VIX:≤ 12.07
  • 中 VIX:12.07 - 14.99
  • 高 VIX:> 14.99

問題立刻來了。

為什麼主設計會「退化」

我們把這些切點套到 2020-2021 OOS 資料上,發現:

段別IS 樣本數OOS 樣本數OOS 跳動數狀態
低 VIX (≤12.07)10,585 0 0沒辦法估
中 VIX (12.07-14.99)10,4518541跳動數不足
高 VIX (>14.99)10,462 20,060 32唯一能估

讀懂這張表: 疫情把整段 OOS 的 VIX 推高到完全跳出 IS 的歷史分布 。IS 期間(2017-2019)的 VIX 範圍只有 9.14 到 37.32;OOS 期間(2020-2021)的 VIX 範圍是 15.01 到 82.69。 OOS 完全沒有「低 VIX」的觀察,中 VIX 也只剩 854 筆、僅 1 個跳動事件 。

也就是說,當你拿「歷史的尺」去量「危機後的世界」,刻度根本對不上。

只剩高 VIX 段能跑模型。結果如下:

  • M1(只用「當下是不是跳」當特徵)OOS AUC =  0.5148 
  • M3(加上 |OFI| 與 OFI)OOS AUC =  0.5926 
  • M3 vs M1 的比較統計強度 =  +1.31 

讀法:高 VIX 段下 M3 的 AUC 確實比 baseline 高,但「兩模型比較」的統計強度只有 +1.31, 沒到嚴格統計檢驗門檻(要求 ≥ 2.0) 。

而最關鍵的「H1 假說:低/中/高三段 AUC 是否單調遞增」根本 沒辦法測 ——因為低與中段都退化了。

 主設計的最終裁定 :FAIL(沒有達到預先設下的三重門檻)。

次要設計:用 OOS 自己的資料切(只能做描述)

為了至少看一眼「是不是真的高 VIX 段比較有訊號」,我們 退一步 用 OOS 自己的 VIX 分布算切點:

  • 低 VIX:12.3 - 18.84
  • 中 VIX:18.86 - 25.34
  • 高 VIX:25.35 - 82.69

並且 用整個 IS 訓練好的同一個 M1 / M3 模型 ,分別去三段 OOS 子樣本上看表現。注意這個設計 用了 OOS 的資訊 去切段,所以 不能拿來宣稱實盤可用 ——它只是一個描述性的視角。

OOS 段別VIX 範圍樣本數跳動數M1 AUCM3 AUC比較統計強度
低12.3-18.87,074160.5300.562+0.53
中18.9-25.36,894110.4990.496+1.85
 高  25.4-82.7  6,946  6 0.499 0.626  +3.59 

兩個觀察:

  1.  高 VIX 段確實達到嚴格統計檢驗門檻 :M3 vs M1 的比較統計強度 +3.59,超過嚴謹研究所要求的 ≥ 3.0。M3 的 AUC 從 0.499 跳到 0.626,是這次研究裡最像樣的訊號。
  2.  但完全不是單調遞增 :低 0.562 → 中 0.496 → 高 0.626,是個  U 型 而不是樓梯狀。中 VIX 段甚至比低 VIX 段還差。

為什麼會這樣?三個可能的解釋

 解釋一:中段樣本太小 。中 VIX 段只有 11 個跳動事件,AUC 估計的不確定區間很寬,0.496 可能是抽樣噪音。

 解釋二:高 VIX 段樣本也很小 。整個高 VIX 段只觀察到  6 個跳動事件 。AUC = 0.626 與比較統計強度 +3.59 看起來漂亮,但這是建立在 6 個事件上的。如果這 6 個事件的時點稍微挪一下,數字可能完全不同。

 解釋三:訊號真的只在極端市況浮現 。台指期的訂單簿在平常市況下流動性夠厚,大筆 OFI 不會立刻造成跳動;但在 VIX > 25 的恐慌期,流動性被抽走,同樣強度的 OFI 就會把價格直接推穿,這個機制聽起來合理,但 目前的證據強度遠遠還不能下定論 。

真正的教訓不是統計,是研究設計

這次實驗最值得寫下來的, 不是那個 +3.59 的數字 ,而是「 用 IS 切點到 OOS  的設計在危機資料上會退化」這件事。

寫得直白一點:

當 OOS 期間發生了 IS 從沒見過的市況(疫情、戰爭、政策大轉彎),用「歷史分位數」當作未來分組的標準會崩壞。歷史的低 VIX 分位數,在危機後變成「永遠到不了」的水位。

這不是台指期專屬的問題,是 所有用市場狀態切資料的研究 都要面對的陷阱。它意味著:

  • 如果你的研究設計仰賴 IS-based 切點(regime split, percentile threshold, quantile-based grouping), OOS 包含結構性大事件時極可能整段塌陷 。
  • 解法之一: 把 IS 拉長到包含先前的危機 (例如 2008 GFC、2011 美債上限、2015 中國貶值),讓 IS 的 VIX 分布更廣。
  • 解法之二: 用展開窗口(expanding window)動態更新切點 ,而不是釘在 2017-2019 那個樣本。
  • 解法之三: 乾脆放棄離散切段,改用連續函數 (樣條函數、B-spline)去描述 VIX 對訊號強度的調節作用。

這三條路就是 K1129、K1130 的設計方向。

圖:三段 OOS 表現一覽

K1128 VIX 三段樣本外結果

四面板分別是:(1) 三段 AUC 對比;(2) 比較統計強度;(3) 高 VIX 段 M3 模型的係數;(4) 次要設計(OOS 內部切點)下三段的對比。

結論

K1128 沒有給我們一個能上線的策略,但它讓我們看清三件事:

  1.  訂單流對跳動的預測能力,可能真的集中在高波動期間 ——這個機制假說沒有被推翻,反而在描述性分析裡看到一點支持。
  2.  嚴格的「樣本內訂切點 → 樣本外驗證」設計在危機資料上會自爆 ,不是策略沒效,是設計工具不夠用。
  3.  研究誠實比看起來漂亮的數字重要 。如果只 cherry-pick 那個 +3.59 的高 VIX 統計強度,會誤導讀者忽略:那是 6 個事件、用了 OOS 切點、且 H1 沒過。

我們選擇把這次的失敗如實寫下來,而不是把它包裝成「成功的描述性發現」。後續的 K1129、K1130 會帶著這次的教訓往前推:用更長的 IS 期、用展開窗口、用連續函數,看訂單流到底在什麼條件下,真的能領先告訴我們「下一根會跳」。

資料來源

  •  台指期 5 分鐘 K 棒 :TAIFEX TX 期貨,2017-2021,沿用 K1124 的快取,共 73,203 根 K 棒,有效預測樣本 52,412。
  •  VIX :yfinance ^VIX 日收盤,套用 T-1 落後(前一個美國收盤對應隔天台指開盤)。
  •  跳動偵測 :Lee-Mykland (2008) 非參數方法,K=16 滾動雙冪變異數,多重檢定 Gumbel 門檻 α=0.01,全期共 115 個跳動(佔有效樣本 0.21%)。
  •  實驗檔案 :experiments/k1128/k1128.py、experiments/k1128/k1128_results.json、experiments/k1128/README.md。
  •  參考文獻 :
    • Lee, S.S., & Mykland, P.A. (2008). Jumps in Financial Markets: A New Nonparametric Test and Jump Dynamics. Review of Financial Studies 21(6), 2535-2563.
    • Cont, R., Kukanov, A., & Stoikov, S. (2014). The Price Impact of Order Book Events. Journal of Financial Econometrics 12(1), 47-88.
    • Ang, A., & Timmermann, A. (2012). Regime Changes and Financial Markets. Annual Review of Financial Economics 4, 313-337.

本文是 K1128 實驗的一般讀者解說。完整的方法論、數值結果、Codex 程式審查紀錄與後續延伸方向(K1129、K1130、K1131)見實驗目錄的 README 與 results.json。

相關文章

先讀正式關聯,若無則使用標籤與主題相似度補齊

📄
量台指期一天晃多大,照成交節奏取樣比每 5 分鐘準;拿來預測明天就沒有贏
算一天的波動,最常見的做法是每隔 5 分鐘記一次價格,把這些小段的漲跌平方加起來。這把尺用的是時鐘: 不管盤面是熱是冷,每 5 分鐘都記一筆。可是市場不是照時鐘走的。開盤半小時可能成交幾千筆,午盤十分鐘也許只有零星幾筆。 學術界因此提出另一種做法:改照「交易的節奏」取樣,成交密的時候記密一點、冷清的時候記疏一點 (Oomen,2006;Dimitriadis 等人,2022)。 我們用台指期近月日…
→
📄
台指選擇權成交量比期貨多的日子,接下來一個月的台股會比較平靜嗎?
台指衍生品每天的成交量,一部分在選擇權,一部分在期貨。有些日子選擇權特別熱,有些日子大家都在做期貨。直覺上會這樣想:選擇權成交比重變高,代表有人在買保險或在賭方向,接下來的行情可能不一樣。 這篇只問一件事:選擇權成交量相對期貨偏高的那天,台股接下來 20 個交易日的波動,會不會和「光看目前波動」猜的不一樣? 怎麼比 每天收盤時算一個比值:台指選擇權的總成交口數,除以台指期的成交口數。小台和微台先換…
→
📄
台指期一天裡最吵的五分鐘在九點整:這張時刻表十幾年沒變,但它不夠用
每個看過台指期盤中走勢的人都知道:開盤那一段最吵,中午最安靜。 這件事有多準?把 3,558 個日盤交易日、每天切成 60 個五分鐘,逐格平均下來,會得到一張很清楚的時刻表。 最吵的一格不是開盤那一格 台指期 08:45 開盤,那一格是典型五分鐘的 3.53 倍。接著掉下來,08:50 和 08:55 都只剩一倍多。 然後 09:00 一到,衝上 4.77 倍——整天最高。 那是現貨開盤的時間。期…
→