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

By | 2016-09-07

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

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

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,"企業營運健康分數");

 

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