Author Archives: 發財橘子

2020年的目標:跟著大家,一起成為投資市場的資料科學家

下週一就封關了,提早跟大家拜年,祝大家新的一年,都能打造出一個更強大的自己。

要過年了,就不跟大家討論個別的交易策略,來跟大家報告XS的過往與未來,更重要的,是跟大家報告我們希望透過XS,未來能提供什麼樣的服務?

2013年的一次內部會議,幾個創業夥伴一起討論未來公司的發展方向,我們共同的結論是,電腦的運算能力會愈來愈強大,可以拿來作為投資決策的各種數據會愈來愈多樣,我們應該要試著提供一個程式語法平台,讓使用者可以根據自己的想法,引用XQ收集的各種財經數據,寫出各種交易策略,然後要可以回溯測試,要可以在制定好決策流程後讓電腦自動執行交易。

之後,就是很長時間不斷地摸索,開發,調整,然後成為各位現在看到的XS

容我跟大家報告一下接下來會陸續完成的功能,以及未來想要做的事情

一,支援交易語法

要完全透過語法作建立部位,加碼,減碼,平倉的各種動作,需要支援交易語法,這一步做完,就可以讓電腦完全自動化執行交易,我們的目標是希望在今年上半年結束前,把這個功能上線。

二,把XS的運算獨立出來,支援64位元

為了讓大家可以透過自己的PC,同時執行更多的交易策略,我們讓XS可以完整的使用到主機的所有記憶體,這項功能目前在測試中,稍後會釋出Beta版讓大家試用看看。

三,把UI整合在一起

XS當初是一部份一部份的開發,在交易語法完成後,最好是可以讓User不要再必須分功能去打開一個一個不同的使用介面,而是直接在同一個介面中作切換即可,我們預計今年下半年開始來做這作事

四,支援更多的財經數據

這段期間,蠻多使用者希望我們支援更多的數據,例如分點籌碼數據,美股財報數據,總經數據等等,也有使用者希望我們可以提供自行匯入data的功能,這些建議,待今年逐筆撮合上線後,我們會思考如何依序的去完成。

五,支援更多的語法

除了支援更多數據,未來也會支援更多的語法,像是特定群組商品同一計算欄位數據的再演算,像是商品與其衍生商品間的連動運算等等,我們會試著應各位的要求,想出對應的演算語法。

六,XS雲端化

有些朋友一直希望可以用租賃我們運算能力的方式,來同時執行各種交易策略,不希望被自己PC運算能力給綁住,希望敝公司可以提供穩定,有備援機制的運算能力,這樣的想法我們有收到,但現實上,要提供這樣的服務,我們有大量的程式需要修改,所以需要一些時間。

七,優化回測報告

我們知道我們的回測報告有些陽春,各位建議修正的部份,我們會開始規劃下去做。目標是希望讓大家可以有一個可以據以優化交易策略的回測功能

我們在開發XS的過程中,有充份體認到,資料科學日新月異,在投資領域裡,資料科學家提出了非常多嶄新的資料分析方式,但我們的目標一直都是,讓使用者可以把自己的想法,透過很容易學習的語法,讓電腦去自動執行,我們希望讓大家不必有很高端的程式設計及統計分析的背景,才能成為資料科學家,我們透過XS,去尋找各種市場高機率重複發生的事情,我們一起發現,原來營業利益及營業利益率同創四年新高且毛利率創五年新高的股票,一旦成交量回升,上漲的機率超過七成,股價被嚴重低估的個股,也具有同樣的情況,即將進入季節性多頭的股票,如果主力買超,短期均線黃金交叉,也有近七成的機率會上漲,這些發現,都是我們不斷在數據中觀察,測試中得到的結論,我相信,隨著xs的功能日漸強大,隨著大家更多的投入及參與,我們會發現更多的投資規則。

在此向大家拜年,2020年的目標,是跟著大家,一起成為投資市場的資料科學家。

 

 

長線客買賣超張數指標

XS提供了一些籌碼相關的欄位,我運用這些欄位,寫過不少交易策略,今天就來跟大家分享一個最近寫的指標 。

之前有跟大家聊過關鍵券商,地緣券商,官股券商及前十大綜合券商總公司的意義,這些都是屬於長線的力量,再搭配外資,投信及非套利的自營商買賣超,應該可以代表一檔股票長線的買賣力道,我把這些力量加總起來,組合成一個長線客買賣超張數指標,以下是這個指標的腳本

value1=GetField("關鍵券商買賣超張數","D");
value2=GetField("地緣券商買賣超張數","D");
value3=GetField("外資買賣超張數");
value4=GetField("投信買賣超張數");
value5=GetField("自營商自行買賣買賣超");
value6=GetField("官股券商買賣超張數","D");
value7=GetField("綜合前十大券商買賣超張數","D");
value8=value1+value2+value3+value4+value5+value6+value7;
plot1(value8,"長線客買賣超張數");

我把這個指標拿來跟K線圖對照,我發現,這個指標對於中小型電子股有不錯的參考意義,以下是幾個例子

 

 

我把這個腳本改成選股腳本,找出當日長線買盤佔成交量一成以上的股票

我所寫的腳本如下

value1=GetField("關鍵券商買賣超張數","D");
value2=GetField("地緣券商買賣超張數","D");
value3=GetField("外資買賣超","D");
value4=GetField("投信買賣超","D");
value5=GetField("自營商自行買賣買賣超","D");
value6=GetField("官股券商買賣超張數","D");
value7=GetField("綜合前十大券商買賣超張數","D");
value8=value1+value2+value3+value4+value5+value6+value7;
input:ratio(10,"長線買盤佔百分比");
if volume<>0 then value9=value8/volume*100;
if value9>=ratio and volume>2000
then ret=1;
outputfield(1,value9,2,"長線買盤佔比");

以昨天的數據來跑,這個比例最高的的股票如下

謹供大家參考。

 

 

 

 

如何建構及維運”我的觀察名單“

今天有那些股票值得留意? 寫好了交易策略後要跑那些股票? 考量到我實在跑了太多的策略,為了怕電腦撐不住,不會跑所有上市上櫃的普通股,而是跑一個每天更新的”我的觀察名單“,今天就來跟大家介紹我是怎麼建構這個觀察名單,以及如何維運它。

首先,先跟大家介紹,我如何使用操盤高手中,免費功能裡的服務,去挑股票進觀察名單

一,型態辨識

我先前有寫過一篇這功能的介紹文,這功能在操盤高手中是在策略選單裡的第二項”型態選股“中

我會把符合各種抄底型態及突破繼續型態的股票很快看一遍,然後把覺得值得留意的股票加到觀察名單中。

例如下圖就是一個例子

二,戰情中心

在操盤高手的報價選單的第一項就是戰情中心,這個功能裡有一些條件,可以挑出符合特定常用的條件的股票,參考畫面如下

在這裡可以看到即將開法說會的股票,即將除權息的股票,營收創新高的股票,報上有利多的股票,法人同步買超的股票等等,我習慣每天從裡頭挑出今天盤中要特別留意的股票。

三,今日財經

在操盤高手的新聞選單中,有一個今日財經的功能,這功能會列出與嘉實合作的新聞供應商的新聞標題,我會從中找出值得追蹤的個股,把它加入觀察名單

四,法人推荐股

這個功能在選股項下,系統會找出法人最新調整評等的股票,也會整理出距離目標價位的潛在上漲空間

我會從裡頭挑出值得注意的股票來加入觀察名單。

 

五,微股力的達人文章

除了從操盤高手中挑到股票之外,我也會看看微股力的達人文章中推荐了那些個股,然後把它加入我的觀察名單中

 

 

完成這些觀察名單之後,我就讓雲端策略中心我挑到的股票都只跑這組自選股

設定的方式如下圖

至於雲端策略中心裡有不少策略,到底要跑那一些策略?

我的作法是挑那些報酬走勢表現的不錯的策略

以上是如果使用免費版操盤高手裡的功能時,我建構及維護觀察名單,以及用這組觀察名單來跑策略的方法。

當然如果擁有加值權限時,我會用加值功能來把一些個股加入觀察名單,這部份我先前寫過不少,就不多說了。

至於觀察名單要怎麼刪減,我的作法是,看漲跌幅,已經漲上來的,我就會處理掉,我都比較偏好在觀察名單裡的股票剛剛冒上來時才進場。

以上報告

基本面與技術面滲在一起的成長股交易策略

今天來跟大家介紹一個很典型的成長股交易策略,這個策略的概念是當最新一季的營業利益,毛利率及營業利益率都創近幾年來的新高,且技術面出現暴量起漲時就進場買進。大家別小看這個很老生常談的想法,實際回測下來,這個策略過去五來的勝率快逼近75%,是屬於四戰三勝的夢幻型交易策略。

選股策略

警示策略

 Input: day(60,"日期區間");
Input: ratioLimit(14, "區間最大漲幅%");

Condition1 = H=highest(H,day);
//今日最高創區間最高價

Condition2 = V=highest(v,day);
//今日成交量創區間最大量

Condition3 = highest(H,day) < lowest(L,day)*(1 + ratioLimit*0.01);
//今日最高價距離區間最低價漲幅尚不大

if Condition1 And Condition2 And Condition3
then ret=1;

 

 

這裡用的策略是大家應該已經看過很多遍的暴量剛起漲

 

回測報告

二年的回測報告

五年的回測報告

這個策略的交易次數不多,平均一年大約11-12次,一個月差不多一次,但表現比台灣50還好,年報酬在15-20之間,這代表當基本面出現明顯的好轉,且技術面也的確看到市場競逐的跡證,就很值得我們留意了。

這是一個基本面與技術面合作的例子,跟大家分享。

 

[ xqlite/]

股價距合理價值很遠然後開始暴量起漲

前兩天跟大家介紹我使用XS的方法,透過這樣的決策架構,我每天作功課的時間,就會聚焦在高勝率策略的開發,所以會漸漸的累積出一些勝率還不錯的交易策略,今天來跟大家介紹一個長期勝率蠻高(有七成),這兩年績效穩定的交易策略,這個策略是透過選股平台挑出股價距離合理價位很遠的股票,然後當這股票出現暴量起漲時進場。

這個策略的選股腳本如下

variable: idx(0), t(0);
input:r1(3, "假設未來十年營業利益年成長率");
input:r2(2, "未來十年平均年利率");
input:r3(100, "未來獲利折現合計淨值與市價比");

// 計算未來10年的營業利益折現值

value1=GetField("營業利益","Y"); //單位:百萬
value2=GetField("最新股本"); //單位:億
value3=GetField("每股淨值(元)","y");

value11 = maxlist(GetField("營業利益","Y"),GetField("營業利益","Y")[1],GetField("營業利益","Y")[2],GetField("營業利益","Y")[3],GetField("營業利益","Y")[4]);
value12 = minlist(GetField("營業利益","Y"),GetField("營業利益","Y")[1],GetField("營業利益","Y")[2],GetField("營業利益","Y")[3],GetField("營業利益","Y")[4]);

if trueall(value1>0,5) and (value11-value12)/value11<0.5 then begin
t = 0;
for idx =1 to 10 begin
t = t + value1 * power(1+r1/100,idx)/power(1+r2/100,idx);
end;

// t=百萬,value2=億,換成每股
value5 = t / value2 / 100;
value6=close/(value3+value5);

if value6<r3/100
then ret=1;
end;

outputfield(1, value5, 2, "估算每股營業利益");
outputfield(2, value6, 1, "市價/淨值比", order := -1);

這個選股腳本是先找出過去五年本業都獲利且五年裡的最高獲利與最低獲利的差異沒有很大,然後拿最新的營業利益當計算基礎 ,假設未來十年每年獲利都成長3%,然後用2%的利率當折現值,這樣計算出股票的合理價位,再跟市價去比,找出目前價值被低估的股票。

搭配的盤中洗價腳本如下

 Input: day(60,"日期區間");
Input: ratioLimit(14, "區間最大漲幅%");

Condition1 = H=highest(H,day);
//今日最高創區間最高價

Condition2 = V=highest(v,day);
//今日成交量創區間最大量

Condition3 = highest(H,day) < lowest(L,day)*(1 + ratioLimit*0.01);
//今日最高價距離區間最低價漲幅尚不大

if Condition1 And Condition2 And Condition3
then ret=1;

這個組合出來的策略在過去兩年的回測報告如下

這個策略的概念我用過很多次~ 價值被低估的股票開始絕地大反攻。差別只是評價方式的差別及對於絕地大反攻的價量定義。

這樣概念所寫出來的策略,我有不少勝率都不錯,所以把這樣的概念推荐給大家,祝大家找到績效比這個腳本更好的相關策略

XS使用心得分享

前一陣子,我介紹了一些回測數據不錯的策略,這些策略都是由特定選股策略及盤中訊號腳本組合而成,今天來跟大家介紹,我如何運用這些策略,來實際作出投資決策。

首先,每個人的投資邏輯未必相同,我的投資思維跟打牌時一樣,在贏的機率高到一定程度之後再出手。

所以我先透過XS的回測功能,努力的去尋找各種勝率夠高的交易策略,接下來,就讓機率理論來作為決策背後的參考依據。

例如某A策略跟某B策略使用了彼此不相關的因子,兩者的勝率都是2/3

那麼如果某A跟某B同時出現訊號時,投資的勝率就變成

2/3     +    1/3*2/3=6/9+2/9=8/9

(單一策略獲勝的機率+單一策略失敗但另一策略獲勝的機率)

原本單一個策略是三戰兩勝,兩個策略同時出現訊號的勝率就會提高到九戰八勝

三戰兩勝我未必進場,九戰八勝就沒有道理不進場了

也就是說,我們可以透過不斷開發各種有相同出場條件的高勝率,彼此不相關的交易策略,然後把這些策略加入排程,舉個例子,我現在每天從開盤起,透過自動排程,跑23個策略,這每一個策略,停損停利都是7%

然後再透過警示中心,透過警示觸發次數,去看看有沒有那一檔股票,符合超過一個以上的交易策略

以上圖為例,湯石照明在12:32分的時候同時符合高每股營收的股票毛利率回升及股價距合理價值很遠這兩個策略。

我就從這些符合多個交易策略的股票中挑那些成交量夠大,有一定流動性的股票,然後伺機進場。

以上大致是我使用XS的方式

我使用這個方法來作投資決策,有幾個核心的想法

一,事前機率與事後機率

回測是事前機率,我們依事前機率來作決策,要儘量確保過往回測期間的外在因素跟現在的情況是相近的,所以使用的策略最好是在多空市場的績效不會落差太大,也就是MDD愈小愈好,

例如我先前介紹過一個策略叫PB接近十年低點後的均線黃金交叉,它的回測圖如下

過去五年,勝率七成不打緊,MDD只有7.4%,報酬率基本上是穩定的向上。顯示在空頭市場也不至於血本無歸。

其實真要做到事前機率與事後機率很一致,最好的方式就是開發那些極短線的策略,因為在很短的時間內,例如一分鐘,十分鐘內,外在要素不一致的可能性會降到很低。

二,要記得排除己知的突發變數

出訊號的股票,如果是因為消息面的突發利多,而造成的價量突出現象,這不能算是長期供需均勢的改變,像這種原因而造成的買進訊號,可以忽視之。

三,專心開發高勝率低MDD,同頻率,同出場機制的策略

如果你跟我一樣,相信上面的機率論,那麼我們要做的事情就很專一: 持續不斷地運用不同的數據,去開發高勝率,低MDD的策略,這些策略要用相同的頻率,有相同的出場機制,然後不斷地讓電腦幫我找出同時多個策略都出現買進訊號的股票,之後就讓機率來發揮它的作用,這樣就可以把作功課的成果不斷地累積,我也是花了兩年的時間,才慢慢架構出這樣的一個操作體系,但一旦完成這樣的體系,接下來就是持續地往這個體系加入夠靠譜的交易策略

 

以上是我自己用XS進行投資決策的過程

供大家參考。

 

 

 

基金策略雷達使用說明

為了滿足單筆基金投資者的需求,Moneydj有做了一個策略雷達的功能,透過一些策略腳本,去尋找未來可能最有漲升潛力的基金類別,今天就來跟大家介紹這項服務。

 

這個服務是在Moneydj自主理財這個功能裡頭,

點選自主理財之後,會看到下面這個畫面

最上方那一排第二個就是策略雷達,點選後,再左欄選勝率超過60%,會看到如下頁的畫面

這一頁就會列出近十日那些市場,有那些高勝率的策略出現買進訊號

以上圖為例,能源,特別是全球乾淨能源,在十天前,同一天有三個勝率超過六成的策略都出現買進訊號,下圖是從十天前到現在的全球乾淨能源ETF的淨值走勢

這個例子跟大家說的是,透過基金策略雷達,我們可以找到高勝率策略,近十天裡出現買進訊號的股票

如果不止一個高勝率策略出現買進訊號,那後市看漲的機率就更高了

 

這個功能是免費的,提供給單筆基金投資人作參考。

即將進入季節性多頭的股票

今天是十一月最後一個交易日,接下來就進到法人最可能作帳的12月份,到底會有多少股票以往常有作帳行情呢? 我之前有寫過一個找出過去十年最新還原月線至少超過七年上漲的選股策略, 明天起用這個策略來跑看看有那些股票12月份比較容易上漲。

這個選股策略的腳本如下

array:m1[10](0);
variable:x(0),count(0);
count=0;
for x=1 to 10
begin
m1[x]=(close[12*x-1]-close[12*x]);
if m1[x]>0
then count=count+1;
end;
if count>=7 
then ret=1;
outputfield(1,count,0,"符合的次數");

用還原月份去跑,可以跑出當月上漲機率超過七成的股票

我把這個腳本加上兩個條件組成一個選股策略

停損停利設為7%,過去3年的回測報告如下

勝率有到68%,交易次數也夠多,不過mdd比較大  空頭市場不適合使用。

好公司暴量起漲時

我寫過很多交易策略,有兩大類型勝率比較突出,一類是最低估的股票開始出量,另一類就是好公司暴量起漲,什麼是好公司呢? 我寫過一些不同的衡量標準,今天來跟大家介紹的是其中一種標準,這種標準搭配暴量起漲的腳本,出現的交易次數雖然不多,但勝率還可以。

一,選股標準

我用的選股標準條件還蠻多的

這裡我主要是去找那些各種因子都符合的個股

二,進場腳本

這裡用的還是常用的暴量起漲的腳本

 Input: day(60,"日期區間");
Input: ratioLimit(14, "區間最大漲幅%");

Condition1 = H=highest(H,day);
//今日最高創區間最高價

Condition2 = V=highest(v,day);
//今日成交量創區間最大量

Condition3 = highest(H,day) < lowest(L,day)*(1 + ratioLimit*0.01);
//今日最高價距離區間最低價漲幅尚不大

if Condition1 And Condition2 And Condition3
then ret=1;

兩個搭配下來,回測報告如下

這裡用的停損停利都設為7%

兩年裡只有十一次的交易次數

對這種策略制定方向有興趣的朋友,可以自行修改選股及觸發腳本,但基本概念: 好公司+價量表現突出,是制定高勝率策略的一個不錯方向。

 

 

不寫程式如何制定交易策略

為了迎接明年三月要上線的逐筆撮合制度,有愈來愈多的朋友希望把投資決策系統化,為了要完成這樣的目標,開始接觸程式設計,但對非理工科背景的朋友,這是一件進入障礙蠻高的事情,所以我們一直接到一種需求:“能不能不必寫程式就可以制定出交易策略”,我今年三月曾寫過一篇

不用寫程式就能設計,回測及執行交易策略的方法

之後也寫過一篇

如何不寫程式就能讓電腦跑策略出訊號到手機中

透過這兩篇,只要稍具套裝軟體使用經驗的朋友,應該是可以透過勾選的方式,不必寫程式,就可以讓電腦自動把符合特定交易條件的股票,在手機上通知您。

接下來的問題在於,XS內建的條件,是否夠廣泛到,讓大家的IDEA都能找到對應的敘述?

今天就來跟大家分享系統內建的,以及我自己寫過的條件式

一,選股條件

一個完整的交易策略分成選股條件及交易時機,前者大多是使用日線及日線以上的數據來制定,後者則通常是日線及日線以下的分鐘線所寫出來的進場時機。我們先來了解如何不寫程式來設定選股條件。

XS系統內建的選股條件分成兩種,一種是選股條件,一種是選股腳本,在下面這篇文章中,我以財務面的選股欄位為例,跟大家介紹了如何使用選股條件及選股腳本來組合成一個選股策略

如何在XS選股中心用財報數字選股

另外我自己寫過的選股常用語對應的程式腳本也有不少,我在今年七月時有整理過一遍我寫過的選股腳本,把下載點放在下面的幾篇文章中

常用的選股腳本大匯總

量價常用的語法

指標類常用的語法

籌碼類常用語法

 

用這些選股條件,我們就可以組合出一個個選股策略,例如我在今年九月寫過以下的一篇文章

不會寫程式也能組合出勝率超過七成的交易策略

大家運用我們上面討論到的選股欄位,根據上面這篇文章所介紹的步驟,就可以不用寫程式,組合出自己心目中的選股策略。

二,交易時機

有了選股策略,如果把策略加入排程,每天電腦會自動跑出符合條件的股票,接下來我們就可以為這些符合條件的股票,勾選適用的交易時機腳本。

例如我我前些天介紹過一個用月營收創52期新高的選股條件,搭配三日均線突破十日均線進場策略的交易策略

用月營收創造的高勝率交易策略

所以在組合出選股策略之後,接下來就是選擇進場的策略,目前系統內建的交易時機策略, 都放在XScript編輯器中,如下圖

打開編輯器之後,選擇“警示”頁籤,打開系統資料夾,這裡有系統內建的359個進場時機腳本,選擇您要的腳本,滑鼠左鍵快速點撃兩次之後,即可以打開程式,這時就可以點撃 上方的加入雷達,開始設定進場腳本參數及要適用的選股策略了

大家可以直接根據自己的需求,選擇對應的進場策略。

但要如何快速找到自己想要用的腳本呢? 請參考下圖

可以利用XSCRIPT編輯器裡的搜尋功能,快速找到自己想要運用的腳本關鍵字,系統有無支援相關的腳本。

 

以上完整介紹了如何不寫程式就制定出自己心目中理想的交易策略,每個人想要完成的交易策略都不見得一樣,就算用同一個指標也可能用的參數都不同,我們會儘量收集各種大家可能用到的腳本,讓大家可以不需要寫程式就制定出想要的交易策略,沒有提供到的敘述,還忘大家不吝提點。