Trading bot演算法與軟工在程式交易上的實踐

Preview:

Citation preview

TradingBot演算法&

軟工在程式交易上的實踐

Philipz (鄭淳尹)2016-12-21 中山大學財管系

2008 TradingBot2009 Plurk 2010 Twitter 2011 Facebook粉絲頁

2012 部落格

透過即時傳送訊息

日曆紀錄每日交易紀錄

History

2008 TradingBot2009 Plurk 2010 Twitter 2011 Facebook粉絲頁

2012 部落格

透過即時傳送訊息

日曆紀錄每日交易紀錄

History

個人經歷元智大學資工所

臺北榮總資訊工程師

玉山銀行資訊處專員、Acer eDC 維運工程師(CCNA)

2014 COSCUP/iThome Summit 講者

2015 Microsoft Azure 開發者大會 講者

2016 COSCUP Docker 進階工作坊

2016 Microsoft 社群開源營

元智資工專題演講、義守資工 Docker 研習營

逢甲資工 Docker 研習班

翻譯著作歐萊禮《基礎架構即程式碼》譯者

歐萊禮《Docker 錦囊妙計》譯者

碁峰《Docker入門與實戰》、

《Kubernetes使用指南》審譯者

研究領域

Docker, 雲端架構, 大型主機

Java, Matlab, 機器學習

程式交易的誤解

1. 沒有捷徑

2. 人工替代方案

3. 仍是高風險

4. 環節多

5. 風險承受度不同

6. 主觀,沒有答案

7. 發展自己的交易程式

Why use?好處

1. 紀律 - 恐懼貪婪

2. 省時省力

3. 反應快、準確

壞處

1. 缺乏彈性

2. 影響”因數”多3. Normal Accidents 真實案例

2010 美國閃崩2013 中國光大

Why use?

Very Difficult

充分了解金融商品的本質

正確的投資心態

1. 程式交易當成副業

2. 別想一夕致富

3. 追求穩定獲利

4. 天下沒有白吃的午餐

5. 投資跟投機

審視自身條件

1. 心理建設

2. 程式能力

3. 風險控管

4. 確定金融商品

5. 進出頻率

6. 恆心

程式交易類型

Rule-based 演算法

資訊領域亦稱白箱方法

主流方法,直接因果關係

TS、MC、HTS等等

入門簡單、清楚直觀,適合非資訊領域使用者

ML-based 演算法

全名 Machine Learning 機器學習

資訊領域亦稱黑箱方法,資料分析

高階方法,交易軟體無直接支援,R、Matlab

入門困難、倚賴輸入資料建立模型,資訊背景

高頻交易演算法

全名 High Frequency Trading

純粹比網路速度和運算速度,建置於交易所旁

造市補貼,法規限制,台灣市場不適合?!

客製化硬體 - ASIC 特殊應用積體電路

Statistics vs Machine Learning

TradingBot 演算法

系統架構

群益API(✱✱✱)

開發流程

模式 Pattern?Right man + Right thing +Right moment● 進出頻率● 跨領域方法Ex: OP Open Interest?

模式 Pattern?Right man + Right thing +Right moment● 進出頻率● 跨領域方法Ex: OP Open Interest?

TradingBot - Trend following

TradingBot - Trend reversal

TradingBot - Overweight

Why Day Trading?● 以一天為分割點

● 每天都是獨立,方便切割

● Cross-validation較簡單

● 留倉交易,如何切割回測資料?

● 留倉交易,如何界定是Pattern還是運氣?

● 留倉交易,需參考資料是否更多?

● TradingBot is Day Trading~

Machine Learning - SVM

TradingBot Flowchart

Big Problems1. 盤整及突破的判斷

2. 區域的最高點及最低點

3. 轉折的判斷

4. 出場條件 - 停損停利

5. 加碼問題

6. Patterns or Just Lucky

範例1:加碼問題

2012年回測結果

範例2:選擇權回測

直接拿選擇權價格來回測,倒果為因?

1. 利用期交所每日收盤Tick資料來回測

2. 動態定商品(7500CALL或8000PUT)3. 再以商品及時間點取Tick價格。

4. 一定要有選擇權回測的資料才能確定策略的可用性。

回測程式 - In MemoryWalking Forward記憶體直接存取

多核心平行計算

暴力法能解決的

就不要花腦力去最佳化

資料科學家 vs 資料工程師

兩者差異

科學家:統計、模型、演算法、機器學習

白領、白手、單點

工程師:網頁爬蟲、資料收集、平台、架構

藍領、黑手、全面

軟體工程在程式交易上的應用

Software EngineeringTherac-25 事件 - 放射性治療儀器設計缺陷

軟體開發的困難是本質問題,只能漸進式的改善。

軟體開發技術

自動化生產線 - pipeline

軟體專案管理

自動化測試 - Auto Testing

量測指標 - Code Metric -> Trading performance metrics

Top-down Approach

土木建築 - 逆打工法

台北101

GitLab-RunnerGitLab-Runner

Development Flow

GitLab-Runner

持續整合、持續交付

方法論之一,漸進式的持續不斷改善。CI(Continuous Integration)CD(Continuous Delivery)

自動化已是主流

軟體工程

既是工程,也是藝術

程式交易是

沒有一步登天的

交易領域的物理嫉妒

感謝您的聆聽

Recommended