根據過往的經驗,上市公司總市值大約佔gdp的比例約是在1倍到1.5倍之間,超過1.5倍表示市場過度樂觀,低於1 倍則代表市場過度悲觀。長線上我會留意一下這個比例,不讓自己衝昏頭,也讓自己在別人悲觀時勇於進場。
股市老手常勸戒我們,千萬不要伸手去接正在往下掉的刀子,但又老是有人跟我們說要危機入市,兩邊說的都有道理,但貿然去接又怕套在半山腰,最好是能夠有什麼訊號讓我們看到時,可以知道已經有大咖的進場在這邊護盤了,今天要介紹的就是這種連續好幾天都留下影線的股票。
我們怎麼找出近來低檔有撐的股票呢,請參考以下的腳本
input:short1(5),mid1(20); setinputname(1,"短期平均"); setinputname(2,"長期平均"); if truerange<>0 then begin if close<=open then value1=(close-low)/truerange*100 else value1=(open-low)/truerange*100; end; value2=average(value1,short1); value3=average(value2,mid1); plot1(value2,"短期均線"); plot2(value3,"長期均線");
這個腳本的概念是找出下影線佔真實波動區間的比例,然後看看這數據短天期的移動平均線是不是遠大於長天期的移動平均,如果發生這種情況,就表示近幾日股價下跌時都有一股拉回來的力量在支撐。
以光環為例,請參考下圖
當這種情況出現時, 短線上至少有反彈空間。
不過要提醒大家的是,逆市作多手腳要快,看不對還是得走啊!~
這三天,股票跌成這樣,開始有朋友在問我:”你覺得XXX該砍還是該留?? 我個人在研判這件事時,主要是靠幾個 籌碼面的自設指標,用來判斷主力有沒有跑掉?,以及這檔股票是不是只剩散戶在買?我的邏輯是如果主力沒有跑掉,也還站在買方,那就有解套波的可能,如果盤沒有太差我就等反彈再來賣,反之,我就認賠了。
要如何偵測主力跑了沒? 我用的是控盤者買超比例,散戶買進比例及散戶賣出比例這三個指標。
XS把每一檔股票每一家分公司每一個價位買進金額超過100萬的稱為控盤者買進張數,同樣的標準,也算出了每檔股票的控盤者賣出張數,兩者的差就是控盤者買賣超。
XS也把每一檔股票每一家分公司每一個價位交易金額低於50萬的稱為散戶買進及散戶賣出
我們透過Getfield 的語法可以把這三個欄位拿來設計成自訂指標,我分別寫了以下的幾個腳本
第一個腳本如下:
input:period(5); value1=GetField("散戶買張"); if volume<>0 then value2=value1/volume*100; value3=average(value2,period); plot1(value3,"散戶買進比例");
第二個腳本如下:
input:period(5); value1=GetField("散戶賣張"); if volume<>0 then value2=value1/volume*100; value3=average(value2,period); plot1(value3,"散戶賣出比例");
第三個腳本如下:
value1=GetField("控盤者買賣超張數"); if value1>0 then value2=value1 else value3=value1; if value1>0 then begin plot1(value2); noplot(value3); end else begin plot2(value3); noplot(value2); end;
從這三個腳本做自訂指標時,我們可以透過這些指標來研究主力跑掉了沒有?
1.如果控盤者從買超變賣超那就要小心主力在落跑
2.如果散戶買進比例跳昇,這也是主力落跑的跡象
3.如果散戶賣出比例降低,代表賣的極可能是主力。
舉幾個圖為例
智邦控盤者仍買超,可成的控盤者就已經落跑了。
以上是我的研判方式,大家可以根據這些欄位,設計出更迷人的策略
每年年初,朋友們都會針對今年的選股方向,交換意見,去年我提了汽車零組件,寬頻及工業電腦中幾檔股票,漏掉了太陽能及生技股。今年朋友們的選股方向還是follow產業大趨勢: 汽車電子是最大公約數,傳產外銷受台幣趨貶影響,也有人提及,至於過去幾年的主軸: 智慧型手機,受fintech衝擊的金融股以及受地緣政治影響的房地產相關個股,則大家公認是能見度最低的,至於我,則提出了”復仇者聯盟”這樣的概念。
我認為,隨著MSCI逐漸地提高A股的比重,台股的權值股會有外資的賣壓,這幾年,台灣上市櫃公司中,那些表現不如以往的,有不少是因為進入轉型期,這些公司最普遍的特色就是股價很便宜,本益比很低。
這些公司在歷經了幾年的轉型,陸陸續續在這兩三年裡擺脫過往營收停滯或衰退的窘境,但市場需要更長的時間來觀察其是否真的轉型成功,因此其股價還沒有很亮眼的表現。
今年可以預期的是大環境變數較多,如果這些公司在如此兇險的環境中仍能穩定的維持與往來不同的表現,我覺得市場早晚會還他們公道。
容我舉 1476的儒鴻為例,我們從下面這張圖可以發現,儒鴻跟其他紡織業一樣,其實經歷了很長的轉型期,從2000年到2008年,這家公司的股價大多在十幾塊錢,有時還會跌破10元。
我們看他在2009年起漲到現在,歷年的營收獲利表現
從上面這張圖我們會發現,這家公司2009年營收雖然比2008年衰退,但跟過去幾年相比,已經有了明顯的成長,稅前淨利更是站上了六億元這種過往看都沒有看過的高點,
但它的股價還是長期都在20元以下,一直到2010年八月,才開始受到市場的重視。
這是因為一開始市場只覺得儒鴻的數據跟以往不大一樣了,但還不確定這是因為旺季的關係,是因為景氣的關係,還是真的是轉型成功,體質已經跟以往不同所致。但如果我們觀察毛利率時,就會發現2009年的毛利率已經創過去歷年來的最高點達到24.82%。
當然現在如果再來推薦儒鴻算是馬後炮了,但如果以儒鴻當例子,我們是不是可以找到一些公司
1.過往曾有不錯表現(表示老板及經營團隊能力不差)
2.這幾年因為投資錯誤,景氣不佳等因素而停滯或衰退,導致股價明顯消風
3.最近營運已開始突破以往無法企及的高點
如果符合這三個條件,就值得把這樣的股票納入觀察名單,好好研究追蹤,我把這些公司統稱為復仇者聯盟。
我的想法是今年大股票可能得超跌後才能有行情,只有那些沒有大賣壓的公司,才有機會有比較長線的多頭走勢,特別是只有那些基本面出現明顯轉機的公司才比較能獲認同。
基於上面這三個原則,我用XS的選股平台寫了以下的選股腳本
符合條件的股票共有107檔,其中股價淨值比較低的如下圖
這邊要特別強調的是,不管是毛利率,營業利益創十二季來新高,都只是轉型成功的一個可能跡象,其實也可以用月營收創三十六個月來新高,月營收年增率連兩個月都超過兩位數等其他不同的選項,重點是在於找出個股營運數字的”明顯好轉”證據,然後再去尋找數字背後的原因,這樣才能找到復仇者聯盟的股票。
今年是2016股市開盤的第一天,祝大家今年復仇成功。
先鋒基金集團的創辦人John Bogle前一陣子預估未來十年美股的平均報酬率只有4%,他的看法引起了不少的討論,我比較在意的是他的推論過程,今天是2015年的最後一天,在迎接2016的台股市場之前,我來分享這位美國股市超級大咖老杯杯的股票預期報酬率模型,並且根據他的模型寫了一個腳本,來找出台股市場中預期報酬率較高的股票。
John Bogle這位老杯,他的豊功偉業我想走投資這一行的應該不陌生,上個月他接受moriningstar的專訪時,他預估S&P500企業的股息收益率大概約2%,盈餘的成長率則是5%,但他認為目前的整體本益比是20倍,但長期平均水準是15倍,所以他認為未來美股的投資報酬率會是股息收益率加上盈餘成長率再考量整體本益比的調整,因此,他預測未來十年的美股平均報酬率會落在4%左右。
從這段訪談,我們可以發現,他對股票預期報酬率的計算方法如下:
根據這樣的思考,我寫了一個腳本來計算台股的預期報酬率
input:ratio(10,"報酬率下限"); input:pe1(15,"預估市場整體本益比"); value1=GetField("累計營收年增率","M"); value2=GetField("股利合計","Y"); value3=value2*(1+value1/100);//預估股息收益率 value4=value3/close*100;//股利殖利率 value6=GetField("營業利益","Q");//取得最近一季營業利益,單位百萬 value7=GetField("最新股本");//單位億 if close<>0 then begin value8=(value6*4)/(value7*10);//用最近一季營業利益估算的每股盈餘 value9=close/value3;//預估本益比 value5=value1+value4+pe1-value9;//預估盈餘年增率+預估股息收益率 end; if value5>ratio and value1<30 and value3>5 then ret=1; outputfield(1,value1,1,"累計營收年增率"); outputfield(2,value4,1,"股利殖利率"); outputfield(3,value9,1,"預估本益比"); outputfield(4,value5,1,"預估報酬率");
在這個腳本中
1.我是用累計營收成長率來代替盈餘成長率。
2.我用累計營收成長率跟去年的股利來估新一年的股利。
3.我用最近一期的營業利益來估算EPS及本益比。
4.市場整體本益比我是抓15倍
5.我濾掉了累計營收成長超過三成,以及股息殖利率不到5%的股票
透過這個方法,找出來明年預期報酬率超過15%的股票如下:
以上的作法,各位可以自行修改腳本及調整參數,但是老杯杯的模型基本上,是要讓我們全心全力把研究的力氣花在企業的股利殖利率,盈餘成長率上,這點是值得我們參考的。
因著最近的XS語法教學,與XS的使用者有了更多的互動,我發現,最常被問到的問題是:”你怎麼知道要用這樣的方式來選股? 你怎麼知道要用這個方法來制訂交易策略?”,我的方法除了經驗及看書之外,最常做的方式就是去尋找每一檔大漲過的股票的共同特點,然後用它來制定自己的選股策略。
在跟程式交易入門者互動的過程中,我發現,當大家學會寫程式之後,接下來所面對的問題是: 不知道要如何寫出屬於自己專屬的交易策略?
我自己的作法如同下面這張圖:
根據這個流程,首先我們得找出所有曾經大漲過的股票,然後看看他們有那共同特徵。
為了作到這件事,我寫了下面這個腳本
input:aday(20150824,"漲跌幅計算起點"); input:ratio(10,"漲跌幅過濾標準"); input:trendmark(1,"1:超過標準,2:低於標準"); value1=getbaroffset(aday); if trendmark=1 then begin if close>close[value1]*(1+ratio/100) then ret=1; end; if trendmark=2 then begin if close<close[value1]*(1+ratio/100) then ret=1; end; if close[value1]<>0 then value2=(close-close[value1])/close[value1]*100; setoutputname1("起始日迄今漲跌幅%"); outputfield1(value2); setoutputname2("股本(億)"); outputfield2(GetField("最新股本")); outputfield(3,GetField("累計營收年增率","M"),0,"累計營收年增率"); outputfield(4,GetField("股價淨值比","D"),1,"股價淨值比"); outputfield(5,GetField("董監持股佔股本比例","D"),1,"董監持股比例"); outputfield(6,GetField("股利合計","Y"),1,"股利合計"); outputfield(7,GetField("投信持股比例","D"),1,"投信持股比例"); outputfield(8,GetField("公司掛牌日期"),0,"公司掛牌日期"); outputfield(9,GetField("營業毛利率","Q"),1,"毛利率"); outputfield(10,GetField("營業利益成長率","Q"),1,"營業利益成長率");
這個腳本可以很快的找到從特定日期以來,漲跌幅超過一定百分比的所有股票,並顯示出這些股票的相關統計數據
例如我想找到從今年一月一日以來,到今天為止,漲幅超過五成的股票有那些?
我就把這個腳本拿來制訂了一個選股策略,這個策略的參數設定如下圖
然後我就可以挑出今年以來漲幅超過五成的股票
並且由於我在腳本中用outputfield的方式,讓電腦在列出這些符合條件的股票的同時,也列出這些股票的相關數據,所以透過XS選股平台挑出來的股票,呈現方式如下:
如上圖,今年漲幅超過五成的一共是70檔,我們可以按各個欄位的標題,電腦會根據這個標題的數據重新排序
透過這個排序的功能,我們會發現這些股票有幾個共同的特徵
1.股本最大的是85億的榮化,其中61檔股本低於30億元。
2.絕大多數累計營收年增率是大於零
3.絕大多數董監持股比例大於兩成
4.大部份是有發放股利
5.大部份毛利率超過15%
6.大部份營業利益成長率是超過兩位數
接下來我們可以把這個欄位通通再換成其他的欄位再重跑一遍,然後再觀察這70檔股票還有那些共同的特徵。
這樣子不斷的嚐試,我們就可以訂出屬於我們自己的選股策略。
有多位朋友不約而同的提到如何透過語法去描述兩個時間序列的”背離”,我試著用線性回歸的角度來跟大家分享我自己設計的”背離”腳本。
首先,XS內建函數中有一個叫作線性回歸斜率(linearregslope),如果您在腳本編輯器中按F1,會跳到函數的說明頁,您輸入linearregslope按enter,會看到以下的說明
什麼是線性迴歸呢?
就像上圖一樣,我們找出一條線, 這條線距離所有要計算的價位最近,就是所謂的線性迴歸,透過線性迴歸,我們可以找出價位群體的方向,這條線的斜率就是linearregslope。
當數據呈現上昇分佈時,線性迴歸的斜率是正的,下降分佈時,線性迴歸的斜率是負的。
我就是運用這個原理,寫出以下的背離函數
input:price(numericsimple),index1(numericsimple),length(numericsimple); if length<5 then raiseruntimeerror("計算期別請超過五期"); value1=linearregslope(price,length); value2=linearregslope(index1,length); if value1>0 and value2<0 then deviate=-1 else if value1<0 and value2>0 then deviate=1 else deviate=0;
透過這個函數,我們就可以比較兩個數列,看看他們是否出現背離的情況,這個函數的寫法是當第一個值下跌而第二個值上昇時,函數的回傳值是 1 ,相反的則是-1 ,若兩個值同方向則是傳回0。
假設我們想找出收盤價下跌,但跟10日RSI上昇的股票,我們就可以運用這個函數,寫出下面這樣的腳本
value1=rsi(close,10); if deviate(close,value1,10)=1 then ret=1;
透過這個函數,我們就可以隨時把兩個時間序列拿出來檢定是否有背離的現象了。
前天提到我朋友是價值型投資者,挑了一些股票讓我幫他寫盤中進場點的策略。
今天來分享他挑股票的邏輯
他挑的價值型股票基本上有三個原則
1.股價遠低於每股淨值。他認為這種股票有行情時走的比較遠。
2.來自營運的現金流量有達到一定水準。不然就會變成坐吃山空的股票。
3.流動資產減負債的淨額要超過總市值一定比例。
我根據這三個原則,設了一個選股法
其中第一條是一個我自己寫的選股腳本,內容如下:
input:ratio(80,"佔總市值百分比%"); if (GetField("流動資產","Q")-GetField("負債總額","Q"))/100>GetField("總市值","D")*ratio/100 then ret=1;
根據這三個條件選出來的股票如下圖
我們可以發現,除了證券股之外,大部份都是這幾年營運陷入衰退的公司,所以總市值才會跌到這麼低,不過由於營運現金流量達到一定的水準,代表這種公司元氣還在,就等轉型有成,找出一條新的路
這些公司,就讓電腦幫著留意盤中價量是否出現變化,畢竟春江水暖鴨先知,股價往往走在轉機消息的前面。
各位可以自行調整這三個條件的參數, 或是再加些條件, 調成你自己的價值型投資原則
剩七個交易日今年就結束了,每年到了這個時候又是投信拼績效的時候了,年度績效第一名的桂冠大家都想搶,不過今年勝負已大至底定
真的有機會拼第一名的,應該是宏利投信,富蘭克林華美,第一投信及統一投信這四家旗下的基金。
我以前寫過一個腳本,專門用來在年底前找出投信可能作帳的股票
這個腳本如下:
input:r1(50),day(30),r2(15),r3(5000),r4(30); setinputname(1,"股本上限單位億"); setinputname(2,"天期"); setinputname(3,"區間買超天數"); setinputname(4,"區間合計買超張數"); setinputname(5,"漲幅上限"); value1=GetField("投信買張","D"); value2=GetField("最新股本");//單位:億 condition1=false; condition2=false; condition3=false; if value2<r1 then condition1=true;//股本小於50億元 value3=countif(value1>50,day); if value3>=r2 then condition2=true;//近30天裡有超過15天買超 if summation(value1,day)>r3 then condition3=true;//近30天合計買超超過5000張 if condition1 and condition2 and condition3 and close<close[day-1]*(1+r4/100) then ret=1;
利用這個腳本,我們可以找出那些符合以下腳本的股票
1.股本不大投信拉得動
2.最近常買超
3.買超達到一定張數
4.漲幅還沒有到拉上去沒人跟的地步
我用這個腳本調整了一下參數,條件放的極寬
1.股本小於100億元
2.過去五十天有15天買超
3.買超張數超過2000張
4.過去五十天漲幅低於200%
結果跑出了61檔股票
大家可以把這個腳本拿回去改成自己想要挑的基金作帳選股法。
先前有提到資深業內會進場的型態之一是平台整理後的突破與跌破,就像下面這個圖這樣的走勢。
剛好XQ系統內建有一個專門找出這種股票的腳本,我就直接PO上來給大家參考。
input:LS(0); setinputname(1,"多空設定"); settotalbar(300); setbarback(50); variable:HP(0);HP = Highest(H[1],20); variable:LP(0);LP = Lowest(L[1],20); variable:MID(0); MID = (HP+LP)/2; variable:Q1(0); Q1 = (HP+MID)/2; variable:Q2(0); Q2 = (MID+LP)/2; variable:i(0),j(0); j=0; for i = 1 to 20 begin if (C[i] > MID and C[i+1]< MID) or (C[i] < MID and C[i+1]> MID) then j+=1; end; condition1 = HP > LP*1.14 and j >8 and average(v,20)>200; if LS>0 and H >HP and condition1 then ret=1; if LS<0 and L <LP and condition1 then ret=1;