論文的核心設計是九個模型的集成:AdaBoost、CNN、DNN、GBDT、LSTM、Random Forest、ResNet、SVR、LightGBM,各自預測月報酬排名再合起來。九個聽起來很厚實。這篇在留出期上問一個直接的問題:九個模型的集成,比一個 LightGBM 好多少?
答案:0.130 對 0.131,沒有比較好。 而在同一批實驗裡,另一件事帶來了真正的差別。
Day 14 立的規矩全部照做:Day 12 的 48 個特徵、每週抽樣、標籤是之後 20 日報酬的橫斷面排名。walk-forward:每年 1 月用該年之前的資料重訓(清掉最後 4 週),預測該年;2020 到 2026 年七次重訓,留出期只碰這一次。
九個模型。論文裡的 CNN、LSTM、ResNet、SVR 這台機器跑不動(前三個沒有 GPU 跑不完,SVR 在百萬列上是天文數字),換成同性質的替代,維持九個:
線性 Ridge、ElasticNet
梯度提升 LightGBM、HistGB(sklearn 的 GBDT)
隨機樹 Random Forest、ExtraTrees
其他 AdaBoost、MLP(兩層 64-32)、kNN(k=200)
全部餵同樣的特徵(每日橫斷面百分位),樹以外的模型缺值補 0.5。集成是九個模型各自在當日做百分位排名後取平均,不加權——論文的做法是把各模型的預測 normalize 之後結合,這裡用最單純的那種。另外多跑一個:LightGBM 加三個大盤狀態欄(廣度、距 200 日線、20 日波動,Day 13 的結論)。基準是 Day 13 那個不用訓練的等權六因子。
跑了 46 分鐘,峰值記憶體 3.3 GB。

平均 IC ICIR IC 勝率
LightGBM + 大盤狀態 0.140 0.93 83%
HistGB 0.133 1.23 90%
LightGBM 0.131 1.16 89%
九模型集成 0.130 1.01 83%
MLP 0.125 1.32 91%
Random Forest 0.122 0.96 82%
Ridge 0.122 1.08 87%
ElasticNet 0.119 0.98 82%
ExtraTrees 0.118 0.78 77%
kNN 0.106 0.91 82%
AdaBoost 0.098 0.60 71%
等權六因子 0.098 0.69 72%
四件事。
**模型確實贏過等權平均。**九個全部高過 0.098 的基準(最弱的 AdaBoost 只高 0.0001,等於沒贏),最好的單一模型 0.133,多了三成五;逐週看,LightGBM 有 72% 的週贏過等權。Day 12 說「疊二十個弱訊號、模型能到 0.1 出頭就是好成績」——實際是 0.13。
**兩個梯度提升排前兩名,線性模型不遠。**HistGB 0.133、LightGBM 0.131,Ridge 0.122——一個線性迴歸只輸最好的樹 0.01。48 個特徵裡的訊息大部分是線性的,樹多抓到的那一點是交互作用。
**MLP 最穩。**IC 0.125 排第五,但 ICIR 1.32 全場第一、91% 的週為正。
**AdaBoost 跟等權一樣。**0.098,ICIR 0.60 全場最低。它在論文的九個裡面,在這裡是拖累集成的那一個。
集成能贏單一模型的前提是成員之間不一樣。算九個模型預測排名的相關:

LightGBM – HistGB 0.98
Ridge – ElasticNet 0.98
RandomForest – ExtraTrees 0.96
九個兩兩平均 0.80
最低(AdaBoost – MLP) 0.61
平均相關 0.80。同一批特徵、同一個標籤,不管演算法叫什麼名字,看到的是同一件事——梯度提升彼此 0.98、線性彼此 0.98、隨機樹彼此 0.96。九個模型實際上是四五個觀點,而且每個觀點裡最強的那一個,已經把該觀點的訊息拿光了。
集成的數學很簡單:平均可以消掉彼此不相關的雜訊,消不掉共同的訊號也消不掉共同的盲點。成員相關 0.80,能消的雜訊不多;再把 AdaBoost(0.098)和 kNN(0.106)拉進來平均,等於用弱模型稀釋強模型。結果就是集成 0.130,比 LightGBM 低 0.001、比 HistGB 低 0.003,逐週對決只贏 LightGBM 46% 的週。
這不是說集成沒用——把弱的踢掉、只留不相關的幾個,或者換成 stacking 讓第二層學權重,都可能翻盤。這篇沒做,因為下一段的東西便宜得多。
Day 13 的結論是六個特徵有三種體質,防守型在跌市活、進攻型在亂市活,等權平均把它們攪在一起。讓模型看得到大盤狀態,它應該能自己學「什麼時候該信誰」。
實測就是加三欄——廣度、距 200 日線、20 日波動——其他完全不動:
平均 IC 2020 2022 2025 多空差 / 20 日
LightGBM 0.131 0.112 0.148 0.102 +1.24%
LightGBM + 狀態 0.140 0.150 0.121 0.128 +1.72%
平均 IC 多 0.009,看起來不多。拆開看:2020 年多 0.038、2025 年多 0.026——這兩年正是 Day 13 說「防守型特徵歸零」的年份,模型學會了在那種狀態下降低它們的權重。代價是 2022 年少 0.027:那年是一路下跌的空頭,防守型全開就是對的,狀態欄反而讓模型猶豫。

換成錢看更清楚。把分數分五組,最高組減最低組,每 20 日不重疊複利:

每 20 日 複利年化(四種起點平均)
等權六因子 +0.16% +0.9%
九模型集成 +1.05% +12.9%
LightGBM +1.24% +15.7%
LightGBM + 狀態 +1.72% +22.4%
等權六因子在留出期的多空差只剩每 20 日 0.16%——Day 13 講過原因,2025 年之後的行情把它的防守型特徵打趴了。模型把它拉回 1.24%,加上大盤狀態拉到 1.72%。三欄大盤狀態的效果,比八個額外的模型加起來大。
從這篇開始,任何新東西——新特徵、新模型、第五幕的 LLM 文字訊號——都用同一把尺量:
資料 48 個特徵 + 3 個大盤狀態,每週抽樣,標籤 = 之後 20 日報酬排名
切法 walk-forward,每年重訓,清 4 週;留出期 2020~2026,只碰一次
指標 每週 IC 的平均、ICIR、勝率;五分位多空差每 20 日不重疊複利
要贏的數字 IC 0.140、ICIR 0.93;跟 LightGBM+狀態 逐週對決勝率過半
成本 Day 1 的 0.471%,換手用分批(每天換 1/20、每批持有 20 天)
三個刻度先記著:等權六因子 0.098 是「不用模型」的水準,LightGBM 0.131 是「模型」的水準,加狀態 0.140 是目前的上限。新東西進來,先過這把尺,再談別的。
**一個 LightGBM 就跟九模型集成打平。**0.131 對 0.130,逐週對決集成只贏 46%。九個模型的預測相關平均 0.80,實際上是四五個觀點;再用 AdaBoost、kNN 這種 0.10 等級的成員去平均,是稀釋不是集成。
**模型贏等權三成五,線性只輸樹一點點。**LightGBM 0.131、Ridge 0.122、等權 0.098;MLP 的 ICIR 1.32 最穩。
**讓模型看到大盤,效果大過加八個模型。**三欄大盤狀態把 IC 從 0.131 拉到 0.140、多空差從每 20 日 1.24% 拉到 1.72%;2020 和 2025 兩個防守型失靈的年份各多 0.03,代價是 2022 年的空頭少 0.03。
尺定好了:walk-forward、留出期只碰一次、IC 0.140 是要贏的數字。之後每一天的新東西都用它量。