這五章最珍貴的地方,是作者用同一套九個案例的測試床,誠實記錄了「複雜度到底換到多少」——而答案比多數人想的保守得多。這是一份反行銷的模型開發指南。
每爬一層階梯,都要證明自己值得
Part III 的結構是一道基線階梯:每個更複雜的模型都必須在同一條管線、同一套 walk-forward 下,打敗前一層的基線並回報增益。贏不了,就是白加複雜度。
難得的是,作者沒有只講原則——他用同一套九個案例(ETF、美股、NASDAQ-100 分鐘、加密貨幣、選擇權、外匯、期貨、美股公司特徵…)把每一層都跑過一遍,成績誠實地列出來。結論相當清醒:線性模型能排序報酬,是例外不是通則(九個案例只有三個的信賴區間排除零);GBM 把顯著案例從 3 個擴到 5 個,但從未在線性完全無訊號的地方憑空造出訊號;序列深度學習八戰只有一勝,還有兩場明顯落敗。
這張圖真正想說的不是「別用複雜模型」,而是「複雜度要拿證據換」——而書把證據誠實地攤開了。
先把基線做對,順便把不確定性做對
核心思想:用正則化線性模型建立一條可解釋的預測基線。為什麼是正則化而不是 OLS?因為交易研究的判準是樣本外預測準確度,不是無偏參數回收。總預測誤差 = 偏差² + 變異 + 雜訊;在特徵多、樣本少、訊噪比極低的金融資料上(截面報酬的樣本內 R² 通常只有 1–3%),引入一點偏差換取大幅降低變異非常划算。
選哪一種正則化?書給了一個好記的框架:penalty 就是你對訊號結構下的注。賭訊號分散在很多相關特徵上,押 Ridge;賭訊號集中在少數特徵上,押 LASSO;不確定,押 Elastic Net 讓資料說話。金融資料的特徵通常高度相關,所以 Ridge 是預設。
但這章真正的警告在調參上。書的實測:同一批資料、同一批切分,單層 CV 報 IC +0.028,換成巢狀 CV 變成 −0.032——正負號直接翻轉。訊號越弱,選擇偏誤越致命。
外層只評估、內層才調參——這不是嚴謹的裝飾,是結論成立的前提。
特徵高度相關(金融常態)→ 預設 Ridge
# LASSO 會在相關特徵群裡隨機挑一個、其餘歸零
# 實測:輕微稀疏就砍掉約 1/4 特徵,IC 反而掉到 OLS 之下
Ridge 的 α 搜尋範圍
要涵蓋「近乎 OLS」到「強正則化」兩個 regime
# ETF 案例 n≈39 萬時掃 10⁻¹ 到 10⁷;ICIR 峰值落在 α≈10⁶
標準化與 winsorize
μ、σ、分位數 只能來自訓練 fold,每次 refit 重算
# 用全樣本算不會報錯、不會警告,只會讓成績虛胖
AUC 怎麼讀
0.55–0.60 金融樣本外已經有意義
> 0.65 先查洩漏,再慶祝
→ 接到台股(以下為外推,非書上內容):「贏不了 Ridge 就是白加複雜度」這條紀律,對台股研究的意義可能比對美股更大——台股可用歷史短、標的數少,訊噪比只會更差,選擇偏誤只會更致命。書上單層 vs 巢狀 CV 翻轉正負號的例子,在樣本更小的台股上發生機率更高。實務建議:任何要上的模型,都先跑一條同管線的 Ridge 基線並把數字記下來。至於 ml.duckdb 裡已有的模型,值得回頭補這條基線對照——這是推論方向,實際差多少要跑了才知道。
GBM 是可辯護的預設,但不是萬靈丹
核心思想:GBM 是表格型金融預測的「可辯護預設」。它與隨機森林的差別在機制上:隨機森林平均獨立的樹,只能降低變異、無法修正系統性偏誤(如果所有樹都低估極端報酬,平均起來還是低估);boosting 則是每棵新樹去擬合當前模型的殘差,可以逐步消除偏誤。
但選哪一家?書的結論很務實:調參之後,三家的準確度差距(約 0.002)比「超參數調得好不好」的差距還小。所以真正的判準是營運面——要 CPU 快選 LightGBM、要高基數類別特徵安全選 CatBoost、要生態完整選 XGBoost。
一個反直覺的細節:資料量小的時候不要開 LightGBM 的 GPU——它的 CUDA 路徑只支援 FP64,在消費級顯卡上反而比 CPU 慢好幾倍。
# 五件套,先照做再談微調
起手 LightGBM + 淺樹 + MAE loss
+ 學習率固定 0.01–0.05 + early stopping
+ 單調約束(把經濟方向寫進模型)
# 為什麼 loss 選 MAE:它拒絕去追厚尾的極端報酬
# 9 個主要標籤裡 MAE 贏了 8 個
# 美股月頻案例:MAE +0.080 vs Huber/MSE +0.030–0.035
調參預算 trial 數 50–100 封頂
重點放正則化參數,不是樹結構參數
# 500 個 trial 找出來的 +0.02 IC,在真 holdout 上會蒸發
# 這是回測到實盤衰退最常見的來源
只交易頭尾分位 → 改用排序目標 lambdarank
# 別讓 MSE 把模型容量花在永遠不交易的中段
→ 接到台股(以下為外推,非書上內容):兩個地方特別適合台股。第一,CatBoost 的類別特徵處理——台股研究常有高基數的類別欄位(券商分點代號、產業分類、主力名單 ID),書提到的編碼洩漏正是這種欄位最容易出事的地方,CatBoost 的 ordered encoding 是從機制上解決。第二,lambdarank 排序目標——如果你的策略只做多空各前幾名(台股選股常見做法),用排序目標比用 MSE 合理,因為你根本不在乎中間那幾百檔排得準不準。單調約束也值得用:把「融券餘額增加不該預測報酬上升」這類經濟方向寫進模型,這是免費的正則化。以上是套用方向,實際增益要自己驗。
架構只有在目標定義正確之後才重要
核心思想:時序深度學習的答案不是「用 Transformer」,而是歸納偏置的競賽——而且架構只有在預測目標定義正確之後才重要。書把「表述」(formulation)擺在架構前面,這是本章最有價值的一課。
有一個很有說服力的診斷實驗值得記住:把輸入序列隨機洗牌之後,D-Linear 的誤差從 0.345 暴增到 1.406(表示它真的在用時間結構),而 Transformer 只從 0.379 變到 0.391——幾乎沒差,代表它根本沒在學時間模式。這就是 LTSF-Linear 那篇批判的核心:單層線性模型在九個長期預測基準上,打敗當時的 Transformer 系列達 20–50%。
選錯表述,再好的架構也救不回來;選對表述,最簡單的線性結構常常就夠了。
# 樣本量門檻(日頻、中等訊噪比的校準值)
< 5,000 → Ridge / LightGBM,別想了
5,000–20,000 → LightGBM 性價比最高
> 20,000 → 可以測試 DL
# 注意用詞:大樣本觸發「比較」,不觸發「替換」
# 基線階梯不可跳,全部贏過才有資格談序列 DL
階梯 seasonal naive → D-Linear / N-Linear
→ ARIMA / VAR → LightGBM 帶 lag 特徵
時序基礎模型(Chronos、TimesFM 那類)
報酬預測 zero-shot 不可用
# 實測 IC 為負,比隨機還糟
波動率 / VaR + fine-tune 才可信
# 另外要查:評估資料有沒有落在它的預訓練語料裡
不確定性 deep ensemble 約 5 個成員是甜蜜點
但原始區間覆蓋率低一個數量級,必須疊 conformal 校準
→ 接到台股(以下為外推,非書上內容):那個樣本量門檻對台股是硬約束——台股上市櫃約 1,700 檔、一年約 240 個交易日,如果做的是「單一標的的時序預測」,樣本數很容易落在 5,000 以下,也就是書上直接說「別想了」的區間。要達到可以考慮 DL 的量級,通常得走截面 panel(多檔股票 × 多個時點)而不是單檔時序——而截面排名任務書上建議的正是「直接預測標籤」表述。順帶一提,TradingView 上那類「ML 指標」(如 Lorentzian Classification)本質上是單標的、小樣本的分類器,用書的框架看,它們該比的對手是 LightGBM 而不是 Transformer;這是我的判讀,書沒有評論這些指標。
解釋共變異的因子 ≠ 有定價的因子
核心思想:面對 400 多個「因子動物園」,潛在因子模型改變了選擇的對象——不再逐一檢定具名特徵,而是直接從報酬(可以再加上定價限制或特徵)推出低維結構。
但這章最大的坑,也是最重要的一句話:解釋共變異的因子,不等於有定價的因子。五種方法各自在最佳化不同的目標,混淆它們就會用錯工具。書給了一個很好的例子:某個信用風險因子可能只解釋 2% 的變異,卻有 0.8 的 Sharpe——標準 PCA 會把它排到第 15 名之後,而加了定價懲罰的 RP-PCA 能把它拉到第 3。
先問「我要回答什麼問題」,再選方法——把 PCA 因子直接拿來當交易訊號,是這章點名的第一個反模式。
# 特徵向量在近乎簡併的特徵值下極不穩定——換一天資料就翻號
診斷 算相鄰窗的 cosine similarity
跌破 0.8 就不可用
# 第三主成分之後很常見
修正 用 Procrustes 旋轉對齊相鄰窗的 loading
# 特徵值比 > 2:1(分離良好)時可以免
收縮 N/T 偏大時用特徵值收縮,別靠目測 scree plot
# 為什麼非做不可:翻號的 loading 會產生「幻影換手」
# 你的組合根本沒有變,帳面上卻在瘋狂調倉——付的是真實的交易成本
選模看什麼 潛在因子模型一律看下游預測指標
永遠不看重建損失
# 重建損失是體檢報告,不是成績單
→ 接到台股(以下為外推,非書上內容):BBP 門檻對台股是很實際的約束:如果你用 500 檔台股、一年日資料(約 240 個交易日)做 PCA,N/T 已經大於 2,1+√(N/T) 的門檻很高——除了市場因子與少數產業因子之外,其餘成分基本上落在雜訊區。這解釋了為什麼台股的「統計套利配對」在成分數拉多之後很容易失效。書的建議(高維面板改走特徵映射路線)值得參考。另外「等權組合讓微型股綁架結論」這件事在台股更嚴重——台股小型股的流動性斷崖比美股陡,等權回測看起來漂亮但根本做不到那個量。這是套用書的邏輯到台股的推論,具體門檻要自己算。
它不產生 alpha,它決定你該多相信這個訊號
核心思想:再精巧的估計器也救不了識別失敗。流程永遠是固定的五步:畫 DAG → 決定調整集 → 推導 estimand → 用 ML 估計 → 跑 refutation 測試。估計器的精巧程度排在最後。書把目標講得很清楚:不是要從觀察資料「證明」因果,而是要分辨「經得起檢驗的主張」與「一戳就垮的主張」。
最重要的定位是這句:因果係數不是交易訊號。預測排名(Ch 11–14)產生 alpha,因果分析決定你該多相信它、該配多少部位。書自己的實測很誠實:ETF 動能的因果分析做得很完整,但到了嚴格 holdout,三個策略全部轉負——因為基礎訊號本身死了。因果分析減緩了樣本外的退化,但它不製造 alpha。
兩道閘是互相獨立的體檢項目,一個問「存在嗎」,一個問「跟假的比得出差別嗎」。
# DML 用在時序資料上,三件事不能省
紀律一 cross-fitting 一律用 expanding / rolling window
# 絕不隨機切折——重疊報酬的自相關會直接洩漏
紀律二 HAC 帶寬要對齊 forward return 的重疊期
紀律三 nuisance 模型至少換兩類看穩定性
# 跨合理模型大幅變動 = 結論不穩
# 事件研究:這兩步要在相信任何發現之前先做
先跑 control-as-target 檢查 # 控制序列自己有沒有被事件污染
再跑 placebo dates # 挑沒事發生的日子跑同一套管線
才看 事件本身
block-permutation 的 block 長度
要夠長 # 案例:7 天 block 得 p=0.03(過),縮到 1 天就膨脹成假顯著
→ 接到台股(以下為外推,非書上內容):這章對台股籌碼研究有直接對應。「分點買超導致股價上漲」是一個因果主張,而它最明顯的混淆因子就是——分點買超與股價上漲可能同時被第三個因素驅動(題材發酵、大盤走強、融資追買)。書的框架會要求你先畫 DAG、決定控制什麼,再用 DML 正交化,最後跑 placebo(例如隨機挑一批分點,看看是不是也「顯著」)。這正是 H-018 那類驗證可以再強化的方向:當時做的是樣本外檢定(回答「能不能預測」),因果框架回答的是另一個問題(「是不是它造成的」)。兩者互補,不互相取代。至於事件研究的 placebo dates 檢查,套到台股的除權息、法說會、月營收公布這類事件研究上,是幾乎零成本就能加上的防呆。
模型開發的閾值與規則
| 情境 | 怎麼做 | 出處 |
|---|---|---|
| 選正則化方式 | 特徵高度相關(金融常態)預設 Ridge;LASSO 會在相關群裡隨機丟棄 | Ch 11 |
| 設 α 搜尋範圍 | 要涵蓋近乎 OLS 到強正則兩個 regime | Ch 11 |
| 調參協定 | 巢狀 walk-forward——外層只評估、內層才調參 | Ch 11 |
| 讀 AUC | 0.55–0.60 在金融已有意義;> 0.65 先查洩漏 | Ch 11 |
| 用 conformal 區間 | 覆蓋率要按 fold、波動 regime、資產群分層監控,不能只看邊際數字 | Ch 11 |
| GBM 起手式 | LightGBM + 淺樹 + MAE loss + 學習率 0.01–0.05 + early stopping + 單調約束 | Ch 12 |
| 選 GBM 函式庫 | CPU 快 → LightGBM;類別安全 → CatBoost;生態 → XGBoost(準確度差距可忽略) | Ch 12 |
| 調參預算 | trial 50–100 封頂,重點放正則化參數;更多 trial 是在買驗證集過擬合 | Ch 12 |
| 小資料集用 GPU | 不要開 LightGBM GPU——FP64-only 路徑在消費卡上反而更慢 | Ch 12 |
| 只交易頭尾分位 | 改用 lambdarank 排序目標,別讓 MSE 把容量花在中段 | Ch 12 |
| 看特徵重要度 | 用 SHAP,不用函式庫內建(換個種子排名就大變) | Ch 12 |
| 選預測表述 | 截面排名一律用「直接預測標籤」,不要預測路徑再複利 | Ch 13 |
| 該不該上 DL | < 5,000 樣本別想;5,000–20,000 用 LightGBM;> 20,000 才觸發比較(不是替換) | Ch 13 |
| 基線階梯 | seasonal naive → D-Linear → ARIMA → LightGBM 帶 lag,全贏才談序列 DL | Ch 13 |
| 時序基礎模型 | 報酬預測 zero-shot 不可用;波動率/VaR 加 fine-tune 才可信 | Ch 13 |
| 估不確定性 | deep ensemble 約 5 個成員;原始區間必須疊 conformal 校準 | Ch 13 |
| 選潛在因子方法 | 先問目標:風險分解→PCA、找溢酬→RP-PCA、條件 beta→IPCA/CAE、直接定價→SDF | Ch 14 |
| 判斷因子救不救得回 | 母體特徵值低於 1+√(N/T) 就是雜訊,任何方法都無效 | Ch 14 |
| 滾動 PCA 上生產 | 相鄰窗 cosine < 0.8 不可用;特徵值比 < 2:1 要上 Procrustes 對齊 | Ch 14 |
| 潛在模型選模 | 看下游預測指標,永遠不看重建損失 | Ch 14 |
| 做因果分析 | 順序固定:DAG → 調整集 → estimand → 估計 → refutation | Ch 15 |
| DML 三紀律 | 時序 cross-fitting、HAC 帶寬對齊重疊期、nuisance 換兩類模型 | Ch 15 |
| 做事件研究 | 先跑污染檢查與 placebo dates,才看事件本身 | Ch 15 |
| 讀因果證據 | 雙閘制:HAC 顯著 × 反駁測試通過,單過一道都不算 | Ch 15 |
skills/ml4t/chapters/ch11–ch15 蒸餾檔。來源 EPUB 抽取時數學公式與圖表無法讀取,本頁數字均取自章節檔中以文字明確寫出的部分。書中九案例成績為作者測試床的實測結果,屬研究等級、非實盤依據;口徑是美股,台股段落已逐段標示為外推。