Author Archives: 發財橘子

跌不下去的高殖利率股

 

 

這個策略的目的,是在尋找那些一陣子沒有再破底的高殖利率股。也就是去找那些股價跟配的股利相比,相對便宜,而且最近沒有再破底的股票。我們在設計這個策略時,希望電腦跑出來的股票符合幾個條件

1.股票殖利率超過10%

2.股價已經一陣子沒有再破底

3.股價還沒有漲的太兇

根據上述的原則,我們定出的選股條件如下

2018111401

其中的選股腳本如下

// 作多, 最大持有期別20
input:N(10);
condition1 = L = Lowest(L,N);
condition2 = H = Highest(H,N);
 if condition2
 //股價創區間以來高點
 and TrueAll(Condition1=false,N)
 //這段區間都未破底
 and close<close[N-1]*1.05
 and volume>600
 //區間股價漲幅不大
 then ret=1;

這個腳本基本上就是找出過去十天沒有再破底,股價創近十日新高,但區間漲不大的股票。

再搭配高殖利率及法人買超兩個選股條件

拿這個選股策略去回測過去三年,出場訂為進場後20天,回測報告如下

2018111402

從回測報告來看,這是一個三戰兩勝的選股策略。

 

 

 

從最新公佈月營收挖寶的十個方法

又快到每月的十號了,依慣例,這時候我們要留意即將公佈的8月份營收,過去我曾經介紹過不少用月營收挑股票的方法,今天我想做個比較完整的整理,列出十個我用這個數字選股的方法。

在XS選股平台中,可以被拿來運算的關於月營收的數據一共有三個

1.月營收(單位:億)

2.月營收月增率(%)

3.月營收年增率(%)

要拿這三個數據來運算,我們也是用Getfield的語法,另外系統提供了Getfielddate的語法,可以呈現最新月營收公佈的期別。

例如我們想要挑出月營收年增率大於零的股票,我們就可以寫出以下的腳本:

value1=GetField("月營收年增率","M");
value2=GetFieldDate("月營收","M");
if value1>0
then ret=1;
outputfield(1,value1,2,"月營收年增率");
outputfield(2,value2,0,"最新公佈的月份");

用這個腳本,就可以找出所有月營收年增率大於零的股票,也可以排序,並且知道這裡的數據是那一個月份的營收數字。

比較遺憾的是,目前XS系統裡的月營收,為了考慮排行的功能,都必須等到大部份的公司公佈最新營收時才會一起更新,其實如果有Getfielddate的語法,user可以自己清楚目前所引用的營收是那個月份的營收,應該是要可以做到公司在10號之前公佈,就可以馬上被更新。

(我有建議系統修改這個功能,希望很快就可以提供這樣的服務。)

有了月營收等三個數字,我們可以在每個月透過不同的運算法,檢視公司的最新營運狀況,我列了十個自己常用的方法,供大家參考。

一,月營收創一段期間以來新高

input:N(37, "期別"); 
value1=GetField("月營收", "M");
value2=GetField("月營收月增率","M");
value3=GetField("月營收年增率","M");
value4=GetFieldDate("月營收","M");
if value1=Highest(value1,N)
//月營收創37期新高
and trueall(value2>0,2)
//月營收月增率近兩個月都>0
and trueall(value3>0,2)
//月營收年增率近兩個月都>0
then ret=1; 
outputfield(1,value4,0,"最新月份");

為了避免因為入帳時間的差異而造成假性新高,所以加上最近兩個月營收月增率及年增率都需大於零的條件

二,月營收創一段時間以來新低

input:N(37, "期別"); 
value1=GetField("月營收", "M");
value2=GetField("月營收月增率","M");
value3=GetField("月營收年增率","M");
value4=GetFieldDate("月營收","M");
if value1=lowest(value1,N)
//月營收創37期新低
and trueall(value2<0,2)
//月營收月增率近兩個月都<0
and trueall(value3<0,2)
//月營收年增率近兩個月都<0
then ret=1; 
outputfield(1,value4,0,"最新月份");

設計的概念如第一個腳本

三,月營收年增率加速

這個概念是去計算月營收年增率的12個月平均及四個月平均,當短期平均線突破長期平均線時,代表月營收年增率增加的速度在加快當中

腳本的寫法如下:

value1=GetField("月營收年增率","M");

if average(value1,4) crosses over average(value1,12)
then ret=1;

短期平均用四個月的目的在於消彌掉季節性因素的影響

四,總市值月營收比值在翻轉中的股票

總市值月營收比值代表市場對個別公司的信心度,這個比值如果開始穩定翻轉且搭配營收回昇,代表的是市場的信心及公司的基本面同步回復中

我寫的參考腳本如下:

value1=GetField("總市值","M");//單位:億元
value2=GetField("月營收","M");//單位:億元
if value2<>0
then 
value3=value1/value2
else
value3=0;

if trueall(value3>value3[1],3)//過去三期都上漲
and value3[3]<value3[4]
and value3[4]<value3[5] //之前兩期是下跌
and value2>value2[1]//月營收成長
then ret=1;
outputfield(1,value3,2,"總市值/月營收");
outputfield(2,value3[1] ,2,"前1期值");
outputfield(3,value3[2],2,"前2期值");
outputfield(4,value3[3],2,"前3期值");
outputfield(5,value3[4],2,"前4期值");

這個數值如果在回昇,代表股價回昇的速度比營收成長的速度還快,不過這個腳本是用月當頻率,如果很在意日股價的變動的,可以改成以日頻率來運算。

五,月營收推估出來的低本益比股

這是假設公司的最新單月營收會持續維持12個月,且未來十二個月的營業利益率都不變,以最新單月營收來推估EPS,進而推算出來的本益比

參考的腳本如下:

value1=GetField("月營收","M");//單位:億元
value4=GetField("營業利益率","Q");
value5=GetField("最新股本");//單位:億元
condition1=false;
condition2=false;
input:peraito(12,"預估本益比上限");
if value5<>0
then
value6=(value1*value4*12)/(value5*10);//單月營收推估的本業EPS
if value6<>0
then 
value7=close/value6;

if value7<peraito and value7>0

then ret=1;
outputfield(1,value7,0,"推估本益比");

六,連續N個月單月營收比上一個月成長

如果一家公司能夠連續好幾個月營收都比上個月成長,通常代表有了新的動力,由於我們有二月農曆春節放假的因素,所以公司不大可能連續12個月成長,所以我N通常都設在4-6之間。

參考的腳本如下:

input:period(5,"計算區間");
if trueall(GetField("月營收月增率","M")>0,period)
then ret=1;

七,月營收三個月的年增率平均呈兩位數成長

單個月的營收年增率兩位數成長,可能是入帳的落差,但如果連續三個月的平均能維持兩位數成長,那就代表這家公司確實今年表現的比去年好

參考的腳本如下:

input:period(3,"計算區間");
if average(GetField("月營收年增率","M"),period)
>=10
then ret=1;

八,累計營收年增率在加速中

公司的營運如果漸入佳境,愈來愈好,累計營收年增率會一個月比一個月好。

參考的腳本

input:period(6,"計算區間");
value1=GetField("累計營收年增率","M");
if trueall(value1>value1[1],period)
then ret=1;

九,營收月增率優於歷年平均

營收月增率歷年平均,代表的是一家公司成長的步伐,如果營收月增率可以優於這樣的步伐,代表公司的營運有加快成長的可能。

參考的腳本如下:

value1=GetField("月營收月增率","M");
value2=average(value1,36);
if value1>10
and value1>value2*1.3
then ret=1;
十,營收從下降趨勢轉成上昇趨勢的公司
過去營收年增率在下降,但現在開始轉為成長的股票,可能就是所謂的轉機股
參考的腳本如下:
//input:TXT("僅適用月線"); setinputname(1,"使用限制");
setbarfreq("M");

If barfreq <> "M" then raiseruntimeerror("頻率設定有誤");

settotalbar(23);

value1=GetField("月營收年增率","M");
value2=average(GetField("月營收年增率","M"), 3);
value3=linearregslope(value2,20);
value4=linearregslope(value2,5);

if value3 < 0 and value4 crosses above 0
then ret=1;

以上這十個腳本是我應用月營收時常用的腳本,趁這次月營收要公佈前,一次跟大家分享

 

 

 

 

 

 

 

 

打造一個專屬的上市櫃公司健康檢查表

因著樂陞事件,我一直在思索要如何才能趨吉避凶,不再誤踩地雷。回顧這三十多年來,公司治理出了問題的公司,主要都還是使用點石成金,五鬼搬運等方法,這些方法,在財報上多少會有些蜘絲馬跡,我們可以試著從這些地方設下一些檢查點,仿效健康檢查的方式,建立一套上市櫃公司的營運健康檢查體系,以後再有類似的機會,要進場前,先看一下公司的健康檢查分數。

要作健康檢查之前,我們得先確定一下,通常會有那些疾病,我綜合這三十多年來,公司治理上出現的弊端,大致有下面幾種病狀

1.點石成金。上市公司大股東在公司購買土地,廠房,機器設備,及併購其他公司時,收取高額佣金,用100元去買只值10元的東西,把錢從公司搬到自己的口袋,這就稱為點石成金。這種公司在財報上的特徵是公司大量的資本支出,但並無相對應的資本報酬。

2.乾坤大挪移。把公司的重要資產轉給子公司,再以子公司名義簽下各種不公平契約,把公司的重要資產,漸漸挪到私人的口袋裡。這種公司在財報上的特徵是,轉投資公司家數眾多且佔公司淨值的比例非常的高

3.挖牆補洞。之前有多家公司出事,都是因為老板炒股套牢需要資金,於是以公司發展某項新產品為由,利用現增,發債的方式,讓公司股本或負債比例大幅提高,但拿到的錢主要是用來買回公司股票,幫老板解套,這種公司在財報上的特徵是股本膨脹速度很快,或是負債比例持續昇高,但營收並沒有同步成長。

4.虛列營收。過去有幾家公司,把貨往海外子公司或白手套開設的公司送,帳上作出貨,但其實貨並沒有賣掉。這種公司在財報上最常見的是應收帳款以跟營收不成比例的速度在爬昇,且來自營運的現金流量與獲利背道而馳。

5.金錢遊戲。好公司的大股東專心於本業,不會動不動就把股票拿去質押,不會沒事就發個庫藏股,不會設一些專職炒股的投資公司,也不會常發表一些利多消息吸引投資人。這種公司在財報上最常見的,就是業外收益佔稅後淨利的比重高且不穩定。

 

另外,如果有以上病狀的公司,公司一定不大賺錢,所以

1.經營階層的持股比例一定不高且通常質押的比例會很高。

2.現金股利能發放的空間不大

3.機構投資者通常不會買這種股票

4.融資券餘額常有較大的變化

 

綜合以上的觀察,我試著寫了一個掛牌公司健康分數的程式腳本

 value1=GetField("資本支出營收比","Q");
//現金流量表中固定資產(購置)/營業收入淨額*100%
value2=GetField("資本支出金額","Q");//單位百萬
value3=GetField("股東權益報酬率","Q");
value4=GetField("長期投資","Q");//單位百萬
value5=GetField("負債比率","Q");
value6=GetField("每股營業額(元)","Q");
value7=GetField("現金及約當現金","Q");//單位百萬
value8=GetField("流動負債","Q");//單位百萬
value9=GetField("一年內到期長期負債","Q");//單位百萬
value10=GetField("應收帳款週轉率(次)","Q");
value11=GetField("投資收入/股利收入","Q");//單位百萬
value12=GetField("處分投資利得","Q");//單位百萬
value13=GetField("投資跌價損失回轉","Q");//單位百萬
value14=GetField("投資損失","Q");//單位百萬
value15=GetField("投資跌價損失","Q");//單位百萬
value16=GetField("處分投資損失","Q");//單位百萬
value17=GetField("董監持股佔股本比例","D");
value18=GetField("投信持股","D");
value19=GetField("現金股利","Y");
value20=GetField("融資餘額張數","D");
value21=GetField("融券餘額張數","D");
value22=GetField("來自營運之現金流量","Q");//單位百萬
value23=GetField("本期稅後淨利","Q");//單位百萬
value24=GetField("普通股股本","Q");//單位億
value25=GetField("短期投資","Q");
value26=value11+value12+value13-value14-value15-value16;
var:count(0);
count=0;
if linearregslope(value1,8)>0
then count=count+1;
//1.資本支出營收比在成長
if linearregslope(value2,8)>0
and linearregslope(GetField("營業收入淨額","Q"),12)<0
then count=count+1;
//2.資本支出在成長但營收在衰退
if linearregslope(value3,8)<0
then count=count+1;
//3.股東權益報酬率衰退中
if value4/(value24*100)*100>40
then count=count+1;
//4.長期投資佔股本超過四成
if value5>50
then count=count+1;
//5.負債比率超過五成
if linearregslope(value6,12)<0
then count=count+1;
//6.每股營收持續衰退
if value7+value25<value8+value9
then count=count+1;
//7.現金及約當現金+短期投資小於
//流動負債加一年內到期的長期負債
if linearregslope(value10,12)<0
then count=count+1;
//8.應收帳款週轉次數在減少
if countif(value26<0,12)>2
then count=count+1;
//9.業外操作有超過兩季是虧錢
if value17<15
then count=count+1;
//10.董監持股比例小於15
if value18<500
then count=count+1;
//11.投信整體持股在500張以下
if average(value19,12)<1
then count=count+1;
//12.現金股利長期都不到1元
if highest(value20,12)>lowest(value20,12)*2
and highest(value21,12)>lowest(value21,12)*2
then count=count+1;
//13.融資融券高低點相距超過一倍
if countif(value22<value23,12)>8
then count=count+1;
//14.來自營運的現金流量老是小於稅後淨利
if linearregslope(GetField("營業毛利率","Q"),12)<0
then count=count+1;
//15.毛利率長期處於下降趨勢
if linearregslope(GetField("流動比率","Q"),12)<0
then count=count+1;
//16.流動比例長期在下降
if linearregslope(GetField("存貨週轉率(次)","Q"),12)<0
then count=count+1;
//17.存貨週轉率在下降
if linearregslope(GetField("存貨及應收帳款/淨值","Q"),12)>0
then count=count+1;
//18.存貨及應收帳款佔淨值的比例在提高當中
if linearregslope(GetField("短期借款","Q"),12)>0
then count=count+1;
//19.短期借款在增加
if linearregslope(GetField("背書保證餘額","M")+GetField("資金貸放餘額","M"),12)>0
then count=count+1;
//20.背書保證餘額與資金貸放餘額在增加
var: score(0);
score=100-5*count;
if value7<2000
then begin
if score<50
then ret=1;
end;
outputfield(1,score,0,"企業營運健康分數"); 

 

這個腳本只是個樣本,各位可以根據您自己的偏好,
整理出屬於您自己的地雷股條件,
例如您可以把上面的二十項濃縮成十項

value1=GetField("資本支出營收比","Q");
//現金流量表中固定資產(購置)/營業收入淨額*100%
value2=GetField("資本支出金額","Q");//單位百萬
value3=GetField("股東權益報酬率","Q");
value4=GetField("長期投資","Q");//單位百萬
value5=GetField("負債比率","Q");
value6=GetField("每股營業額(元)","Q");
value7=GetField("現金及約當現金","Q");//單位百萬
value8=GetField("流動負債","Q");//單位百萬
value9=GetField("一年內到期長期負債","Q");//單位百萬
value10=GetField("應收帳款週轉率(次)","Q");
value11=GetField("投資收入/股利收入","Q");//單位百萬
value12=GetField("處分投資利得","Q");//單位百萬
value13=GetField("投資跌價損失回轉","Q");//單位百萬
value14=GetField("投資損失","Q");//單位百萬
value15=GetField("投資跌價損失","Q");//單位百萬
value16=GetField("處分投資損失","Q");//單位百萬
value17=GetField("董監持股佔股本比例","D");
value18=GetField("投信持股","D");
value19=GetField("現金股利","Y");
value20=GetField("融資餘額張數","D");
value21=GetField("融券餘額張數","D");
value22=GetField("來自營運之現金流量","Q");//單位百萬
value23=GetField("本期稅後淨利","Q");//單位百萬
value24=GetField("普通股股本","Q");//單位億
value25=GetField("短期投資","Q");
value26=value11+value12+value13-value14-value15-value16;
var:count(0);
count=0;
if linearregslope(value2,8)>0
and linearregslope(GetField("營業收入淨額","Q"),12)<0
then count=count+1;
//1.資本支出在成長但營收在衰退
if linearregslope(value3,8)<0
then count=count+1;
//2.股東權益報酬率衰退中
if value4/(value24*100)*100>50
then count=count+1;
//3.長期投資佔股本超過五成
if value5>60
then count=count+1;
//4.負債比率超過六成
if value7+value25<value8+value9
then count=count+1;
//5.現金及約當現金+短期投資小於
//流動負債加一年內到期的長期負債
if countif(value26<0,12)>2
then count=count+1;
//6.業外操作有超過兩季是虧錢
if value17<15
then count=count+1;
//7.董監持股比例小於15
if value18<500
then count=count+1;
//8.投信整體持股在500張以下
if linearregslope(GetField("營業毛利率","Q"),12)<0
then count=count+1;
//9.毛利率長期處於下降趨勢
if linearregslope(GetField("流動比率","Q"),12)<0
then count=count+1;
//10.流動比例長期在下降

var: score(0);
score=100-10*count;
if value7<2000
then begin
if score<50
then ret=1;
end;
outputfield(1,score,0,"企業營運健康分數");

 

這樣子每項十分一樣可以做出您專屬的上市公司體檢系統。

 

 

好久以來的第一根長紅到底能不能追?

這幾個月來,景氣循環股因著不同的原因,相繼展開反彈,在線型上出現好久以來的第一根長紅,我試著想從過去三年的數據分析中,來測試看看這種好久以來的第一根長紅,如果進場追買的話,賺錢的機率高不高? 要漲多少%才算是長紅? 要多久沒有拉過長紅才算是好久以來? 這樣的交易策略是不是適用在所有的股票上?

為了作這個測試,我先寫了一個腳本如下:

input:ratio(6,"長紅的漲幅下限");
input:period(40,"計算區間");
if close>=close[1]*(1+ratio/100)
and 
countif(close[1]>=close[2]*(1+ratio/100),period)=0
then ret=1;

其中設了兩個參數,一個是上漲的幅度,一個是計算的天期

我先用上漲6%算長紅,計算區間設40天,用所有的上市櫃公司,我假設是長紅後的隔天開盤進場,然後持有兩天,先跑最近半年,回測結果如下

090101

結果交易的次數很多,半年就有超過言1000次的機會,但勝率不高,只有42.2%,不過總報酬很不錯,這代表輸的時候輸的不多,但贏的時候可以贏不少。不過從淨值的波動圖來看,跟大盤似乎息息相關,代表這樣的交易策略跟大盤多空有很大的關係。

所以我把回測的時間拉長到三年,回測的結果如下:

090102

結果發現勝率提高到接近五成,然後比較好玩的數字是,如果在多頭市場時,這個策略還真的可以一試

於是我在原來的腳本加上只在大盤多頭時進場

 input:ratio(6,"長紅的漲幅下限");
input:period(40,"計算區間");
if GetSymbolField("tse.tw","收盤價")
>average(GetSymbolField("tse.tw","收盤價"),10)
then begin
if close>=close[1]*(1+ratio/100)
and 
countif(close[1]>=close[2]*(1+ratio/100),period)=0
then ret=1;
end;

這樣的腳本去跑三年的回測,結果如下:

090103

勝率超過五成,比較大的意義是最大區間虧損雖然還是大的嚇人,但至少有明顯的降低

接下來我試著把沒有長紅的區間拉長,把長紅的定義放的更寬一點來測看看,效果沒有比較好,我只拿景氣循環股及高ROE的股票下去跑,勝率也沒有比較好,但如果是拿有量的中小型股下去跑,則結果會很不錯

090104

 

所以關於長期以來的第一根長紅這個 交易策略,我的數據分析結論如下

在大盤多頭走勢時,如果那些有量的中小型股,出現過去四十天以來的第一根上漲超過6%的長紅棒,那麼隔天開盤進場追,持有兩天,是一個可以進一步Follow的交易策略。

 

 

 

研究員生涯回憶之一 ~ 我們來談盈餘品質

最近跟一位以前當研究員時的同業聊天,聊到我師父以前惡整我們的十大酷刑,特別是要研究員估十年EPS這件事,其實這件事,其重要的意義在於,我們必須仔細分辨每一家公司的盈餘品質,對於那些盈餘品質好的公司,我們不妨回頭去檢視其未來十年的競爭優勢是否能維持這樣的盈餘品質,若是可以,我們就可以把這些盈餘折現回來加上淨值,這就是這家公司合理的價值,師父當年舉了幾個例子,告訴我們,其實對於未來,人們總是在樂觀與悲觀中悠悠蕩蕩,當市場對大環境,產業及公司個股有疑慮時,總市值可以會遠低於公司合理的價值,但當大環境,產業或公司有了新的發展,大家偏向樂觀時,則總市值又會跟著盈餘的開出而不斷地接近合理的價值。

所謂的盈餘品質,就是盈餘的可重覆性,可重覆性的盈餘,很多是來自寡頭壟斷,特殊的權利, 或是競爭後的高護城河,表現在數字上,就是每年的營業利益都維持一定的水準,且長期趨勢是往上。

我試著用XS的語法來描述這樣的公司

value1=GetField("營業利益","Y");
if trueall(value1>100,5)
//週去五年都賺超過一億
and linearregslope(value1,5)>0
//五年的營業利益趨勢往上
then ret=1;

上述的腳本要挑出來的股票有兩個條件

1.過去五年每年營業利益都至少一億

2.過去五年每年的營業利益趨勢是往上的

接下來我們用每季的營業利益,找出那些季營業利益趨勢也是往上的,這是因為年資料是算到去年,我們還是要用今年以來的季資料,來挑出那些還維持一定盈餘品質的公司,所以我寫了另一個選股腳本如下

value1=GetField("營業利益","Q");
 if linearregslope(average(value1,5),5)>0
 then ret=1;

用這個兩個腳本合在一起,共選出64檔股票,名單如下:

083005

接下來,就該是找出那些盈餘品質不錯的公司,如果能維持這樣的盈餘達十年時,其合理價值跟目前的股價落差較大的

要挑出這種股票,我寫了一個腳本如下:

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

根據這個腳本,加上考慮到盈餘的穩定性,我濾掉了金融股,營建股,電子股我只留了電子通路業,這樣共挑出了24檔現在股價跟合理股價相比,折價超過兩成的股票

083004

這些公司之所以跟合理價值有落差,有個很大的原因是因為大家對他們的前景有疑慮,例如這裡面有在景氣谷底的景氣循環股,有台幣升值陰影下的傳產外銷股,是市場的悲觀讓這些公司雖然盈餘品質穩定,但股價反映了當前的各種疑慮。

師父教我最有價值的事情是,當我們發現這些折價的公司時,要做的動作不是馬上跳下去買,而是找出市場什麼時候, 或什麼事件會由悲觀轉成樂觀?

當這樣的事件發生時,就是這些股票折價縮小的時候。

以前師父提過好多的觀念,師父退休了,我也不在資產管理行業了,就用這些回憶的文字,來感謝師父當年的傾囊相授吧。

 

 

尋找野百合的春天~低調獲利穩定股交易策略

我有個老朋友,以前專門跟著投信法人做強勢股,每天殺進殺出,收完盤還會跟我們一起去call 公司。這幾年,迷上了種菜,在市區近郊買了塊地,為了照顧他種的植物,他的交易策略轉成買進大幅修正後的獲利穩定股,今天要介紹的,就是這個現代菜農的交易策略。

他跟我說,追強勢股要花很多時間,要打探消息,要跟研究員請教,還要盯盤,因為投信出股票蠻兇悍的,不盯盤常豬羊變色。其次,投信的最愛是成長股跟轉機股,這些公司的營運情況好就好,不好的時候衰退起來也很可怕,他在種田,消息總是落後人家一大步。

他為了想留多一點時間種菜,開始思考如何找到一個策略,不必一直盯盤,也不必一直盯公司的營運數字,每年還有穩定的策略。

最近,他跟我分享他的幾個策略,其中一個是長期投資政府不會再核准的事業,不過這個不好用腳本來自動執行,另一個策略則是可以用腳本來自動交易,這個策略的核心概念如下:

1.尋找獲利穩定且達到一定規模的公司

2.在這些公司總市值跌到長期平均值一定比例之後買進。

他的邏輯是,這些公司獲利穩定但沒有太多成長空間時,法人及市場會遺忘或忽略,股價極可能隨波逐流,當大盤比較不好時,股價可能跌破長期總市場平均值以下一定的比例,但由於這些公司是屬於獲利穩定的公司,一旦市場信心回復,早晚會有人看到,他說就像是他種菜時發現的野花 ,雖然花期不長,在野地裡,平常也沒人會注意到,但它開的花,還是很香。

我根據他的邏輯,想把它轉成自動化交易的策略,寫了一個選股腳本及一個交易腳本。

選股腳本

value1=GetField("營業利益","Y");//單位:百萬
if highest(value1,3)<lowest(value1,3)*1.2
and value1>200
then ret=1;

這腳本是挑出那些過去三年,每年營業利益都超過2億且波動不大的公司

 

交易腳本

settotalbar(700);
if getsymbolfield("tse.tw","收盤價")
> average(getsymbolfield("tse.tw","收盤價"),10)
then begin
value4=GetField("總市值");
value5=average(value4,600);
if value4[1]<value5[1]*0.7
and close=highest(close,10)
then ret=1;
end;


這是算出過去600個交易日的平均總市值,然後找出前一日收盤總市值低於這平均值七成 且今天收盤價創近十日新高的股票 我拿這個交易腳本,用選股腳本選出來的股票去跑,以下是回測的設定畫面

 

082510

 

 

回測報告如下:

082511

 

符合條件的89檔股票,過去三年一共出現72個交易的機會,平均一年24次,其中49次可以獲利出場,這樣的勝率算是很不錯了,我朋友果然找到一個適合他現況的交易策略。

 

我以前常跟我帶的研究員說,我們做這一行,一定要”勿必,勿固,勿我”,我這朋友懂得這個道理,所以他會因為生活的改變而調整了交易策略。

相反的,在網路發達的今天,我常看到一些財經名嘴及部落客在推銷自己的想法時,總是只有自己的是王道,別人的都是異教邪說,有時候還會在網路上吵起來。

我是覺得交易成功之道不會只有一條,重點在找到合適自己的那一條,別人願意分享,我都心存感激,能不能work,自己照著人家的邏輯寫個程式回測一下就知道了,和氣才能生財,這是另一句我師父常說的話。

 

 

 

 

當好球員手感開始熱的時候~高ROE股進入上漲軌跡時進場

好公司,一旦進入上昇趨勢,績效表現比Buy and hold大型績優股還好,今天,來跟大家介紹這樣的概念,這個概念的成形與對應的策略撰寫,我的靈感來自職棒。

這兩年我看中職時,發現除了鋒哥,智勝,柏融大王這種站上去就覺得會打出去,表現很穩定的球員之外,有一類球員手感熱的時候,打擊率甚至比前面這幾位還高,像是今年連續30場安打的張志豪,去年單場六安打的小師兄林智平,還有像林志祥,林益全都是屬於這一類的選手,這一類的球員資質佳,一旦手感來了,安打全壘打就會連發,單場雙響炮也不意外。

因著這樣的觀察,我在想說,全市場股東權益報酬率最高的公司,如果進到上昇軌跡時,是不是就像是好球員手感開始熱,安打全壘打一支接一支?

剛好先前有跟大家說過,拿ROE最高的前五十名股票長期投資,績效會比買台灣50好,ROE前五十名就像是台灣股票市場表現最好的前五十個明星球員,那麼如果這五十檔股票開始進到上昇軌跡,是不是就像職棒球星手感變好時,打擊率會高到四成以上呢?

那麼如何才能判斷一家公司的股價進到上昇軌跡呢? 就物理學來說,進到上昇軌跡的公司會屢創新高,且底部會愈墊愈高,剛好前陣子有跟大家介紹過一個用區間創新高次數減去創新低次數的指標,我就把它拿來應用。

於是,我先用選股平台找出市場上ROE最高的前50檔股票,名單如下:

082203

然後我再把上述的指標改寫成以下的腳本

input:period(12);
value1=countif(low<lowest(low[1],period),period);
value2=countif(high>highest(high[1],period),period);
value3=value2-value1;
if average(GetSymbolField("tse.tw","收盤價","D"),5)
> average(GetSymbolField("tse.tw","收盤價","D"),20)
then begin

if value3 cross over 4
 
then ret=1;

end;

這個腳本是在找出大盤多頭時,過去12天之內,找出創新高次數減去創新低次數超過4次的公司

我拿這個腳本去回測過去三年,進場後上漲一成才出場,跌5%就停損

回測的結果如下圖

082202

這個回測數字迷人之處在於最大連續虧損率及最大區間虧損率跟最大獲利率等數字比起來,兩者差距很大,也就是說,用這個策略,贏的錢可以很夠手氣不好的時候來輸。

另外一個回測令人印象深刻之處在於,這條淨值圖是一路從左上角往右上角走,中間沒有很大的拉回,可以維持一個穩定的上昇趨勢,意思是這樣的腳本每一年幾乎都可以賺到錢。

 

這種挑好公司然後在其上昇趨勢發動時買進的策略,是長線比較靠譜的作法,如果人間真有聖盃,這是一個可以尋找的路線與方向。

 

最後容我再囉嗦一次,很多能拿來交易的策略,其形成往往在電光火石之間的靈感,十個靈感可能最後只有一個能用,如果沒有學會自己寫腳本,就無法找到這十分之一的機會,我自己兩年前也不會寫腳本,現在寫的腳本也常 漏洞百出,但開始嚐試,多看多問,總是會進步,如果只看不動手,十分之一的機會永遠都不會出現。

 

 

 

 

這根長黑後,大跌的機率有多大?

上週五的一根長黑,對於研究K線型的人來說,它具備了包括K棒收最低等多個K線型態上偏空的訊號,這些訊號,過往出現後,下跌的機率有多大?  我們是否該開始偏空操作了? 我們來看看過去發生這種事的時候,後市是怎麼走的?

上週五的這一根K棒,在K棒型態學上,有幾個意義

082101

1. 它收最低。

2.它一舉跌破前幾日的低點

3.它是高點比前一天高,低點比前一天低且比昨天下跌的空頭包絡線

而且,這三個訊號同一天出現且在一大段漲勢之後,從直覺及經驗上來看,大盤拉回的壓力很大。

我寫了一個腳本,想要找出過往出現這種情況時,大盤後市會怎麼走,但我發現,過去三年,大盤並沒有同時符合這三種情況過,所以我只好把這三種情況分別測試,以下是我測試的過程。

首先,我把這三種情況寫成腳本如下:

condition1=false;
condition2=false;
condition3=false;

input:period(60);
input:days(6);

if highest(high,period)>lowest(low,period)*1.07
and high*1.05>highest(high,period)
//高點離波段最高點不遠
//波段漲幅達一定水準
then begin


//=====空頭包絡線===========
if high=highest(high,days)
//高點創近期最高價
and 
low=lowest(low,days)
//低點創區間最低價
and 
close<close[1]
//收盤下跌

then condition1=true;

//====收盤收最當日最低點=========

if close=low
then condition2=true;

//====盤整後一舉跌破前幾日低點

if highest(high,days)<lowest(low,days)*1.05
and close cross under lowest(low[1],days)
then condition3=true;

if condition1 or condition2 or condition3
then ret=1;
end;

我拿這腳本去跑加權指數,訊號出現後作空,五天後回補,回測的結果如下:

082102

在過去三年,加權指數在上漲後出現上述三種空頭訊號其中任何一種的次數是31次,但如果因為這樣就進場作空,一週之後,賺錢的次數只有9次,22次會虧錢。

我把其中的任何一種情況獨立去回測,勝率都還是只有兩三成,顯示在過去三年指數基本上是上漲的走勢裡,這樣的K 線組合,不見得是盤要大跌的訊號。

但從另外一個角度來看,從上面那張K 線圖裡,我們可以發現,指數在同一天跌破五日及20日均線,且5日均線快跌破20日均線,我去回測了一下這樣的情況,在過去三年出現過六次,其中四次會下跌。

意思是如果這兩天多頭無法收復失土,短線續跌的機率就很多。

 

運用數據來作為決策的依據,是我自從學會XS語法之後,開始採行的方法,這樣的方法,等於是用數據來確認自己的經驗法則,也趁機修正一些邏輯上以偏蓋全的錯誤,另外一個收獲是,因為都是機率問題,所以一旦高勝率的策略輸錢時,我就當成踫到黑天鵝,停損就停損,不會想太多,交易上也比較不會因此而亂了方寸,這是量化交易的好處,一切有所本,不再只是跟著感覺走。

 

 

 

 

 

 

 

大盤檢查表~操盤高手裡的獨特功能

做咱們這行的,見了面,不是問吃飽了沒,而是問盤怎麼看? 為了讓大家可以回答這個問題,操盤高手裡把研判大盤方向的各項數據綜合成一個頁面組,我們稱之為大盤檢查表,讓大家可以每天檢視一下這個頁面組,了解大盤的多空方向,各位也可以自己加上個人自訂的頁面,打造成專屬的大盤檢查表。

這個檢查表在操盤高手的位置如下圖(全球贏家的位置也是在選單”大盤”項下)

082002

打開後,會有像下面這樣分類的頁面組合,分成國際,景氣,資金,籌碼,流向,期權,估值,統計等八個面象,每個面象有不同的觀察頁面。

0 82003

這些頁面是我們收集各方意見,覺得在研判大盤長期趨勢時,需要觀察的各項金融數據,以今天為例,我們來看看透過這個檢查表,我們大致可總結出對大盤的後市看法

首先我們來看

指標利率

在這個頁面裡,提供了各主要幣別及台幣的銀行間拆款利率,這是對資金最敏感的一群人,對於資金成本的結論,我們來看一下各國資金成本的近期走勢

台幣一年期 歐元 日圓LIBO 英鎊 LIBO SIBO

從上面這些圖我們可以看到,一年期的銀行間拆款利率,目前全世界大致都處於歷史低檔區,歐元區甚至已是負利率,唯二短期利率走勢往上的是美元及日圓,中國仍持續在階梯式下跌,全球普遍低資金成本,代表股市的資金行情對多頭仍是很重要的支撐力道。

全球債市

債券市場跟股票市場一向是資金的蹺蹺板,台灣的債券市場更是中央銀行未來利率方向的很重要指標(台灣債券的主要玩家好像能看穿央行想幹什麼?)

082003

從上面這張台灣10年期公債殖利率的走勢圖,我們可以發現,殖利率已經跌到0.639%,代表未來台幣的一年期定存利率還會再往下走,如果那天跌到0.5%,也千萬不要感到意外。

回頭看美國公債市場

082004

從上圖來看,美國長天期公債殖利率在反彈中,代表資金是從債券市場在抽離,這是為啥很多人看空美股,但美股還是下不來的主要原因,因為債市在獲利了結,利率這麼低,錢不往股市走,還真不知道還能去那裡

期貨市場

這個頁面組合提供了全球主要大宗物質,金融指數,匯率的期貨交易行情,例如我們可以在這邊看到小麥,玉米的行情

小麥

玉米

從這兩張圖就可以看出,目前通膨的壓力並不大,各國央行維持低利率,沒有太多後顧之憂,這也是為啥FED一直喊要升息,但在景氣復甦有些疑慮時,一直沒有真的下手,原因就是物價平穩,各種商品價格在長期歷史低檔區

在檢查表當中,另外把布蘭特原油,銅價,鎳價,鋁價,廢鋼,乙烯及半導體B/B值等跟台股個股高度相關的原物料列出來,例如要是半導體B/B值跌破 1,以目前台積電佔加權指數的權重,代誌會很大條

bbRATIO

景氣

我選了五個指標,這些是我觀察全球景氣時最重要的參考依據

bbRATIO 日本景氣 德國商業 美國失業率 PMI ISM

美國,中國,德國跟日本是全球前四大經濟體,看他們的景氣領先指標,可以預測全球的景氣走向,美國多列了一個失業率,是因為美國消費是其經濟的核心動力,而失業率太高會直接傷害美國的景氣。

從上面的這五張圖,我們大致可以得出的結論是,美國景氣正從復甦想要往成長的方向走,大陸則在擴張與衰退的拉扯中,德國表現也不差,最差的是日本。

一個題外話,大家有沒有發現台灣加權指數月線與德國商業氣候點的大方向很同步呢??

資金

資金是股市的動能,資金外流嚴重的國家,股市要好很難,台灣目前的情況是,外資熱,MFI建康,但從M1b來看,本土資金的活躍程度並不明顯

m1b MFI 0 82004

籌碼

這部份大家很熟悉,我就不多說,其中券資比值得一題

券資比

從上圖我們會發現,以往股市作頭時券資比都很低,隨著股市下跌券資比會一路上昇,每次高點都出現在大盤見底後的初昇段,等到券資比往下掉時,就是散戶認輸,這時候股票會漲變成全民共識,通常也就是末昇段的起點。

但今年的數字很奇怪,有點還在軋空的感覺。

流向

這也是大家比較熟悉的部份,特別跟大家提一下申報轉讓

082005

申報轉讓有兩種,一種是真的要賣,一種是要趁股價低點時轉給小孩,因為股價低可以轉比較多張

前者我們看申報家數及申報總市值,後者主要是看申報人數

期權

我們從這個類別的指標來看,主要控期貨者有在平多單,目前市場基本上沒啥恐慌氣氛,但從基差來看,空頭蠢蠢欲動中

082009 082008 082007 082006

估值

這個主要是來看看大盤指數跟我們的經濟實力及企業的獲利能力相比,是高估還是低估

082012 082011 082010

在十年前,股市總市值如果佔GDP的比例達到150%,台股通常就到頂了,後來隨著掛牌的家數變多,這個比例拉到了180~190%左右,現在是172%,差不多是屬於那種上檔無多,但也還不到估值過高的地步

如果從上市大盤PB比來看,台股就相對便宜,這些年跌破1.5倍算是指數超跌區,所以8408以下算超跌,現在是9122,也就是指數離超跌區也就是500點左右。

統計

這部份是一些跟大盤相關的統計數字,特別要提出來的是上市上櫃公司整體營收的表現

 

082013

 

這是長線影響台股最基本的因素,以七月份的營收來看,整體上市公司營收年增率是1.25%,但比六月衰退了2.52%,累計營收跟去年同期比衰退了2.63%。

綜合來說,全球在走資金行情,短線多頭在獲利了結,空頭蠢蠢欲動,基本面不算太好,國內資金動能也不算太好,但全球利率在超低水準,台股估值也尚未過度高估,所以拉回後還是會走個股行情,靜待下半年企業業績的表現。

以上是我從操盤高手的大盤檢查表所得到的結論

這項功能是在操盤高手的免費功能中,各位不妨每天看一看,培養一下大盤多空方向感

 

 

從半年報看台灣消費趨勢

半年報陸續公佈中,每次財報公佈時,我總愛從一些民生消費相關公司的數字,來研究台灣消費者的心思動向,這次的半年報裡,我看到了幾個趨勢,來跟大家分享

一,滅頂在持續中

2016081901

從上面這張圖我們可以發現,味全受頂新拖累的情況,還在持續中,而且這兩季營年跟去年同期比,都還有很明顯的衰退,本業持續虧損中,唯虧損的金額在縮小中。

二,超商業績,毛利持續改善中。

2016081902

 

081907

如果從營收來看,不管是統一超還是全家,2012到2014其實有些停滯不前,今年又看到往上走的情況,毛利率則一路的上揚,全家的毛利率更是達到37%,顯然便利超商在店裡設坐位,賣咖啡,搶外食市場,這件事是做對了,台灣這股特殊的超商消費文化,目前還嗅得到不斷創新的動能。

三,連鎖餐廳一個市場,各自表述。

之前一度單季虧損的王品,營收及獲利都略有改善,股價也漲了一陣子,但從第二季的財報來看,只能說內部cost down的成績有出來,但來自消費者的回籠潮還有待觀察,所以會看到營業利益有上來,但營收還在低檔區。

081908

 

但經營型態類似的瓦城,它的情況就屬於仍在穩定成長的階段

081909

這行業一般都是第一季及第三季是旺季,第二季及第四季是淡季,特別是第四季最淡,但目前第二季交出來的成績表現比預期的好,不過後頭新的產品線能不能像前幾個那麼好,還需要觀察。

我很留意這個行業,原因在於台灣的店面租金應該下降的壓力會比上昇的可能性大很多,加上愈來愈熱的天氣似乎會把人往有冷氣的商場趕,連鎖餐廳如果做出口碑,是有獨特性的競爭力,這兩家率先在資本市場籌資金的公司中,目前後者算是氣勢如虹,前者 則需要重新贏得消費者的認同。

 

四,電子商務龍頭過的很好,細項就有些掙扎

台灣電子商務四家掛牌公司,情況分兩種,走電視購物跟網購的富邦媒及網家,第二季跟第一季比都是呈現季節性衰退,但跟去年同期還是成長,這兩個龍頭的情況都還在成長軌跡中

8044

 

8454

這兩家的獲利跟市場地位,應該是很難撼動了

在細類部份,作線上租屋,寶物等交易媒合的數字科技,營收盈餘表現不差,但成長動能有些停滯,先前的成功模式,複製到人力仲介這個領域,要直接挑戰業界龍頭,難度比較大,不過價格破壞一直是數字的強項,成或敗,還待觀察。

5287

 

 

最後來看商店街

4965

 

這家公司在電子商務裡頭是屬於B2B2C,營收成長動能是有些減緩,第二季季節性衰退也合理,這家公司最大的麻煩是毛利率掉的太兇了

VC VN

網路開店的商務模式,熱潮過後,需要的是專門店的深耕思維。

 

以上四點是我在看半年報時看到的一些跟消費市場有關的心得,線下經濟感覺要各憑本事,特別是信任感很重要,線上經濟則是大者恆大,還在享受產業成長的紅利。