第一章 緒論
第一節 研究背景與目的
度小等因素,使股票獲 難超越期貨 David Aronson(2006)認為在投資 場上所有 的 析方法包括主觀 析與可量化 析,但如果不能透過重複執行來驗證其效力 (Pardo Robert,2008):可被驗證(verifiability) 可被計量(quantifiability) 具客觀性 (objectivity) 具一致性(consistency)及具延展性(extensibility) 但策略交易需要使用 者同時具備金融相關知識與程式設計能力,門檻極高 因此我們希望可以建立一 個讓一般投資者也能輕易進行策略交易的投資平台
眾多的技術指標計算在多人使用的環境下,對於電腦的運算能力要求極高,
只有大型主機或超級電腦能滿足此需求;而能執行平行運算的超級電腦價格昂貴 且大型主機的平行運算程式設計師難求(Lo, Alfred; Bloor, Chris; Choi, Y K.2000) 幸而隨著 技進步,個人電腦價格下降以及運算能力提升,使用個人工作站來處
‧
& Reinsel,2010) 在 來,資訊的成長量超乎我們所能想像,使用傳統序列的方 式處理與 析海量資料變得不可行,唯 散式運算與多處理器才能改善處理速度 (Boja, C; Pocovnicu, A; Batagan, L.2012) 散式系統另一個好處是儲存空間可以動 態擴充,使我們不必為了增加硬碟空間而更換新設備(A. Greenberg, J. Hamilton, D.
Maltz, and P. Patel.2009)
另一方面,隨著 技的進步,投資 析工具也產生了變革 過去使用者從電
‧
Flynn 的說法,空間平行運算問題可 為指 (Instruction)與資料流(Data)兩個維度,其所提出的費林 類法(Flynn’s taxonomy)係平行運算中常見的指
運行 類方法 (Thomas Rauber, Gudula R¨unger, 2007) 指 和資料流的組合可 成四個象限:
1.單指 單資料流(SISD):一個處理單元取得單一的程式與儲存空間,典型的例子
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
(共享或 散式的),即指 同步且平行地被應用到處理不同的資料上
4.多指 多資料流(MIMD):多個處理單元 具有單獨的指 及程序儲存空間及資 料存取空間(共享或 散式的),每個處理單元載入獨立的指 及一筆單獨適用於該 指 的資料元素,並將結果存回資料存取空間 多核心處理器或集群系統即為 MIMD 模型的例子
圖 1.Flynn’s taxonomy (資料來源: Wikipedia, 2013)
本研究所提出的策略挑選與期貨模擬交易平台,為求同一時間能夠快速提供 給大量投資者使用,將為數眾多的投資者請求平均 散到多部主機上,同時進行 股票 場多個標的交易資料的運算,係屬於平行運算中MIMD的應用
平行運算在通訊上 成兩種方式:內存共享(shared memory)以及 散式記憶體
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
(distributed memory) 內存共享係指多個處理單位共用一個address space,藉由共 享記憶體位置內的資料,讓不同的平行運算單元進行通訊 而 散式記憶體則讓 每個處理單位有獨立的local address space,讓資料透過訊息交換的方式在不同運算 單元間同步 內存共享的優點可以讓平行運算訊息傳遞速度極快 效率高,但伴 隨的缺點係記憶體需要極高的同步以及互斥鎖定機制;而 散式記憶體雖然訊息 傳輸速度稍慢,但訊息可以非同步傳輸並讓記憶體的配置不必限於同一個地理區 域,能彈性的增減,因此本研究採用後者做為本平台之通訊方式
‧
(open-source)的 散式資料庫,建構於 HDFS(Hadoop Distributed File System) 其 特點是可以伸縮,適用於大量資料讀寫與隨機存取 HBase 專案起源於 2006 年,由 Chad Walters 與 Jim Kellermen 創立 概念模仿 Google Bigtable—一個 散式結 構化資料儲存系統 在 HBase 中,區域 region 表的是一個資料表的水平 割 Hmaster 負責 配區域給 經註冊的 regionserver 監控 regionserver 的運作情形 維護 regionserver 的負載平衡以及資料表結構管理等工作 regionserver 負責儲存零 到多個區域並處理客戶端的讀寫操作,同時 regionserver 也會定期向 H master 回報 自身之運作情形 此專案的成立目標是將數台機器集結成一虛擬主機以儲存數以 億計行的資料表
圖2.HBase架構圖
(資料來源:James Chin, Zikai Wang, 2011)
Ian Thomas Varley(2009)提到,關於關聯式與非關聯式資料庫並沒有絕對的優 劣,而是多了種選擇 關聯式資料庫預先設定資料框架及嚴謹的綱要(schema),在 處理小量資料實有極高的效率;但面對處理的海量資料時,資料庫需要具備擴展 性(scalability),普遍的共識會避開採用關聯式資料庫而選擇用 key/value 的格式儲
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
存資料,即非關聯式資料庫
本研究所接收的即時 場報價資訊,其內容包括時間 區域 場 標的
時間粒度 開盤價 最高價 收盤價 最低價 成交量 成交價等 HBase 會將單 個時間點上的所有資料儲存為一筆 row,平均一天產生 42 萬餘筆的資料,一年會 產生近一億筆資料 面對如此龐大資料,使用傳統的關聯式資料庫需要極高的成 本(George, L,2011),且搜尋時間長,採用非關聯式資料庫才能有效處理;而 HBase
以序列化的方式儲存資料,使讀寫速度大幅減 加上硬配置可伸縮 隨需擴充
的特性,使系統 來即使面臨無法預測的使用者數量劇增,仍可以視需求擴充記 憶體,輕鬆解決本系統對於大量使用者對海量資料進行讀寫的需求
‧
1. Instrumentation level:這層定義四種(standard dynamic model open)應用程 式及系統資源變得可被管理(使資源變成 MBeans)的類型,及 MBeans 之間接收 和發送通知(notifications)的方法
2. Agent level:該層包含註冊及新增 除等管理 MBeans 的方法 負責管理 MBeans 的單元叫做 MBean server,它本身也是一個 MBean,所以也可以被管 理 而一個 MBean sever 加上在它底下所註冊的 MBeans 及在任何一個 Java Virtual Machine(JVM)中運行的 agent service 所產生的集合我們稱之為 JMX agent
3. Distributed services level:此層次包含 JMX agent 連接到管理 MBeans 的應用程 式的中介軟體 該中介軟體可 為兩部 :protocol connector 及 protocol adaptor 透過 protocol adaptor,外部的應用程式(例如一個網頁)可以連接到一個或多個 JMX agent 進行 MBeans 的管理 而 protocol connector 主要是內部 JMX agent 和在其下註冊的 MBeans 連接傳遞訊息的管道
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 3.JMX 架構圖
(資料來源
: J. Steven Perry, 2002)管理一個企業級的應用程式,早先的做法,管理者必須使用許多額外的套件,
管理的環境是困難且複雜的 而JMX的管理架構讓程式開發者可以十 容易的將 硬體或軟體的資源封裝成Java物件並配置在軟硬體資源 散的環境底下 (Ben G.
Sullins, Mark B. Whipple,2003) 本研究實作的系統建置目標為大量使用者同時進行大量
平行運算,運算的效能是極大的挑戰,使用JMX做為系統的管理架構係一個容易 實現又成本較低的解決方案
‧
JMS(Java Message Service)為 Java 平台上訊息中介軟體的技術規範,係一個用 於在兩個或多個 Clients 之間傳遞訊息的通訊介面,JMS 可讓 散式的應用程式之 間做到鬆散耦合 (Loosely Coupled) 具可靠性(Reliable) 以及非同步(Asynchronous) 的通訊 JMS 訊息服務中,主要的三個角色(Mark Richards, Richard Monson-Haefel
& David A. Chappell,2009):
1. JMS Provider(MOM 中介軟體):作為訊息交換的通道 2. JMS Producer/Publisher:訊息生產者
3. JMS Consumer/Subscriber: 訊息消費者
圖 4.JMS 概念圖
(資料來源: Mark Richards, Richard Monson-Haefel & David A. Chappell, 2009) JMS依照訊息傳送模式又可 為發佈訂閱模式(publish & subscribe)與點對點 模式(point to point),訊息的通道 別稱為主題(topic)與佇列(queue),差別在於主題 只有訂閱該主題的接收端能收到訊息,而佇列則能讓所有接收端 收到
在平行運算中,節點與結點之間聯絡 資料交換與同步的工作相當耗費時間 與資源,因此我們 用JMS鬆散耦合的特性,讓節點之間不用知道彼此的存在也可
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
以交換訊息 非同步的功能則是讓訊息暫存在主題(Topic)中,需要的應用程序再去 所訂閱的主題中取得訊息,避免產生某些應用程序等待訊息,其他程序又在等待 該應用程序手中所握資源的浪費情形發生
‧
開發人員得以重新思考如何開發和佈 企業級Java應用 JBoss Application Server 7建構於先前的良好基礎上,並提供更出色的性能 更低的內存占用率 散式的伺服器管
理機制(JBoss,2012)
JBoss Application Server 7新加入domain的觀念,使多台JBoss 應用程式伺服器配置 可以集中於一點,統一配置與佈 有別於以往大家所認知平行運算中的群集(cluster) 以下是JBoss AS 7中所提及的名詞:
1.Server Instance:在實際應用中,一個企業級系統可以由多個Application Server Web Server和Database Server組成,應用程序 碼可以 在這多個Application Server上 這 些Application Servers之後我們稱之為Server Instances
2.Cluster:多個Server Instances 同時運行並一起工作 構成Cluster的Server Instances可 以運行在一台機器或多台機器上 Cluster最主要功能提供高擴展性(隨需求增減運算資 源)及可用性(隱藏內部故障的伺服器) 在JBoss AS 7之前的版本以Cluster稱之,到了7 之後,為了與Domain做區別改稱為Server Group
3.Domain:Domain係一組相互關聯的Server Instances 當成一個單元來管理 讓管理者 從單一的控制點配置與部 多個Server Instances Domain的範圍包含了應用程式及其 所需要的資源與服務 一個Domain可包含0個 1個或多個Clusters
4.Host:一台實體的機器
5.Host Controller:負責自 主機上Server Instances的生命週期(如啟動與停止) 的程序 6.Domain Controller:一個被指派管理整個Domain的Host Controller 確保所有Host Controller 可 以 獲 得 目 前 的 配 置 資 訊 , 協 調 Host Controllers 間 的 工 作 , 及 Host Controller底下的Server Instances遵守目前的配置及管理策略
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 5.JBoss AS 7 關係圖
(資料來源:本研究整理)
表 1.Domain 與 Cluster 比較表
(資料來源:本研究整理)
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
當需要在新增 Serve Instance 時,可以到 JBoss 的管理介面,如下圖:
圖 6.JBoss AS 7 管理介面圖
(資料來源:本研究整理)
選擇右上角中間之 Server 選項,點選 Add 後,產生 Server Instance 建 立相關資訊,使用者需要輸入該 Server Instance 名稱 其所屬之 Server Group 以及 Port 的位移值等相關資訊
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
圖 7. Server instance 新增示意圖
(資料來源:本研究整理)
‧
技術 析(Technical Analysis)用在金融商品投資,藉由 場供需的作用來預測 股價(指數) 來的走勢 技術 析者認為,在現實的金融環境下,效率 場假說 (Efficient Market Hypothesis)不會成立,並認為依據過去股價(指數)變化的歷史軌跡,
可以整理出某些標準型態,而 來股價(指數)的走勢必然依照這些既定型態重複出 現
關於技術 析,John Magee提出一下幾點原則(Robert D.Edwards, John Magee,
W.H.C.Bassetti, 2007
):1.股票(指數)價格是由供給和需求雙方互相作用決定 Average 乖離率 BIAS 指數平滑異同平均 MACD 隨機指標 Stochastic Oscillator, KD Line 威廉指標 WMS%R 趨向指標 Directional Movement Index,
DMI 動量指標 Momentum Index,MTM 震盪量指標 Oscillator,OSC 及 相對強弱指標 Relative Strength Index 中間意願指標(CR)與 KBar Patterns 等十 一種常見的指標訊號來進行交易策略及投資標的組合的評估
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
第七節 支撐向量機(Support Vector Machine)
支撐向量機 (Support Vector Machines, SVM)是一種 類(Classification)演算法,
由Vapnik及其他合作者在1992年根據統計學習理論提出的一種新的監測式學習 (supervised learning)方法(William H., Teukolsky, Saul A., Vetterling, William T.,
Flannery, B. P. , 2007)
SVM與傳統機器學習技術的差別在於,它可處理線性與非 線性問題,並且不會受到資料量大小之限制,能從有限訓練樣本得到決策規則對 獨立的測試集仍能夠得到較小的誤差,而不需事先提供充足的資訊範圍SVM 的主要概念係針對訓練資料集, 用定義的特徵值,以數學的方式訓練 函數,計算出一個最理想的超平面(hyper-plane),透過此超平面 類測試資料判斷 其準確率,當準確率超過一標準值且具意義時,即可 類新的 知資料,將所有 欲 類的資料快速 類至正確的類別(胡翠峰, 2004)
圖 8.支撐向量機示意圖
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
本研究將所有 TA 視為一個集合 set(TA1 TA2 TA3…TAn),並透過訓練得來 的 model 將此集合之成員在超平面下進行 類,以決定目前的投資動作,如買進 觀望 賣出 續抱等 採用支撐向量機做為運算交易策略績效的演算法,以每日 交易資料進行多次訓練及測試,產生之策略 有 97%指示投資者應做多而實際也 為多頭 場之準確率,20%指示投資者做多但實際應做空之機率,測試結果顯示採 用支撐向量機做為本研究策略之演算法可行
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y 第三章研究流程與系統架構
第一節 研究流程
圖 9.研究流程圖
(資料來源:本研究整理)
步驟一:緒論
說明本研究的目的與使用平行運算建置的原因 步驟二:文獻探討
整理建構基於平行運算 HBase 雲端運算資料庫 JMX 管理架構 JBoss 企業 級應用程式伺服器平台與 JMS 訊息交換中介軟體之策略挑選與模擬交易平台所需 之各項技術與理論
步驟三:建立交易平台的平行運算機制
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
架構,進而實作開發
步驟四:平行運算效能測試
平行計算機制完成後,觀察資源 用率 各工作之平均運算時間等,找出本
平行計算機制完成後,觀察資源 用率 各工作之平均運算時間等,找出本