64
TradingBot演算法 & 軟工在程式交易上的實踐 Philipz (鄭淳尹) 2016-12-21 中山大學財管系

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

Embed Size (px)

Citation preview

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

TradingBot演算法&

軟工在程式交易上的實踐

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

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

2008 TradingBot2009 Plurk 2010 Twitter 2011 Facebook粉絲頁

2012 部落格

透過即時傳送訊息

日曆紀錄每日交易紀錄

History

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

2008 TradingBot2009 Plurk 2010 Twitter 2011 Facebook粉絲頁

2012 部落格

透過即時傳送訊息

日曆紀錄每日交易紀錄

History

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

個人經歷元智大學資工所

臺北榮總資訊工程師

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

2014 COSCUP/iThome Summit 講者

2015 Microsoft Azure 開發者大會 講者

2016 COSCUP Docker 進階工作坊

2016 Microsoft 社群開源營

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

逢甲資工 Docker 研習班

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

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

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

碁峰《Docker入門與實戰》、

《Kubernetes使用指南》審譯者

研究領域

Docker, 雲端架構, 大型主機

Java, Matlab, 機器學習

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

程式交易的誤解

1. 沒有捷徑

2. 人工替代方案

3. 仍是高風險

4. 環節多

5. 風險承受度不同

6. 主觀,沒有答案

7. 發展自己的交易程式

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

Why use?好處

1. 紀律 - 恐懼貪婪

2. 省時省力

3. 反應快、準確

壞處

1. 缺乏彈性

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

2010 美國閃崩2013 中國光大

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

Why use?

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

Very Difficult

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

充分了解金融商品的本質

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

正確的投資心態

1. 程式交易當成副業

2. 別想一夕致富

3. 追求穩定獲利

4. 天下沒有白吃的午餐

5. 投資跟投機

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

審視自身條件

1. 心理建設

2. 程式能力

3. 風險控管

4. 確定金融商品

5. 進出頻率

6. 恆心

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

程式交易類型

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

Rule-based 演算法

資訊領域亦稱白箱方法

主流方法,直接因果關係

TS、MC、HTS等等

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

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

ML-based 演算法

全名 Machine Learning 機器學習

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

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

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

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

高頻交易演算法

全名 High Frequency Trading

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

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

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

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

Statistics vs Machine Learning

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

TradingBot 演算法

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

系統架構

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

群益API(✱✱✱)

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

開發流程

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

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

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

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

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

TradingBot - Trend following

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

TradingBot - Trend reversal

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

TradingBot - Overweight

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

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

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

● Cross-validation較簡單

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

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

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

● TradingBot is Day Trading~

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

Machine Learning - SVM

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

TradingBot Flowchart

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

Big Problems1. 盤整及突破的判斷

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

3. 轉折的判斷

4. 出場條件 - 停損停利

5. 加碼問題

6. Patterns or Just Lucky

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

範例1:加碼問題

2012年回測結果

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

範例2:選擇權回測

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

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

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

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

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

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

多核心平行計算

暴力法能解決的

就不要花腦力去最佳化

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

資料科學家 vs 資料工程師

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

兩者差異

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

白領、白手、單點

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

藍領、黑手、全面

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

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

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

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

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

軟體開發技術

自動化生產線 - pipeline

軟體專案管理

自動化測試 - Auto Testing

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

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

Top-down Approach

土木建築 - 逆打工法

台北101

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

GitLab-RunnerGitLab-Runner

Development Flow

GitLab-Runner

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

持續整合、持續交付

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

Page 54: Trading bot演算法與軟工在程式交易上的實踐
Page 55: Trading bot演算法與軟工在程式交易上的實踐
Page 56: Trading bot演算法與軟工在程式交易上的實踐
Page 57: Trading bot演算法與軟工在程式交易上的實踐
Page 59: Trading bot演算法與軟工在程式交易上的實踐

自動化已是主流

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

軟體工程

既是工程,也是藝術

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

程式交易是

沒有一步登天的

交易領域的物理嫉妒

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

感謝您的聆聽