此文章為VIP限定
本益成長比(簡稱:PEG)是本益比(簡稱:PE)的延伸,將公司未來獲利成長因素納入考量,解決PE對成長股反應過慢的問題。
相對PE,PEG較少人應用。這篇文章延續上一篇本益比策略的內容,會帶大家來驗證PEG的相關策略,示範如何使用使用Finlab量化平台工具幫助開發,說明策略撰寫的脈絡,進而延伸到結合成長因子的雙因子策略。
PEG定義
一般傳統的PEG公式如下
本益成長比(PEG) = 本益比/稅後盈餘成長率
例如公司A公司本益比10元,近一季稅後盈餘成長率20%,則PEG為10/20(百分比%的部份直接除)=0.5。
PEG反應越高的本益比要對應越高的成長性才合理。
PEG為1,代表本益比與獲利預期成長相等,股價在合理區間。
小於0.6代表預期獲利成長明顯大於本益比,可能被低估,有機會在實現成長後達到合理價。
大於2代表預期獲利成長明顯小於本益比,可能被高估成本夢比。
公式重構
傳統上PEG分母使用稅後盈餘成長率,但回測後發現效果沒太好,於是想到~雖然稅後盈餘成長與EPS最高度相關,稅後盈餘成長可能帶有一次性獲利的雜訊,因獲利成長持續性低,市場對這類的企業可能評價較低。
所以回測看看所有的盈餘成長率,包含’營收成長率’, ‘營業毛利成長率’, ‘營業利益成長率’, ‘稅前淨利成長率’, ‘稅後淨利成長率’,觀察每一種PEG指標在0.2間隔區間的回測。
發現使用’營業利益成長率'(子圖3)當作分母的線性回歸最佳,另外四種成長率指標的趨勢較跳動,且越低的’PE/營業利益成長率’報酬率較高,推測合理解釋為營業利益成長較能反映本業成長性,若獲利多來自本業成長,排除賣資產灌獲利的本業低成長公司,市場預期成長持續性的機率較高,則可能給予較高的評價。
PEG單因子策略回測
使用Finlab套件輕鬆撰寫策略~回測低PEG的標的,每月進行換股。
from finlab import data
from finlab.backtest import sim
pe = data.get('price_earning_ratio:本益比')
營業利益成長率=data.get('fundamental_features:營業利益成長率')
peg=(pe/營業利益成長率)
position= (peg>0) & (peg<0.5)
rr=sim(position=position,resample='M',name="策略教學範例:peg_single_factor",upload=True)
雙因子策略
PEG是有效因子,但可能還有優化的空間,搭配其他成長因子的指標如月營收,可以更鎖定成長動能強+股價低估的標的。
月營收成長策略回測
我們先來測試月營收成長的單因子策略,主要思維為短期營收動能突破長期趨勢,條件為:
1.近3月平均月營收/近12月平均月營收>1.1
2.營收月增大於-10%
3.每月進行換股,回測區間為方便與PEG策略同步比較,回測區間為2013-2021。
from finlab import data
from finlab.backtest import sim
rev=data.get('monthly_revenue:當月營收')
rev_ma3=rev.average(3)
rev_ma12=rev.average(12)
pe = data.get('price_earning_ratio:本益比')
cond1= rev_ma3/rev_ma12>1.1
cond2=rev/rev.shift(1)>0.9
position=cond1 & cond2
# 同步回測年度
position=position.reindex(pe.index, method='ffill')
sim(position=position,resample='M',name="策略教學範例:rev",upload=True)
回測數據蠻好的,就單因子而言,月營收成長明顯比PEG策略有更好的表現。
雙因子策略回測
若結合營收成長因子與PEG會有更好的效果嗎?
我們把PEG當作輔助因子,用來把月營收成長策略的標的做限縮,每個月月營收成長過濾完後,再挑PEG最低的10檔當作持股,。
再加入適當的停損條件去優化組合波動,如何設定適當的停損會在後續教學文章解說。這次停損設定在10%。
pe = data.get('price_earning_ratio:本益比')
rev=data.get('monthly_revenue:當月營收')
rev_ma3=rev.average(3)
rev_ma12=rev.average(12)
營業利益成長率=data.get('fundamental_features:營業利益成長率')
peg=(pe/營業利益成長率)
cond1= rev_ma3/rev_ma12>1.1
cond2=rev/rev.shift(1)>0.9
cond_all=cond1 & cond2
result=peg*(cond_all)
position=result[result>0].is_smallest(10).reindex(rev._index_str_to_date_month().index, method='ffill')
sim(position=position,name="策略教學範例:peg_rev",stop_loss=0.1,upload=True)
可以發現策略績效上升到31%,夏普率和MDD都更優化,僅是這樣簡單的條件就能寫出不錯的雙因子策略。今年更是靠抓到航海王賺到不少油水。
總結
PEG做單因子選股有正面效果,結合其他成長指標更能如虎添翼,在成長動能型的策略會是好幫手。
有沒有更會使用Finlab量化平台開發策略了呢?
對本篇程式有興趣的可以參考文底連結附檔,記得要先註冊Finlab量化平台才可有權限使用程式喔!