Author Archives: 發財橘子

價值衡量九式之六

前面介紹了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

找出市場上每股現金最多的公司

選股的時候,有的時候會想找出某個條件排名前N名的公司,但如果系統不支援這個條件的排名時該怎麼辦? 例如我想找每股流動資產跟股價最接近的公司前20名,要怎麼做呢? 今天就是來跟大家分享這種自訂排行榜的寫法。

首先,得先把想要合排行的數值的演算規則寫成函數

2017062101

這裡用中文的函數名稱,目的是讓user可以很快的找到這個函數。

接下來就是撰寫這個函數的腳本

value1=GetField("現金及約當現金","Q");//百萬
value2=GetField("短期投資","Q");
value3=GetField("短期借款","Q");
value4=GetField("總市值","D");
value5=(value1+value2+value3)/(value4*100);
if value4<>0 then 
value6=value5/value4;
ret=value6;

這個函數腳本跟英文腳本的差別就在於用ret來代替英文的函數名稱作為賦值的敘述。

從上述的腳本中,可以理解,我想找的是現金與短期投資合計後減去短期借款後,跟總市值的比值,這個數字如果大於一,代表光公司馬上處理後的現金就高過公司目前的市值,通常這種公司就算是超跌了。

寫完函數後,接下來就是把這個函數拿來當作排行榜的條件,設定的流程如下

2017062102

2017062103

這樣就可以完成自訂的排行條件了。

這個功能是XQ6.2版之後才支援,透過這個方法,就可以自己來設計要排行的數字的演算方法了。

 

xqlite banner

雞蛋水餃股的反彈行情

在指數站穩萬點之後,我最常聽到的一句話就是:” 指數都萬點了,股票還能買嗎?”

其實大家都清楚,這次的萬點指數,台積電佔了多重的角色

我寫了一個腳本專門在計算近N個月總市值增加超過M億的股票

value1=GetField("總市值","M");//單位:億
input:N1(24,"計算月份數");
input: addvalue(100,"總市值增加金額(單位:億");
if value1-value1[n1-1]>addvalue
then ret=1;
outputfield(1,value1-value1[n1-1],0,"市場增加金額(億)");

我拿這腳本去找過去兩年總市值增加超過五百億的公司,結果如下圖

2017060501

台積電的市值增加了1.8兆,這才是台股指數上萬點的真正原因,其餘的股票,其實不少的市值都還在七千到八千點指數的位置。

所以千萬別讓大盤的指數成了投資的心魔,以前怎麼挑股票,接下來還是怎麼挑股票,這是一個任意射擊,個股表現的時期,我預計這個時期會一直延續到全球利率水準被拉回到一定程度之後才會沙喲拉那。

任意射擊

接下來的階段,應該是屬於看好就買,看壞就空的自由射擊時期。

今天跟大家介紹的這個選股機器人上面的策略,就是衝著雞蛋水餃股而設計的交易策略

先看腳本

//雞蛋水餃股
settotalbar(1600);
value1=GetField("總市值");
input:period(1500,"計算天數");
input:ratio(5,"距離低點幅度");

if value1<lowest(value1,period)*(1+ratio/100)
//總市值回到過去一段時間最低點
then begin

if close=highest(close,20)
//創20日新高
and close<close[19]*1.07
//距離20日前沒有漲太兇
and GetSymbolField("tse.tw","收盤價")
>average(GetSymbolField("tse.tw","收盤價"),20)
//大盤多頭
and close <20
//股價低於20
then ret=1;

end;

這個腳本的概念是股價低於20元的股票

1.總市值回到過去一段時間最低點之下

2.股價創近20日來新高

3.但離20之前也沒有漲太兇

4.目前大盤是多頭格局

根據上述的原則,去跑過去三年的所有股票,進場後持有 20個交易日,回測報告如下:

2017060401

 

各位可以看到勝率雖然是六成,不算非常高,但是是屬於那種賺時賺的多,輸時輸的有限的策略。

符合條件的股票如下面這兩個例子

2017060402

 

2017060403

因為指數上萬點大家危機意識都很高,所以我跟大家介紹這個適合低價股的交易策略。

 

xqlite banner

突破繼續型態選股策略

在攻擊型選股機器人裡有一個策略叫突破繼續型態,它的概念是去尋找一段時間裡高低震盪後,再創新高的公司,我試過不少的寫法,以下這個腳本的寫法回測的結果最好。

之前我在試著寫突破繼續型態的腳本時,太在意整理型態的樣式,後來發現,其實只要把握幾個原則

1。有一陣子沒有破底了。

2。今天之前一直有一陣子沒有創新高。

3。今天創了新高。

根據這三個原則寫的腳本如下

variable:iHigh(0); iHigh=maxlist(iHigh,H);
variable:iLow(100000); iLow=minlist(iLow,L);
variable:hitlow(0),hitlowdate(0);
if iLow = Low then //觸低次數與最後一次觸低日期
begin
hitlow+=1;
hitlowdate =date;
end;

if DateAdd(hitlowdate,"M",1) < Date and//如果自觸低點那天1個月後都沒有再觸低
iHigh/iLow < 1.3 and //波動在三成以內
barslast(iHigh = High)=0
and barslast(ihigh=high)[1]>10
//超過十天沒有創新高
and average(volume,100)>500
//來到設定日期以來最高點
and GetSymbolField("tse.tw","收盤價")
>average(GetSymbolField("tse.tw","收盤價"),20)
then ret =1;

我有加上多頭市場才啟動的濾網

如果設出場點為十天之後,把所有的股票都下去回測,回測的數字不錯,像下圖這樣的股票,就會符合這樣的腳本

2017060102

教科書上教繼續型態的時候,根據型態不同的樣子,把繼續型態分成很多類,但實際用腳本去描述這些型態的時候,要描述的很精確,不是很容易,關鍵在於型態的形塑,需要的天期不一,上切線與下切線的斜率也不一,我試著寫了幾個,能普遍應用到所有股票的不多,這次的寫法就乾脆不理會是那一種繼續型態,只取其核心概念:

1。一陣子沒有破底

2。區間高低震盪

3。且有些日子未創新高

4。然後今日再創新高。

這樣就不用計較中間的整理型態是什麼樣子,也不用管整理了多少天。

這次在選股機器人裡,我把這個策略放了上去,選出的股票,值得大家再仔細研究其基本面是否具備值得市場追高的因素。

 

xqlite banner

金牌定存股選股策略

在價值型機器人裡,金牌定存股這個策略是在尋找每年獲利都超過五億,且近五年獲利獲利都還算穩定的公司,然後在這樣的公司移動平均線出現翻多的情況時,通知使用者。

金牌定存股這個 選股策略是由兩個腳本組成,第一個是找出金牌定存股的腳本

input:lowlimit(5,"年度獲利下限(億)");

value1=GetField("本期稅後淨利","Y");//單位:百萬
value2=lowest(value1,5);//五年獲利低點
value3=average(value1,5);//五年來平均獲利
if value1/100> lowlimit//獲利超過年度獲利下限
and value1/100<50//獲利沒有超過五十億元
and 
value1>value1[1]*0.9
and value1[1]>value1[2]*0.9//年度獲利連續兩年未衰退超過一成
and value2*1.3>value3
//五年來獲利最差的時候比平均值沒有掉超過三成

then ret=1;

outputfield(1, value1/100, 1, "稅後淨利(億)");

第二個腳本則是用月線及季線來定義目前股價處在什麼位置

variable:m20(0),m60(0),message("0") ;
m20=average(close,20);
m60=average(close,60);
if close > m20 and c< m60 and m20<m60
then message="復甦期"
else 
if close > m20 and c> m60 and m20<m60
then message="收集期" 
else 
if close > m20 and c> m60 and m20 > m60
then message="多頭"
else 
if close < m20 and c>m60 and m20>m60
then message="警示期"
else 
if close < m20 and c<m60 and m20>m60
then message="發散期"
else 
if close < m20 and c<m60 and m20<m60
then message="空頭";

 

if message<>message[1]
and message="多頭"
and message[1]="收集期"
and message[2]="收集期"
and volume>500 and close>10
then ret=1;
outputfield1(message);
setoutputname1("今日訊號");
outputfield2(message[1]);
setoutputname2("昨日訊號");
outputfield3(message[2]);
setoutputname3("前日訊號");

這個腳本的概念是從下面這張圖來的

101205

腳本的概念是不管之前是什麼階段,第一天回頭多頭時就觸發通知訊號。

把這兩個腳本結合起來,就是當獲利穩定的公司,股價重返多頭的第一天,就請機器人發出警訊。

以上是金牌定存股的說明

 

xqlite banner