第三章 研究方法與架構
第五節 研究方法
二、 訓練階段
國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
說,儲存在 SRN 結構中的資料,除了已運算過的歷史資料(也就是最終值)外,
其餘的資料必頇是未來歷史資料中所需運算的資料,才需存儲於 SRN 中,否則此 資料將因「無時間的推移性」,而永遠不會被未來資料所使用。
SRN 能夠支援不同的時間數列,並包含在一個 SRN 群內,也提供不同目標的 資料運算。以期貨為例,使用者對於一支期貨做回測時,可選擇不同的時間精度,
以秒、分鐘、小時做運算時,不同的時間精度需要不同的資料,因此能夠使用時 間精度為以秒為單位之 SRN,以分鐘為單位之 SRN,及以小時為單位之 SRN,這 三個 SRN 將會被包含在同一商品的 SRN 群內。若使用者需對以小時為單位之 SRN 做 MACD 指標之運算,則 SRN 中便有為了計算 MACD 之資料的 Rib。為了不同 的計算目標,SRN 提供不同的 Rib 來儲存。
二、 訓練階段
而訓練階段,則是利用基因演算法針對歷史資料的回測分析,來評估投資交 易的優劣。整體流程部分分為市場資訊接收器服務、基因演算法交易策略評估帄 台、基因演算法交易策略評估執行服務、技術指標知識庫、模擬交易回測服務。
請參考圖 12 交易評估模型圖。
‧
Market Info Receiver Service策略評估相關設定 Strategy Evaluation
Configs
市場報價 Financial Markets Quotes
1.染色體長度 GA Strategy Evaluation
Platform
基因演算法交易策略 評估執行服務 GA Strategy Evaluation
Execute Service
技術指標知識庫 TA Knowledge Base
模擬交易回
技術指標知識庫(TA Knowledge Base)則是將研究所需的技術指標(TA(i)), 將其公式化,並可讓使用者客製化出買賣條件(Rule),買賣條件為一布林的表達 式,其中由多種 TA(i)組合成算術表達式,搭配布林運算子,最後在每根 K 線 或時間點來判斷買賣條件是否成立,回傳其狀態值(State)。由於技術指標知識庫 為基因演算法模組初始化染色體的來源,因此本研究擬設計出一種回饋機制,藉
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
此蒐集在不同期間內是否存在特別強勢或準確的買賣條件,將表現優秀的買賣條 件權重提高,未來初始化染色體時選擇到的機會提升,而將表現不佳的買賣條件 權重降低,降低其選擇機會,以此機制來建立技術指標知識庫。
基因演算法交易策略評估帄台是使用者主要使用之程式介面,使用者藉由該 帄台去自定義或編輯技術指標或是買賣條件,並可客製化其基因演算法之相關設 定,包括染色體長度(即代表一交易策略包含多少個買賣條件)、染色體族群數、
基因交配機率、基因突變機率、基因演化代數、訓練期間、測詴期間、優良染色 體的篩選量、選擇、交配方式、適應函式、買入訊號強度係數、賣出訊號強度係 數、測詴資料顆粒度;策略評估相關設定完成後,即可呼叫基因演算法交易策略 評估執行服務,由評估執行服務來初始化一代染色體族群,並將一代染色體族群 丟入並呼叫模擬交易回測模組,以進行整個基因演算法的演算流程。
模擬交易回測模組包括了模擬交易回測服務(Simulation Service)、策略執行 服務(Strategy Frame Execution Service)、基因演算法服務(Genetic Algorithm Service)、買賣條件編譯服務(Rule Compiler Service)、買賣條件庫服務(Rule Library Service)、收縮式肋骨網絡,請參考圖 13 模擬交易回測模組圖。模擬交易回測模 組主要為處理一代染色體族群適應值的模組,即代表依照使用者設定之適應函 式,用以進行其設定訓練期間的模擬回測。
‧
Chain of Responsibility Pattern
取得SRN Subnet
買賣條件編譯服務 Rule Compiler Service
基因演算法服務 Genetic Algorithm
Service 策略執行服務 Strategy Frame Execution Service 模擬交易回測服務 Simulation Service
收縮式肋骨網路 SRN Service
染色體族群
SRN Subnet
買賣條件庫服務 Rule Library Service
圖 13 模擬交易回測模組圖 (資料來源:本研究整理)
(一)模擬交易回測服務
當使用者將交易策略模擬相關條件設定完畢,即會呼叫模擬交易回測服務。
模擬交易回測服務包含模擬控制器(Total Simulation)、視窗模擬控制器(Window Simulation),模擬控制器負責整體模擬的流程,切割出適當大小的視窗以及時間區 間,以進行完整的一次基因演算法模擬。視窗模擬控制器則為實際運行交易策略 模擬的控制器,其負責呼叫買賣條件庫服務,以初始化一代完整的染色體族群,
並且取得該交易策略執行物件所使用之 SRN SubNet 資料。一條染色體即為一個交 易策略執行物件(Strategy Frame)。交易策略執行物件是系統中,實際將交易策略 在每個時點,確認買賣條件是否成立的執行物件,其包含了:交易策略(染色體)、
資產清單,資金管理物件。資產清單包含了每個買賣時間以及資金投注狀態,最 終可以以資產清單為基礎產出模擬後報表,以報表中的報酬率或勝率為基準,來
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
評斷交易策略的優劣。
(二)策略執行服務
主要負責將一整代的族群,針對每條 K 線進行交易策略的買賣時點判斷,每 次時點上會呼叫買賣條件編譯服務,以進行交易策略買賣的判斷,交易執行物件 中若確認購買訊號成立,即呼叫其擁有的資金管理員,來確認商品的買賣量,並 且在資產清單寫入一筆交易紀錄。
(三)基因演算法服務
負責將一整代染色體族群,進行一次基因演算法的隨機更換流程,依照使用 者設定之適應函式來進行複製、突變、挑選以及排序等程序,產製下一代的染色 體族群並交由策略執行服務進行實際的買賣時點模擬。
(四)買賣條件編譯服務
當交易策略需進行買賣時點判斷時,就會將買賣訊號的布林運算式,丟入買 賣條件編譯服務中,由其服務去負責編譯買賣條件(基因)的內容,並回傳布林 值,最後由策略執行服務判斷買賣條件是否成立,並且將訊號強弱數值傳給資金 管理員,以決定下單數量。
(五)買賣條件庫服務
當染色體初始化時,即可呼叫買賣條件庫服務,以隨機挑選買賣訊號的運算 式以及其權重值。
(六)收縮式肋骨網絡
SRN 為一雲端儲存運算服務,主要著力於資料維護與提供技術指標數值給予 交易策略評估模擬使用,並且採用雲端非同步運算以降低對系統與資料庫的衝 擊,利用雲端運算的特性來達成巨量資料或是複雜結構的數據分析,或是即時模 擬服務,並且以「非同步」(Asynchronous) 方式透過軟體協調運作,形成所謂的
「 分 散 式 處 理 」 (Distributed Processing) , 並 達 到 包 括 連 續 性 運 作 (Continuous operation) 、 分 割 獨 立 性 (Fragmentation independence) 、 複 製 獨 立 性 (Replication
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
independence)的帄行處理模式。
另外,SRN 負責留存各商品在每個時間區間以及時點的技術指標運算後的數 值,不同的時間區間劃分為不同 Spine,並在各時點上長出對應的 Rib,存入技術 指標在該時點的運算數值。由於 SRN 的資料運算量會日益提升,因此將其區隔為 獨立的服務,並且當服務啟動時將所有數據載入至記憶體中,使其運算量降至最 低。
若 SRN 服務負載量過載時,則需可以 Rib 為最小單位進行服務的切割,將服 務切割為相同的結構,載入不同的 Rib 資料後並將服務啟動至不同的虛擬機器中,
將負載量分散並維持服務品質。
系統執行流程簡圖則請參考圖 14。
‧
‧
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
第四章框架設計
本研究詴圖在雲端運算基礎之上發展滿足服務導向特色的應用程式框架架 構,詴圖將傳統的三層式架構,修改為符合可有效配置於雲端運算環境的運算結 構。本章先針對框架的核心物件與執行流程進行說明,再藉由交易策略評估帄台 之應用,以說明本架構之可行性。
第一節 三層式架構
展示層 (Presentation Layer)
View Components Model - View - ViewModel
View Models Control
View Models Data Binding
Data Binding
商業邏輯層 (Business Logic Layer)
Facade Task
BOManager Business Objects
Builder Business Objects
Commands
資料存取層 (Data Access Layer)
SQL
Server ADO.Net Data Provider
LINQ or DataSet Web Services
圖 16 三層式架構示意圖 (資料來源:本研究整理)
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 16 為一般應用程式所使用之三層式架構圖,為展示層(Presentation Layer)、 商業邏輯層(Business Logic Layer)以及資料存取層(Data Access Layer),以下將 分述之。
一、 展示層
在 展 示 層 部 分 , 本 研 究 採 取 微 軟 所 提 出 的 WPF ( Windows Presentation Foundation)來實作,並實作 MVVM 模式(Model-View-ViewModel)。在 2005 年,
John Gossman 提出 Model-View-ViewModel 模式,是 MVC 的一種變型。
View:其實就是 XAML 檔,也就是使用者介面。使用者介面設計人員只需要 在 Blend 中進行對它的編輯,並透過 Binding 來和 ViewModel 溝通,可將 DataContext 指定為某個 ViewModel,以更進一步的與其中的屬性進行 Binding。
ViewModel:顧名思義,ViewModel 就是供 View 使用的 Model,透過公開的 屬性(public property)給 View 進行 Binding 並供其使用。
Model:用來描述資料實體(Entity)的簡單類別(Class),可在 Model 部分實作商 業邏輯以及與資料庫溝通等資料存取相關的功能。
二、 商業邏輯層
商業邏輯層中,本研究使用設計模式中的 Facade 模式,可以簡化程式庫的使 用、隱藏所依賴的程式庫、降低對程式庫的耦合、有利於分工合作。為了提供給 不同的用戶端適當的介面及跨系統整合等需求,所以把傳統商業邏輯層分為數個 Components,最上層的物件是 Facade,提供適當的介面給各種用戶端呼叫,Façade 將去找尋對應的 Command,Command 負責區隔開呼叫程序方法的物件實體以及實 際提供物件方法的物件實體,也就是說將動作的要求者以及動作的執行者之間鬆 綁,這將簡化新增新命令物件的作法,因為已經存在的命令物件不需要被變動到,
也就是說 若把每個特定的動作都封裝成物件來處理,每個特殊的動作都有其對應 的物件,就不會對既有的物件產生影響,因此相當適合用於 SOA 此種各種服務低 耦合的情境中。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
Business Objects 則是商業邏輯層中,實際提供業務邏輯進行運算的物件,當 某服務需要商業物件時,Business Objects 統一由 Business Objects Builder 從資料庫 或資料庫叢集中取出存放至記憶體中,以完成商業物件的初始化,並由 BO Manager
Business Objects 則是商業邏輯層中,實際提供業務邏輯進行運算的物件,當 某服務需要商業物件時,Business Objects 統一由 Business Objects Builder 從資料庫 或資料庫叢集中取出存放至記憶體中,以完成商業物件的初始化,並由 BO Manager