在雲端運算架構下建立投資策略校準平台 - 政大學術集成
46
0
0
全文
(2) 摘要 投資策略模型有千百種,背後的運算邏輯也大不相同,若是運用不同的演 算法進行建模,預測能力必定也不相同。投資人若對標的物僅使用一種策略模 型進行預測,其預測力有其上限,考量的因素也無法全面。再進場之後獲利時 間點之選擇亦無法精準預測。此時如何能夠同時掌握不同策略模型間的特性和 優點,以及找到一套最適當的出場時機規則,為本研究欲解決之問題。 欲解決上述之問題,本研究欲建構出一個即時的投資交易平台,透過多種 不同演算法的策略模型,以及同時使用不同時間粒度的歷史資料建出之模型相 互參考並輔以權重,使得進場信號的產生不再是僅依靠單一策略,進而提升預. 政 治 大. 測的準確度。此部分將運用 Apache Storm 的分散式架構來進行實作,從接收市. 立. 場每秒鐘的即時報價、運算完該秒鐘上千種的市場狀態、再到多個策略間彼此. ‧ 國. 學. 產出信號,僅需要花費毫秒級別的時間即可完成,並轉交給券商下單。而搓合 的結果則是透過 Kafka 的訊息傳遞機制來實現,系統以訂單的狀態來判定最佳. ‧. Nat. y. 的出場時機。. n. er. io. al. sit. 關鍵字:程式交易、投資策略模型、技術分析. Ch. engchi. ii. i n U. v.
(3) 目錄 摘要............................................................... ii 目錄.............................................................. iii 圖目錄.............................................................. v 表目錄............................................................. vi 第一章 緒論......................................................... 1 一、研究背景與動機 ................................................ 1 二、研究目的 ...................................................... 1 三、研究流程 ...................................................... 2. 政 治 大 一、技術分析 ...................................................... 4 立. 第二章 文獻探討..................................................... 4. 二、投資策略模型種類介紹 .......................................... 4. ‧ 國. 學. 三、Storm ......................................................... 8 四、Kafka ........................................................ 10. ‧. 第三章 系統研究架構................................................ 13. sit. y. Nat. 一、系統描述 ..................................................... 13. io. er. 二、系統模型 ..................................................... 14 三、策略模型的分層機制 ........................................... 16. n. al. Ch. i n U. v. 四、策略的建模方式 ............................................... 19. engchi. 五、訂單生命週期 ................................................. 20 六、出場時機點之優化 ............................................. 22 第四章 系統研究架構實作............................................ 24 一、市場狀態室 ................................................... 24 二、交易室 ....................................................... 24 三、模擬交易所 ................................................... 34 第五章 實驗設計與實驗結果.......................................... 36 一、實驗設計 ..................................................... 36 二、實驗結果 ..................................................... 36 第六章 結論與未來展望.............................................. 39. iii.
(4) 一、結論 ......................................................... 39 二、未來展望 ..................................................... 39 參考文獻........................................................... 40. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. iv. i n U. v.
(5) 圖目錄 圖 1 SVM 概念以二維平面呈現之示意圖 .......................................................................... 5 圖 2 羅吉斯迴歸預測結果分佈圖 ......................................................................................... 6 圖 3 簡單的類神經網路架構示意圖..................................................................................... 7 圖 4 決策樹示意圖 ...................................................................................................................... 8 圖 5 Topology 示意圖 ................................................................................................................ 9 圖 6 Kafka 佈署架構 ............................................................................................................... 10 圖 7 Kafka Topic 的分隔日誌示意圖 .............................................................................. 11 圖 8 Kafka 傳遞機制示意圖 ................................................................................................. 12 圖 9 系統校準步驟流程示意圖 ........................................................................................... 14. 政 治 大 中策略內部結構示意圖.............................................................................................. 17 立. 圖 10 策略模型分層機制示意圖 ......................................................................................... 17 圖 11. ‧ 國. 學. 圖 12 中策略 Bundle 內部結構示意圖 ............................................................................. 18 圖 13 大策略內部結構示意圖.............................................................................................. 19. ‧. 圖 14 資料處理步驟示意圖 .................................................................................................. 19 圖 15 訂單生命週期流程圖 .................................................................................................. 21. y. Nat. sit. 圖 16 單筆訂單出場前尋找最佳時間點之機制流程圖 .............................................. 23. er. io. 圖 17 交易室運作流程示意圖.............................................................................................. 25. al. v i n Ch 出場信號優化時序圖 .................................................................................................. 30 engchi U n. 圖 18 SignalCalculationBolt 背後之邏輯架構......................................................... 26 圖 19. 圖 20 情境模擬一 ..................................................................................................................... 31 圖 21 情境一未優化下各時間點之訂單出場收益長條圖 ......................................... 32 圖 22 情境一優化下各時間點之訂單出場收益長條圖 .............................................. 32 圖 23 情境模擬二 ..................................................................................................................... 33 圖 24 情境二未優化下各時間點之訂單出場收益長條圖 ......................................... 34 圖 25 情境二優化下各時間點之訂單出場收益長條圖 .............................................. 34 圖 26 系統效能測試結果區域圖 ......................................................................................... 37. v.
(6) 表目錄 表 1 情境一信號停止送來前每秒鐘的訂單狀態表....................... 31 表 2 情境二信號停止送來前每秒鐘的訂單狀態表....................... 33 表 3 實驗環境..................................................... 36 表 4 系統效能測試結果............................................. 37. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. vi. i n U. v.
(7) 第一章 緒論 一、研究背景與動機 根據美國紐約證券交易所(NYSE)的統計,自 2006 年開始,紐約證 交所每日的交易量已經有超過 30%的比例是來自於程式交易,顯示出近年 來程式交易在證券及期貨市場上扮演著舉足輕重的角色。相較於過去傳統 的人為判斷交易,程式交易能夠理性、客觀的分析市場變化,投資報酬率 的穩定性也相對較高,更重要的是程式能夠對極龐大的資料進行高速的運 算。身處在巨量資料的年代,人腦無法同時分析數以百萬計的資料來做為 投資的依據,而程式交易卻能輕鬆地做到這點,在時間以及眾多成本的考. 政 治 大. 量下,程式交易便慢慢開始取代傳統的人工下單模式。 此外,Michael Lewis 的著作《Flash Boys》也揭露出在華爾街的科技人. 立. 們,如何運用著光纖網路以及強大的硬體運算能力來達成「高頻交易」,. ‧ 國. 學. 賺取著遊走在道德與法律邊緣的暴利。由此也可看出,證券及期貨交易已 經不再單單只是金融業從事人員的工作,隨著資訊科技的日新月異,硬體. ‧. 設備的提升、演算法效率的優化、網路傳輸速度的增加,都使著買賣股票. sit. y. Nat. 這件事,越來越與程式交易脫離不了關係。. 在台灣的證券期貨市場,礙於相關法規的緣故,並不能像美國那般擁有. io. n. al. er. 毫秒級別的進出場速度,高頻交易無法奏效,不過程式交易也並沒有在台. Ch. i n U. v. 灣就此沒落。TradeStation、MultiChart 等等的程式交易軟體也十分的泛用,. engchi. 許多統計以及資訊相關背景的專家也紛紛投入投資策略模型的建立,試圖 透過統計數據的分析以及演算法的撰寫來製作出賺賠率高的策略模型。 基於本研究者的學習背景,恰能與上述之議題做出連結,運用程式交易、 高頻交易等觀念,輔以雲端分散式技術加上巨量資料的運算處理來進行整 合,是目前台灣較少人著墨的議題,也是本文研究的主要方向和動機來源。. 二、研究目的 本研究將建構一套校準機制,基於策略預測準確度、訂單出場時機的 選擇及訂單送出後之等待時間進行模型的調校。策略的預測準確度包含了 複雜的分層架構,以投票和權重分配來得出最終的進場信號;訂單出場時. 1.
(8) 機的選擇則是利用對於未來趨勢的預測來找尋行情反轉點,進而出場獲利 了結;訂單出場後的等待時間則視模型建立的方式而定或供投資人自行選 擇,達成停損點設立。. 三、研究流程 (一) 定義問題: 在雲端分散式架構的基礎上,建立一套支援多種投資標的的交易系統。 系統將接收標的物的即時報價,並使用多個以技術指標為基礎所建立的策 略模型,彼此交互參考來產生進場信號的優化,以及自動找到最佳的時間 點出場,達成獲利優化。. 政 治 大 介紹本研究系統使用之 Storm 分散式架構、Kafka 訊息傳遞機制及其 立. (二) 文獻探討:. 中重要元件,並探討證券技術分析的定義與相關理論,以及關於投資策略. ‧ 國. 學. 模型之運用。. (三) 交易資料與投資策略模型蒐集:. ‧. 本研究與外部金融機構合作,接收來自外部的即時報價源,用以運算. Nat. sit. y. 出多種技術指標及其市場狀態。並運用市場狀態的歷史資料,搭配不同類. al. n. 啟動系統時選取。. er. io. 型的演算法和統計迴歸來製作投資策略模型,儲存至資料庫中供投資人在. (四) 交易系統建置. Ch. engchi. i n U. v. 使用文獻探討中 Storm、Kafka 等開源系統,建構一套能支援大量投資 人使用,且單一投資人能夠針對多種商品進行投資模擬,每一個商品模擬 皆使用一至多種投資策略模型來進行預測之系統。系統的服務皆以 Spout 和 Bolt 來實踐,Storm 會自動將服務分散至叢集上佈署,開始接受即時報 價並極快速的計算出數千種市場狀態,再交由策略模型即時計算出信號, 多個信號依照其權重值得出是否該進場下單,下單結果運用 Kafka 回傳給 系統並找到最佳時間點出場獲利了結,完成一次的交易流程。投資人可自 由的選擇欲投資的商品、使用的投資策略模型、每個模型的權重、投資模 擬的時間長度等等的參數設定。 (五) 即時交易環境模擬及評估運算效率和進出場優化效益. 2.
(9) 系統建置完成後,即可進入即時的投資環境下,模擬投資人實際啟動 一次策略模擬並記錄結果。此處需要考量 Storm 的分散度和系統撰寫的運 行效率,以及進場信號的準度優化程度和出場時獲利能否增加。並且測試 系統負載量,如同時使用的投資人數量、支援的商品種類等。 (六) 結論與未來展望 探討運用新型的分散式工具以及系統的架構對於程式交易的貢獻。此 外也將繼續研究更多種的投資模式與考量更多因素和方法,來繼續增進信 號的準確度及獲利。. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. 3. i n U. v.
(10) 第二章 文獻探討 本章將對於本研究所運用到的技術與分析方法進行介紹。以下將分別說明 探討股價變化規則之技術分析,以及運用各種演算法來製作投資策略模型的相 關研究,再介紹本雲端分散式系統的核心架構:Apache Storm 流式計算系統、 Kafka 訊息傳遞通道。. 一、技術分析 相較於探究股價本身的實體條件決定是否進行投資的基本面分析 (Fundamental Analysis),技術分析(Technical Analysis)則是利用統計找出. 政 治 大 分為圖形分析與指標信號分析,圖形分析主要透過將市場價格、成交量等等的 立 金融資訊轉換成為圖表,便於投資人了解市場走勢,如觀察 K 線圖中陰陽線交 過去曾經一再發生的市場規則,以規則來做為進出場投資的依據。技術分析又. ‧ 國. 學. 替排列組合的狀態,來決定最佳買賣時機。指標信號分析是指運用統計的數量 指標來呈現某個時段的市場狀態,投資人觀察這些指標的走勢變化來預測未來. ‧. 的價格走向,藉以搶得先機來獲利。. y. sit. io. er. 以下四點:. Nat. 以技術分析專家 Robert D.與 John Magee 之觀點,技術分析的理論依據基於. al. 1.市場上證券價格之決定,來自於商品本身的供需關係。. n. v i n 2.認為證券交易的價格、成交量、漲跌等等市場行為之表現,是投資人考量眾 Ch engchi U 多市場因素後進行買賣的結果。故技術分析僅需分析市場行為,不必分析影響 的因素。 3.市場的證券價格有變動的趨勢,投過技術分析能夠發現趨勢。 4.過去的歷史會不斷發生。 本研究使用之策略模型皆透過技術分析的 18 種技術指標,以及將指標相互 比對而產生的數千種市場狀態作為參數來產生。系統在執行策略模型後,即會 開始接收即時運算出的技術指標與市場狀態,決定是否進行買賣交易。. 二、投資策略模型種類介紹 (一) 支撐向量機(Support Vector Machine, 支持向量機, SVM). 4.
(11) SVM 是一種分類(Classification)的演算法,是由統計學習理論提出的一 種新的機器學習方法。 SVM 的主要概念在於一個特徵空間中,找出一個超平面(hyperplane), 藉由這個平面將資料分成兩類。以二維的角度來看,即是在一個平面上找出一 條直線,並以此將散佈在平面上之資料分開,而直線之考量必須極大化其邊界 (margin),畫出的直線邊界越大,預測精度則會越高。. 立. 政 治 大. ‧ 國. 學. 圖 1 SVM 概念以二維平面呈現之示意圖 SVM 的特點在於能夠同時最小化經驗誤差以及最大化邊界區,在解決非線 性、高維模式識別問題中皆有不醋的表現。目前已廣泛運用在手寫辨識、人臉. ‧. 辨識、文本圖像分析等實際問題中。也有許多金融相關研究利用 SVM 來進行. y. Nat. 策略模型製作,在 Fan, A. and Palaniswami, M. (2001) 的研究中便以 SVM 來對. io. sit. 澳洲股市做分析,藉以找出更高報酬率的投資組合,實驗針對近五年的市場進. n. al. er. 行模擬,總投報率達 208%,高出基準點 71 個百分比。Qinghua Wen, Zehong. i n U. v. Yang, Yixu Song and Peifa Jia (2009) 透過 SVM 搭配股票箱理論(box theory)找. Ch. engchi. 出股箱的上界和下界,交易策略便能以其作為買賣的決策依據,研究更針對了 牛市、熊市或者震盪趨勢的市場進行測試,皆能保證一定績效的呈現。在 Shom Prasad Das and Sdarsan Padhy (2012) 之研究中,以 SVM 針對印度的期貨 市場進行價位預測,並比較 SVM 以及另一種機器學習技術:Back propagation technique(BP),績效結果顯示出相較於 BP,SVM 具有較好的表現。 (二) 羅吉斯迴歸(Logistic Regression) 在社會科學中常使用到大量的類別資料,例如性別可以分為男女,一個人 有分為有感冒或沒感冒,宗教可以分為基督教、佛教、伊斯蘭教等。若類別變 數做為自變數(dependent variable)時,可以利用卡方分析來做資料的分析,但 若要使用身高、體重、收入等連續變數做為自變數時,常常受限於應變數為類. 5.
(12) 別資料,而缺乏適當的統計工具。羅吉斯迴歸正是用以處理應變數屬於類別資 料的情況,可以說是社會科學最重要的統計模型。 羅吉斯迴歸以二項式分配(Binomial Distribution)為出發點,假設應變數服 從二項式分配,線性模型為: 𝜋(𝑥) 𝑙𝑜𝑔𝑖𝑡[𝜋(𝑥)]= log ( ) = 𝛽0 + 𝛽1𝑥 1 − 𝜋(𝑥) 經過指數轉換後可改寫為: 𝜋(𝑥) =. 𝑒 (𝛽0 +𝛽1𝑥 ) 1 + 𝑒 (𝛽0 +𝛽1 𝑥). 模型中,𝜋(𝑥)表示機率,𝑥則是模型的自變數,𝛽0與𝛽1為自變數的權重。圖 2 可以看到𝜋(𝑥)的範圍分佈在 0 和 1 之間,若以 0.5 為判斷門檻,機率若大於. 政 治 大. 0.5 則視為發生,反之為不發生。. 立. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. i n U. v. 圖 2 羅吉斯迴歸預測結果分佈圖 羅吉斯迴歸被廣泛的運用在醫學統計、信用風險等領域,但在證券分析研. Ch. engchi. 究中的學術論文並不多。邱雅鈴 (2004) 建立了一套以 21 項技術指標為基礎, 應用基因演算法的預測系統,並以羅吉斯迴歸模型來做績效比較,整體而言, 基因演算法的結果優於羅吉斯迴歸。許多文獻中也都利用羅吉斯迴歸來與其他 演算法進行比較,預測力也都趨於劣勢。 本研究使用的策略模型,因看準羅吉斯迴歸對於類別形態應變數之應用, 而以其來建立漲跌模型。雖然目前為止鮮少有好的文獻來支持該迴歸在證券預 測上之應用,但透過變數的篩選以及其一定程度的預測力,並搭配本研究的多 策略同時預測,希望仍舊能提供系統一個參考依據。 (三) 類神經網路(Neural Network). 6.
(13) 類神經網路是一種利用電腦來模仿生物神經網路的結構和功能的運算模型, 它使用大量的相連人工神經元來模仿生物神經網路的能力,並且經過學習的過 程,使得電腦能夠就像人類那樣具有推理能力。 而人工神經元是簡單的模擬生物神經元,它從外界環境或者其它人工神經 元取得資訊,並加以運算,之後輸出結果到外界環境或者其它人工神經元,由 眾多神經元結合起來就成為一個類神經網路。人工智慧在目前的研究盛行,經 過長期發展後,很多文獻提出了許多網路架構去解決不同的問題以及速度上的 改進。下面以一個簡單的架構,來了解它的工作原理:. 立. 政 治 大. ‧ 國. 學 ‧. 圖 3 簡單的類神經網路架構示意圖 輸入層(Input layer):透過許多神經元(Neuron)接受大量資訊。. y. Nat. 輸出層(Output layer):資訊在神經元鏈接中傳輸、分析,形成預測結果。. 非線性關係,好比人類的神經突觸連結越多,就會越. er. io. sit. 隱藏層(Hidden layer):主要功能是增加類神經網路的複雜性,以模擬複雜的. n. a聰明。但過於複雜的類神經網路,會有過度學習導致 iv l C n hengchi U 預測力降低的疑慮,所以並不是人工神經元越多越好。. lebeling Kaastra and Milton Boyd (1996) 在 1996 年的文獻中就已提出人工類 神經網路(artificial neural network, ANN)在財經相關的預測研究已經有相當程 度的成長,並且發展了一套 ANN 用於預測金融相關的時間序列資料。 Wensheng Dai, Jui-Yu Wu, Chi-Je Lu (2012) 應用了非線性獨立成分分析 (nonlinear independent component analysis, NLICA)搭配後傳導類神經網路 (backpropagation neural network, BPN)對日漸興盛的亞洲股市建立一個時間序 列的預測模型。運用 NLICA 來對資料進行前處理,再將前處理之資料交由 BPN 去學習,最後分別再對日經指數以及上海 B 股指數進行預測。該文獻中運. 7.
(14) 用了四種方式來交叉比對預測力,結果顯示 NLICA–BPN 的組合優於其他三種, 並且提高了對於指數的預測力。 (四) 決策樹(Decision Tree) 決策樹經常被使用於 data mining,不僅可以分析數據,也可以做預測。決 策樹模型代表的是資料中的「屬性」與「值」之間的映射關係。. 政 治 大. 圖 4 決策樹示意圖 要從現有的資料中建立一顆決策樹,通常採用由上而下(Top-Down),以. 立. 遞迴的方式建立。唯一的要求是,資料的屬性必須是「類別型態」,若是連續. ‧ 國. 學. 型數據,必須先離散化過後才可以開始建立決策樹。決策樹的本質是一種貪婪 演算法(Greedy Algorithm),一開始所有的訓練樣本(Training Set)都在根節. ‧. 點,並以計算過後各屬性的統計性測量(例如資訊獲利)當作基礎,挑選最好. y. Nat. 的屬性來當作分割點,反覆地將樣本分隔開來。. io. sit. Muh-Cherng Wu, Sheng-Yu Lin and Chia-Hsin Lin (2006) 運用濾嘴投資法. n. al. er. (filter rule)找出許多個進出場時間點,將這些時間點用利用決策樹分類,並. i n U. v. 與純粹的濾嘴投資法以及 Lin (2006) 提出的濾嘴投資法搭配基本面分析之參數. Ch. engchi. 做比較。在台灣電子股以及那斯達克(NASDAQ)科技股兩個市場的測試下, 研究結果顯示有使用決策樹做分類的濾嘴投資分析法表現優於其他兩者。JarLong Wang and Shu-Hui Chan (2006) 也利用 Microsoft、Intel、IBM 的每日報價 以及技術指標來使用 two-layer bias decision tree,結果不僅在買進時間點和獲利 上有提升,在模型的學習速度、穩定度、簡易性都有所進展。. 三、Storm (一) Storm 簡介 Storm 是一個免費開源、分散式、高容錯的即時計算系統。 Storm 令 持續不斷的流式計算變得容易,彌補了 Hadoop 批次處理所不能滿足的實 時要求。 Storm 經常用於在即時分析、機器學習、持續計算、分散式遠程 8.
(15) 調用和 ETL 等領域。 Storm 的部署管理非常簡單,而且,在同類的流式計 算工具,Storm 的性能也是非常出眾的。 (二) Storm 架構 1. 串流 串流(Stream)是 Storm 裡面的關鍵抽象。一個串流是一個沒有邊界 的元組(tuple)序列。Storm 提供一些原語來分散式地、可靠地把一個串 流傳輸進一個新的串流。 Storm 提供的最基本的處理串流的原語是 Spout 和 Bolt。你可以實現 Spout 和 Bolt 對應的接口以處理你的應用的邏輯。 2. Spout. 政 治 大 送到 Stream 中。Spout 是一個主動的角色,在接口內部有個 nextTuple 函 立. 通常 Spout 會從外部資料源讀取資料,然後封裝成元組形式,之後發. ‧ 國. 3. Bolt. 學. 數,Storm 框架會不停的調用該函數。. Bolt 是一個被動的角色,其接口中有一個 execute(Tuple input)方法,. ‧. 在接收到消息之後會調用此函數,用戶可以在此方法中執行自己的處理邏. y. sit er. io. 4. Topology. Nat. 輯。. Spout 和 Bolt 所組成一個網路會被打包成 Topology 交給 Storm 運行,. al. n. v i n Topology 是 Storm 裡面最高等級的抽象,裡面的每一個節點都是平行運行, Ch engchi U 並且會一直運行到停止它為止。. 圖 5 Topology 示意圖 2.5 元組. 9.
(16) Storm 使用元組來做為它的資料模型。Topology 裡面的每個節點必須 定義它要發射的 tuple 的每個參數,元組本來應該是一個 Key-Value 的 Map,由於各個組件間傳遞的元組的參數名稱已經事先定義好了,所以元 組只需要按序填入各個值,就是一個值串鏈,而一段連續源源不絕的元組 就組成了串流。. 四、Kafka (一) Kafka 簡介 Apache Kafka 是由 Apache 開發的一個開源分散式訊息傳遞系統,由 Scala 寫成。Kafka 最初是由 LinkedIn 開發,並於 2011 年初開源。2012 年. 政 治 大 統一、高通量、低等待的平台。 立. 10 月從 Apache Incubator 畢業。該項目的目標是為處理實時數據提供一個. (二) Kafka 架構. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch 圖 6. engchi. i n U. v. Kafka 佈署架構. 1. Topics and 日誌 生產者(Producer)可以定義 Topic 並將訊息傳至該 Topic 上,而消 費者(consumer)則從 Topic 上來接收訊息。Topic 使用分隔日誌 (partition log)來紀錄訊息的順序,而每一筆訊息都是用 offset 來做為自 己的 id,Kafka 保證所有的訊息能夠存在一段時間,並且保證分隔內的訊 息會按照順序交給消費者。. 10.
(17) 圖 7 Kafka Topic 的分隔日誌示意圖 2. 分配(Distribution). 政 治 大 台機器作為領導(leader),零至多台機器作為追隨者(followers)。追隨 立 Kafka 的分隔日誌會分散到叢集上的各個機器上,且一個分隔會由一. ‧ 國. 3. 生產者. 學. 者為副本,若領導不幸陣亡追隨者則會頂上成為新的領導。. Nat. 4. 消費者和消費者群組(Consumer Group). sit. 配到哪幾個分隔上。. y. ‧. 生產者可以指定訊息要傳遞到哪個 Topic,並指定 Topic 裡的訊息分. er. io. 消費者能向 Topic 取得訊息,採用佇列(Queuing)和廣播-訂閱. al. n. v i n Ch 者會自己定義標籤,標籤相同者為同一組且成員可分散在不同機器上。每 engchi U (Publish-Subscribe)機制。兩種機制的綜合運用則為消費者群組,消費. 一分隔對一組群組為佇列機制,該群組只會有一個消費者收到訊息,再用 輪詢方式交給其他消費者。對多個群組時則為廣播-訂閱機制廣播給所有 訂閱者。. 11.
(18) 圖 8 Kafka 傳遞機制示意圖 5. Zookeeper. 政 治 大. 在一個分散式的系統下,每一個伺服器都會各自的任務,在這當中. 立. 最常會遇到的問題為在一個時間點之下,該如何知道哪些伺服器還正常運. ‧ 國. 學. 作,哪些出錯了?這就是 Zookeeper 所關注的問題,Zookeeper 負責偵測移 除或新加入的 中介者(Broker) 或消費者以及維護消費關係. ‧. (Consumption Relationship)。. n. er. io. sit. y. Nat. al. Ch. engchi. 12. i n U. v.
(19) 第三章 系統研究架構 一、系統描述 投資市場上的策略模型有成千上百種,投資人皆期望能透過這些策略 來穩定獲利。然而,每種策略的勝賠率不一,預測能力有限,單一種策略 亦無法考量到所有的市場因素,而使得一種策略可能只在特定的情況下能 發揮良好的預測力。再者,當策略告知投資人進場下單後,何時出場獲利 了結往往只能依靠投資人本身的經驗設定停利停損,難以考量到整體市場 趨勢而錯失更高的獲利機會。 欲使得以上受限的預測力能得以改善,本研究欲提出一套機制,能夠 同時運用多個策略模型於單一標的物上,在極短的時間內運算出交易信號。. 政 治 大 則無。此時平台會將這些信號透過投票、權重等機制,並接收總經相關的 立 不同模型產生的信號可能不盡相同,同一時間點下有的策略有信號,有些. ‧ 國. 學. 市場訊息,最終產生出該標的物在該時間點下的唯一信號,此信號即考量 了所有運用到的策略特性。本研究希望能基於一個高速的運算環境下,透. 優化。. ‧. 過多管齊下的方式來解決單一策略預測力有限的問題,達到進場時機點的. y. Nat. sit. 此外,系統仍會同時監控每一個策略的預測力表現,動態的重新分配. er. io. 每一個策略的權重植。當某策略表現十分優良時,則調高其權重,增加信. al. v i n Ch 該策略,以維持總體策略信號的準確度,待到該策略預測力回穩時再將其 engchi U n. 號強度,而當某策略連續預測失敗時,系統則將調低權重,甚至直接關閉. 加入共同預測的行列。. 優化的初衷為低買高賣,當完成了進場時機點的優化,同樣的本研究 亦於平台上整理出一套出場規則,規則會判斷市場走勢,若市場價格持續 上漲,手中持股便繼續持有,並調高一定的出場金額。待市場的上漲趨勢 判定趨緩或即將下跌,此時再立即將持股出場獲利了結。相較於僅以靠投 資人的經驗法則,或買進後立刻獲利了結,此方法能夠將獲利盡可能的極 大化,並排除掉許多人為判斷錯誤的風險。 欲完成上述進出場時機點之優化,本研究擬建置一交易平台,平台前 端可供投資人做資金設定、選取投資標的、選定欲使用的策略等參數,後 台能夠透過訊息傳遞通道接收到以上設定,並自動展開成一個具有考量多. 13.
(20) 重策略能力的大策略模型(Super Strategy),開始接收由市場狀態室利用 市場最新即時報價計算出的技術指標以及市場買賣規則等等之市場狀態, 使大策略模型產出統整過後的最終信號。利用信號到證(期)交所或者系 統內建之模擬交易所進場下單,同樣透過訊息傳遞通道接收搓和結果,並 判斷市場走向來決定出場時機獲利了結。而每完成一筆買賣交易的結果亦 能夠透過前端畫面即時通知投資人,方便於交易過程中調整策略。. 二、系統模型 本研究設計之校準流程會由投資人啟動一次預測模擬開始,接收由 交易平台前方傳來之參數交由系統即時運算,來預測接下來數秒內之漲跌,. 政 治 大 待交易平台之預測信號並調整訂單欲出場之限價金額,直到漲跌趨勢即將 立 進而下單。下單過程分為兩次,第一次下單為市價單,購入後便會繼續等. 改變時送出第二單,為限價單。第二單送出後會有一等待時限,若時限內. ‧ 國. 學. 皆無法搓合成功即代表預測失敗,此時系統會取消第二單,並送出第三單, 為市價單,進行停損出場。. ‧. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 圖 9 系統校準步驟流程示意圖 以投資人針對台指期進行做多之投資模擬為例,投資人會選定若干 個針對台指期之投資策略,交由系統接收參數及信號計算。若產生信號則 即時購入一市價單。購入之後便開始接收市場趨勢信號並等待趨勢改變, 逐漸上調欲出售金額。待市場趨勢即將改變時,立刻反手送出第二單,以 調整完之最後價格限價送出,並等待搓合結果。假設等待時間為十秒,訂 單在十秒內搓合完畢則預測成功,結束一次交易;若十秒內為能成功搓合, 表示預測有誤,此時則取消該筆限價單,改以市價單方式認賠出場,結束 該次交易。. 14.
(21) 欲達成上述提出之所有校準機制,本節歸納出影響此系統的所有因 素,建立此校準平台的系統模型。. TM =(SC, WT1, WT2) TM:Tuning Mechanism,校準機制 SC:Signal Calculation,信號計算 WT1:Waiting Time 1,出場時機優化 WT2:Waiting Time 2,訂單出場等待時間 系統的校準機制主要受到信號計算、訂單出場後等待時間、優化出 場時機的影響。信號計算亦擁有標的物、多空、演算法及策略四個考量因 素。. 政 治 大. SC = (T, LS, ALG, S). 立. T:Target,標的物. 學. LS:Long Short,多空 ALG:Algorithm,演算法. ‧. ‧ 國. SC:Signal Calculation,信號計算. y. Nat. S:Strategies,策略. io. sit. 投資人每次的預測會選定某一標的物,對其決定做多或做空。而針. n. al. er. 對做多或做空,投資人可啟動一至多組相同或不相同的演算法來進行預測,. i n U. v. 而每一組演算法都包含多個由相同演算法所組成的策略。演算法包含準確. Ch. engchi. 度和權重,準確度會動態的影響演算法的權重值。. ALG = (A, W) ALG:Algorithm,演算法 A:Accurate,準確度 W:Weight,權重. 在訂單進場後,系統會等待一段時間預測未來趨勢用以決定該 訂單之出場時機,稱為出場時機優化。未來趨勢的預測包含信號計 算本身的預測、總經指標預測和震盪型指標預測。 WT1 = (SC, MEI, O) WT1:Waiting Time 1,出場時機優化. 15.
(22) SC:Signal Calculation,信號計算 MEI:Macroeconomic Indicator,總經指標 O:Oscillator,震盪型指標 當訂單出場至證(期)交所後,系統便開始計時,在一定等待時間 內若訂單無法成交,則直接以現價成交,此機制稱為訂單出場等待時間。 等待時間則依照策略建模時使用之資料決定,或者由使用者自行決定等待 時間。. WT2 = (S, U) WT2:Waiting Time 2,訂單出場等待時間. S:Strategies,策略. 治 政 U:User,使用者 大 立 本研究設計之系統將遵循上述提出的系統模型進行開發,建立 ‧ 國. 學. 一套在雲端架構下的投資校準平台,來達成進出場時機的優化機制。. 三、策略模型的分層機制. ‧. 針對準度預測公式 AP = (T, LS, ALG, S),本研究之系統會讓投資. sit. y. Nat. 人選定標的物 T(例如:台指期),針對該標的物會替投資人產生一次投. io. er. 資模擬,模擬中包含了針對該標的物的一組做多與做空 LS,此處稱為大 策略。而做多(空)中包含了多個相同或不相同的演算法 ALG,稱為中. n. al. Ch. i n U. v. 策略 Bundle。一組演算法中又再包含多個策略 S,稱為小策略。 台指期 = T. engchi. 大策略 = LS 中策略 Bundle = 一組 Long 或 Short,其中包含多個 ALG 中策略 = ALG 小策略 = S 大策略 中策略Bundle 中策略 小策略. 16.
(23) 圖 10 策略模型分層機制示意圖 使用之演算法模型,皆是由市場狀態的歷史資料所產生,每一種演算 法其中都包含了多個同種演算法所產生的策略。如圖所示,此圖呈現出兩 個演算法模型,一個 SVM 的演算法模型中可能包含了五個 SVM 策略, 本研究稱這五個為小策略,小策略皆是由相同的演算法、相同的歷史資料、 相同的時間粒度來產生,不過用到的市場狀態可能會有所不同。而本研究 稱這五個 SVM 小策略的集合為一個 SVM 的中策略。. 立. 政 治 大. ‧ 國. 學 ‧. 圖 11 中策略內部結構示意圖 如圖 10,一個包含五個小策略的 SVM 中策略和包含四個小策略的羅. sit. y. Nat. 吉斯迴歸中策略。小策略會分別接收自己所需要的市場狀態去計算出信號。. io. er. 因為接受的市場狀態不同,所產生出來的信號也可能不會一致,此時便利. al. 用投票的機制來決定此階段的最終信號。以圖 6 的 SVM 策略為例,當. n. v i n SVM1、SVM2、SVM3 皆產生信號而 SVM4、SVM5 沒有產生信號,此時 Ch engchi U 投票機制將以三比二來決定此 SVM 中策略模型有一個進場信號產生。 透過將一個模型看成多個相同演算法所產生的小策略模型集合,能夠 考量多個市場狀態參數並確保信號的強度,讓每一個中策略的信號可靠度 得以提升。 而本研究更進一步將每一個中策略賦予一個權重值,權重值可讓投資. 人自行設定,但總合為一,如圖所示。. 17.
(24) 圖 12 中策略 Bundle 內部結構示意圖 以圖 11 為例,LR weight = 0.6,SVM weight = 0.3,ANN weight = 0.1,. 政 治 大 LR 中策略依照其權重,所產生的 LR 中策略信號為 0.6,SVM 則為 0.3, 立. 總合為 1。若當 LR 與 SVM 內部的小策略皆過半數通過而產生信號,此時. ANN 因小策略未過半數則沒有信號,信號總和為 0.9。若 0.9 超過投資人. ‧ 國. 學. 設定的門檻值,此時便稱該 MidStrategy Bundle 產生了一個買進信號。 透過權重值的方式,便可考量出中策略模型的特性。當在進行短線交. ‧. 易時,透過短天期為單位的歷史資料所做出來的模型,會比長天期為單位. Nat. sit. y. 的歷史資料所建出的模型,更為精準。不過長天期的模型通常反映出一段. er. io. 時間的市場走勢,對信號的準度仍然有影響力,只是相較短天期的模型下. al. 沒那麼強烈。有鑑於此,便可將短天期之模型的權重值調高、長天期的模. n. v i n Ch 型權重值調低,彼此相互參考,不會太過偏頗每一種策略所產生的結果。 engchi U 而 MidStrategy Bundle 又分成做多與作空兩種,兩種 bundle 同時存在 於一個 Super Strategy 中,稱為大策略。做多與做空的兩個 bundle 亦會相 互參考來修正自己的信號,並接受總經指標給予的市場趨勢做最後的判斷, 此階段的信號則為分層機制中的最終信號,準備進場下單。. 18.
(25) 圖 13 大策略內部結構示意圖 經過上述層層的考慮,更能夠確認每一次的進場信號都是經過千錘百 鍊而成,使得策略不再單打獨鬥,而是協同合作來達成綜效,將進場信號 優化。. 四、策略的建模方式. 立. 政 治 大. ‧ 國. 學. 本研究使用之策略模型,其主要理念為預測下一秒後的 k 秒之內價格 是否上漲或下跌,基於此建模理念所使用的歷史資料,有一套資料處理方. ‧. 法,以下為資料處理步驟之定義,附圖 13 說明。. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 圖 14 資料處理步驟示意圖 LAM(Look Ahead Minus):以時間點 0 為基準,將第一秒之後 k 秒(k 值可依模型需要調整,此處 k=7)內的每 一秒之價格與第一秒相比,若小於則加總, 記在第 0 秒之位置。其意義為預測下一秒之. 19.
(26) 後的跌幅趨勢。以圖為例,第 0 秒之 LAM 為-3(第六秒之-1 加第七秒之-2)。 LAP(Look Ahead Plus):以時間點 0 為基準,將第一秒之後 k 秒內的每 一秒之價格與第一秒相比,若大於則加總,記 在第 0 秒之位置。其意義為預測下一秒之後的 漲幅趨勢。以圖為例,第 0 秒之 LAP 為 5(第 三秒之 1 加第四秒之 2 佳弟五秒之 1)。 Ratio:將 LAM 與 LAP 相除取絕對值。以做多的策略建模為例,便以 LAP 除以 LAM 取絕對值,得出的 ratio 若大於一,表示該時間點下 一秒的後 k 秒內漲幅大於跌幅,若 ratio 介於零到一之間,表示跌幅. 政 治 大 pattern 設為 1,其餘設為 0。 立. 較漲幅明顯。因模型需求,此處將 ratio 大於一的時間點,其. ‧ 國. 學. 運用 LAM、LAP 和 Ratio 製作出這一連串 0 和 1 的 pattern 並搭配市場 狀態來建模,建出的模型若產生信號,則代表在未來 k 秒之內市場走勢會. ‧. 上漲(以做多為例)。由於模型的預測方式,本研究得以基於其上來發展 出場時機的優化方法。. y. Nat. n. al. er. io. sit. 五、訂單生命週期. Ch. engchi. 20. i n U. v.
(27) 立. 政 治 大. ‧. ‧ 國. 學 er. io. sit. y. Nat. n. a圖l 15 訂單生命週期流程圖 i v 由大策略送出的訂單共有以下四種類型,以這四種類型組成一個訂單 n Ch U engchi 生命週期,完成一次交易。 第一單:為市價單,以該標的物當時的市場價格直接進場。當大策略傳來 信號,便會立刻送出第一單至交易所等待搓和,並會由統一的一 個表記錄該筆訂單的狀態。 第二單:為限價單,以該進場之價格加(減)一固定金額後送出訂單。當 第一單以市價成交後,該訂單與成交價會以 Kafka 通知記錄表, 此時記錄表會將訂單狀態改為第二單,並將成交金額依照該訂單 之形態來加減一定金額後送出第二單,同時開始倒數計時,倒數 時不停地監看訂單狀態,其目的在於確保第二單是否能在一定的 時間範圍內成交,一旦第二單搓和成功便會再透過 Kafka 告知記. 21.
(28) 錄表將狀態修改為結束。若在時限範圍內訂單狀態修改為結束, 代表第二單搓和成功,完成該次交易。 取消單:取消訂單,通知交易所取消前一步驟下的第二單。若在倒數完畢 後,訂單的狀態仍為第二單,無法在時限內搓和成功,表示模型 預測的結果可能出錯,必須認賠出場,此時記錄表會立即請求送 出取消單去取消第二單。 第三單:同樣為市價單。取消第二單後,會緊接著送出第三單,亦為市價 單,直接以市場價格出場,完成預測錯誤時的認賠機制。 以一個做多的模型產生信號為例,假設標的物的市價為 100 元,第 一單即會以 100 元成交,此時記錄表會將該訂單成交價加 1 元,以限價. 政 治 大 若有回報成交則結束交易,若無則再送出取消單取消該限價單,接著發送 立 101 元送出第二單,並開始等待成交結果。假設等待時間為五秒,五秒內. ‧ 國. 學. 第三單以市價認賠出場。. 六、出場時機點之優化. ‧. 根據訂單生命週期,能夠保證模型在有一定準確度的情況下,立刻反 手賣出來賺取價差。但單就此方法尚未考量優化,若標的物的市場趨勢持. Nat. sit. y. 續向上,投資人的模擬將會在短時間內頻繁的進出場,又若限價增加的金. al. er. io. 額很小(如 1 元),投資人的獲利便十分有限,甚至交易手續費會壓過獲. v i n Ch 於是本研究進一步在第一單成交後,加上考量出場時機的方法,欲透 engchi U n. 利,以至於模型的正確率高,卻始終賺不到錢。. 過此方法,來找到最適當的時間點獲利了結,並持續修改出場價格,讓獲 利極大化。以下先說明策略的建模方式,再運用建模方式來制定出優化的 流程。. 22.
(29) 立. 政 治 大. ‧ 國. 學 ‧. 圖 16 單筆訂單出場前尋找最佳時間點之機制流程圖 當送出第一單並成交之後,不再立刻反手送出第二單,而是等待下一秒鐘 是否有大策略進場信號傳來。以做多的策略模型為例,若仍然有信號, 代表策. y. Nat. sit. 略正預言著在未來的 k 秒內之股價仍會上漲,此時便不急著將上一秒的第一單. er. io. 賣出,並將原本欲賣出的限價金額加一元(做空單則為減一元),之後繼續等. al. n. v i n Ch 趨勢已走到盡頭,此時再將等待出場的第二單以修改過後的價格去下單。 engchi U. 待下一秒是否仍有信號。當下一秒沒有信號產生時,表示該秒後的 k 秒內上漲. 23.
(30) 第四章 系統研究架構實作 一、市場狀態室 市場狀態室每秒會接收外部金融機構提供的多種商品的即時報價源, 並在極短的時間內算出 18 種技術指標(數量可彈性增加),並運用這些 指標相互產生出上千種的買賣規則,本系將其規則稱之為市場狀態。每一 秒鐘上千種的市場狀態,一天交易時間過後將會儲存一千八百萬筆上下的 資料,這些龐大的資料累積起來能夠提供給多種演算法以建構出可靠的策 略模型。在即時模擬環境下,市場狀態室也會即時的將需要的市場狀態傳 給相對應的策略模型去計算出信號。. 政 治 大 交易室主要處理的項目有二,第一為進場時機點的優化,工作內容為 立 每當投資人欲啟動一次交易,交易室需負責佈署該次模擬(Simulation). 二、交易室. ‧ 國. 學. 並且開始接收即時市場狀態交給一至多個策略模型以算出權重信號並加總, 得出一個該模擬在該時間點的唯一信號。第二為出場時機點的優化,當接. ‧. 收到進場信號後,交易室會依照投資人的選擇到模擬交易所或者券商下單. sit. y. Nat. 介面下單,並依照上方策略模型是否再次傳來信號決定是否出場,待到市. io. n. al. er. 場走勢將要改變即立刻獲利了結。接著會一一詳細說明此二條項目。. Ch. engchi. 24. i n U. v.
(31) 政 治 大. 立. ‧. ‧ 國. 學. n. 1. 流程簡介. er. io. sit. y. Nat. al. 圖 17 (一) 進場時機點之優化. 交易室運作流程示意圖. Ch. engchi. i n U. v. 當投資人選擇完欲投資之標的、欲使用的策略模型以及其權重值等相 關的參數後,SimulationReceiveSpout 會將這些參數交給 SimulationBolt, SimulationBolt 會去資料庫讀出投資人選用的策略模型,並將其他的相關 參數包成一個 Simulation 交給 SignalCalculationBolt。同時,SimulationBolt 也要讀取這些策略模型中總共使用到了哪幾種市場狀態,並將使用到的市 場狀態傳給 StateReceiveBolt 向 StateCenter 登記。 而 SignalCalculationBolt 拿到由上方傳來的 simulation 後,會馬上交由 後方的大策略機制將其展開成一個 SuperStrategy,完成策略的佈署,並準 備開始計算信號。. 25.
(32) 當 StateReceiveBolt 開始將 StateCenter 算好的即時市場狀態交給 SignalCalculationBolt 後,SignalCalculationBolt 裡的 SuperStrategy 機制就 會開始交收這些市場狀態並分派給相對應的策略模型去計算出信號,在依 不同策略的權重值得出一個唯一的信號加總,並以這個信號來準備進場。 2. SignalCalculationBolt 之內部實作 為了要能實現上述的策略分層機制,必須要有一套系統邏輯來處理每 一層策略的佈署以及即時分派市場狀態來計算信號,並且要在極短的時間 內完成運算。SignalCalculationBolt 背後的運作邏輯便是在處理此項工作, 以下將會說明其內部之運作。. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. . Ch. engchi. i n U. v. 圖 18 SignalCalculationBolt 背後之邏輯架構 SignalCalculationBolt: 策略流: 負責接收上方傳來的 tuple,tuple 包含由 SimulationBolt 打包好的 一個 simulation,將送往後方佈署。 訊息流: 由 StateReceiveBolt 傳來某支商品的市場狀態,找出對該商品進行 模擬的 simulation,透過 sendStateMap()交到後方去分派給眾策略,並. 26.
(33) 接收由 SimulationCase 所回傳回來一次時間點的最終信號,再將其傳 給 TradeHandleBolt。 校準流: 當一次交易結束後,會接收前一個 Bolt 傳來之交易結果來決定預 測成功與否,並將結果向下送至 SimulationCase。 . SimulationCase: 策略流: 接收 SignalCalculationBolt 傳來的 simulation 並將其中的參數交給 SuperStrategy 去佈署。之後便會為該 simulation 產生一個 PredictCenter 以記錄預測結果。. 政 治 大 將 SignalCalculationBolt 傳來的 stateMap 再往下傳送,並接收由下 立. 訊息流:. ‧ 國. 校準流:. 學. 方 SuperStrategy 回傳的信號。. ‧. 若接到交易結果則將結果送至 PredictCenter 以進行準確度紀錄。. er. PredictCenter. io. . sit. Nat. 準備向下去校準欲修改策略之權重。. y. 若 PredictCenter 返回欲校準之 map 不為空,則將其傳至 SuperStrategy. al. n. v i n C接到請求後,PredictCenter 從 SimulationCase 會產生出 hengchi U. 策略流:. SimulationPredict 實體 校準流:. 若接到交易結果則將結果送至 PredictCenter 以進行準確度紀錄。 SimulationPredict 返回欲校準之 map 不為空,則將其再返回至 SimulationCase 準備針對欲修改策略之權重進行校準。 . SimulationPredict 策略流: SimulationPredict 會根據該 simulation 內的中策略,建立一紀錄預 測力之表格,等待交易結果傳來並寫入。 校準流. 27.
(34) 若接到交易結果,此處將針對該交易結果之時間點,找尋相對應 策略在該時間點之預測結果做出比對,並記錄章前該策略之預測力。 若有策略在一段時間內連續預測失敗,則將策略名返回,準備下修其 權重。 . SuperStrategy 策略流: 從 SimulationCase 接到參數後, 會將做多與做空兩種不同的策略 map 分別交給下方 MidStrategyBundle 去產生做多與做空的中策略 bundle。 訊息流:. 政 治 大 MidStrategyBundle 回傳的做多與做空信號,與投資人設定之門檻值做 立 將 SimulationCase 傳來的 stateMap 再往下傳送,並接收由下方. ‧ 國. 校準流:. 學. 比對,將結果交給 SimulationCase。. ‧. 將校準 map 傳至 MidStrategyBundle 準備向下去校準欲修改策略之 權重。. y. Nat. io. 策略流:. sit. MidStrategyBundle. er. . al. v i n Ch 模型,做空亦然。此處會取得中策略的演算法類別及編號,送至 engchi U n. 分為做多與做空兩個 bundle,做多的 bundle 內全為做多的中策略. MidStrategy 去佈署中策略。 訊息流:. 將由 SuperStrategy 傳來的 stateMap 分派給每一個中策略,以及接 收中策略加權過後之信號並加總,回傳至 SuperStrategy。 校準流: 依策略名稱找出欲調整之策略,對其呼叫 adaptWeight()去修改其 權重。 . MidStrategy 策略流: 佈署中策略,並將其中的小策略依序交至 SmallStrategy 去佈署。. 28.
(35) 訊息流: 接到 stateMap 後,運用 subscribeForm 將市場狀態分給相對應的小 策略去計算信號,並接收小策略的結果進行投票,超過半數則將信號 加權後像上傳至 MidStrategyBundle。 校準流: 修改權重。 SmallStrategy 策略流: SmallStrategy 為 interface,能夠以多種不同的演算法來實現。 訊息流:. 政 治 大 號,並將信號回傳至 MidStrategy 準備進行投票。 立. 接到小策略需要的市場狀態後,立即運算出該時間點的小策略信. 學. (二) 出場信號之優化. ‧ 國. 1. 流程簡介. ‧. 當 SignalCalculationBolt 產生信號後,SignalCalculationBolt 會將信號用 tuple 傳給 TradeHandleBolt。TradeHandleBolt 為發送訂單的單位,負責將. y. Nat. sit. 設定好的訂單送至 OrderReportCenterBolt,OrderReportCenterBolt 會判斷. io. 這筆訂單為模擬訂單或者為真實交易訂單,若為模擬訂單則送往. er. . al. v i n Ch 往本研究與之合作的金融單位下單介面,到證期交所下單。 engchi U n. SimulatedExchangeCenterBolt 去模擬下單並等待搓和,若為實際訂單則送. 下單的結果則利用 Kafka 訊息傳遞機制將搓和後的訂單與成交金額傳. 給 OrderStateBuffer。OrderStateBuffer 為一個集中管理所有訂單的緩衝區, 所有搓和完畢的訂單皆會存放於此,並依該訂單的不同狀態來決定出場時 機,當出場時機點發生時,便立刻呼叫 TradeHandleBolt 送出出場訂單, 搓合完的結果亦會透過 Kafka 回傳給 OrderStateBuffer。若發生一段時間後 訂單仍沒搓和成功的情形,OrderStateCenter 即會通知 TradeHandleBolt 送 出取消該訂單的請求,並立刻以市價認賠售出。透過上述一次買進後在短 時間內即刻賣出的流程,完成一筆交易。. 29.
(36) 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. i n U. v. 圖 19 出場信號優化時序圖 2. 情境假設與理論上之獲利試算 情境假設一:市場報價於一小段時間持續穩定成長之狀態,使用做多且 k 值為 1 之策略進行模擬。. 30.
(37) 圖 20 情境模擬一 投資人在原點(第 0 秒)接到一進場信號,表示下一秒後的一秒內價 格會上漲,此時便會送出市價單。 時間來到第一秒,市價單便會以 100 元成交,並將 100 元加 1 設為限 價金額。此時又接到 SignalCalculationBolt 傳來信號,表示第二秒的後一 秒價格仍然會上漲,系統便不將限價單送出,且限價金額再加 1 元。此外 因為有接獲信號,所以仍會送出一張買進之市價單。 時間來到第二秒,在第一秒下的市價單會以 101 元成交,同樣將成交 價加上 1 元設為限價金額。此時 SigalCalculationBolt 又送來信號,預測第 三秒後的下一秒仍會上漲,於是便不送出限價單,且限價金額加 1,此外. 政 治 大 所以仍需送出一張買進之市價單。 立 同樣的步驟,在預測上漲趨勢結束之前將不斷重複執行,以下表格為. 學. ‧ 國. 再上一張的限價單金額也必須加 1,同樣不送出。因為仍然有信號的緣故,. 整理到信號停止送來前之訂單狀態。. ‧. 1st. 2nd. 1st. $100. $100. $101. $100. n. al. $101+1 =$102. sit. io. 目前 限價金額. y. 1st. Nat. 時間 (second) 買入時間 (second) 買入金額. 情境一信號停止送來前每秒鐘的訂單狀態表 1st 2nd 3rd 2nd. 3rd. $101. $102. $103. $103. er. 表 1. i n C =$103 h e n g c=$103 hi U $102+1. $102+1. v$103. 第三秒鐘時因 SignalCalculationBolt 沒有信號傳來,表示下一秒過後漲 幅即將結束,便不再調整限價金額,並將三張限價單依其限價金額去下單 出場。 第四秒鐘時來到該波段之最高點 103 元,三張限價單之金額皆小於等 於 103 元,模擬交易所判定搓和成功,計算獲利如下: 獲利 = ($103 - $100) + ($103 - $101) + ($103 - $102) = $6 在沒有執行出場時機點優化之前,每完成一筆進出場交易僅獲利一元。 以下將以圖表比較此情境下,優化前後之獲利差異。. 31.
(38) 4 3 2 1 0 order of 1st sec. order of 2nd sec. order of 3rd sec.. 圖 21. 情境一未優化下各時間點之訂單出場收益長條圖 𝑦=1 ∙ 𝑥 觀察圖形,可推論出獲利公式:{ 𝑥 為信號個數 4. 立. 3. 政 治 大. ‧ 國. 學. 2. ‧. 1. y. (1+𝑥)𝑥. n. al. er. 情境一優化下各時間點之訂單出場收益長條圖. io. 圖 22. order of 1st sec. order of 2nd sec. order of 3rd sec.. sit. Nat. 0. v. 𝑦= 2 觀察圖形,可推論出獲利公式:{ 𝑥為信號個數. Ch. engchi. i n U. 小結:在市場價格持續上漲的情境下,透過優化方法,能夠使獲利曲線由 線性轉為二次曲線,明顯的提升獲利。 情境假設二:市場報價震盪無明顯持續之趨勢,使用做多且 k 值為 5 之策 略進行模擬。. 32.
(39) 圖 23 情境模擬二 投資人在原點(第 0 秒)接到一進場信號,表示下一秒後的五秒內價 格會上漲,此時便會送出市價單。 時間來到第一秒,市價單便會以 100 元成交,並將 100 元加 1 設為限 價金額。此時又接到 SignalCalculationBolt 傳來信號,表示第二秒的後五 秒內價格仍然會上漲,系統便不將限價單送出,且限價金額再加 1 元。此 外因為有接獲信號,所以仍會送出一張買進之市價單。 時間來到第二秒,在第一秒下的市價單會以 99 元成交,同樣將成交 價加上 1 元設為限價金額。此時 SigalCalculationBolt 不再送信號來,表示 模型預測第三秒後的下五秒內跌幅較漲幅明顯,於是便將兩張限價單送出,. 政 治 大 情境二信號停止送來前每秒鐘的訂單狀態表 立 1 2. 等待下一秒搓合。以下表格為整理到信號停止送來前之訂單狀態。 表 2. ‧. ‧ 國. 學. st nd 時間 (second) 1st 1st 2nd 買入時間 (second) $100 $100 $99 買入金額 $101+1 $102 $100 目前 =$102 限價金額 第三秒鐘到來,因兩張限價單之價格皆大於第三秒的市價,故搓和失. sit. y. Nat. er. io. 敗,等待下一秒再度搓和。此處因情境圖形長度有限,故先不考慮此秒之. al. v i n C h元,此時第二張限價單即會成交,第一張則繼 第四秒鐘的市價為 100 engchi U n. 後的模型信號產生與否。. 續等待。第五秒鐘的市價為 104 元,第一張限價 102 元的單即以 104 元搓 和成功,完成此兩筆交易。 同情境一,尚未優化時,每完成一筆進出場交易僅獲利一元。以下將 以圖表比較此情境下,優化前後之獲利差異。. 33.
(40) 3. 2. 1. 0 order of 1st sec.. 圖 24. order of 2nd sec.. 情境二未優化下各時間點之訂單出場收益長條圖 4 3 2. 立. 政 治 大. 0 order of 1st sec.. order of 2nd sec.. ‧. ‧ 國. 學. 1. sit. y. Nat. 圖 25 情境二優化下各時間點之訂單出場收益長條圖 雖然情境二之市場報價並非持續上漲而是上下震盪,不過藉由 k 值較. er. io. 大的模型拉長預測走勢的範圍,如情境二中第一秒至第二秒雖下跌一元,. al. 模型仍然在第一秒時預測下一秒後五秒內之走勢漲幅大於跌幅,因此還是. n. v i n Ch 會有信號產生。由圖表可推導出,只要在一段連續信號內的訂單,收益走 engchi U 勢與情境一雷同,與連續信號個數相關。 小結:在市場報價走勢震盪下,透過預測範圍較大之模型與優化方法,仍 能使得獲利曲線由線性轉為二次曲線,達到顯著的提升。. 三、模擬交易所 模擬交易所(Simulated Exchange Center)為本研究自行建置的搓和中 心,目的在於使得投資人於正式買賣之前,能有測試模型效益的環境。模 擬交易所使用的報價同樣為市場最新的即時報價,並依照以下規則來判斷 限價單是否成交。 買單:限價金額 >= 市場報價,則以市價成交。. 34.
(41) 賣單:限價金額 <= 市場報價,則以市價成交。 透過簡單的機制來模擬市場搓和,雖然考量因素未能全面,但仍然能 大略反映出模型的準確度,投資人可根據模擬交易結果來調整策略直到滿 足需求後,再由金融機構之下單介面正式進行買賣交易。. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. 35. i n U. v.
(42) 第五章 實驗設計與實驗結果 一、實驗設計 因本研究之系統擁有運算速度上的嚴格要求,每一秒鐘內必須完成接收 報價、計算市場狀態、送達交易室、即時計算出交易信號並且下單等動作。 在以上種種前提之下,本研究之交易平台必須進行效能上之測試,考量在限 定的時間內,交易室能夠容納多少個策略進行運算而不失其信號可靠度上之 嚴格要求。 本交易平台運算之最小單位為小策略,故實驗將以小策略為單位,測試 限定的時間內能夠運行小策略之上限,來了解系統之最大負載量。市場狀態 室必須保證在五百毫秒之內運算完所有商品的市場狀態,並送至交易室,故. 政 治 大 SignalCalculationBolt 傳至 TradeHandleBolt,再傳給 OrderReportCenterBolt, 立. 交易室必須在剩下之五百毫秒內完成計算信號和下單等動作。下單過程將從. ‧ 國. 學. 再交給模擬交易所下單,在 Storm 架構下 bolt 與 bolt 間的傳輸僅需花費一毫 秒之時間,故理論上只需花費三毫秒左右之時間,但為求保險起見,此處再. ‧. 將預留 30 毫秒給下單處理機制。因此,整個交易平台的信號計算就必須在 四百七十毫秒內完成。. sit. n. al. er. io. (一) 實驗環境. y. Nat 二、實驗結果. Ch. e n實驗環境 gchi. 表 3. i n U. v. 叢集機器數量. 7 台 PC. 單一機器配備處理器. Intel(R) Core(TM)2 Quad CPU Q8400 @ 2.66GHz. 單一機器記憶體容量. 3.8 GB. 啟動 Topology 數量. 1個. 小策略運算使用之 Bolt. SignalCalculationBolt. (二) 實驗數據. 36.
(43) 本小節將針對不同的小策略數量,由少至多逐步向上增加,來找尋系統 在限定時間內的效能上限。 表 4 小策略個數(個). 系統效能測試結果 花費時間(毫秒). 10. 0.8. 100. 2.283. 500. 6.283. 1000. 12.6. 5000. 58.3. 10000. 119.3. 20000. 243. 政 治 大 323 459.3. 30000. 立. 40000 50000. ‧ 國. 300. y. sit. al. n. 400. io. 500. er. 600. Nat. 700. ‧. 800. 學. 900. 795. Ch. 200. engchi. i n U. v. 100 0 10000. 20000. 圖 26. 30000. 40000. 50000. 系統效能測試結果區域圖. 表 3 之區域圖,縱軸單位為花費時間(毫秒),橫軸單位為小策略個數 (個)。因一萬個小策略以下花費之時間過少,故此處區域圖將之排除做圖。 由實驗數據可看出,本研究之系統可負載將近四萬多個小策略,並在四百 七十毫秒內完成,亦表示系統在開放給使用者進行投資模擬時,可容納四 萬多個小策略同時進行模擬而不失信號可靠度。. 37.
(44) 此處假設一個投資人對某商品同時進行多空模擬,一個多或空的中策略 bundle 擁有五種演算法模型,每一模型又包含十個小策略,表示一投資人 所使用之小策略有將近一百個。根據實驗結果,本系統將可同時容納四百 個投資人登入使用,並且能在四百七十毫秒內完成所有人的信號計算。 (三) 小結 從實驗結果來看,本研究之系統在負載力上單一 Bolt 便可運算四萬多 個小策略而不失其可靠度。Storm 之 Topology 內每一個 Bolt 將會分散在不 同機器上執行,而系統信號運算主要運用 SignalCalculationBolt,故若增加 運算之 Bolt 數並分散在不同機器上執行信號計算,理論上可容納之小策略 數量則能持續成長,來達到系統效能之擴充。. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. 38. i n U. v.
(45) 第六章 結論與未來展望 一、結論 本研究提出之校準系統架構,基於策略的分層機制來進行進場時機點之優 化,再依照未來趨勢之預測來找尋更好的出場時機點,並動態調整策略間的權 重。同時本研究也經由實驗證實以上複雜的校準過程,透過 Storm 以及 Kafka 等雲端分散式之新型架構實作,能夠在極短的時間內完成極大量之運算,支援 多數投資人同時進行極短期的模擬交易。 本研究之結果,希望能提供金融預測分析一套新的想法,透過 IT 的角度來 思考投資策略,將現有的預測工具彼此相互影響來達成綜效。此外也證實 Storm 與 Kafka 等分散式系統在建構極短期的投資預測系統上是可行的,並且. 政 治 大. 有不錯的表現,提供給未來程式交易相關之研究參考。. 立. ‧ 國. 學. 二、未來展望. 礙於本研究未擁有一定準度之策略進行實際校準模擬,未來本系統將實際. ‧. 運用多種不同演算法,並且擁有一定預測力之策略模型來進行模擬預測,記錄 本系統能夠增加的收益程度。此外系統也將持續擴大,考慮納入選擇權、一般. Nat. sit. n. al. er. io. 測系統。. y. 個股等等的金融商品,並擁有不同之預測邏輯,成為一個全方面的金融投資預. Ch. engchi. 39. i n U. v.
(46) 參考文獻 1. Fan, A and Palaniswami, M. (2001), Stock selection using support vector machines, Neural Networks, 2001. Proceedings. IJCNN '01. International Joint Conference on. 2. Qinghua Wen, Zehong Yang, Yixu Song and Peifa Jia (2009) , Automatic stock decision support system based on box theory and SVM algorithm, Expert Systems with Applications Volume 37, Issue 2, March 2010, Pages 1015–1022. 3. Shom Prasad Das and Sudarsan Padhy (2012), International Journal of Computer Applications (0975 – 8887) Volume 41– No.3, March 2012. 4. lebeling Kaastra and Milton Boyd (1996), Designing a neural network for forecasting financial and economic time series, Neurocomputing Volume 10,. 政 治 大 Wensheng Dai, Jui-Yu Wu, Chi-Je Lu (2012), Combining nonlinear independent 立 component analysis and neural network for the prediction of Asian stock market. Issue 3, April 1996, Pages 215–236, Financial Applications, Part II.. 學. ‧ 國. 5.. indexes, Expert Systems with Applications Volume 39, Issue 4, March 2012, Pages 4444–4452.. ‧. 6. Muh-Cherng Wu, Sheng-Yu Lin and Chia-Hsin Lin (2006), An effective application of decision tree to stock trading, Expert Systems with Applications. y. Nat. sit. 7. Volume 31, Issue 2, August 2006, Pages 270–274.. al. er. io. 8. Long Wang and Shu-Hui Chan (2006), Stock market trading rule discovery using. v. n. two-layer bias decision tree, Expert Systems with Applications Volume 30, Issue. Ch. 4, May 2006, Pages 605–611.. engchi. 40. i n U.
(47)
相關文件
結構化程式設計 是設計一個程式的一個技巧,此技巧就
(二)計算方式:雇主繼續僱用於前款計算期間內,預估成就勞動基準
於是我們若想要在已知函數值的某一點,了解附近大概的函
機器人、餐飲服務、花藝、雲端運算、網路安全、3D 數位遊戲藝術、旅 館接待、行動應用開發、展示設計、數位建設
各國的課程綱要均強調運算的概念性了解。我國 2009 年課程綱要談到所謂
[r]
按計算機得到 log 2 的近似值的確是十分簡便,但不免有學生會好奇,以前的數學家 是怎麼求出 log
•至最近連續居留港澳或 海外期間之計算,係以 本簡章申請時間截止日 為計算基準日往前回溯 推算6年或8年。但計算 至西元2015年8月31