最近人工智慧與機器學習新聞不斷躍上版面,一下"機器在未來n年內將取代人類80%工作",一下"人工智慧技術大突破,未來將走入商用領域"。這股熱潮從去年AlphaGo戰勝南韓棋王開始,今年初AlphaGo更化名為大師(Master)默默在網路上幹掉一堆高手,取得60連勝戰績。
於是很多人在思考,機器學習(Machine Learning)是否能夠取代人工交易? 從最早的主觀交易,到計量交易,進而透過程式語言自動下單,俗稱程式交易。然而曾幾何時,程式交易已經不再稀奇,畢竟程式交易還需要人工方式開發策略,是否機器可以自行尋找市場規則,然後就像AlphaGo一樣到全球各個市場廝殺?甚至連續獲利60天?我想這是最近大家都想問的問題。
的確,即使目前計量交易的觀念越來越普及,大家都還是在尋找交易的聖盃,想當然爾大家都沒找到,而出現AlphaGo後,看似粉厲害的人工智慧似乎又為芸芸眾生帶來一線曙光。到底智能交易是什麼? 真的這麼神嗎?
其實某種程度來說,智能交易就是一種最佳化(optimization)的過程。你可能會說:『最佳化很容易啊,我們做計量交易本來就在做這些事了』只是,機器學習的最佳化,會比你人工寫演算法的過程更厲害。這是因為機器學習理論的背後,已經有無數個專家學者開發出好的數學模型,控制各種參數的調節與選擇。簡單的說,在有限的資訊底下,做出最好的預測。不管是分類(Classification)、分群(Clustering)、或是找出關聯性規則(Association),機器學習演算法都可包辦。下面我舉個簡單例子,你便能理解。
決策樹(Decision Tree)是一種機器學習常用的方法,屬於監督式學習(Supervised Learning)的一種。所謂的監督式學習,是我們告訴機器,怎樣的特徵要歸為那一類,例如圖片上有一堆水果讓電腦判斷是蘋果還是橘子。我們於是先告訴電腦某些特徵,例如紅色是蘋果,橘色是橘子,未來電腦就會根據顏色做出判斷,這是俗稱的分類(Classification)問題。而這樣的過程,我們可以用樹的概念去表示,稱為決策樹。決策樹的組成在於一連串的判斷條件,從根點開始做決策,往左走 or 往右走不斷產生分支形成樹狀結構,走到最後的葉子便是分類出來的結果。
我們用個簡單交易策略來說明。假設想要開發一個隔日沖策略,也就是收盤前建立部位,隔日開盤出清部位。換句話說,就是預測明天開盤是漲還是跌? 這樣的策略架構,你想要學的是可以根據什麼規則在每天收盤前建立部位(買方or賣方)。
傳統上我們的做法是,先決定要根據哪些條件(訊號)來做交易。舉例來說,也許交易邏輯是今天紅K(收盤>開盤),我便在尾盤做多;今天黑K(收盤<開盤),我便在尾盤做空,然後隔日開盤平倉。
於是我們開始回測,然後肯定有非常大的機會你會發現效果不好;於是再改策略,可能是紅黑K要大於1%,我才要執行買賣,或著是要伴隨著放量,例如量要放大到前一日的30%以上,我才執行交易。總而言之,有各種千變萬化的訊號我皆可當作條件去考慮。只 要 我 們 時 間 夠 多, 我們便可一個一個發想去回測,直到研發出你認為可以上線的策略。
可想而知,光是一個隔日沖的策略,可考慮的訊號就有成千上萬個,這等於是在茫茫大海中撈針,撈到了還要回測驗證看績效是否夠好? 然後不斷的重複這樣的過程,就像當初愛迪生發明燈泡時,用Try&Error方法驗證過上千種燈絲,非常的費時費工。然而,機器學習演算法或許幫我們快速完成這些事。
以決策樹來說,我們只需把可能有用到的參考指標放進去,也就是Training Data。舉例來說,紅K黑K便是一個,你也可以放入每日的量、每日的20MA、每日的60MA、或是每日的MACD、KD等技術分析指標,當然也不局限於日的周期,任何時間週期,只要是過去的資料,皆可拿來對齊欄位後給機器學看看。
然後,一個鍵按下去(現在很多機器學習的免費套件),透過你選用的機器學習演算法,馬上做好分類。在什麼樣的條件下,有多少可能明天會開高;有多少可能明天會開低,那些參數是無效的,那些參數使用的效果是顯著的,馬上產生決策樹的樹狀結構。換句話說,一個樹狀圖,就是一個策略!
我們看下面這個例子。我使用R語言的tree套件,抓取大盤的周K資料。參考指標包括每周漲跌幅度(UpDn),每周量增減幅度(vol),我只用了兩個屬性。由於我們要做隔日沖,因此我們用隔周開盤漲跌幅超過1%當作分類,所以共有三類:大漲超過1%(Long)、大跌超過1%(Short)、|漲跌幅<|1%(Noise)。
分析出來的結果說...
1. 當本週跌幅超過4%,甚至超過7.16%,週五收盤前買進,周一出清。
2. 當本週跌幅超過4%,但不超過4.73%,周五收盤前賣出,周一出清。
3. 當本週跌幅沒有超過4%,但漲幅也沒有超過5.25%,周五收盤買進,周一出清。
你可能會覺得上述的根據是毫無道理的,但這就是根據某種機器學習演算法計算出來的結果。注意到這張圖最後有8個葉子節點,有5個都是歸類為(Noise),那麼多的決策分支,是否會是過度最佳化(over-fitting)的結果?
是的,原則上學習就是根據過去資料統計出最適的結果,但當參考依據太多,便很有可能是"硬兜"出來的。這時我們要做修剪(Pruning)樹枝的動作,主要也是用統計方法來判斷是否該繼續在某個節點繼續進行分割,還是停止。
其實,上述這些過程,有沒有發現跟傳統在開發計量交易策略很像。只是我們過去是人為的方式,暴力去找出最佳參數,而避免over-fitting的方法,可以檢查策略參數是否滿足參數高原? 策略是否可以再縮減參數的維度,是否經得起穩固性測試(robustness test)、或著可以用in sample, out of sample方法,種種過去我們用在交易策略建構的方法,大部分的機器學習理論都幫我們做好了。
於你,你說機器學習用在交易上好不好用,太好用了。但是不是真的能夠像AlphaGo一樣所向無敵,我打個問號?這尚需要時間去驗證! 天知道哪天或許真的出現AlphaCat連贏市場60天也說不定。但無論如何,在這樣的事情還沒發生前,我們都不應該把機器學習、智能交易過度神化,他其實就是用統計學習的方式把計量交易的精神發揮得更淋漓盡致而已!!
0 意見:
張貼留言