ML4T 導讀 · Part II · Ch 6–10

模型救不了問錯的問題

這是全書方法論最密的五章。它們不教你更強的模型,而是教你怎麼把一個交易點子,變成定義良好、可歸因、可計數的學習任務——差一根 bar 的錯位,就能無中生有或抹掉一條真 edge。

Ch 6 研究框架 Ch 7 學習任務 Ch 8 金融特徵 Ch 9 模型式特徵 Ch 10 文字特徵
0

一張圖看懂這一部分

三種特徵來源,過同一道 triage 閘門

Part II 的五章有明確分工:Ch 6 固定環境(在什麼條件下評估)、Ch 7 定義任務與診斷(標籤怎麼定、怎麼判斷有沒有訊號、試了幾次怎麼算),然後 Ch 8、9、10 是三個特徵供應商——分別供給價格衍生特徵、模型 fit 出來的特徵、文字特徵。

關鍵在於:三個供應商的產出,全部要回到 Ch 7 的同一道 triage 閘門。這個結構很重要——它意味著你不能因為「這是文字特徵比較新潮」就給它比較寬鬆的標準。所有候選特徵走同一條檢驗線、記進同一本搜尋帳。

Ch 6 · 固定評估環境(整個 Part 都在這個框裡進行) universe · 決策時程 · score→部位的 mapping · 限制條件 · 成本模型類別 → 寫進版本化的 setup 檔 三個特徵供應商 Ch 8 金融特徵 動能 · 反轉 · 波動 流動性 · 微結構 Ch 9 模型式特徵 GARCH · Kalman · HMM fit 出來的東西當特徵 Ch 10 文字特徵 情緒 · 敘事新穎度 結構化事件抽取 Ch 7 · triage 閘門 ① 正確性 時點、遮罩、對齊 ② 關聯性 逐 fold 的 IC ③ 形狀 分位是否單調 ④ 可行性 成本吃不吃得掉 PROCEED 進 Part III 建模 REVISE STOP 搜尋帳 每個試過的 變體都要記 含「看過結果 才調的參數」 =顯著門檻 的分母

三個供應商、一道閘門、一本帳。REVISE 在效率市場下是預期中最常見、也最有資訊量的結果。

A

Ch 6 · 策略研究框架

先固定環境,再開始搜尋

核心思想:把點子變成可信證據的方法,不是找到更強的訊號,而是先固定評估環境。Ch 6 的產物是一份版本化的 setup:universe 與可交易規則、決策時程、score 怎麼變成部位、限制條件、成本模型類別。之後所有迭代都在這個框裡發生。

最實用的一條是 walk-forward 的可用性檢驗,書把它壓縮成一句話:在決策時刻 t,這個樣本的特徵算得出來、而且標籤已經解決了嗎?h 日的 forward return,標籤要到 t+h 才知道,所以訓練集必須排除最近 h 個時間戳——這就是 purging。

第 1 輪 訓練窗 purge h 個交易日 測試窗 第 2 輪 訓練窗(往前滾) purge 測試窗 時間 ✗ 用曆日算 purge 21 曆日只蓋到 15 個交易日——剩 6 天的標籤還在洩漏 ✓ 用交易日算 21 個交易日 ≈ 30–32 個曆日,兩者差很多

purge 那一段是刻意丟掉的資料——不丟,測試窗就會看到訓練期還沒解決的標籤。

Ch 06 · 什麼時候該 bump setup 版本決策規則
# 分清楚「改機制」與「調參數」,改善才可歸因
是新版本(bump 版號 + 重建 baseline):
  排序選股 → 門檻篩選      # mapping 換了
  long-only → long/short
  加上停損規則
  改變調倉頻率
  成本模型多加一個成分

留在同版本(只是參數):
  門檻 1.8 → 2.0
  取前 10% → 20%
  成本 10 → 15 bps

retrain 時機
  新資料累積到訓練窗的 1–5%,或樣本外表現系統性劣化
  # 10 年窗月或季 retrain 即可;20 日窗要日 retrain
註解為什麼重要:這條規則存在的理由是「評估環境無聲漂移」——universe、快照時點、成本處理邊改邊比,最後你手上一堆數字彼此不可比,卻還在拿它們排名。分界線很簡單:改了「機制」就是換了題目,必須重建 baseline 才知道進步了沒有。

→ 接到台股(以下為外推,非書上內容):setup 版本化這件事,跟你既有的假說編號制度(H-018 那種)其實是同一個東西的兩半——假說編號記錄「你想驗什麼」,setup 版本記錄「你在什麼條件下驗的」。書的貢獻是把後者也變成一等公民。實務上值得補的是:把 universe 適格條件(成交金額門檻、排除處置股與全額交割股)、調倉時點(台股 T+1 交割)、成本模型(手續費、證交稅、當沖稅減半)寫成一份設定檔並帶版號。特別注意 purge:台股一年約 240–250 個交易日,加上農曆年連假,交易日與曆日的落差比美股更大,用曆日算 purge 會漏更多。

B

Ch 7 · 定義學習任務

標籤怎麼定、訊號怎麼判、搜尋怎麼記帳

核心思想:模型再好也救不了定義壞掉的學習問題。這章有三個支柱:標籤必須與執行一致、前處理必須只用訓練段擬合、評估必須以 fold 為單位並記帳搜尋次數。

先講標籤。最容易忽略的是執行慣例:訊號在收盤算出,報酬是量到隔天收盤(close-to-close)還是隔天開盤進、h 天後開盤出(next-open-to-open)?書給的數字是——日頻股票這兩者每筆可以差 50–100 bps。選哪個都行,但標籤計算與回測 PnL 必須用同一個。

再講三重界限標籤(triple-barrier):不是死等 h 天到期看報酬,而是設上界(獲利了結)、下界(停損)、垂直界(時間到),先碰到哪個算哪個。這讓標籤貼近實際的交易行為。

上界 +σ×倍數 下界 −σ×倍數 垂直界 t + h 進場 t 先碰上界 → 標 +1 先碰下界 → 標 −1 時間到 → 標 0 同一根 bar 同時穿越兩界怎麼算? 必須事先指定並記錄規則(保守作法:算虧損,或整筆剔除)——這是標籤配方的一部分

界限寬度用歷史的最大有利/不利波幅(MFE/MAE)校準,才不會是隨手挑的數字。

Ch 07 · 診斷要逐 fold,不要 pooled決策規則
# 這一條是本章最容易救回一條被誤殺的訊號的規則
不要 把所有資料混在一起算一個 IC
要   逐 fold 算,然後回報四個數字:
     中位數 · IQR · 最差的那個 fold · 符號一致性

# 書上的實例:同一個 ETF 21 日動能訊號
     pooled IC   = 0.001   # 看起來完全沒訊號
     fold 層 IC  = 0.064   # ICIR 0.79,75% 的 fold 為正
     # 差別在哪?pooled 把不同 regime 的正負互相抵消了

信賴區間 用 effective N,不用名目 N
     # SPY h=21、約十年:名目 248,436 → effective ≈ 11,830
     # 用名目算,區間會窄約 4.6 倍——假的精確
註解為什麼重要:重疊的標籤讓樣本不獨立——h 日 forward return 每天取樣一次,相鄰樣本共用了 h−1 天的資訊。書還給了另一個數字:同一份 ETF 動能 IC,HAC 校正後發現 naive 標準誤低估了 2.54 倍,有效樣本數從 4,989 掉到 773(少了 85%)。不做這個校正,你會對一個其實不顯著的結果很有信心。
Ch 07 · 搜尋記帳與多重檢驗決策規則
報 p 值 一律附上「你搜尋過幾個」
     # 5 個 horizon × 3 個門檻 × 10 個特徵 = 150 個組合
     # 在 5% 顯著水準下,期望就有 7–8 個偽陽性

校正方法怎麼選
     少量晉級、單一偽陽性代價高  Holm–Bonferroni(控 FWER)
     大規模篩選、容忍少數偽發現  BH-FDR(控 FDR)

新因子的發現門檻  建議 t > 3.0
     # Harvey, Liu & Zhu (2016)

最常見的記帳失敗
     看了結果之後才調的參數,也要計入搜尋集
     # 這是人最容易放過自己的地方
註解為什麼重要:書示範了一個誠實的 null 結果長什麼樣:13 個 ETF 特徵在 5% 水準下,BH-FDR 與 Holm–Bonferroni 兩種校正全部沒過——連最強的那個都被拒。這不是失敗的研究,這是正常的研究。晉級要靠跨 fold 的穩定性,不是靠峰值表現。

→ 接到台股(以下為外推,非書上內容):這章跟你的 H-018 經驗直接對應。當時試了九個組合(3 個事件變體 × N=5/10/20)才下結論——書會說:那九個組合就是搜尋集,p 值要據此校正,而且「N 選 5 還是 20」這種看過結果才決定的事,同樣要計入。fold 層診斷那條也值得回頭套用:如果當時是用 pooled 統計判定失敗,值得再用逐 fold 的方式重看一次,說不定訊號只在特定 regime 存在(書的 ETF 動能就是這樣被 pooled 統計抹平的)。至於執行慣例,台股的對應問題是收盤價 vs 隔日開盤——台股有漲跌幅限制與盤後定價交易,收盤價打不到的情況跟美股不同,但「標籤與回測用同一慣例」這條規則完全適用。

C

Ch 8 · 金融特徵工程

特徵是「經濟主張的可計算表達」

核心思想:每個特徵都要說得出驅動機制、扮演的角色、以及失敗模式。說不出機制的,書稱為「資料型態」而不是特徵假設——它可以用,但要套更嚴的多重檢驗、額外的 holdout、以及部署後的衰退監控。

這章最有價值的一組區分是 signal vs state:signal 預測方向,state 決定「訊號什麼時候有效、該下多重」。很多特徵單獨看關聯很弱,但當 state 用卻很有價值——因為它們是透過交互作用發揮的。書用一個實測把這件事講得很清楚:把動能訊號按波動率高低分成三組,IC 從低波動組的 +0.071 一路掉到高波動組的 −0.034。

同一個動能訊號,按「當時的市場波動率」分三組看 IC 0 +0.071 低波動三分位 t = 2.8 p = 0.006 顯著 +0.025 中波動三分位 不顯著 −0.034 高波動三分位 不顯著 跨三分位單調衰減,低高之間擺動 10.5 個百分點 → 這就是 gating 規則的實證依據:波動在頂端三分位時,不要吃動能訊號

波動率本身對報酬的預測力很弱,但當成「什麼時候該相信動能」的開關就很有價值——這就是 state 變數的用法。

Ch 08 · 波動估計量與交互作用預算決策規則
# 有 OHLC 就別只用收盤價算波動——同樣精度可以少用好幾倍觀測
效率 收盤價        1×    # 只有收盤價時
     Parkinson     ~5×   # 用高低價
     Garman-Klass  ~7×   # 用完整 OHLC,跳空小的時候
     Yang-Zhang    ~8–14× # 隔夜跳空顯著時,只有這個對

交互作用要編預算
     5 個 signal × 3 個 state × 3 個模板 = 45 個試驗
     # 搜尋空間是幾何成長的,全部要記帳並做 FDR 控制
     起手 一個 signal + 一個 state,一次只變一個模板

建模前先去重
     fold 內算秩相關 → 層級聚類(切點常在 |ρ| 0.7–0.8)
     每群選一個代表:穩定性優先於單一指標的小幅增益
註解為什麼重要:書的特徵選擇管線實測:57 個候選特徵,先用相關性過濾(|ρ|>0.9)剔掉 14 個,再用 IC 排名留下 18 個,最終保留 10 個——縮減了 82.5%。而在原始 5% 水準下顯著的 34 個特徵裡,只有 4 個通過 BH-FDR 校正。指標蔓生是真實存在的問題:很多具名技術指標只是同一個主張的不同參數化,認不出來就會把同一個假設測十遍,還當成十個發現。

→ 接到台股(以下為外推,非書上內容):「指標蔓生」這個病在台股技術分析圈特別嚴重——KD、RSI、威廉指標、乖離率有很大一部分在描述同一件事。書給的解法(fold 內秩相關聚類、每群選一個代表)可以直接搬過來當作技術指標的整理工具。signal vs state 的區分也很適合台股籌碼分析:分點買賣超比較像 signal,而大盤波動度、外資期貨未平倉、融資餘額變化這類比較像 state——單獨拿來預測方向可能很弱,但當作「什麼時候該相信籌碼訊號」的開關可能有價值。這是把書的框架套過來的推論方向,不是書上的結論;要驗證仍須走 Ch 7 的整套 triage。

D

Ch 9 · 模型式特徵萃取

把「fit 一個模型、取它的輸出」變成紀律

核心思想:fit 出來的東西也可以當特徵——條件波動、殘差、regime 機率、不確定性——但每個 fitted 物件的 point-in-time 義務比直接聚合更緊。三個要求:在 walk-forward 的訓練窗內估計、輸出用 filtered 而不是 smoothed、參數與訓練窗要版本化。

其中 filtered vs smoothed 是最關鍵、也最容易犯錯的一條。同一個 HMM 可以給你兩種狀態機率:filtered 是「只用到 t 為止的資訊推斷 t 的狀態」,smoothed 是「用全部資料回頭推斷 t 的狀態」。後者更準、圖更漂亮——因為它偷看了未來。只有 filtered 能當特徵。

現在=決策時刻 t 過去 未來(此刻還不存在) ✓ Filtered 只吃左邊 P(狀態 | 資訊到 t 為止) → 可以當特徵 ✗ Smoothed 左右都吃 P(狀態 | 全部資料) → 更準、圖更漂亮,但它偷看了未來,只能做回顧分析 這一段就是洩漏的來源 同一個 HMM/Kalman/SV 模型,兩種輸出

同樣的道理也適用 wavelet:標準的離線分解不因果,只能當研究診斷,不能直接上線。

Ch 09 · fitted 特徵的三個檢查與一次五收決策規則
# 每個 fitted 特徵上線前,三個問題都要答「是」
問一 估計窗是否只在訓練折內?
問二 輸出是 filtered 不是 smoothed?
問三 參數與訓練窗有版本記錄?

# 一次 GARCH(1,1) fit 可以同時收下五個特徵
產出 條件波動 cond_vol
     衝擊影響 α / 波動持續性 β
     衰減半衰期 = ln(0.5) / ln(α+β)   # SPY 實測 α+β≈0.97 → 約 23 個交易日
     長期變異數                        # 僅在 α+β < 1 時才是合法特徵

預測波動 優先用 HAR 而非 GARCH
     # SPY 樣本外 RMSE 0.061 vs 0.111——大約是一半

regime 用連續機率餵單一模型,不做硬切換
     # 硬切換恰好在轉換點最不穩,而那正是推斷最不確定的地方
註解為什麼重要:這章的價值在於「一次 fit、多個特徵」的效率——但代價是每個特徵都繼承了那個模型的 point-in-time 義務。有個容易翻船的細節:HMM 的狀態沒有固定標籤,這一個估計窗的「狀態 0」可能是下一個窗的「狀態 1」,跨窗不重新對齊(例如按變異數大小排序)特徵就完全不可比。

→ 接到台股(以下為外推,非書上內容):filtered vs smoothed 這條規則,在台股實務上最容易踩到的地方是「事後看得很準的 regime 標記」——例如回頭把某段標成「多頭」「盤整」,再拿這個標記去做條件化分析。那就是 smoothed,圖會很漂亮但不可交易。書的建議(用 filtered 機率當連續輸入,別做硬切換)可以直接套用到大盤多空判讀上。另外 GARCH 的半衰期概念(衝擊多久衰減一半)套到台股要重新估——書上的 23 個交易日是 SPY 的實測值,不是台股的數字,台指波動的持續性需要自己 fit 才知道。

E

Ch 10 · 文字特徵工程

決定文字訊號能不能活過回測的,不是模型

核心思想:決定文字訊號能否活過回測的不是 NLP 模型,是時間戳紀律。何時真正拿到文件?embedding 模型的訓練截止是否早於回測期?歷史序列有沒有被修訂污染?書講得很直接:表示法品質只是問題的一半。

這裡有個容易被忽略的洩漏管道:embedding 模型本身就是一個 fitted 物件。如果你用 2024 年訓練的模型去編碼 2020 年的新聞再回測 2020 年,那個模型已經「讀過」2020 年之後發生的事。同理,batch LDA 主題模型在完整語料上估計也是同罪——要用 online 版本。

一份文件有三個時間戳,它們不是同一件事 ① 發布時間 文件上印的日期 ② 供應商時間戳 資料商入庫的時間 ③ 你實際拿到的時間 只有這一個定義「何時可以行動」 回測要用它當索引 另一條容易漏掉的洩漏管道:模型本身也有訓練截止日 用 2024 年訓練的 embedding 模型去編碼 2020 年的新聞、再回測 2020 年——那個模型已經讀過 2020 年之後的世界 同理:batch LDA 主題模型在完整語料上估計也是同罪,要改用 online 版本 還要驗一件事:換了文字分布,模型會不會崩? FinBERT 在原領域測 87.0%,換到另一組市場標註標題只剩 49.4%——掉了 37.6 個百分點,接近隨機猜

同樣的標籤名稱、不同的文字分布,就是一個要重新驗證的新任務——domain adaptation 救不了語料與標籤定義的分歧。

Ch 10 · 動模型之前先簽的七項合約決策規則
# 這七項答不全,任何 notebook 的輸出都不可信
定義 ① 時間戳          # 發布/抓取/供應商,哪一個定義可行動
實測 ② 發布延遲        # 按資料源各自量,別用假設值
處理 ③ 實體對齊        # 映射到代號,處理歧義與改名
處理 ④ 去重            # 同一天同一檔的重複發稿
決定 ⑤ 取樣單位        # 句/段/全文,以及怎麼聚合到「個股-日」
注意 ⑥ universe 是內生的 # 新聞覆蓋多的公司系統性不同
驗證 ⑦ 模型訓練截止 早於 回測期

# 評估文字訊號要比一般特徵多三軸
多 horizon 衰減  1 日強、5 日沒了 = 抓的是注意力不是基本面
覆蓋條件化      只在高覆蓋股有效 = 賣的是注意力動態
時間戳平移      延遲 1 小時就崩 = 賣的是速度不是資訊
註解為什麼重要:書用同一批 10-Q 文件做了一組對照,把「horizon 選錯會怎樣」示範得很清楚:敘事變化(相鄰季度文件的 embedding 距離)在 5 日 horizon 的 IC 是 −0.151(95% 信賴區間 [−0.226, −0.074],p<0.001)——顯著的短期負向訊號;但拉到 20 日就衰減到 +0.059 且不顯著。同一份文件、換個 horizon,顯著訊號就會被當成沒訊號,或者被反向使用。

→ 接到台股(以下為外推,非書上內容):台股做中文文字訊號,這章的時間戳紀律完全適用,但模型選型那一段要整組換——書上的 FinBERT、ModernBERT 都是英文模型,中文財經文本需要另外找 checkpoint,而且「跨分布必重驗」那個教訓(87% → 49.4%)在中文更值得警惕,因為可用的中文財經標註語料更少。覆蓋偏差在台股可能更嚴重:新聞覆蓋高度集中在權值股與熱門題材,用新聞覆蓋不足就剔除的做法,會讓因子嚴重偏向大型股。書提的三個解法(用產業基準補值、標記缺失、或把覆蓋本身建成訊號)值得優先試第三個——「這檔突然開始被報導」本身可能就是台股的訊號,但這是推論,需要實證。

F

這一部分的決策速查

研究設計與特徵的閾值與規則

情境怎麼做出處
判斷樣本可否進訓練集問「決策時刻 t,特徵算得出來且標籤已解決嗎」Ch 6
設 purge 間隔h 日標籤就 purge 最近 h 個交易日(21 交易日 ≈ 30–32 曆日)Ch 6
設 embargo經驗法則取樣本長度的 1%;只在訓練資料落在驗證期之後時才需要Ch 6
要不要 bump 版本改機制(mapping、多空、停損、頻率)要;調參數(門檻、比例、bps)不用Ch 6
retrain 時機新資料達訓練窗 1–5%,或樣本外系統性劣化Ch 6
篩選可行的 cadence用每邊 5–15 bps 的參考成本線,看多少比例的波動超過來回成本Ch 6
選標籤執行慣例close-to-close 或 next-open-to-open 都行,但標籤與回測 PnL 要同一個(每筆差 50–100 bps)Ch 7
設離散標籤門檻優先用波動縮放(τ = k·σ,σ 只用過去);多資產用橫斷面百分位Ch 7
算 IC 信賴區間用 effective N 不用名目 N;重疊標籤要 HAC 校正Ch 7
回報診斷逐 fold 算,報中位數、IQR、最差 fold、符號一致性——不用 pooledCh 7
報 p 值必附搜尋集大小;少量晉級用 Holm–Bonferroni、大規模篩選用 BH-FDRCh 7
新因子發現門檻建議 t > 3.0(Harvey, Liu & Zhu 2016)Ch 7
有 OHLC 算波動Parkinson ~5×、Garman-Klass ~7×、Yang-Zhang ~8–14× 效率;跳空顯著只有 YZ 對Ch 8
特徵去重fold 內秩相關聚類,切點常在 |ρ| 0.7–0.8;穩定性優先於小幅增益Ch 8
微結構特徵先測執行延遲——當期有效、落後一期就沒有,是這族最常見的死法Ch 8
fitted 特徵三問估計窗在訓練折內?輸出是 filtered?參數與訓練窗有版本?Ch 9
用 GARCHα+β 讀持續性,半衰期 = ln(0.5)/ln(α+β);α+β ≥ 1 時長期變異數不是合法特徵Ch 9
預測日波動優先 HAR 而非 GARCH(SPY 實測 RMSE 約一半)Ch 9
用 regime 特徵只用 filtered 機率;HMM 從 2 態起步,跨窗要重新對齊狀態標籤Ch 9
panel 化順序逐資產時序特徵 → 決策日對齊 → 才做橫斷面轉換;反序就是洩漏Ch 9
文字訊號索引用「實際可得時間戳」不用文件日期;修訂檔預設拒收Ch 10
fine-tune 參數lr ≈ 2e-5、3–5 epochs、batch 16–32;1,000–10,000 標註是甜蜜點Ch 10
長文件處理chunk 256–512 token、重疊 64;chunk 只在單一文件內做Ch 10

注意事項 · 這一部分最容易踩的坑

📅用曆日算 purge:21 個交易日的標籤,用 21 個曆日去 purge 只蓋到 15 個交易日,剩下 6 天的標籤還在洩漏。這個錯不會有任何症狀,只會讓回測好看一點。
🧮用全部資料算前處理統計量:z-score 的均值標準差、winsorize 的分位數、fractional differencing 的 d——只要是「從資料估出來的」,就必須只用訓練折擬合、每次 refit 重算。書的判準很好記:存疑時一律當成 fitted。
📊拿 pooled 統計下結論:書的實例是 pooled IC = 0.001(看起來毫無訊號),但逐 fold 算是 0.064、75% 的 fold 為正。pooled 會把不同 regime 的正負互相抵消。反過來也成立——pooled 好看也可能是少數 fold 撐起來的。
🔍看了結果才調參數卻不記帳:這是搜尋記帳最常見的失敗,也是人最容易放過自己的地方。書的規則沒有例外:只要是看過績效之後做的選擇,就算一次試驗。修 bug 不算新假設,但看了結果改規格就算。
🕰️忘記模型本身有訓練截止日:embedding 模型、主題模型都是 fitted 物件。用今天的模型編碼三年前的文字再回測三年前——那個模型已經讀過那三年發生的事。這條在文字特徵上特別容易漏掉。
📐本頁的來源邊界:內容取自 skills/ml4t/chapters/ch06–ch10 蒸餾檔。來源 EPUB 抽取時數學公式與圖表無法讀取,本頁數字均取自章節檔中以文字明確寫出的部分。書中實測數字為作者測試床結果,屬研究等級、非實盤依據;口徑是美股,台股段落已逐段標示為外推。