AlphaGO能不能打敗市場?

By | 2016-03-17

人跟機器的對奕,機器贏了,於是,腦筋動的快的朋友就問了: AlphaGO能打敗棋王! 能不能也打敗市場?

這種問題問我這種文組背景的,那真是問道於盲了,但表面上我還是得裝堅強,於是只好找資料來作功課,以下是我作完功課的報告。

要回答AlphaGo 的演算法能否打敗主力之前,我們先來了解AlphaGO是怎麼設計出來的?

 首先,電腦下棋的方法跟人類沒啥兩樣,就是對手下一步,電腦根據對手下的那一步,重新運算各種最新情況的態勢及未來的各種可能性,找出勝率最高的下一步,然後把那一步下到棋盤中,就這樣一步一步地持績下去。
所以基本上,像AlphaGo這類的程式,其核心有兩大部份
1.對於當前局勢的判斷。
2.對於接下來這一步,各種不同對策的勝率計算。
舉例來說,
井字遊戲算是最小的下棋遊戲,如果我們寫一個程式讓電腦來玩井字遊戲
井字遊戲
以上圖為例,我們會幫每個棋的位址取個代號,然後列出每一步對手下棋的可能位置,然後根據對手下的位置來決定我們下在那裡贏的機率較高
古早版的電腦下棋就是這樣列出所有可能,然後對手每下一步,電腦就算一次,然後找出最可能贏的那一步,給他下下去,然後,再看對手的下一步,再算一次機率,再決定下一步。
這種算法在像井字遊戲這種頂多下到四步就見真章的遊戲,所有的可能性是9!,這樣的棋局可以把所有可能性全部攤出來算一遍,這種窮舉法,當像圍棋這種361!可能時,就很難用了。
股票投資比下圍棋更複雜,所以窮舉法這樣的演算方式,就更難用在投資決策上了。
後來就有人開始換另一種思考方向,嘗試就現有的棋局現況,設計一個我們稱之為審局函數的東東,也就是我們無法精確的找到最精準的那一步,但我們可以計算出下不同步時對整個局勢是往正向還是負向發展。

以下象棋為例,我們可以定出一個決定勝負的函數,例如這函數包括

1。帥的安全度。

2。有多少攻擊力。

3。有多少防守力。

4。佈了多少個陷阱。

5。有多少個空檔。

然後算出每一步的決策會對這個函數產生什麼變化,然後找出對這個函數最正向的那一步。

接下來很長的一段時間裡,大家的研究焦點都在於如何讓審局函數更精準。
1993年蒙地卡羅(MC)演算法出現,這個演算法就是針對新的盤勢隨機的下(random play),那一步最後得到的正分最高就下 那一步,當年的電腦運算能力不強,這種需要消粍大量運算能力的作法,實務上很難應用,有趣的是,這個隨機play的作法也被引用到投資領域,當時的學者們就覺得股價的波動就是一種隨機的情況。
針對了MC演算法,科學家不斷地提出改良。
1。不同的選擇,是不是真的是隨機? 每一種可能的機率是一樣的?還是有些點對手下到的機率比較高,有些點對手根本不大可能這麼下,應該給不同的權重。
2。對於上述不同的權重要怎麼給,科學家們開始利用機器學習來做,於是發明了自動化調校盤面空格權重的方式。
3。透過類神經網路和機器學習,更精準地預測對手下棋的可能棋步,而不是散彈打鳥的隨機行為,設計一個預測器來預測對手會把下一步棋下在那裡。
4。建構一個叫Value network的東東,對一個現下的盤面,判斷對奕雙方各自獲勝的機率。
AlphaGo的成功,就是在上述的第三及第四步,透過類神經及機器學習,取得很大的進步,當然,能做到這種地步,跟AlphaGo裡的那個台灣人黃士傑先生本人原本就是圍棋高手有很大的關係(此人唸大學就是圍棋業餘六段)。這也是我一直強調的: 人+機器最強。
看完電腦下棋的研發歷史後,我們回頭看看這些年來發展的這些技術,有那些可以應用在投資操作上。

在下棋人工智慧演算法的演進過程中,我們可以發現,審局函數是一個很重要的元素,如果我們把投資當成個人與市場日復一日的對奕,我們可以仿效電腦下棋的邏輯,建構一個審局函數,這個函數有點像在預測擲銅板的正面還是反面,就像我們每天在預測特定金融商品今天會上漲或下跌,只是擲銅板出現正面或反面的機率是一半一半,而我們則希望透過過去一段時間金融商品的價格表現,建構一個審局函數,並且給予不同的預測指標不同的權重,然後透過人工智慧讓電腦不斷的修正各個權重,用以預測接下來市場到底是會上漲還是下跌。

如果大家可以接受上述的說法,那麼接下來我們的功課就會聚焦在審局函數的建構上。

傳統的程式交易,只用一個指標來建構審局函數,例如海龜交易用週移動平均線來作為判斷後市看漲抑或看跌的唯一標準。當年的電腦運算能力有限,這麼作有其不得不然的原因,現代的電腦運算能力如此強大,我們應該要效法AlphaGo的精神,想辦法提高審局函數的精確度。

我可以仿效AlphaGo,把各項的歷史數據拿給電腦去跑,讓電腦幫我兩件事

 1.自動調整權重。
2.告訴我以目前的數據來看,明天是看漲還是看跌。
這樣一天決策一次,電腦可以慢慢算,但大家常說金融市場瞬息萬變,我們也可以用當沖者的思考模式,一天下一盤,一分鐘下一次,這時候能用來作為審局函數的指標就更少了,可能只能用一分鐘K線的開高低收成交量,內外盤成交量,委買委賣量的變化等資料而已。小弟才疏學淺,目前還無法用XS寫出機器自己學習的程式,但上述的思考理路應該是可以循序發展的。舉個例子我們可以看看幾個大家常用的技術分析工具應用在加權指數上時,過去三年的回測報告

當我們單獨使用 MACD 作為買進的訊號,回測報告如下:

macd test

 

總報酬率很高,但勝率低且最大連續虧損率超過100%

如果改成用MTM>10來當進場點時

mtm test

 

情況更慘,勝率更低

 

但如果我們把多個技術指標都考慮進出並且給予不同的權重,我們可以跑出下面的回測報告

審局

 

交易次數少,會賺錢,不會賠到血本無歸。

 

如果我們讓電腦來學習幫我們調整權重,那麼我們就更能打造出風險更低的交易策略了。

 

綜合上面的說明,如果我們假設市場就只有電腦跟整體市場兩個玩家,把各式各樣的策略通通拿下去try,然後找出對特定金融商品在特定時空下勝率最高的策略,然後根據這個策略的指示來操作,大概就是AlphaGo對我們這些操作者的最大啟發了。

至於怎麼try,容小弟再想想!! 當然希望以後可以讓電腦來想想。