跳至主要內容
台股研究 約 6 分鐘閱讀

月營收動能選股:台股 11 年回測年化 50%,
夏普 1.46(附程式碼)

把月營收動能(近三月均營收 > 近十二月均營收)疊上股價站上 20/60/120 日均線,選動能最強的 10 檔、每月營收公布後再平衡。用 finlab 重跑台股 2015 到 2026 共 11 年:年化 50.0%、日夏普 1.46、最大回撤 -35.6%,風險調整後勝過含息 0050(年化 21.3%、夏普 1.08)。本文也據實呈現一個反直覺結果:加流動性過濾與分散到 20 檔,在樣本內反而沒讓風險調整報酬更好。

月營收選股術 CAGR 50.0% Sharpe 1.46

月營收動能選股三個版本與含息 0050 的年化報酬與最大回撤比較,原始 10 檔集中版年化 50.0%、加流動性過濾 48.6%、分散 20 檔 43.1%,0050 含息 21.3%

「月營收年增率很高的股票,買了會賺嗎?」這是台股最常被問的選股問題之一。我們用 finlab 把這個想法做成可重現的策略並回測台股 2015 年到 2026 年共 11 年:把月營收動能(近三個月平均營收高於近十二個月平均營收)疊在價格動能(站上 20、60、120 日均線、近五日平均上漲)之上,每個月在營收公布後挑動能最強的 10 檔股票。

結論先講:這個策略在這段期間年化報酬 50.0%、日夏普 1.46、最大回撤 -35.6%,風險調整後的報酬確實勝過含息 0050(年化 21.3%、日夏普 1.08、回撤 -34.0%)。但有兩件事舊版文章沒講清楚,本文會據實補上:第一,要拿到這個報酬,你得扛得住一段 -35.6% 的回撤;第二,我們試著替它「加料」(加流動性過濾、分散到 20 檔),樣本內反而沒有更好。

真實回測結果:四個版本一次看

下表是同一段視窗(2015-01 至 2026-06)、同一組成本與停損設定下,三個策略版本與含息 0050 的對照。基準採 etl:adj_close 的 0050 還原股價買進持有,與策略同口徑。

版本 年化報酬率 日夏普 最大回撤 最差單一年 平均持股
原始 10 檔集中版 50.0% 1.46 -35.6% -2.7% 約 10 檔
加流動性過濾 48.6% 1.39 -40.9% -24.1% 約 10 檔
分散 20 檔+部位上限 43.1% 1.43 -37.9% -23.6% 約 20 檔
含息 0050 買進持有 21.3% 1.08 -34.0% 1 檔

三個版本的年化報酬都在 43% 到 50% 之間,遠高於 0050 的 21.3%;日夏普也都在 1.39 到 1.46,高於 0050 的 1.08。換句話說,月營收動能在這 11 年是一個風險調整後確實有效的訊號,不只是賭高報酬而已。

為什麼月營收動能會有效

月營收動能其實同時站在兩個學術上站得住腳的效應上。價格動能來自 Jegadeesh & Titman (1993) 的經典發現:過去相對強勢的股票,未來一段期間傾向繼續相對強勢。而把基本面消息(如營收、盈餘)的動能納入,則呼應 Chan, Jegadeesh & Lakonishok (1996) 對盈餘動能的研究:市場對基本面好消息的反應往往會延遲、逐步擴散,要一段時間才完全反映,留下可被系統化捕捉的漂移。

台股的月營收是全球少見、每月強制揭露的高頻基本面資料,這正是 finlab 資料庫的強項。月營收動能等於把「基本面在改善」與「股價已經啟動」兩個訊號疊在一起,篩掉只有題材沒有業績、或業績好但股價還沒反應的兩種雜訊。

把它「加料」,反而沒有更好

直覺上,加一層流動性過濾、或把持股分散到 20 檔,應該會讓策略更穩。我們把這兩個常見的「改良」做成對照版本,結果卻是反直覺的:

月營收動能三個版本與含息 0050 的對數淨值曲線,三個策略版本長期都明顯高於 0050

  • 加流動性過濾(平均日成交 > 500 張):年化從 50.0% 小降到 48.6%,最大回撤反而從 -35.6% 加深到 -40.9%,最差單一年也從 -2.7% 惡化到 -24.1%。濾掉低量股這件事在這段樣本裡並沒有讓風險更小。
  • 分散到 20 檔+單檔部位上限 8%:年化降到 43.1%,日夏普 1.43 與原版 1.46 幾乎一樣,回撤 -37.9% 也沒有比較淺。分散確實降低了單一個股風險,但代價是犧牲了報酬,風險調整後並沒有占到便宜。

月營收動能三個版本與含息 0050 的回撤曲線,策略最大回撤約 -35% 到 -41%,與 0050 的 -34% 同量級

這個對照的價值,在於提醒一件容易被忽略的事:在同一段歷史資料上反覆加條件去「優化」,很容易挑到剛好對這段期間有利的設定,也就是過度擬合。當一個改良在樣本內沒有明顯好處時,與其硬加,不如保留簡單版本、把判斷留給樣本外。這也是為什麼本文把三個版本的數字都攤開,而不是只挑最漂亮的那一個。

逐年報酬:多數年份領先,但波動更大

月營收動能分散 20 檔策略與含息 0050 的逐年報酬比較,策略多數年份領先但年度波動較大

逐年看,策略在多數年份領先 0050,但年度波動明顯更大:好的年份大幅領先,遇到逆風的年份也會吃到較深的回檔。這是高動能策略的本質,不是可以靠調參數消除的特性。

方法揭露與風險

漂亮的數字需要交代清楚是怎麼算出來的,這樣你才知道哪些風險被涵蓋、哪些沒有:

  • 交易成本與稅:回測已內含台股手續費與證交稅。月再平衡的年換手不低,成本對淨值的侵蝕是真實存在的,實單還會有滑價。
  • 集中度與容量:原始版本只持有約 10 檔,且偏好短期動能最強的中小型股,單一個股的暴漲暴跌對組合影響大,可投入的資金規模也有上限。在意單一個股風險的人,分散 20 檔版本是合理的取捨。
  • 最大回撤 -35.6%:這是這個策略真實的代價。年化 50% 的另一面,是你必須能在帳上浮虧三成五時不停損出場。扛不住回撤的人,再高的年化都拿不到。
  • 前視偏誤的處理:以每月第 11 天再平衡對齊營收公布時點,已盡量避免用到未公布資料;但仍假設你能在當天以收盤價成交。
  • 樣本內結果:本文是單一視窗(2015–2026)的回測,未做樣本外切割(in_sample_only)。過去績效不保證未來,務必把上面的「加料反而沒更好」當成過度擬合的警訊看待。

常見問題

月營收選股真的有效嗎?

以這 11 年的台股回測來看,月營收動能是有效的:疊上價格動能後年化 50.0%、日夏普 1.46,風險調整後勝過含息 0050。但「有效」不等於「穩賺」,它伴隨 -35.6% 的最大回撤,需要能承受波動的資金與紀律。

月營收年增率(YoY)能用來選股嗎?

可以當條件,但單看單月年增率容易被低基期與一次性收入誤導。本文改用近三月均營收與近十二月均營收的相對位置來判斷動能,過濾掉單月暴衝,訊號更穩定。

為什麼要等到每月第 11 天再平衡?

台股月營收在每月 10 日前公布,把進場日設在第 11 天,是為了確保策略只用「已經公布」的營收資料,避免前視偏誤。提早進場會偷看到未來,回測數字會虛高。

月營收動能和月營收漂移(PEAD)一樣嗎?

不一樣。月營收動能著重在「營收趨勢向上且股價已啟動」的順勢買進;月營收漂移則是研究營收公布後股價持續漂移的事件效應。兩者可以互補,完整比較見下方延伸閱讀。

延伸閱讀

投資警語:本文僅供教學與研究參考,不構成投資建議。過去績效不代表未來表現,投資有風險,請依個人風險承受度審慎評估。

VIP 區域接著提供完整可重現的月營收動能策略:核心 finlab 程式碼、互動式回測報告,以及可下載的 strategy.py 與 data.csv(原始 10 檔版年化 50.0%、日夏普 1.46、最大回撤 -35.6%,並逐行說明 11 日再平衡與三月/十二月均營收的設計)。

VIP 區域包含策略細節

登入後可看策略優化、完整程式碼與互動式回測報告

FinLab AI

想建立自己的策略?

用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案

免費開始

更多價值與基本面研究

查看全部