用Machine learning 學習看技術指標

這篇文章是印度指數預測,2015年發表的就能有191個citation,算是很有名的paper之一,全文特點是只使用了技術指標,來預測大盤每天漲跌,提出了一個有效的優化方式。

thumbnail 7

這篇paper的作者非常的認真,總共訓練四種不同的模型:Artificial Neural Network (ANN), support vector machine (SVM), random forest (RF) 和 Naive-Bayes (NB)。

這邊假如看不懂沒有關係,可以想像「模型」就是「電腦的大腦」,負責學習每種指標怎麼對應到未來的漲跌。之後有空再來慢慢介紹這些不同的「大腦」背後的數學原理。

此論文主要建構製作兩組traning data:

  • 包含十種技術指標
  • 為這十種技術指標的看漲看跌
    前者為 float (被normalize成-1~1)
    而後者為 boolean (也就是只有輸入True和False)。

究竟這些排列組合會迸出什麼樣的火花呢?

選擇模型

研究發現Random Forest的表現是最好的,而ANN差了一點,
這是滿正常的,畢竟data set還是太小,神經網路很難訓練的非常好。
至於傳統的NB則是最差的。

其實也可以考慮一下LSTM,說不定效果也不錯?
(但因為LSTM還是基於ANN,所以有可能遇到traning set太小的問題)

選擇traning data

如同上面所述,此篇論文總共先用了十種技術指標,以下是這十種常見的指標,為了讓文章不會太冗長,我就不一一解釋了,之後有空再來介紹每種指標的用法。

p1

這篇paper會將這些技術指標的數值,每一項做normalize在-1~1之間,這樣的優化主要是為了ANN和SVM。以下是這個model的架構:

p2

另外,全文的特點是使用了提出了 「Trend Deterministic Data Preparation」,看起來非常的厲害,簡單講就是將這些指標的數值究竟是「看漲」還是「看跌」拿來訓練,而不是訓練指標本身的數值。

例如均線好了,與其拿均線的值來訓練,不如看「股價跟均線的關係」,假如股價在均線之上,就是「看漲」(True),反之則「看跌」(False)。其他指標都能以此類推!

以下就是新增了一層資料的修改的架構:

p3

最後發現使用了「Trend Deterministic Data Preparation」
效果好很多!

結論

這篇文章中,可以大概知道每一種model對於技術性指標的數據的效果如何。並且了解了用「Trend Deterministic Data Preparation」來進行優化。經過了非常多參數的比對,發現使用RF model做出來的策略效果最好。然而這只限於頻率為「天」的股價,假如頻率不是「天」,則可能會不一樣~。

FinLab - 韓承佑

嗨大家好,我是韓承佑,FinLab創辦人,畢業於巴黎薩克雷大學資工博士,目前擔任臺灣量化交易協會 學術顧問、台北商業大學 創新育成中心 創業技術顧問與上市科技公司 量化交易顧問。當初,我喜歡寫程式、無意間因為軟體比賽接觸Fintech,從此開始了財經跟程式的學習之路。我們成立 FinLab 量化投資部落格,用自己研發的軟體,對台灣股市做大量快速的實驗。希望可以在量化投資的路上,當大家的「武器製造商」!