第三章 研究流程與系統架構
第二節 系統架構
三、 前端網頁介面
國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
Horizontal Design 與 Vertical Design 主要的差異分為以下三點:
1.MapReduce 的主要輸入資料差異
在 Horizontal Design 中,MapReduce 的主要輸入是染色體;在 Vertical Design 中,MapReduce 的主要輸入是市場狀態資料。Mahout 原先的架構主要是應用在 包含大量染色體族群資料所進行的基因演算法模擬,但在本研究所應用的問題上,
染色體族群的資料量大小是遠低於演化所需的環境資料(Context)。故我們應該 要調整需要被分散處理的主體,從染色體族群調整成市場狀態資料。
2.市場狀態資料取用方式差異
在 Horizontal Design 中,市場狀態資料是以橫向時間序列的方式取用,雖然 讀取完所需基因狀態之後即可完成整個演化期間的回測模擬,但是每次計算不同 的染色體基因就必須重新讀取 Horizontal Data,即使相同的基因在不同的染色體 中有重複出現仍必須重新讀取;在 Vertical Design 中,市場狀態資料是以縱向的 方式取用,一次讀出該時間點所有的市場狀態資料。這個調整的優點在於讀取完 一次即可完成所有染色體在該時間點的買賣訊號判斷,並保證同樣的資料未來不 需再用到,可避免 Horizontal Design 中,相同資料會重新讀取的情形。
3.市場狀態資料準備時機與記憶體快取的使用
有別於 Horizontal Design 當中,等到需要使用市場狀態資料時才到 HBase 讀取;Vertical Design 在模擬演化開始前,就先將需要用到的資料一次讀取完存 入 Memory Cache 之中。這樣的作法可以減少磁碟資料存取次數,並用較快速的 記憶體資料存取來取代磁碟資料存取。
三、前端網頁介面
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
在使用者介面上選擇了 web-based 的前端網頁介面。本研究之前端網頁介面包含 以下區塊:
(一)市場狀態線圖瀏覽:
以二維線圖的方式,展示出市場上所有交易相關資訊,包括價格、成交量與 技術指標等時間序列資料。
(二)基因演算法設定:
提供基因演算法模組所需之相關組態設定與基因庫擴充介面。使用者可以依 自身需求切換基本設定與進階設定兩種版本,除了讓希望快速上手的使用者不需 透過繁雜設定即可使用此平台,亦可讓進階使用者產生更有潛力的交易策略。
(三)模擬交易回測:
模擬交易回測頁面用以啟動與顯示整個演化與交易回測過程。使用者可透過 此頁面操作模擬交易回測模組、調整資金控管模式。
(四)績效評估報告:
顯示基因演算法模組所產生的優秀交易策略結果報告,使用者可在此檢視各 優秀交易策略之策略詳細內容、浮動淨值走勢、詳細買賣時點、最終損益、年化 報酬率…等資訊。
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
第四章 實驗數據分析
第一節 模擬速度測試與分析
本研究在第三章時曾就 Horizontal Design 與 Vertical Design 兩種不同的模擬 演化架構進行比較,本章節將實際測試兩種架構在三種不同測試環境中運算速度 上的差異。模擬速度測試使用之基因演算法參數如下:
族群大小(Population);300
染色體長度(Chromosome Length):8 演化代數(Generation):100
回測期間:120 個交易日資料
以上參數設定會在三種不同測試環境中分別進行十次模擬,模擬結束後挑出 最佳時間、最差時間並計算平均時間。
第一個測試環境為 Hadoop 叢集模式,包含一個 Jobtracker 與三個 Tasktracker。
測試結果如下表:
Horizontal Design Vertical Design
最佳時間 14361.473 5813.361 最差時間 16057.031 7014.909 平均時間 15062.713 6475.719
(單位:秒)
表 1、模擬演化時間表(叢集模式-1 個 Jobtracker 和 3 個 Tasktracker) (資料來源:本研究整理)
測試結果顯示 Vertical Design 的確能大幅度提升模擬演化速度,平均花費時 間減少了 57%。縱使如此,本研究仍希望能再縮短模擬演化時間,在增加分擔運
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
中增加三個 Tasktracker。
第二個測試環境一樣是 Hadoop 叢集模式,包含一個 Jobtracker,Tasktracker 數目從三個增加到六個。測試結果如下表:
Horizontal Design Vertical Design
最佳時間 17652.592 7782.469 最差時間 20319.712 9480.042 平均時間 18727.631 8835.368
(單位:秒)
表 2、模擬演化時間表(叢集模式-1 個 Jobtracker 和 6 個 Tasktracker) (資料來源:本研究整理)
在第二個測試環境中,雖然 Vertical Design 的表現依舊大幅優於 Horizontal Design,但是整體模擬演化的時間卻沒有如預期的因為加入三個 Tasktracker 而縮 短,反而花費了更多時間。
為了找尋原因,本研究在執行模擬演化的同時,觀測各節點的處理器負載,
發現各節點的處理器多數時間都是處於低負載的程度,只有少數時間到達中等負 載。基於兩次測試與觀測各節點負載情況的結果,初步推斷縮短模擬演化時間主 要的關鍵在於資料輸入輸出時間,而非運算時間。
為了印證這個推斷,本研究設計了第三個測試環境。第三個測試環境不再使 用 Hadoop 叢集模式,改用 Hadoop 單機虛擬分散模式,並將原本的硬碟(Hard Disk Drive)更換成固態硬碟(Solid State Drive)。這樣的測試環境就可以將資料輸入 輸出時間最小化,預期模擬回測速度會有更好的表現。實際執行第三個測試環境 的測試數據如下;
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
Horizontal Design Vertical Design
最佳時間 5128.325 782.219
最差時間 6647.891 1500.242 平均時間 5855.723 1135.378
(單位:秒)
表 3、模擬演化時間表(單機虛擬分散模式) (資料來源:本研究整理)
在第三個測試環境中,模擬演化的速度大幅改善。Vertical Design 的表現仍 舊優於 Horizontal Design。跟叢集模式相比,單點模式的 Horizontal Design 縮短 了約 61%的模擬演化時間;Vertical Design 更是大幅縮短了約 82%的模擬演化時 間。
這樣的結果印證了模擬演化運算速度改善的主要瓶頸在於等待資料輸入輸 出時間的假設,但也說明了本研究的模擬演化運算其實並不適合採用 Hadoop 的 運算架構。主要關鍵在於本研究模擬演化運算所需時間跟資料輸入輸出與傳輸時 間之間的比例。本研究的模擬演化運算在設計之初就已經將大部份的市場狀態預 先計算好,並以基因的方式儲存在基因庫當中,故實際在模擬演化時所需要的運 算量其實並不大。Hadoop 的平行運算架構適合用在運算時間大幅超過資料輸入 輸出時間與平行運算準備時間的運算工作,與本研究模擬演化運算工作的特性並 不相符。如此一來,也可以合理解釋為何在第二次測試中加入更多 Tasktracker 反而需要花費更久的時間。因為加入更多 Tasktracker 需要花費更多的網路傳輸 與資料準備時間,而實際執行運算時間所占比例太小,導致分散式運算省下的運 算時間遠不及為了達成分散所花費的時間。
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
第二節 策略回測實驗數據
染色體長度、染色體族群數量與模擬演化代數是影響本研究策略回測績效之 三個關鍵的參數。本節將討論不同的染色體長度、染色體族群數量與模擬演化代 數,對策略回測績效的影響,讓未來的使用者在設定參數上有所參考。
本研究對染色體長度選取了五個參數,分別為 2、4、8、16 與 32;染色體 族群數量亦選取了五個參數,分別為 30、60、100、300 與 500;模擬演化代數 則選取了六個參數,分別為 1、5、10、30、50 與 100。本研究將這些參數之所 有可能組合進行測試,回測期間為三個月,測試標的為台灣五十指數股票型基金,
測試結束後記錄各參數組產生之最佳染色體的獲利率,測試結果整理如下:
‧
‧
‧
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
四、染色體長度:16 族群數量
演化代數 30 60 100 300 500 1 0.45% 1.95% 2.32% 3.60% 3.52%
5 0.60% 3.60% 1.80% 6.97% 13.05%
10 1.90% 9.00% 7.20% 9.75% 15.52%
30 5.80% 15.97% 15.90% 17.10% 14.62%
50 8.25% 11.55% 17.10% 14.62% 17.10%
100 6.42% 14.70% 13.50% 17.75% 19.80%
表 7、染色體長度=16 時,不同染色體族群數量在不同演化代數之獲利率 (資料來源:本研究整理)
圖 19、染色體長度=16 時,不同染色體族群數量在不同演化代數之獲利率折線圖 (資料來源:本研究整理)
0.00%
5.00%
10.00%
15.00%
20.00%
25.00%
1 5 10 30 50 100
獲利率
演化代數
30 60 100 300 500
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
五、染色體長度:32 族群數量
演化代數 30 60 100 300 500 1 0.00% 1.50% 0.75% 1.27% 2.77%
5 0.00% 0.00% 5.70% 6.75% 3.82%
10 0.00% 0.00% 8.50% 13.95% 13.15%
30 0.00% 0.00% 15.75% 17.10% 14.40%
50 0.00% 0.00% 13.05% 19.57% 18.67%
100 0.00% 0.00% 16.20% 16.42% 14.85%
表 8、染色體長度=32 時,不同染色體族群數量在不同演化代數之獲利率 (資料來源:本研究整理)
圖 20、染色體長度=32 時,不同染色體族群數量在不同演化代數之獲利率折線圖 (資料來源:本研究整理)
0.00%
5.00%
10.00%
15.00%
20.00%
25.00%
1 5 10 30 50 100
獲利率
演化代數
30 60 100 300 500
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
第三節 基因演算法參數設定
根據上一節的實測結果,本研究歸納出幾個參數設定重點,供使用者進行模 擬演化時參考:
一、染色體的適應程度會隨著演化代數上升,但有其極限。
在一段過去的時間區間內,金融商品價格具有有限的波動幅度,因此透過買 賣操作該金融商品能獲得之超額報酬有其極限。在本研究中,染色體的適應程度 即為各染色體在一段期間內對某項金融商品買賣之獲利能力,故染色體的適應程 度也應該會有極限值存在。
在本研究的實驗中也印證了這樣的推論,染色體的適應程度(即獲利率), 在演化到 24%~26%左右的水平之後,就開始呈現穩定波動,不再持續上升。若 是再持續增加演化代數,只會增加模擬時間,無法找到優秀的染色體。
二、染色體族群數量越大,就能以越少的演化代數找到高適應力之染色體。
染色體族群數量代表的是每一代參與競爭的染色體總數。染色體族群數量若 是太小,代表演化過程中缺乏競爭,不易產生優秀的染色體後代。反之,若是染 色體族群數量夠大,整個染色體族群的複雜度高,在模擬演化前期(較少的演化 代數)就容易出現優秀的染色體後代。在染色體長度為 4 和 8 的實驗中,當染色 體族群數量為 30 或 60 時,都必須經過長期的演化,染色體的適應程度才慢慢改 善。特別是在染色體長度為 2 的實驗中,染色體族群數量為 30 的實驗甚至無法 產生出優秀的染色體後代。反觀染色體族群數量為 300、500 的實驗,幾乎都在 30 代的演化之後,就接近適應程度之極限。
三、在本研究的基因編碼基礎之下,染色體長度不宜過長,建議低於 16。
在本研究的基因編碼基礎之下,染色體所包含的基因如果太多,各基因之間
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
容易產生互斥現象,不易產生交易訊號,獲利能力也較差。從實驗數據來看,在 染色體長度為 2、4 和 8 的實驗當中產生出的優秀染色體適應程度遠高於染色體 長度為 16、32 的實驗所產生出的優秀染色體。在染色體長度為 32 且染色體族群
容易產生互斥現象,不易產生交易訊號,獲利能力也較差。從實驗數據來看,在 染色體長度為 2、4 和 8 的實驗當中產生出的優秀染色體適應程度遠高於染色體 長度為 16、32 的實驗所產生出的優秀染色體。在染色體長度為 32 且染色體族群