Author Archives: 發財橘子

好公司,夠便宜~David Dreman的選股方法

David Dreman是一位偉大的基金經理人,他最常被津津樂道的是2000年網路泡沬時,因為挑不到低PE的股票而績效大輸同業,最後當大家虧了一屁股的時候,他的基金績效還是維持在高檔。他之所以能夠維持好的績效,秘訣就是挑到好的公司,然後在股價夠便宜時進場。

所謂的好公司,就是公司達到一定的規模,而且不管ROE或是獲利成長率都優於其同業。

所謂的夠便宜,就是不管股利殖利率還是本益比,都夠低。

我根據他的方法,列出了一個選股的策略如下

2018111901

其中所用的預估本益比腳本如下

input:peuplimit(15,"預估本益比上限");
value3= summation(GetField("營業利益","Q"),4); //單位百萬;
value4= GetField("最新股本");//單位億;
value5= value3/(value4*10);//每股預估EPS
if value5>0 and close/value5<=peuplimit
then ret=1;

這腳本是拿最近四季的營業利益來估算來自本業獲利的本益比,我拿這個選股策略去回測過去三年,回測報告如下

2018111902

這個方法在過去三年大部份的時候都有很好的勝率,直到今年七月之後,才開始失效,過去三年,勝率還是接近三戰兩勝。

 

長期盤整後的資金流向轉正

在定選股策略時,那些長期盤整後發動攻勢的股票最受青睞。但很多技術分析都要等到股價創高了才能出現訊號,所謂量是價的先行指標,所以我們試著去尋找先前區間波動不大,但近幾日佔大盤成交量開始上昇的標的,看看能不能比其他訊號早一點挑到即將要脫離盤整的公司。

以下是我設定的選股條件

2018111205

其中包含了兩個腳本,分別如下

佔大盤成交量比開始上昇

value1=GetField("佔全市場成交量比","D");

SetTotalBar(5);

if value1[4]=lowest(value1,5) and 
 value1=highest(value1,5) and 
 close crosses above average(close,5)
then ret=1;

SetOutputName1("佔全市場成交量比(%)");
OutputField1(value1);

區間波動小於N%

input:n(10,"區間波動範圍%");
input:period(30,"區間長度");

if lowest(close[1],period)*(1+n/100)>highest(close[1],period)
then ret=1;

這個腳本挑出的好例子如下

2018111204

如果去回測過去三年,出場訂在二十天後,回測報告如下

2018111206

我檢視這個選股策略裡虧錢的交易,發現

1.如果在整理前已經大漲過一段的,失敗的機率比較高。

2.如果股價在出量時離整理的底部較近,也有可能一上去馬上踫到盤整區上面的賣壓而衝不過去。

3.如果整理的時間不夠長,之前又是下降趨勢,一下去就馬上踫到解套賣壓。

所以挑出來的股票最好再參照一下先前的走勢。

 

長期未破底後創新高的選股策略

長期未破底後創新高,是空方在長期無法越雷池一步後,多方終於奮力一撃,開始發動攻勢,這樣的選股策略,在空頭市場,因為大部份的股票都會創新低,所以基本上會出現的訊號就不多,由於大部份的選股策略,在空頭市場的時候,績效都不會好,這個策略就相對比較不會出現這樣的情況。

我設的選股條件如下

2018111203

其中長時間未破底後創新高的腳本如下

input:period(90);
input:percent(25);
setinputname(1,"未破底區間");
setinputname(2,"盤整區間漲幅上限");
condition1=false;
condition2=false;
value1=lowest(low,period);
if value1=low[period-1]
then condition1=true;
if highest(high[1],period)<=value1*(1+percent/100)
then condition2=true;
if condition1 and condition2 and close crosses over highest(close[1],period)
then ret=1;

另外我加了四個條件式選股,其中兩個是避免挑到短期大漲的股票,成交量則是考慮到長期大底後的創新高,應該是要帶量才比較合理,至於ROE要大於10%,則是希望挑的股票至少有一定的基本面。

我用這個選股策略去回測過去三年,回測報告如下

2018111202

過去三年一共出現102個交易訊號,其中接近六成是可以獲利出場。

我檢視那些虧錢的交易,發現那些先前已經有不小漲幅的股票,如果又靠一根長紅上攻創新高,後面失的率比較高,特別是有些賊股票主力是靠這樣的方式在騙線,所以應用這個策略出訊號時,要特別留意股票的股性及有沒有偷拉的情況。

回檔整理後的加速上漲

在技術指標中我們常用momentum(MTM)來衡量價格的動能,MTM的算法很爽快,就是今天收盤價減n日前的收盤價,一行搞定。

這個很簡單的算術算出來的指標,它代表的意義是什麼呢?
如果股價每天都漲1塊錢,MTM會是怎麼呈現? 答案是在0以上走平,每天都跌一元呢? MTM會在0以下,也走平,不漲不跌呢?每天價格都一樣, MTM當然會等於0
所以我們可以把MTM的不同形態整理成一個表格如下:
MTM走勢 意義
在0附近走平 股價不漲不跌
在0以上走平 股價每天漲,價差一樣,或是上漲的速度跟n日前一樣
在0以下走平 股價每天跌,價差一樣,或是下跌的速度跟n日前一樣
在0以上呈上升趨勢 股價以比原先更陡的方式上漲,或是股價止跌回升
在0以下呈下降趨勢 股價以比原先更快的速度下跌,或是股價作頭下跌
在0以上呈下降趨勢 跟n日前比起來漲速變緩
在0以下呈上升趨勢 跟n日前比起來跌速變緩

那如果把MTM再計算一次動能呢?那就可看出動能是在加速還是減緩

下面的腳本,就是在找大跌後動能在加速的標的

input: Length(10, "天數");

value1 = Momentum(Close, Length); 
value2 = Momentum(value1, Length);

if value2 crosses over 0 
and close[60]>close*1.1
then ret=1;

以下就是一個不錯的例子

g73

把這個策略應用在基金投資上的回測報告如下

g72

布林值指標翻多

布林值是很常被應用的技術分析工具,布林通道的的值是股價的移動平均線再加上N個股價的標準差。這個指標是來自於統計學的概念,統計學裡,變異數是把每一點到平均線的差的平方加總起來除以計算天數,這個數字愈大,代表股價的波動愈大。標準差則是把變異數開根號,統計學上教我們,如果股價的波動是屬於一種常態分配,那麼股價的波動範圍,有超過95%的機率會在正負兩個標準差之內。

所以如果布 林值的上下兩條線在收斂,代表波動幅度在變小,股價陷入整理,這時候如果股價創高,且突破均價,那就有可能是一個多頭的起點。

根據這樣的邏輯,所寫的腳本如下

condition1=false;
 
setbackbar(20);
input:length(20);
variable:up1(0),down1(0),mid1(0),bbandwidth(0);
up1 = bollingerband(Close, Length, 2);
down1 = bollingerband(Close, Length, -2 );
mid1 = (up1 + down1) / 2;

bbandwidth = 100 * (up1 - down1) / mid1;

if linearregslope(up1,10)[1]<0
and linearregslope(down1,10)[1]>0
and bbandwidth[1]*1.1<average(bbandwidth,20)[1]
and close crosses over mid1
and close crosses over highest(high[1],2)
then ret=1;

以下的例子,就是符合上述腳本的標的

g71

這個策略在基金投資的

回測報告如下

g70

 

 

 

葛拉罕的價值投資標的

巴菲特的老師葛拉罕,曾經訂過一個選股條件 :總市值小於流動資產減總負債的2/3

意思是,如果一家公司股價跌到總市值比流動資產減總負債還低,還且還低了不少,那麼這家公司如果以目前的股價全數買下來,光拿流動資產去還債後,還有剩。

當然如果一家公司股價跌的這麼慘,通常是因為虧錢,市場預先把未來會虧的錢扣掉了。

我實際上去回測這個選股條件在台灣到底靈不靈,結果發現勝率還真的不低,有四戰三勝的戰績。

我寫了一個選股腳本來選符合這個條件的股票

value1=GetField("流動資產","Q");//單位是百萬
value2=GetField("負債總額","Q");//單位是百萬
value3=GetField("總市值","D");//單位是億
if 2*(value1-value2)>3*value3*100
then ret=1;
if value3<>0 then value4=(value1-value2)/(value3*100);
outputfield(1,value4,2,"流動資產減負債佔總市值比");

我拿這個腳本去回測過去十年的歷史數據,出場是設在180天後,回測報告如下

2018110803

十年一共有253個進場機會,其中199次可以獲利出場勝率高達78%,單筆平均報酬率接近六成。

在多頭市場,這樣的標準很難挑到股票,但在空頭市場,這樣的公司就可能出現,所以空頭市場反而應該啟動這個選股策略,以下是目前符合這個策略的股票

2018110804

各位請從中間再去挑您覺得會有東山再起機會的個股,這種股票才是這個策略挑出來的股票裡,真正會讓您賺到大錢的標的。

近幾日總收黑

如果在空頭市場,過去七天有五天是收黑,而且成交量比二十日均量減少超過兩成,那麼這是人氣衰退的重要訊號。

對應的腳本如下

if countif(close<open,7)>=5
//過去七天有五天以上收黑
and volume*1.2<average(volume,20)
//成交量比二十日均量減少超過兩成
then ret=1;

跌破上昇趨勢

一個多頭市場的末升段,往往會出現空頭全面潰敗,市場一面樂觀的飆漲行情,這時上漲的角度會是又急又陡,如果這樣的趨勢線被跌破了,那就可能是整個波段行情的結束。

基於這樣的想法,所寫的腳本如下

input:Length(10); setinputname(1,"上升趨勢計算期數");
input:_Angle(30); setinputname(2,"上升趨勢角度");

settotalbar(Length + 3);

variable: TrendAngle(0);
variable: TrendAngleDelta(0);

if Close< Close[1] and Close[1] <Close[2] and Close[Length]>0 then begin

linearreg((high/Close[Length]-1)*100,Length,0,value1,TrendAngle,value3,value4);
 
TrendAngleDelta =TrendAngle-TrendAngle[1];
IF TrendAngleDelta-TrendAngleDelta[1] < -10 and close >Close[Length] THEN RET=1;
 
end;

這樣的賣出訊號,出現的次數有限,可以檢視其出現的位置是否真的是一大段的漲幅的最後。

井字型死亡交叉

井字型死亡交叉是四個天期的移動平均線呈現兩條短天期均線向下,兩條較長天期均線向上的排列方式,可以用以下的圖來表示

C73

通常這種情況極有可能是一個作頭的訊號。

對應的腳本如下

variable:a5(0),a10(0),a20(0),a30(0);
a5=average(close,5);
a10=average(close,10);
a20=average(close,20);
a30=average(close,30);

if linearregslope(a5,5)<0
and linearregslope(a10,5)<0
and linearregslope(a20,5)>0
and linearregslope(a30,5)>0
then ret=1;

週月線死亡交叉

週線跌破月線,是移動平均線在應用上一個很常見的賣出訊號。特別是如果出現這個訊號之前,價格是屬於盤頭的形態,那就有更高的可信度

以加權指數為例

c72

我們可以發現,這個賣出訊號出現的頻率不低,在空頭市場,之後往往出現大跌一段的走勢,但在多頭及盤整市場,就未必那麼靠譜。所以這個賣出訊號在應用上,還是要考量目前整體大環境是否有利於資金往股票市場匯聚,如果全體市場一片榮景,只有個別領域或市場出現這個訊號,那就需要更多其他賣出訊號來佐證了。