尋找阿爾發之旅系列之九

By | 2023-12-01

學院派說估值的因子是有效的,他們通常用PB來當因子,我則嘗試了一個數字: 股價與合理價值之間的距離,今天就來跟大家介紹這個因子。

所謂的個股合理價值,就是去挑那些過往營業利益都很穩定的公司,然後以最近一年的營業利益為計算基礎 ,去計算未來十年獲利的折現值,算出每股折現值再加上每股淨值,就是每股合理價值,接下來就是計算目前股價與合理價值的比值。

下面是我同事,根據上述的概念所寫的腳本:

variable: idx(0), t(0);
input:r1(3, "假設未來十年營業利益年成長率");
input:r2(2, "未來十年平均年利率");
input:r3(100, "未來獲利折現合計淨值與市價比");

// 計算未來10年的營業利益折現值

value1=GetField("營業利益","Y"); //單位:百萬
value2=GetField("最新股本"); //單位:億
value3=GetField("每股淨值(元)","y");

value11 = maxlist(GetField("營業利益","Y"),GetField("營業利益","Y")[1],GetField("營業利益","Y")[2],GetField("營業利益","Y")[3],GetField("營業利益","Y")[4]);
value12 = minlist(GetField("營業利益","Y"),GetField("營業利益","Y")[1],GetField("營業利益","Y")[2],GetField("營業利益","Y")[3],GetField("營業利益","Y")[4]);

if trueall(value1>0,5) and (value11-value12)/value11<0.5 then begin
t = 0;
for idx =1 to 10 begin
t = t + value1 * power(1+r1/100,idx)/power(1+r2/100,idx);
end;

// t=百萬,value2=億,換成每股
value5 = t / value2 / 100;
value6=close/(value3+value5);

if value6<r3/100
then ret=1;
end;

outputfield(1, value5, 2, "估算每股營業利益");
outputfield(2, value6, 1, "市價/淨值比", order := -1);

下圖則是用這個腳本過去七年回測的結果:

早先有跟大家分享過暴量起漲是有阿爾發的,那如果把這兩個條件結合在一起,回測的結果如下圖:

交易次數少很多,勝率高蠻多。

我會陸續把這類單一因子就可以打敗大盤的各類因子都依序跟大家報告,至於您在使用上要用另外那些因子來作濾網,就看各位的交易風格及對市場的觀察心得了。

===

● XQ【盤後量化選股模組】($1,000) 完整介紹 ➤https://xqcom.pse.is/5fbmun

● 首次訂閱享7天鑑賞期,首次購買輸入官方優惠碼「@XQ8899」,可折抵模組費用$100!

● 量化交易超值方案!購買就送:【量化積木+台股進階】(總價值$800)