第三章 研究流程與系統架構
第二節 系統架構
二、 基因演算法模組
國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
的資料運算。以期貨為例,使用者對於一支期貨做回測時,可選擇不同的時間精 度,以秒、分鐘、小時做運算時,不同的時間精度需要不同的資料,因此能夠使 用時間粒度為以秒為單位之 SRN,以分鐘為單位之 SRN,及以小時為單位之 SRN,
這三個 SRN 將會被包含在同一商品的 SRN 群內。若使用者需要對以小時為單位 之 SRN 做 MACD 指標之運算,則 SRN 中便有為了計算 MACD 之資料的 Rib,
為了不同的計算目標,SRN 提供不同的 Rib 來儲存。
本研究為了降低回應時間(Response Time),採用預先計算的方式,在進入 基因演算法演算階段前,就先將所有市場狀態計算完成並存放在 SRN 結構之 中。
二、基因演算法模組
根據應用問題的不同,套用基因演算法也需要進行一些調整,以下將介紹基 因演算法在本研究中應用之設計概念與系統架構。
(一)基因演算法模組設計概念
1.基因庫
基因是由一個或多個技術分析值所組成的一組判別式,是組成染色體且可抽 換的最小單位,而此判別式的值則稱為基因狀態。基因庫是本研究中所有基因的 集合。本研究整理了常用之技術分析指標與K線型態,並依其不同之特性,設計 成若干不同之基因,詳細整理請參閱附錄二。
2.染色體編碼
一條染色體代表一個交易策略,由多組前述定義之基因所組成,並分為兩大 部分-買進訊號與賣出訊號。每組基因具有一個權重值,當買進(賣出)訊號內
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
則發生對應的買進(賣出)訊號。
圖 9、染色體編碼示意圖 (資料來源:本研究整理)
3.適應函數
適應函數所代表的是染色體的生存規則,亦是用來評估每個染色體代表問題 解的優劣,不良的適應函數將會導致染色體錯誤的演化方向及結果。本研究以交 易策略之報酬率來做為適應程度衡量的依據。回測後,系統將評估染色體的適應 值,適應值越大表示該染色體內之基因越有機會被保留繼續演化。
4.交配
交配指的是在演化過程中,具有高適應力的染色體交換彼此基因產生下一代 染色體的過程。在本研究的設計中,染色體之間的交配有兩種模式,一種模式為 買賣訊號的整組基因交配,另一種模式為買賣訊號的部分基因交配。
買賣訊號的整組基因交配指的是在交配時,前代的染色體將買進或賣出訊號 以不切割的方式完整地移轉至下一代染色體上。
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
圖 10、整組基因交配示意圖 (資料來源:本研究整理)
買賣訊號的部分基因交配則是前代的染色體只將部分的買賣訊號基因移轉 至下一代染色體上。
圖 11、部分基因交配示意圖 (資料來源:本研究整理)
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
5.突變
突變係指在演化過程中,染色體中的基因隨機產生變化的情況。本研究中基 因突變的方式有兩種,一種是基因位置交換突變,一種是基因參數突變。
基因位置突變是以交換買進訊號基因與賣出訊號基因位置的方式來產生突 變。
圖 12、基因位置突變示意圖 (資料來源:本研究整理)
基因參數突變則是以隨機抽換基因的方式來產生突變。
圖 13、基因參數突變示意圖 (資料來源:本研究整理)
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
(二)基因演算法模組系統架構
圖 14、基因演算法模組系統架構圖-Horizontal Design (資料來源:本研究整理)
上圖為基因演算法模組之原始系統架構圖,主要是由 Evolution Controller 來 控制整個演化的進行。Evolution Controller 在每一代演化之初,先準備當代演化 所需的染色體族群,再將染色體族群分成若干個 split,交由 Evaluation Mapper 進行適應值計算。Evaluation Mapper 接收到 Chromosome 後,會檢視分配到的 Chromosome 需要那些基因狀態資料,再從 SRN Manager 調出所需的 Horizontal Data 進行適應值的計算。
此架構為原本 Mahout(與 Hadoop 搭配的 Machine Learning 函式庫)的標準 做法,但是實際進行基因演算法模擬回測時,此架構卻出現了運算效率低落的情 形。在重新檢測每階段作業所花費的時間後,發現主要效能的瓶頸是 Evaluation Mapper 在計算適應值時,所進行大量的磁碟 I/O。每一次計算新的 Chromosome 都要重新讀出不同的 Horizontal Data,就算將讀出的 Horizontal Data 存入記憶體 中的快取也因為擊中率(Hit Rate)太低而效益不彰。
‧ 國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
因此,本研究重新調整了基因演算法模組之系統架構如下:
圖 15、基因演算法模組系統架構圖-Vertical Design (資料來源:本研究整理)
在修正後的基因演算法模組系統架構中,仍是由 Evolution Controller 來控制 整個基因演化的模擬過程。在一個世代的模擬演化開始進行之前,Evolution Controller 會先將該世代要參與模擬演化的染色體族群全部儲存到 Hadoop 所提 供的 Distributed Cache 上面,再將模擬演化期間要用到的所有 Vertical Data 存放 在 Memory Cache 當中。模擬演化開始之初,Evolution Controller 會將切割好的 Row Keys 傳給各個負責的 Evaluation Mapper,各 Evaluation Mapper 接到 Row Key 後會從 Distributed Cache 中讀出所有的 Chromosomes,再根據分配到的 Row Keys 到 Memory Cache 中取得相對應的 Vertical Data,最後計算出每個時間點所產生 出的買賣訊號。Evaluation Mapper 計算出買賣訊號後,將結果交給 Evaluation Reducer,由 Evaluation Reducer 統整,計算出 Chromosomes 適應值後挑出優秀的 Chromosomes 交給 Evolution Controller 以進行下一代的演化。
‧ 國
立 政 治 大 學
‧
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 之中。這樣的作法可以減少磁碟資料存取次數,並用較快速的 記憶體資料存取來取代磁碟資料存取。