論文裡餵給模型的特徵有 133 個,分五類:股價技術指標、成交量指標、基本面指標、風險指標、月營收指標。133 這個數字聽起來很厚實,拆開看是這樣:
技術指標 98 個 乖離率、凹口、RSV、三種均線斜率,加一整排 TA-Lib
成交量指標 16 個
風險指標 11 個 不同天數的夏普值和 beta
月營收指標 5 個 月增、季增、年增、營收驚奇
基本面指標 3 個 本益比、股價淨值比、殖利率
七成是技術指標。這篇要回答的問題是:這 133 個裡面,有多少個真的帶著訊息? 答案會讓後面的模型設計省很多力氣。
論文的特徵是在月頻資料上算的。這次資料庫是日頻,而且多了論文沒有的兩塊——籌碼(Day 10)和財報(Day 9)——所以我沒有照抄 133 個,而是每一類挑代表,一共 48 個,六個家族:
技術 17 個 mom / bias 各 5 個天數、RSV 3 個、RSI、MACD、均線交叉、距 52 週高點
成交量 6 個 量能變化 3 個天數、量比 120 日、Amihud 流動性、量的變異係數
月營收 6 個 單月/三月/十二月 yoy、月增、營收驚奇、加速度(三月 yoy − 十二月 yoy)
估值 3 個 E/P、P/B、殖利率
風險 11 個 波動、夏普、beta 各 3 個天數,60 日最大回落、60 日偏度
籌碼 5 個 外資/投信 5 日與 20 日淨買÷成交量、外資連買天數
每一個都是幾行 pandas。月營收要特別處理「哪天拿得到」——所屬月份的營收,對齊到次月 11 日才進特徵,Day 4 的規矩:
# 所屬月 m 的營收,10 日前申報 → 次月 11 日起才可用
avail = R.copy()
avail.index = (R.index + pd.offsets.MonthBegin(1)) + pd.Timedelta(days=10)
rev_yoy3 = avail.rolling(3).sum() / avail.shift(12).rolling(3).sum() - 1
rev_accel = rev_yoy3 - rev_yoy12 # 三月 yoy 減十二月 yoy:成長在加速還是減速
風險類的 beta 對加權指數算、成交量類用還原後的量,籌碼照 Day 10 的定義。全部從 2012 年起算,每週抽一天,2013 到 2026 年共 665 週(661 週資料完整)。
用資訊係數(IC):每個抽樣日,把當天所有股票的特徵值和它們之後 20 日的報酬做 Spearman 排名相關。一個特徵在 661 週各有一個 IC,看三個數:
平均 IC 強度。0.05 在單一特徵裡已經算好
IC 勝率 661 週裡 IC 為正的比例。50% 是丟銅板
ICIR 平均 ÷ 標準差。穩定度,0.5 以上很難得
這跟 Day 9 的五分位檢驗看的是同一件事,只是把「最高組減最低組」換成整條排序的相關,比較不會被兩端的極值牽著走。

前段班長這樣:
平均 IC 勝率 ICIR
60 日波動 −0.078 33% −0.42 波動低的股票之後比較好
殖利率 +0.064 76% +0.68
距 52 週高點 +0.058 66% +0.35 離新高越近越好
E/P(本益比倒數) +0.047 69% +0.50
P/B −0.045 33% −0.42
量的變異係數 −0.044 23% −0.66 量忽大忽小的不好
營收加速度 +0.039 77% +0.70 最穩的一個
單月營收 yoy +0.031 69% +0.47
三件事。
**估值和低波動是最強的兩類。**殖利率、E/P、P/B 三個都在前七名,方向全對(便宜的好);三個天數的波動全部是 −0.078 左右,低波動的股票之後表現好——這是全球市場都有的現象,台股也不例外。
**營收加速度是最穩的特徵。**強度 0.039 不算最高,但 ICIR 0.70 全場第一,77% 的週為正。「三個月 yoy 減十二個月 yoy」量的是成長在加速還是減速,這個訊號比 yoy 本身乾淨得多——yoy 自己會被基期綁住,加速度把基期消掉了。
動能是負的。20 日報酬的 IC 是 −0.022:台股在 20 日這個尺度是反轉不是動能,最近漲多的之後略差。天數拉到 120 日以上才勉強轉正(120 日 +0.002、240 日 +0.009)。

家族 這次特徵數 平均 |IC| 論文特徵數
估值 3 0.052 3
風險 11 0.032 11
月營收 6 0.019 5
成交量 6 0.013 16
技術 17 0.012 98
籌碼 5 0.004 —
論文裡佔了 98 個的技術指標,家族平均 |IC| 只有 0.012;佔 3 個的估值,0.052。特徵數量的分布和訊息量的分布剛好倒過來。
技術指標為什麼弱?看排行榜就知道:17 個技術特徵裡只有「距 52 週高點」和「20 日動能(反向)」有一點東西,其他 15 個——各種天數的乖離率、RSV、RSI、MACD、均線交叉——IC 全在 ±0.016 以內,勝率 48% 到 59%,跟丟銅板差不多。它們不是沒用,是彼此太像:乖離率和 RSV 和均線交叉量的都是「價格相對於最近一段的位置」,同一件事算十幾遍,訊息量不會變十幾倍。
籌碼是 0.004,跟 Day 10 的結論一致:跟單沒用。它進來當特徵的理由在下一段。
把每週的 IC 沿時間累加,斜率是強度、線直不直是穩定度:

殖利率和營收加速度是兩條最直的線——十三年裡幾乎沒有一段是往下走的。60 日波動(反向)斜率最陡,但有幾段明顯的回撤——2018 年底和 2020 年初都看得到:急跌後的 V 型反彈裡,波動最高的股票漲最多,那幾個月低波動因子是輸的。距 52 週高點介於中間。
20 日動能和外資連買天數躺在零附近,那就是 IC 0.01 等級的特徵長的樣子。
最後看冗餘。把特徵兩兩之間的排名相關算出來,用階層分群:

|ρ| > 0.7 視為同一群 48 → 30 群
|ρ| > 0.5 視為同一群 48 → 19 群
深色方塊集中在技術和風險兩區:相鄰天數的 bias 相關高到 0.85,三個天數的波動彼此 0.80 到 0.93,幾乎是同一個東西;同天數的夏普和 mom 相關 0.93 以上,等於重複算。估值、月營收、籌碼各自獨立成小群,跟技術區的相關最高只有 0.36。
48 個特徵大約是 19 個獨立的訊號。論文的 133 個,用同樣的門檻去併,獨立訊號的個數不會比這多太多——多出來的 81 個技術指標大部分是同一群裡的不同天數。
**選特徵不是選 IC 高的,是選獨立的。**估值、低波動、營收加速度、距新高、籌碼——五個家族各自 IC 不高,但彼此不相關,疊起來才是模型的火力。籌碼 IC 只有 0.004,還是留著,因為它跟其他五類的相關趨近零:一個弱但完全獨立的訊號,對樹模型的價值高過一個強但跟現有特徵重複的。
**技術指標要減量。**98 個砍到 5 個左右——留距新高、一個中期動能、一個短期反轉、一個波動位置——訊息量不會少,模型少掉九十幾個彼此打架的維度。
**IC 的絕對值提醒你期望要多低。**最強的單一特徵 IC 是 0.08,「好」的門檻是 0.05。這種強度的東西疊二十個,模型的橫斷面相關能到 0.1 出頭就是好成績。那是什麼概念、要怎麼把它變成報酬,是 Day 13 的事。
**133 個特徵裡七成是技術指標,而技術指標的訊息量最低。**家族平均 |IC|:估值 0.052、風險 0.032、月營收 0.019、成交量 0.013、技術 0.012、籌碼 0.004。數量的分布和訊息量的分布剛好倒過來。
**最強的是估值和低波動,最穩的是營收加速度。**60 日波動 IC −0.078、殖利率 +0.064;營收加速度 ICIR 0.70、77% 的週為正。20 日動能是反轉(−0.022)。
**48 個特徵只有 19 個獨立訊號。**同天數的夏普和動能相關 0.93 以上、相鄰天數的乖離率 0.85,同一件事算十幾遍不會多十幾倍訊息。
選特徵的標準是獨立,不是強度。弱但獨立的訊號疊起來,才是第三幕要蓋的東西。