同樣叫動能,兩把尺選出來的股票只有一半是同一批
讀者互動
登入會員可按讚與收藏。
持續追蹤這項研究
收藏、追蹤與明日提醒只保存必要識別資料,可在會員中心檢視或刪除。
研究資訊不構成個人投資建議;提醒僅代表研究更新,不代表交易訊號。
「這檔有動能」,聽到這句話,你八成不會追問是什麼意思。這個詞聽起來夠明確:漲得比別人好嘛。
但真要把它寫成程式,馬上會冒出兩種寫法。
第一種是回頭看報酬:過去一年賺了多少,賺最多的排前面。第二種是抬頭看價格位置:現在的價格離過去一年的最高點還差幾個百分點,差最少的排前面。
兩種寫法在直覺上是同一件事,都是「強勢股」。這篇要問的就是:它們選出來的,真的是同一批股票嗎?
兩把尺,一個換倉日
樣本是三十檔美國大型股,日收盤價從二〇一三年初凍存到二〇二六年八月底。每個月的最後一個交易日排一次序,做多排名前十、放空排名後十,等權重,只持有接下來那一個月,下個月底再重排。
兩把尺的定義:
- 尺一(過去一年扣掉最近一個月) :從十二個月前算到兩個月前的累積報酬。扣掉最近那個月是這類研究的慣例,避開短期的來回震盪。
- 尺二(離一年高點多遠) :排序當天的收盤價,除以過去兩百五十二個交易日的最高收盤價。這個比值愈接近一,代表股價愈貼著自己的高點。
要留意的是,兩把尺看的期間本來就不完全一樣:尺一刻意跳過最近一個月,尺二則一路用到排序當天。這個差別待會會變成故事的一部分。
至於避開偷看未來,做法是把訊號和報酬錯開:訊號用到的最後一天就是排序那天,被衡量的報酬從隔天才開始算。
樣本區間內一共有 139 個可以完整排序並持有一個月的月份,第一個是二〇一五年一月底,最後一個是二〇二六年七月底。
重疊沒有想像中高
先講最直接的那個問題。每個月底,兩把尺各自選出十檔做多,這兩份名單有幾檔是同一檔?
平均是 5.1511 檔,中位數 5.0 檔。也就是說,兩份「強勢股」名單裡,平均有 4.8489 檔是彼此不重疊的。
散布更寬:最少的月份只有 1.0 檔重疊,最多的月份到 9.0 檔。而且有 37.4101% 的月份,重疊在四檔以下,三個多月就有一個月,兩把尺講的其實是兩批不同的股票。

兩把尺每月價差的相關係數是 0.4661。這個數字本身也在說同一件事:有關聯,但遠遠不是同一個東西。如果兩把尺真的在量同一件事,這個數字應該貼近一。
績效:一把接近雜訊,一把連雜訊都不如
接著看這兩把尺各自賺不賺錢。這裡的「賺」指的是做多前十、放空後十的價差,不含交易成本。
| 排序方式 | 每月平均價差 | t 值 | 年化 | 勝率 | 最差的一個月 |
|---|---|---|---|---|---|
| 尺一:過去一年扣一個月 | 0.286% | 0.8327 | 3.4861% | 52.518% | -15.0921% |
| 尺二:離一年高點多遠 | 0.0018% | 0.0049 | 0.0221% | 52.518% | -21.6117% |
| 三十檔等權買著不動 | 1.2184% | 3.4541 | 15.641% | 69.0647% | -11.541% |
兩把尺的差距是 -0.2841 個百分點(尺二減尺一)。尺一勉強有個正號但 t 值連一都不到;尺二的每月平均是 0.0018%,四捨五入之後基本上是零。
真正刺眼的是第三列。同樣這三十檔,什麼都不排、等權買著不動,每月平均 1.2184%、t 值 3.4541、年化 15.641%。
兩把尺辛苦排了十一年半的序,成果都被「什麼都不做」甩在後面。而且兩把尺的最差月份都比買著不動更難看。

先確認尺本身量得到東西
一個每月平均 0.286% 的策略,聽起來像是有一點東西。但它到底比亂猜好多少?
所以要有對照組。做法是把每個月的訊號在三十檔之間隨機打亂,籃子大小、換倉日、被衡量的報酬全部不變,只有排序是假的,然後重複 2000 次。
打亂之後,每月平均價差的標準差是 0.2417%。以這個分布當尺標:
- 尺一落在第 88.15 個百分位。
- 尺二落在第 50.35 個百分位。
尺二正好坐在亂猜的正中央,這不是「效果小」,這是「量不到效果」。尺一稍微好一點,但第八十八個百分位在單尾百分之五的門檻之外,一樣進不了「顯著」那一格。
這一步不能省。一個平均值是不是雜訊,光看它自己看不出來;只有跟一個明知沒有訊號的版本並排,才看得出來。
尺二的正號是前半段留下的
把 139 個月從中間切一刀,兩把尺的表現不太一樣。
尺一前半段每月 0.2913%、後半段 0.2807%,幾乎沒動。尺二則從前半段的 0.4506%(t 值 1.1967)掉到後半段的 -0.4405%(t 值 -0.6895),差了 -0.8912 個百分點,符號直接翻過去。
兩段的 t 值都沒有跨過任何一條顯著性的線,所以更誠實的說法是: 沒有證據說尺二在前半段有效,也沒有證據說它在後半段失效 ——它從頭到尾都在雜訊裡,只是雜訊在前後兩段剛好給了不同的符號。全樣本那個 0.0018% 就是這麼來的。
這裡值得跟同月的另一篇(K1846,九檔美國類股基金的月頻排序)擺在一起看。那一篇問的是同一批資產上「追強」和「撿弱」兩個相反方向誰對,結論是全樣本兩者都在雜訊裡、前後兩段符號相反。
這一篇換的是另一個問題: 方向不變,只換定義 。答案是連定義本身都會讓你握到不同的股票,而兩個定義做出來的績效,一樣都跨不過對照組那道門。
帶走這三件事
第一,聽到一個策略名詞,先問它的程式怎麼寫。 「動能」在這篇裡有兩種寫法,平均只有一半的持股重疊,最極端的月份只重疊一檔。名詞相同不代表你買到的東西相同。
第二,任何策略都要有一條「什麼都不做」的對照線。 這三十檔等權買著不動年化 15.641%,兩把尺都輸給它。少了這一列,0.286% 看起來還像一回事。
第三,把訊號打亂重跑一次。 打亂之後的標準差是 0.2417%,尺二落在第 50.35 個百分位。如果不做這一步,0.0018% 和 0.286% 都會被講成「小幅正報酬」,而其中一個根本連正負都是隨機的。
這篇不能推到哪裡去
樣本是三十檔一路活到今天的美國大型股,這本身就帶著存活偏誤:中途下市或被併掉的公司不在裡面,而它們往往就是動能排序的後段班。所以放空腿的報酬很可能被高估。
十一年半、139 個月,對月頻策略來說也不算長。價差沒有扣交易成本,每月全額換倉的實際成本會再往下咬。
還有一點:這篇只測了兩種寫法。「動能」還有很多其他定義,不同的回看長度、不同的扣除窗、風險調整後的版本,這篇沒有回答它們彼此重疊多少。能說的只有:至少這兩種常見寫法,握到的不是同一批股票。
資料與復現 :三十檔美國大型股日收盤(yfinance 還原價),二〇一三年一月二日至二〇二六年八月三十一日,凍存於 experiments/k1852/data/us_largecap_daily.csv。連網取數(k1852_fetch.py)與離線分析(k1852_two_momentum_rulers.py)拆成兩支腳本,分析端不連網,重跑不會因為資料源的回溯修訂而變動。打亂訊號的對照組固定亂數種子。完整結果見 experiments/k1852/k1852_results.json,復現規格見同目錄 reproduce_spec.json。
懶人包圖組



