十一個類股輪動了十二年:動能排序賺不到錢,上個月的輸家倒是有點東西
讀者互動
登入會員可按讚與收藏。
持續追蹤這項研究
收藏、追蹤與明日提醒只保存必要識別資料,可在會員中心檢視或刪除。
研究資訊不構成個人投資建議;提醒僅代表研究更新,不代表交易訊號。
排名這件事很容易讓人上癮。九檔類股基金攤在螢幕上,漲最多的和跌最多的一眼就看得出來,接下來的動作幾乎是本能:買強的,或者買便宜的。
問題是這兩個本能剛好相反。所以我們讓它們在同一組資料上打一場。
規則
九檔美國類股基金:原物料、能源、金融、工業、科技、必需消費、公用事業、醫療、非必需消費。每個月最後一個交易日排一次序,隔月換倉,樣本 139 個月,從二〇一五年二月到二〇二六年八月,也就是 11.5833 年。
排序的尺有兩把:
第一把是「過去一年扣掉最近一個月」的累積報酬,學術上叫 12-2,扣掉最近那個月是為了避開短期噪音。買排前三、賣排後三。
第二把是「上個月報酬」。買排後三、賣排前三,也就是撿上個月最慘的。
訊號用到的最後一天是排序當天,部位持有的是接下來那整個月,程式裡用 signal.shift(1) 把兩件事錯開,兩個策略共用同一組月報酬、同一組成分股。原始日線凍結在 experiments/k1846/data/ 裡,不帶 --fetch 重跑不會連網,數字不會因為資料源修訂而漂掉。
全樣本:兩個都沒站住
| 每月平均 | t 值 | 年化 | 上漲月份比例 | 最糟的一個月 | |
|---|---|---|---|---|---|
| 12-2 排序(買強賣弱) | 0.1852% | 0.5536 | 2.245% | 51.7986% | -11.2109% |
| 上月排序(買弱賣強) | -0.145% | -0.4662 | -1.7266% | 52.518% | -15.5514% |
| 九檔等權買著不動 | 1.059% | 2.9997 | 13.4744% | 69.0647% | -14.5484% |
兩把尺離常用的 1.96 門檻分別還差 1.4064 和 2.4262。年化報酬跟「什麼都不做、九檔平均持有」比,一個少 11.2294 個百分點,一個少 15.201 個百分點。
這時候該問一句:0.1852% 這個數字,比隨機猜好嗎?
我們把排序整個打亂,每個月底把九個名次隨機重排,其他一模一樣,跑 200 次。這批亂數的每月平均值落在 -0.0246%,標準差 0.2844%。真正的 12-2 排序排在這批亂數的第 78.0 百分位,上月排序排在第 29.0 百分位。兩個都在雜訊帶裡面。這一步不是裝飾:沒有它,0.1852% 看起來仍然像個正數。
切成兩段之後,事情才有意思
把 139 個月從二〇二〇年一月切開:
| 二〇一五~二〇一九(59 個月) | 二〇二〇~二〇二六(80 個月) | |
|---|---|---|
| 12-2 排序 | -0.3066%(未達統計顯著(統計值 -0.7208)) | 0.5479%(未達統計顯著(統計值 1.1239)) |
| 上月排序 | 0.8464%(統計檢定顯著(強度中上,統計值 2.3615)) | -0.8762%(統計檢定接近顯著(強度偏弱,統計值 -1.9201)) |
上月排序在前半段每月 0.8464%,t 值 2.3615,而且那個 0.8464% 差不多是打亂對照組標準差的三倍,那段期間它是有東西的。後半段掉到 -0.8762%,前後差了 -1.7226 個百分點。12-2 排序也翻了一次符號,方向相反,前後差 0.8545 個百分點。
全樣本那個「接近零」,是這兩個相反世界互相抵消的結果。如果只看第一張表,會得到「類股排序沒用」的結論;如果只看二〇一五到二〇一九,會得到「撿輸家很賺」的結論。兩個都不完整。

把同樣兩條線改看滾動十二個月的平均,穿越零軸的次數更直接:

沒有哪一段長到可以拿來當「這條規則現在有效」的依據。
為什麼會翻
我們不知道,這篇也沒有做到那一步。可以說的是時間點對得上:二〇二〇年之後,類股之間的分散度被幾波很集中的行情拉開,科技那一檔的權重效應變強,「撿上個月最慘的」等於系統性地站在贏家的對面。但這是敘事,不是證據,要驗它得再做一次實驗。
需要注意的是這裡沒有扣交易成本。兩個策略每個月都全額換手六個部位,實務上要再折一層;扣掉之後只會更難看,不會反過來。
跟先前那幾篇的關係
我們在商品市場做過同一組對照(〈商品 ETF 的方向對了一半,可惜統計撐不住〉),那次的切法是按波動高低分組,結論同樣是方向看得出來、統計撐不住。這次換成美國類股、換成時間軸切分,得到的是更強的一個版本:不只撐不住,而是符號會翻。〈防禦股悄悄贏了〉看的是單月的類股分化,這篇看的是把單月分化變成一條規則之後還剩下什麼,答案是分化本身是真的,把它換成排名規則之後就不是了。
一句話
排名很好看,但九檔類股攤開來,前後兩段各自說了相反的話,而全樣本的平均把兩句話都吃掉了。真要從這篇拿走一件事:任何策略的長期平均值,先切一刀看看兩半是不是同一個東西,再決定要不要相信它。
資料與復現 :experiments/k1846/。日線收盤凍結在 data/sector_prices_daily.csv,python k1846_sector_momentum_reversal.py 不連網重算,--fetch 才會重抓。打亂對照組的種子是 20260905。
懶人包圖組



