• 沒有找到結果。

第一章 緒論

第一節 研究背景與目的

度小等因素,使股票獲 難超越期貨 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

架構,進而實作開發

步驟四:平行運算效能測試

平行計算機制完成後,觀察資源 用率 各工作之平均運算時間等,找出本

平行計算機制完成後,觀察資源 用率 各工作之平均運算時間等,找出本

相關文件