月營收選股:動能策略的完整介紹與回測
January 12, 2026
你以為股價是因為月營收表現好才上漲嗎?
其實,現實可能完全相反——主力炒股根本不需要月營收數據!
真正厲害的投資人,不會等到數據公布才下手,而是抓住「月營收前後的股價動能」這個關鍵訊號,提前找到飆股機會。有時候,這些動能強的股票甚至飆得更兇!
本文將帶領您深入了解一段程式碼背後的邏輯,並分析使用的數據來源與選股策略,幫助您理解如何利用 Python 和量化技術來挖掘投資機會。
程式碼簡介
這段程式碼來自量化交易的回測工具庫 finlab.backtest,它旨在根據動能和月營收的特性來選出潛在的飆股,並進行回測模擬,驗證策略的有效性。
核心程式碼:
顯示程式碼
from finlab.backtest import sim
close = data.get('price:收盤價')
pct_change = (close / close.shift() - 1).rolling(5).mean()
當月營收 = data.get('monthly_revenue:當月營收')
pos = pct_change[(close > close.average(60)) & (close > close.average(20)) & (close > close.average(120)) & (當月營收.average(3) > 當月營收.average(12))].is_largest(10)
r = sim(pos, resample='M', resample_offset='11D', upload=False, stop_loss=0.1)
r.display()
月營收選股的數據來源與處理
1. 收盤價 (Closing Price)
- 使用的數據:
price:收盤價 - 處理方式:
- 計算每日收盤價的五日平均漲跌幅:
pct_change = (close / close.shift() - 1).rolling(5).mean() - 這樣的計算能平滑日間波動,突顯短期動能。
- 計算每日收盤價的五日平均漲跌幅:
2. 當月營收 (Monthly Revenue)
- 使用的數據:
monthly_revenue:當月營收 - 處理方式:
- 比較三個月平均營收與十二個月平均營收:
當月營收.average(3) > 當月營收.average(12) - 這樣的條件確保選出的公司近期營收增長良好,具有基本面支持。
- 比較三個月平均營收與十二個月平均營收:
條件篩選邏輯
1. 技術面條件
- 近 60 日、20 日及 120 日均線以上的股價:
close > close.average(60) & close > close.average(20) & close > close.average(120)- 這些條件用於確認股價處於多頭趨勢。
2. 基本面條件
- 當月營收三個月平均值高於十二個月平均值:
當月營收.average(3) > 當月營收.average(12)- 表示公司短期營收增長快於長期趨勢,顯示業績改善。
3. 選出前 10 強股票
- 利用
.is_largest(10)選出動能最強的 10 檔股票。
策略回測 (Backtesting)
回測設定
- 使用
sim函數進行模擬:r = sim(pos, resample='M', resample_offset='11D', upload=False, stop_loss=0.1)resample='M':以每月為單位進行再平衡。resample_offset='11D':回測的基準日期設為每月的第 11 天,對應月營收數據發布後的市場反應。stop_loss=0.1:設定 10% 的停損機制,控制風險。
結果展示
最後以 r.display() 顯示回測結果,圖表呈現策略的績效數據與曲線。
策略優勢與限制
1. 策略的主要優勢
- 多層次篩選:結合技術面與基本面條件,增強策略的穩健性。
- 動能增強:動能指標幫助捕捉短期市場熱點。
- 基本面支持:營收增長確保選股具有實質業績基礎,降低投資風險。
2. 策略的潛在限制
- 數據延遲風險:月營收數據發布有一定滯後性,可能影響市場反應的及時性。
- 適用性限制:此策略在極端市場條件(如金融危機)中可能效果不佳。
- 流動性問題:策略可能不適合流動性較差的股票。