Author Archives: 發財橘子

選股腳本:Z日均量低於N而連M日量大於K

坊間選股工具很多,不過可供選擇的選股條件大多老生常談,例如XX 指標黃金交叉之類的,由於大盤最近開始進到小型股常有表現的百家爭鳴階段,接下來幾天想跟大家分享一些很容易寫,可以常常被拿來作為選股條件之一的常用選股腳本,這些腳本可以用OR或AND串在一起,織成一張選股網,找到一些值得進一步研究的小型股。

今天首先跟大家介紹的是最近一段時間沒有啥量,但近N日開始出量的股票。

我寫的選股腳本如下:

input:z(20,"均量計算天期");
input:n(2000,"均量上限");
input:m(2,"近幾日天期數");
input:k(4000,"近幾日量下限");

if average(volume,z)[m-1]<n
and trueall(volume>k,m)
then ret=1;

這個腳本可以找出過去20天的移動平均量都不到2000張,近2日每天都超過4000張的股票,要找小型股的時候,這是一個不錯的方法,例如最近大漲的幾檔小型股,起漲時都符合這樣的條件

2017082901

至於要連續幾天沒有量? 還是量要縮到什麼程度才叫量縮? 要連續幾天出量? 要成交量超過多少才算出量? 我都把它設成參數,讓使用者自己來決定。

未來這一系列介紹的選股腳本,都會是類似這樣,簡單,有多個參數可以調整,使用者只要把它複制到自己的XS選股裡就可以使用了。 如果各位希望DIY出什麼選股策略,也可以留言,我會試著寫出來。

 

xqlite banner

 

價值衡量九式之九

衡量股票估值的方法,之前介紹了一些,最後一節就來介紹把這些方法全部放在一起衡量的選股腳本要怎麼寫。

周星馳有部電影叫武狀元蘇乞兒,最後他跟大魔頭決戰時,悟出了把降龍十八掌的前十七式合在一起打就是第十八式

2017070602

我用同樣的想法,把先前曾介紹過的價值型估值方法全部整合在一個腳本上,挑出符合最多價值衡量條件的股票。

腳本的寫法如下:

input:m1("不符合"),m2("符合");
var:s1(""),s2(""),s3(""),s4(""),s5("");
var:count(0);
condition1=false;
condition2=false;
condition3=false;
condition4=false;
condition5=false;
count=0;

//用最近三個月營收推估的獲利殖利率高於一定水準
value1=GetField("營業利益","Q");//單位:百萬
value2=GetField("月營收","M");//單位:億
value3=GetField("營業利益率","Q");
value4=GETFIELD("月營收","M")
+GETFIELD("月營收","M")[1]
+GETFIELD("月營收","M")[2];
//近三個月營收
value5=value4*value3/100;
//用最近一期營益率去估算的最近一季營業利益
value6=GetField("營業利益","Q")
+GetField("營業利益","Q")[1]
+GetField("營業利益","Q")[2]+value5*100;
//前三季營業利益加上最近一季預估營業利益
value8=GetField("最新股本");//單位億
value9=value6/(value8*100)*10;
//估算出來的EPS
value10=value9/close*100;
//eps/股價*100: 預估殖利率
input:r1(7,"殖利率下限");
if value10>r1 and value3>0 and close>10
then begin
condition1=true ;
s1=m2;
count=count+1;
end 
else
s1=m1;
 
//本業推估本益比低於N

input:epsl(15,"預估本益比上限");

value11= GetField("營業利益","Q")
+GetField("營業利益","Q")[1]
+GetField("營業利益","Q")[2]
+GetField("營業利益","Q")[3];
value12= GetField("最新股本");//單位億;
value13= value11/(value12*10);//每股預估EPS
if close/value13<=epsl
then begin
condition2=true ;
s2=m2;
count=count+1;
end 
else
s2=m1;

//流動資產減負債超過市值N成
input:ratio(80,"佔總市值百分比%");
if (GetField("流動資產","Q")-GetField("負債總額","Q"))/100>GetField("總市值","D")*ratio/100
then begin
condition3=true ;
s3=m2;
count=count+1;
end 
else
s3=m1;

//股價低於N年平均股利的N倍

input:N1(16,"股利的倍數");
 
value15=(GetField("股利合計","Y")
+GetField("股利合計","Y")[1]
+GetField("股利合計","Y")[2]
+GetField("股利合計","Y")[3]
+GetField("股利合計","Y")[4])/5;
if close<value15*N1
then begin
condition4=true ;
s4=m2;
count=count+1;
end 
else
s4=m1;
 
//高自由現金流總市值比
input:ratio1(10,"近四季自由現金流總合佔總市值最低比率單位:%");
if (GetField("來自營運之現金流量","Q")+GetField("來自營運之現金流量","Q")[1]+
GetField("來自營運之現金流量","Q")[2]+GetField("來自營運之現金流量","Q")[3]-
GetField("資本支出金額","Q")-GetField("資本支出金額","Q")[1]
-GetField("資本支出金額","Q")[2]-GetField("資本支出金額","Q")[3])
>GetField("總市值","D")*100*ratio1/100
then begin
condition5=true ;
s5=m2;
count=count+1;
end 
else
s5=m1;


if count>1
then ret=1;
outputfield(1,count,0,"符合條件數");
outputfield(2,value9,1,"預估EPS");
outputfield(3,s1,0,"高預估殖利率股");
outputfield(4,s2,0,"本業推估本益比低");
outputfield(5,s3,0,"流動性淨資產接近市值");
outputfield(6,s4,0,"以歷年平均股利計算之高殖利率股");
outputfield(7,s5,0,"高自由現金流總市值比");

衡量的標準都設成參數,大家可以依自己的標準重設,我把條件設的更嚴之後,挑出來符合較多條件的股票如下:

2017070601

價值型投資的介紹至此告一段落,正所謂戲法人人會變,巧妙各自不同,這些腳本的介紹,重點在讓大家了解有那些派別的不同思維,有那些可以拿來運算的欄位,以及有那些腳本撰寫時可以使用的寫法,真正要如何在 xs上實行您的價值型投資準則,還有賴各位捲起袖子來把這些參考的腳本改成您個人的獨特見解。

 

xqlite banner

價值衡量九式之八

前面七式分別用了 PB,PE,PS,自由現金流量,現金股利,營業利益等數字來作為計算的標準,最後兩式用的是雞尾酒衡量法,也就是把這些數據一起納入考量。

以下的腳本挑出來的股票一共要符合以下幾個選股條件

1.本益比低於15

2.股價淨值比小於2

3.股利殖利率小於3%

4.最近一季營收比上一季成長

5.最近一季營業利益比前一季大

符合以上五個條件的選股腳本

if GetField("本益比","D") < 15 and
 GetField("股價淨值比","D") <2 and
 GetField("殖利率","D") > 3 and
 GetField("營收成長率","Q") >0 and
 GetField("營業利益","Q") >GetField("營業利益","Q")[1] 
 
 then ret=1;

這樣挑出來的股票有92檔,如果把條件再設的嚴苛一點,PB要小於1.5,股利殖利率要大於5且去年稅後淨利超過五億台幣,那麼符合條件的就只剩下27檔,名單如下

2017070501

正常來說,這些股票的估值變的這麼便宜,往往跟產業及公司營運前景不樂觀有關,但同樣的邏輯,如果營運出現谷底回昇的情況,這些股票會是估值回昇最強勁的族群。

xqlite banner

 

 

價值衡量九式之七

今天跟大家介紹的估值作法,是找到那些過去五年營業利益達到一定水準且趨勢往上走的公司,假設未來五年營業利益能 維持現狀,然後把最近一年的營業利益乘以五,加上淨值,再來跟目前的股價相比。 我承認這個方法還蠻土法煉鋼,毫無理論基礎,但這是我多年來常用的方法,目的是在找出那些可能被遺忘而超跌的股票。

要找出這樣的股票,要分兩個腳本,一個是用年線,找出過去五年營業利益超過兩億且呈上昇趨勢的股票

input:lm(200,"年營業利益下限");
value1=GetField("營業利益","Y");//百萬
if 
GetField("營業利益","Y")>lm and 
GetField("營業利益","Y")[1]>lm and 
GetField("營業利益","Y")[2]>lm and
GetField("營業利益","Y")[3]>lm and 
GetField("營業利益","Y")[4]>lm and 
//週去五年都賺超過一億
linearregslope(value1,5)>0
//五年的營業利益趨勢往上
then ret=1;

另一個腳本則是拿最近一年的營業利益為基礎,來算估值

input:ratio(30,"折價比例%");
value1=GetField("營業利益","Y");//百萬
value2=GetField("每股淨值(元)","Y");
value3=GetField("普通股股本","Y");//單位:億
value4=value1*5/100/value3*10;
//用最近一年營業利益乘以五當未來五年的獲利
//算出未來五年的每股淨值增加值]
value5=value2+value4;
//以目前的每股淨值加上上述數字即是公司內含價值
//(不考慮折舊的issue)
if close*(1+ratio/100)<value5
then ret=1;
outputfield(1,value5,1,"內含價值");
outputfield(2,close,2,"目前股價");
outputfield(3,1-close/value5,"折溢價情況");

然後再把這兩個腳本在選股策略中用AND合在一起

20170704

 

這樣就可以選出過去五年本業獲利穩定且呈上昇趨勢,然後估值又較低的公司。

xqlite banner

價值衡量九式之六

前面介紹了PB,PS,股利折現,自由現金流量,被併購價值,今天跟大家介紹的價值衡量方法是考慮到目前營收成長率的本益比計算方法。

在使用本益比衡量股價高低時,老手們教我們,成長股可以給比較高的PE,衰退的股票PE就給的低一點。

於是我就試著寫了一個腳本,用累計營收年增率做為一個衡量的標準,如果年增率超過15%,就給20倍的本益比,如果這數字是衰退的,那就只給10倍本益比,如果在這兩個數字的中間就給15倍本益比,然後算出合理的股價,再拿合理的股價跟目前的市價相比,來算折價率。

我寫的腳本如下:

input:discountrate(20);
var:truevalue(0);
value1=getfield("累計營收年增率","M");
GetField("每股營業利益(元)","Q");
value3=GetField("每股營業利益(元)","Q")
+GetField("每股營業利益(元)","Q")[1]
+GetField("每股營業利益(元)","Q")[2]
+GetField("每股營業利益(元)","Q")[3];//推估的全年EPS
if value3>0 then begin
switch(value1)//視累計營收年增率的高低給不同本益比
begin
case>15: truevalue=value3*20;
//成長率超過15%給20倍本益比
case<=0: truevalue=value3*10;
//衰退只給十倍本益比
default: truevalue=value3*15;
//一般就給15倍本益比
end;
if close*(1+discountrate/100)<truevalue
then ret=1;
outputfield(1,(truevalue-close)/close*100,2,"折價率");
end;

 

當然大家對於什麼成長率要給多少倍的PE看法不一定一樣,但是利用上面的腳本,可以給不同的成長率不同的本益比,大家不妨一試。

xqlite banner

價值衡量九式之五

用現金股利折現法算合理價位的缺點在於,對於業績成長股的合理股價,會有低估的現象,結果常會挑不到股票買,只好降低預期報酬率的標準,但這麼做又會挑到一些不適切的股票,所以今天跟大家介紹的是考慮現金股利成長率的現金股利折現法。

我的作法是先計算過去幾年的最低股利成長率,然後把預期報酬率減去這個數字作為折現率,算出合理股價,這樣一來,股利愈高,成長率愈高,合理股價就愈高。

我寫的腳本如下

input:r(6,"年預期報酬率單位%");
value1=(GetField("現金股利","Y")+GetField("現金股利","Y")[1]
+GetField("現金股利","Y")[2]+GetField("現金股利","Y")[3]
+GetField("現金股利","Y")[4])/5 ;
var: s1(0),s2(0),s3(0),s4(0);
if minlist(GetField("現金股利","Y")[1],GetField("現金股利","Y")[2],GetField("現金股利","Y")[3])
>0 then begin
s1=GetField("現金股利","Y")/GetField("現金股利","Y")[1]-1;
s2=GetField("現金股利","Y")[1]/GetField("現金股利","Y")[2]-1;
s3=GetField("現金股利","Y")[2]/GetField("現金股利","Y")[3]-1;
s4=minlist(s1,s2,s3)*100;
end;
if value1>1 and r>s4 and s4>0then begin
value2=value1/(r-s4)*100;
if close<>0 then 
value3=(value2-close)/close*100;
if value3>10
and GetField("現金股利","Y")>GetField("現金股利","Y")[1]
then ret=1;
//outputfield(1,value3,0,"折價率");
outputfield(2,value1,1,"平均現金股利");
outputfield(3,s4,1,"近年最低股利成長率");
//outputfield(4,value2,1,"合理股價");
end;

用這腳本挑出來的股票如下

20160630

這個方法最大的缺點是如果股利成長率比預期報酬率高時,分母就變成負的,不過長期來說,股利成長率要高於預期報酬率的機率是比較低,所以如果能算出長期的股利成長率的話,這個公式的估值對成長股是比較適用的。

我自己的作法是會用這樣的公式算一下用其他方法挑出來的股票,目的是看下檔風險有多高,以及如果營運成長的話市場大概會給什麼樣的估值,但我倒是比較不會直接就去買被低估的股票。

 

xqlite banner

 

 

 

 

價值衡量九式之四

今天跟大家介紹的價值衡量方式,算是反璞歸真,就是市面上存股法的概念,也就是挑出那些配息穩定的公司,給一個希望的年報酬率,然後用折現法算出合理的價值,再跟目前的股價去相比。

舉個例子,如果有一家公司每年都穩定的配兩元現金股利,如果您覺得合理的年報酬率是10%,那麼你心目中這家公司的合理價位就是 2/10%=20 元,如果您覺得合理的報酬有5%就很好了,那麼合理的價位就是2/5%=40元。

我根據這樣的精神,寫了一個選股腳本如下:

這個腳本就是把過去五年的平均現金股利當未來的計算基礎,但前提是最近一年的現金股利要比前一年高,然後在給定預期報酬率之後,算出合理的股價,再跟現的收盤價比,算出目前的折價率。

input:r(6,"年預期報酬率單位%");
value1=(GetField("現金股利","Y")+GetField("現金股利","Y")[1]
+GetField("現金股利","Y")[2]+GetField("現金股利","Y")[3]
+GetField("現金股利","Y")[4])/5 ;
if value1>1 then begin
value2=value1/r*100;
if close<>0 then 
value3=(value2-close)/close*100;
if value3>10
and GetField("現金股利","Y")>GetField("現金股利","Y")[1]
then ret=1;
outputfield(1,value3,0,"折價率");
outputfield(2,value1,1,"平均現金股利");
outputfield(3,value2,1,"合理股價");
end;

如果以6%的年預期報酬率來算,以昨天的收盤價為基準,折價幅度超過一成的的股票如下圖

2017062901

這個方法適用的股票,必須是那些獲利穩定度夠高的行業。

 

xqlite banner

價值衡量九式之三

價值型投資學派,不管用什麼工具,其核心精神都是先算出一家公司的真實價值,再看看跟市價相比是否被嚴重低估,之前兩式跟大家介紹的計算真實價值工具是EV,EBITDA,ROE及PB,第三式來談一下另一個工具: 營收市值比,這個數字在衡量一家公司被購併價值時,有一些實戰上的草根作用。

在談價值型投資時,有一派的觀點在於,有沒有被併購的價值?從以往的例子裡,被併購的公司通常需要具備幾個特質

1。總市值跟營收相比不會太高。

2。有一定的毛利率。

3。營業費用率夠高。

4。負債比例不高。

要有這四個特質的原因在於,購併發動方想的是把購併標的合併之後,能立馬增加一定的營收,但又不用付出龐大的資金流出,所以購併對象的總市值跟營收相比不能太高,太高要花很長的時間,資金才能回收。

其次,毛利率達到一定的水準,才不會營收增加很多,但營業毛利只增加一點點,甚至變成作愈多賠愈多。

第三點,營業費用夠高的公司,一但合併,包括管理,行銷,研發的費用比較能有很明顯的合併綜效,可以大幅的下降,這樣合併的併益才會顯著。

最後一點,被購併的公司負債愈少愈好,這點理所必然。

綜合這四點,我寫了一個選股條件如下

value1=GetField("總市值","D");//單位億
value2=GetField("營業收入淨額","Y");//單位百萬
value3=value1/value2*100;
value4=GetField("營業毛利率","Q");
value5=GetField("營業費用率","Q");
value6=GetField("負債比率","Q");
if value3<2 and value4>15 
and value5>30 and value6<20
then ret=1;
outputfield(1,value3,1,"市值營收比");
outputfield(2,value4,0,"毛利率");
outputfield(3,value1,0,"總市值");
outputfield(4,value2/100,0,"年營收");
outputfield(5,value5,0,"營業費用率");
outputfield(6,value6,0,"負債比率");

今天挑出來的股票如下

2017062701

當然要真的被合併,也要那個行業有更大咖的正想要擴充,不過這個不能量化,只能從篩選出來的股票其行業別再一一加以檢視。

總之,總市值營收比是一個價值型投資者會特別留意的數據,這是今天要跟大家報告的重點。

 

xqlite banner

價值衡量九式之二

要估算一家公司的股價是否合理? 有一個很簡單的算法,那就是如果你用現在的股價去買,預計要多久才能回本? 今天就用股價淨值比跟股東權益報酬率這兩個數字,來跟大家討論這樣的概念

就像下面這張圖,我們如果把股價淨值比當Y軸,股東權益報酬率當X軸,所有的股票在這張圖上,通常會呈現股東權益愈高,股價淨值比愈高的現象

2017062601

如果把這兩個數字的算法拆開來看,每股淨值X股東權益報酬率等於當年股東的每股報酬,假設未來幾年都維持這樣的股東權益報酬率,那麼用每股股價去除以這個數字,就是幾年後可以回本的數字。

依這樣的概念,我寫了一個選股程式

value1=GetField("股東權益報酬率","Y");
value2=GetField("股價淨值比","D");
value3=value2/(value1/100);//回本年限
input:ratio(50,"回本年限");
if value1>0 and value3<ratio then ret=1;
outputfield(1,value1,0,"股東權益報酬率");
outputfield(2,value2,1,"股價淨值比");
outputfield(3,value3,1,"回本年限");

用這個程式,如果把還本年限設為五年,挑到的股票如下

2017062602

這個算法沒有考慮未來的成長預期,不過可以在作這樣的篩選後再一檔檔檢梘符合條件個股的成長性。

特別是有些公司股性不好,但從ROE的角度,股價比較委屈,透過這個方法,可以找出這樣的股票。

xqlite banner

價值衡量九式之一

巴菲特的門徒很多,江湖一般稱為價值投資派,但隨著門下弟子開枝散葉,使用的工具也百花齊放,行情已上萬點,價值派可以用來長線保護短線,未來幾日,跟大家介紹一些價值投資派衡量企業價值的工具,以及這些工具如何寫成程式,今天先跟大家介紹的是EV/EBITDA這個外資常用的估值工具。

EV是市值+負債-現金,概念上就是市場目前考量現金及負債之後,真正給予該企業的價值,這是數字是市場主觀認定的價值。

EBITDA則是營業利益+折舊+攤銷 ,這個數字是企業客觀上,在經營上可以創造出來的現金。

EV/EBITDA就是市場主觀認定的企業價值與單季或單年企業客觀可以創造的現金之間的比值,這個數字愈小,代表主觀的估值愈沒有被高估,愈符合價值型投資者的選標準。

把這樣概念轉換成選股腳本,可以這麼寫

value1=GetField("總市值","D");//單位億
value2=GetField("負債總額","Q");//單位百萬
value3=GetField("現金及約當現金","Q");//單位百萬
value4=GetField("短期投資","Q");//單位百萬
value5=GetField("稅前息前折舊前淨利","Q");//單位百萬

var: pricingm1(0);
input: bl(12,"上限值");
if value5>0 then begin
pricingm1=(value1*100+value2-value3-value4)/value5;

if pricingm1<bl
then ret=1;
outputfield(1,pricingm1,1,"EV/EBITDA");
outputfield(2,value1*100+value2-value3,0,"EV");
outputfield(3,value5,0,"EBITDA");
outputfield(4,value1,0,"總市值");
outputfield(5,value2,0,"負債總額");
outputfield(6,value3,0,"現金");
outputfield(7,value4,0,"短期投資");
end;

用這個腳本選出來的股票如下:

2017062601

這些公司,都是如果未來三年(十二季)每一季都能像最近一季創造這麼多的現金,那麼三年後這些現金的合計就比目前市場給的企業價值還高,這樣的公司,就蠻符合價值型投資者的思考方向,不過在運用這個數字時,還是必須獲利的長期穩定性,也可以用年的數字來降低淡旺季的季節性因素。

xqlite banner