F-Score選股法

By | 2015-05-01

在價值投資界,有位叫Joseph D. Piotroski 的老兄,他寫過一篇文章,文章的題目叫作Value Investing: The Use of Historical Financial Statement Information to Separate Winners from Losers
中文我是翻成”價值投資之透過財報分辨出贏家及輸家”。
在這篇文章中他用財報的一些指標,採取計分卡的方式,發明了一個叫作F_Score的評分標準,然後找出F_Score分數高的公司,組合一個投資組合,然後去作回測,然後他發現這樣的公司如果股價淨值比低於一定水準後就進場,投資組合的年化報酬率可以達到13.4%,比單純用股價淨值比作為投資標準,要高出7.5%,如果用同樣的邏輯也建構一個高股價淨值比且低F_Score的投資組合,然後合成一個多空雙向操作的組合,年化報酬率達到23%。
F_Score的計算方式很簡單,它列了九個財報的條件,符合的就得一分,不符合的就得零分,所以全部符合F_Score就是得九分,全部不符合就是得零分。
這九個條件如下:
1.資產報酬率(ROA) 大於零
2.今年的ROA大於去年的ROA
3.營運活動的現金流量 大於零
4.當期淨利大於營運現金流量
5.今年的負債比率小於去年的負債比率
6.今年的流動比率大於去年的流動比率
7.今年沒有辦現金增資
8.今年毛利率大於去年的毛利率
9.今年資產週轉率大於去年的資產週轉率
我試著用這樣的精神用xs的選股平台去設定選股條件,條件如附圖,但九大條件中的第四點跟第七點無法用選的,所以我用寫了一個選股腳本如下:

value1=GetField("資產報酬率","Q");
value2=GetField("來自營運之現金流量","Q");//單位百萬
value3=GetField("本期稅後淨利","Q");//單位百萬
value5=GetField("負債比率","Q");
value6=GetField("流動比率","Q");
value7=GetField("現金增資佔股本比重","y");
value8=GetField("營業毛利率","Q");
value9=GetField("總資產週轉率(次)","Q");
var:score(0);
score=0;
if value1>0 then score=score+1;
if value1-value1[3]>0 then score=score+1;
if value2>0 then score=score+1;
if value3>value2 then score=score+1;
if value5value6[3] then score=score+1;
if value7value8[3] then score=score+1;
if value9>value9[3] then score=score+1;
if score>=8
then ret=1;

供大家參考
跟大家介紹F_Score的想法是這樣的,國際金融情勢詭譎多變,我們有時忙著工作,又顧不上留意盤中的買賣點,如果我們可以發展出一種機制,分別挑出一組作多的投資組合,以及另外一組作空的投資組合,然後一邊作多一邊作空,然後再透過機制定期去 調整組合,maybe這是一種比較有紀律且可以避開系統風險的操作方式,以往沒有XS,這樣機械式的調整組合方式可以比較難為,現在有了XS,實務上應該變得更可行。
fscore