• 沒有找到結果。

第一章 緒論

第一節 研究背景與目的

立 政 治 大 學

Na tiona

l Ch engchi University

第一章 緒論

第一節 研究背景與目的

自民國 92 年起,台灣多次出現「實質薪資負成長」的情形,意即薪資成長 的幅度跟不上通貨膨脹、物價上漲的程度。除了民生用品、原物料價格等顯著上 漲外,其中又以房價的上漲最為可觀,根據國內房仲業者信義房屋與美國西維吉 尼亞大學合作編制的信義房價指數計算,近三年台灣地區房價指數成長約為 20%,

其中台北市房價指數成長竟然高達 50.2%。在這樣的時空背景之下,如何妥善的 投資理財逐漸成為人們所關注的重要課題,就算不見得能透過投資致富,也要試 著藉由投資來避免通貨膨脹一點一滴地侵蝕掉自己的資產。

根據 Aite Group 2006 年的調查(The Economist, 2006)顯示,歐洲及美國股 票金融市場中有 30%的成交量,是經由自動化交易或演算法交易完成的,估計在 2010 年會持續成長到 50%。另外,在經濟日報 2009 年 9 月的報導中(賴育漣,

2009),俄羅斯的 TS Support 執行長丹尼斯葛洛帕(Dennis Globa)表示,藉由 演算法交易證券所占的比例在過去 3 年,由 30%成長到 70%,可見自動化交易 在金融市場上的重要性與日俱增。

這些使用演算法自動化交易的市場參與者多半為大型投資機構,而一般中小 型投資人多半只能依靠本身的觀察與判斷來進行投資。根據朱成志(2004)的研究 指出,影響台灣地區一般投資人投資決策最主要的前三大變數依序為:財經媒體 (包含新聞雜誌、電視節目)、投資標的基本面(財務報表分析數據)與技術指標(KD、

RSI、MACD 等技術指標所呈現之買進或是賣出訊號)。由此可見,台灣地區一 般投資人的投資決策多數仍是受到傳播媒體的影響,而非進行客觀的系統化交易。

但是台灣的傳播媒體素質良莠不齊,許多傳播媒體缺乏深度探討的能力,時常大 漲就翻出利多消息報導,而大跌時就找出利空消息報導,更有甚者會配合炒作大

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

戶發表所謂「出貨文」,讓許多盲目追隨的投資大眾暴露在高度風險之中。

為了使演算法交易普及,讓一般投資者進行交易有所依歸,本研究計畫發展 出一套包含篩選金融市場交易策略及模擬交易回測策略績效功能之策略交易平 台。為滿足大量使用者的運算需求,本平台包括以下幾點特性:

1. 為了使本平台擁有良好的分散式運算機制及可擴充性,並提供高速處理海量 資料的運算能力,本平台將採用 Apache Hadoop 雲端運算架構。

2. 包含各項技術分析指標計算與 K 線型態辨識能力,提供使用者多樣化的交 易策略。

3. 提供基因演算法模擬環境與模擬交易回測平台,讓使用者評估各式交易策略 績效,進而建構自己所需之交易模型。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

第二章 文獻探討

第一節 雲端運算

根據美國國家標準局(NIST)的定義:雲端運算是運用無所不在、便利、隨需 應變的網路,共享廣大的運算資源,如網絡、伺服器、儲存、應用程式以及服務 等,可透過最少的管理工作及服務供應者互動,快速提供各項服務。簡言之,雲 端運算的精隨就是運用網路共享廣大的資源做分散式的儲存與運算。

除了基本的定義,NIST 就雲端運算服務模式的不同,將目前常見的雲端運 算服務分為三大類,依序為軟體即服務(Software as a Service, SaaS)、平台即服 務(Platform as a Service, PaaS)、架構即服務(Infrastructure as a Service, IaaS)。

一、軟體即服務 (SaaS):

消費者使用應用程式,但並不掌控作業系統、硬體或運作的網絡基礎架構。

即代表透過網路提供商業應用軟體的一種新興服務模式,對於使用者來說,SaaS 讓軟體取得的成本與使用方式都跟以往不同,過去使用商業應用軟體必須先購買 使用權,在 SaaS 模式下,軟體是存放在提供者端,使用者透過網路使用應用軟 體。

二、平台即服務 (PaaS):

消費者使用主機操作應用程式。消費者掌控運作應用程式的環境(也擁有主 機部分掌控權),但並不掌控作業系統、硬體或運作的網絡基礎架構。平台通常 是應用程式基礎架構。就是提供平台的服務,讓客戶將開發的應用程式很容易部 署到雲端如 Google App Engine 或微軟的 Azure 平台,給開發人員更大的方便與 彈性。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

三、基礎架構即服務 (IaaS):

消費者使用「基礎運算資源」,如處理能力、儲存空間、網絡元件或中介軟 體。消費者能掌控作業系統、儲存空間、已部署的應用程式及網絡元件(如防火 牆、負載平衡器等),但並不掌控雲端基礎架構。

本研究所提出之策略交易與回測模擬平台即為軟體即服務(SaaS)的一種,為 求同一時間能夠供給大量使用者使用,並進行大量的市場交易資料運算,具有高 度彈性、可擴充性且能分散式處理大量資料的雲端運算架構將為本平台最佳解決 方案。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

第二節 Apache Hadoop

Hadoop 是 Apache 軟體基金會的一個開放原始碼專案,它是由 Apache Lucene 的創立者 Doug Cutting 所建立的,由 Java 寫成,主要用途為建構大量資料的分 散式儲存與運算環境。Hadoop 專案包含了兩個最主要的元素,Hadoop Distributed File System(HDFS)與 MapReduce。

Hadoop 最初是 Apache Lucene 這個專案中的搜尋引擎—Nutch 的一部分。起 初的 Nutch 實現了一套可以抓取網頁並搜尋資料的系統,但是開發人員很快地發 現它能處理的網頁數量是有極限的,在當時的架構之下,無法擴充到處理數十億 以上的網頁。之後,Google 發表了有關於 Google File System 的論文,這篇論文 中所提出的架構可以解決抓取大量網頁和建立索引時所產生的大量檔案,這對 Nutch 的開發團隊來說很有幫助。於是,Nutch 的開發團隊就開始將這個觀念在 Nutch 專案中實作,並將其稱為 Nutch Distributed File System(NDFS),也就是 Hadoop HDFS 的前身。

2004 年,Google 又發表了一篇介紹 MapReduce 概念的論文。MapReduce 是 一種用於處理資料的分散式程式框架,用平行運算的方式,將大量需要運算的資 料,切割成許多區塊,並將這些區塊分給叢集中的每個運算節點再同時對這些區 塊分別作運算,最後再將運算的結果結合起來,產生出最終的運算結果。Nutch 的開發團隊同樣地將這個概念在 Nutch 專案中實作出了開放原始碼的版本。

在 Nutch 計畫中的 NDFS 與 MapReduce 原本是設計來處理搜尋領域的相關 運算,但人們發現分散式儲存與運算的架構在別的領域上也有優異的表現,它們 的應用慢慢地超出了原本計畫使用的搜尋領域,於是開發人員於 2006 年將 NDFS 與 MapReduce 從 Nutch 計畫中抽出,成為一個獨立的 Lucene 子計畫,並將其命 名為 Hadoop。在 2008 年 1 月,Hadoop 又從 Lucene 計畫中獨立出來,成為 Apache 最頂級的計畫(top level project)之一。以下將會依序介紹 MapReduce 與 HDFS 的

一、MapReduce:

MapReduce 將運算程序分為兩個階段 Map 和 Reduce 階段。每個階段的輸入 及輸出都採用<key, value>pair 的方式。在 Hadoop 中,一個工作(job)是客戶端要 執行的一個工作單位,它包含了輸入資料、MapReduce 程式與組態資訊。而一個 工作又會被分為數個任務(task)。

在 Hadoop 叢集中,節點分為兩種不同身分,一種是 jobtracker,另一種是 tasktracker。Jobtracker 在一個叢集中只有一個,它對所有的 tasktracker 進行任務 的分配與排程,tasktracker 會執行任務並且將執行情況報告給 jobtracker,如果任 務執行失敗,jobtracker 會將失敗的任務分派給其他的 tasktracker 執行。

圖 1、Jobtracker 與 tasktracker 示意圖 (資料來源:本研究整理)

任務的類型分為兩種,map 任務與 reduce 任務。Hadoop 會將輸入資料分割 成固定大小後再開始做 MapReduce,map 任務就是每個分割後的輸入資料區塊都 會執行的運算過程,交給 mapper 執行。Mapper 運算完之後的輸出一樣會用<key, value>pair 的形式送給處理 reduce 任務的 Reducer 作為輸入。最後 reducer 再依照 開發人員撰寫的程式將資料結合化簡,產生最後的輸出。

Client

Jobtracker

Tasktracker

Mapper

Mapper

Tasktracker

Reducer Input

Split Input Split

Mapper Output Mapper

Output

Result

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

二、HDFS:

一個 HDFS 叢集裡面會有兩種類型的節點,一個 namenode 與一群 datanode。

Namenode 管理著整個檔案系統的命名空間,他會維護檔案系統的結構和所有檔 案與目錄的 metadata。而 datanode 則是實際儲存檔案的地方,一個檔案在 HDFS 中可能會被分為一個或多個資料區塊,這些區塊會儲存在一組 datanode 上。為 了提升容錯能力而達到高可用性(availability),資料區塊通常會有多個複本儲存 在不同的 datanode 上,namenode 也負責進行資料區塊的建立、刪除與複製。

當客戶端應用程式要讀寫資料時,會先向 namenode 進行 metadata 操作,在 namenode 的安排下,客戶端應用程式會知道該直接向哪一個 datanode 存取資料。

實際在進行資料讀寫時,資料流並不會經過 namenode,而是由 datanode 直接處 理客戶端應用程式的讀寫請求。

圖 2、HDFS 架構圖 (資料來源:apache.org)

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

第三節 HBase

HBase 是一個非關聯式、欄導向(column-oriented)的分散式資料庫,建構 於 HDFS 之上。當開發者需要即時讀寫或是隨機存取大量資料時,就適合使用 HBase。HBase 專案起源於 2006 年,由 Chad Walters 與 Jim Kellerman 創立。它 參考了 Google 發表的 Bigtable 概念,並加以實作。HBase 原本是 Hadoop 專案 的子計畫,到了 2010 年 5 月,HBase 正式成為 Apache 的首層專案。

在系統架構上,HBase 如同 MapReduce 由 jobtracker 和 tasktracker 組成、HDFS 由 namenode 和 datanode 組成一般,HBase 也是採用 master/slave 架構,由 HBase master 和多個 regionserver 所組成。在 HBase 中,區域(region)代表的是一個 資料表的水平分割。HBase master 負責分配區域給已經註冊的 regionserver、監控 regionserver 的運作情形、維護 regionserver 的負載平衡以及資料表結構管理等工 作。Regionserver 負責儲存零到多個區域並處理客戶端的讀寫操作,同時

regionserver 也會定期向 HBase master 回報自己的運作情形。

圖 3、HBase 架構圖

(資料來源:James Chin, Zikai Wang, 2011)

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

第四節 技術分析

技術分析(Technical Analysis)是基於金融商品過去的供需變動,使用歷史 的股價資料,嘗試透過各項圖形或量化指標,以及統計方法來分析市場的價跟量、

大盤指數,藉由分析過去的趨勢來預測個股未來的走勢。這些歷史資料包括過去

大盤指數,藉由分析過去的趨勢來預測個股未來的走勢。這些歷史資料包括過去

相關文件