PEG 策略實戰:用本益成長比挖掘被低估的成長股
投資警語:本文僅供教學參考,不構成投資建議。過去績效不代表未來表現,投資有風險。
低本益比就是便宜?小心掉入價值陷阱
很多投資人看到低本益比(PE)就興奮,以為撿到便宜。但你有沒有想過:為什麼市場給它這麼低的估值?
答案可能是:這家公司正在衰退。
一家 PE 只有 5 倍的公司,如果營收正在萎縮、獲利逐年下滑,那 5 倍的 PE 其實一點都不便宜——市場只是在反映它黯淡的未來。
相反的,一家 PE 25 倍的公司,如果每年獲利成長 50%,那它可能才是真正被低估的。
這就是為什麼彼得·林區(Peter Lynch)在《彼得林區選股戰略》中提出了 PEG(本益成長比) 這個指標:
PEG = PE / 盈餘成長率
當 PEG < 1,代表股價相對於成長性是便宜的;PEG > 2 則可能過貴。
白話解釋: PEG 就像看一間餐廳的性價比 — 不只看價格(PE),還要看份量(成長率)。舉例來說,A 公司 PE 20 倍、盈餘成長率 40%,PEG = 20/40 = 0.5,表示你用半價買到它的成長力道,非常划算。B 公司 PE 30 倍、成長率 10%,PEG = 30/10 = 3,表示股價已經遠超過它的成長速度。
| PEG 範圍 | 解讀 | 說明 |
|---|---|---|
| < 0.5 | 非常便宜 | 股價遠低於成長潛力 |
| 0.5 - 1.0 | 合理偏低 | 值得關注 |
| 1.0 - 2.0 | 合理 | 股價反映成長性 |
| > 2.0 | 偏貴 | 股價超過成長速度 |
今天我們要用數據驗證:**PEG 策略在台股真的有效嗎?**透過 4 輪迭代優化,我們找到了一個年化報酬 25.6%、最大回撤僅 37% 的策略。
PEG 策略在台股的實際表現
在開始優化之前,先看看最基礎的 PEG 策略表現如何。
請用 FinLab 建立一個基礎的 PEG 策略:選出 PEG 最小的 10 檔股票,每月換股。 條件:PEG 介於 0~2、營業利益正成長、有基本流動性。
顯示程式碼
from finlab import data
from finlab.backtest import sim
# 取得資料
pe = data.get("price_earning_ratio:本益比")
營業利益成長率 = data.get("fundamental_features:營業利益成長率")
當月營收 = data.get("monthly_revenue:當月營收")
volume = data.get("price:成交股數")
# 計算 PEG
peg = pe / 營業利益成長率
# 建立條件
cond = (
(peg > 0) & (peg < 2) & # PEG 合理範圍
(營業利益成長率 > 0) & # 確保正成長
(當月營收.average(3) / 當月營收.average(12) > 1.1) & # 營收動能
((volume / 1000).average(20) > 300) # 流動性
)
# 選出 PEG 最小的 10 檔
position = (peg * cond)
position = position[position > 0].is_smallest(10)
position = position.reindex(當月營收.index_str_to_date().index, method="ffill")
# 回測
report = sim(position, resample="M", stop_loss=0.15, upload=False)
stats = report.get_stats()
print(f"年化報酬率: {stats['cagr']:.1%}")
print(f"夏普比率: {stats['monthly_sharpe']:.2f}")
print(f"最大回撤: {abs(stats['max_drawdown']):.1%}")執行結果:
| 指標 | 數值 |
|---|---|
| 年化報酬率 | 9.7% |
| 夏普比率 | 0.40 |
| 最大回撤 | 50.5% |
基礎版策略確實能打敗定存,但有兩個明顯問題:
- 報酬率普通:9.7% 只比大盤好一點
- 回撤太大:50% 的最大回撤,一般人很難承受
這就是我們需要優化的地方。
用 AI 迭代優化:從 9.7% 到 25.6%
接下來是這篇文章的核心:4 輪 AI 輔助優化的完整過程。
我設定了三個優化目標:
| 指標 | 目標 | 原因 |
|---|---|---|
| 年化報酬率 | > 15% | 顯著優於大盤 |
| 夏普比率 | > 0.6 | 風險調整後報酬合理 |
| 最大回撤 | < 40% | 一般投資人可承受 |
迭代 1:探索參數空間
請測試不同的參數組合:更嚴格的 PEG 門檻、加入 RSI 動能、不同持股數量、不同換股頻率。 找出哪些因子對績效影響最大。
顯示程式碼
# 測試週換股 + RSI 動能濾網
rsi = data.indicator("RSI", timeperiod=14)
roe = data.get("fundamental_features:ROE稅後")
cond_rsi = (
(peg > 0) & (peg < 1.5) &
(營業利益成長率 > 5) &
(當月營收.average(3) / 當月營收.average(12) > 1.1) &
((volume / 1000).average(20) > 500) &
(roe > 5) &
(pe > 5) & (pe < 30) &
(rsi > 50) # RSI 動能向上
)
position = (peg * cond_rsi)
position = position[position > 0].is_smallest(10)
position = position.reindex(當月營收.index_str_to_date().index, method="ffill")
# 週換股
report = sim(position, resample="W", stop_loss=0.10, upload=False)測試結果發現一個重要現象:
| 配置 | 年化 | 夏普 | MDD |
|---|---|---|---|
| 月換股(基礎) | 9.2% | 0.38 | 49.6% |
| 週換股 + RSI | 28.8% | 0.83 | 54.8% |
發現:換股頻率提高後,年化報酬從 9.2% 暴增到 28.8%!但最大回撤也達到 54.8%,仍超過目標。
迭代 2:嘗試降低回撤
試著用各種風控手段降低回撤:更嚴格的停損、移動停損、止盈。
顯示程式碼
# 測試不同停損/移停配置
configs = [
{"stop_loss": 0.10, "trail_stop": None}, # 基準
{"stop_loss": 0.08, "trail_stop": None}, # 嚴格停損
{"stop_loss": 0.10, "trail_stop": 0.05}, # 移停
{"stop_loss": 0.10, "take_profit": 0.20}, # 止盈
]
for cfg in configs:
report = sim(position, resample="W", **cfg, upload=False)
# ... 記錄結果結果令人意外:
| 風控方式 | 年化 | MDD | 結論 |
|---|---|---|---|
| 10% 停損 | 28.8% | 54.8% | 基準 |
| 8% 停損 | 27.9% | 58.3% | MDD 反而上升 |
| 5% 移停 | 14.1% | 63.2% | 大幅惡化 |
| 20% 止盈 | 28.5% | 53.2% | 小幅改善 |
發現:傳統的停損/移停對成長股策略無效!因為成長股在系統性下跌時會同步下跌,停損只會鎖定虧損。
迭代 3:調整策略結構
既然風控無效,那就從策略結構本身著手。
測試不同的換股頻率(週、雙週、月、季)和持股數量,觀察對 MDD 的影響。
顯示程式碼
# 測試雙週換股
report = sim(position, resample="2W", stop_loss=0.12, upload=False)| 換股頻率 | 年化 | 夏普 | MDD |
|---|---|---|---|
| 週換股 | 28.8% | 0.83 | 54.8% |
| 雙週 | 24.9% | 0.83 | 48.4% |
| 月換股 | 16.0% | 0.57 | 55.0% |
| 季換股 | 25.6% | 0.93 | 37.0% |
關鍵發現:降低換股頻率可以有效降低 MDD!季換股的 MDD 只有 37%,而且報酬還維持在 25%+。
回測結果
經過 4 輪迭代,我們找到了達標的策略配置。
| 指標 | 基礎版 | 優化版 | 目標 | 狀態 |
|---|---|---|---|---|
| 年化報酬率 | 9.7% | 25.6% | > 15% | ✅ |
| 夏普比率 | 0.40 | 0.93 | > 0.6 | ✅ |
| 最大回撤 | 50.5% | 37.0% | < 40% | ✅ |
策略解析:為什麼季換股 MDD 最低?
這個發現反直覺:降低交易頻率反而能降低風險?原因如下:
- 避免追漲殺跌:高頻換股容易在股價高點買入、低點賣出
- 減少交易成本:頻繁換股累積的手續費和滑價會侵蝕報酬
- 讓贏家充分發揮:好股票需要時間發酵,太早賣掉反而錯過大波段
- 過濾短期雜訊:季度層級只看中期趨勢,不被日常波動干擾
成長股策略的 MDD 很難用傳統風控降低,必須從策略結構本身著手。