本書由淺入深地講解了算法交易的相關(guān)知識,先從基礎(chǔ)知識和環(huán)境配置講起,其次講解如何通過編程完成交易信息的生成與交易策略的實施,隨后介紹眾多算法交易策略,以及如何管理算法策略中的風險,然后帶領(lǐng)讀者用Python建立自己交易系統(tǒng),并迎接算法交易的深層挑戰(zhàn)。
全書共分為10章,包括算法交易的基礎(chǔ)原理、通過技術(shù)分析解讀市場、通過基礎(chǔ)機器學習預(yù)測市場、人類直覺驅(qū)動的交易策略、復(fù)雜的算法策略、管理算法策略中的風險、用Python構(gòu)建交易系統(tǒng)、連接到交易所、在Python中創(chuàng)建回測器、適應(yīng)市場參與者和環(huán)境。
《Python算法交易實戰(zhàn)》一書是金融科技系列圖書的力作,帶領(lǐng)讀者深入理解現(xiàn)代電子交易市場和市場參與者之間的交互與運作方式,包含建模、交易、風控等重要主題,以及通過基于Python的機器學習和數(shù)據(jù)分析等技術(shù)實現(xiàn)算法交易的相關(guān)知識和實踐技巧,從而讓讀者實現(xiàn)有競爭力的算法交易,華麗變身金融交易大神。
通過閱讀本書,你將能夠:
● 了解現(xiàn)代算法交易系統(tǒng)和策略的組成部分;
● 掌握一些有代表性的交易策略的運作、實施和分析方法;
● 使用 Python 在交易信號和策略中應(yīng)用機器學習算法;
● 量化并構(gòu)建 Python 交易策略的風險管理系統(tǒng);
● 構(gòu)建回測器來運行模擬交易策略,以提高交易系統(tǒng)的性能;
● 在實際市場中部署和整合交易策略,以維持和提高贏利能力;
● 使用 Python 設(shè)計、構(gòu)建一個實用并能帶來盈利的算法交易機器人。
本書包含豐富實用的案例和代碼示例,讀者可以根據(jù)本書前言中的指導下載本書配套的代碼和彩圖資源,以便充分理解書中所講的算法及交易知識。
塞巴斯蒂安·多納迪奧(Sebastien Donadio)是 Tradair 公司的技術(shù)官,負責技術(shù)指導。他具有豐富的專業(yè)技術(shù)從業(yè)經(jīng)驗,曾擔任 HC Technologies 公司的軟件工程負責人、高頻 FX 公司的合伙人和技術(shù)總監(jiān)、Sun Trading 公司的定量交易策略軟件開發(fā)商。他還擁有 Bull SAS 公司的研究經(jīng)驗,并且曾在法國興業(yè)銀行(Société Générale)擔任 IT 信用風險經(jīng)理。在過去的十年中,他曾在美國芝加哥大學、紐約大學和哥倫比亞大學教授過各種計算機科學課程。他的主要愛好是技術(shù),除此之外,他還是一名潛水教練和經(jīng)驗豐富的攀巖運動員。
蘇拉夫?戈什(Sourav Ghosh)在過去十年中曾在多家高頻算法交易公司工作。他為世界各地的交易所建立和部署了極低延遲、高吞吐量的算法交易系統(tǒng),涉及多個資產(chǎn)類別。他擅長統(tǒng)計套利做市策略,以及全球流動性強的期貨合約的配對交易策略。他在美國芝加哥一家貿(mào)易公司擔任量化開發(fā)人員,擁有美國南加州大學的計算機科學碩士學位。他感興趣的領(lǐng)域包括計算機結(jié)構(gòu)、金融科技、概率論和隨機過程、統(tǒng)計學習和推理方法,以及自然語言處理。
第 1 部分 基礎(chǔ)知識和環(huán)境配置
第 1 章 算法交易的基礎(chǔ)原理 2
1.1 為什么要交易 2
1.2 有關(guān)現(xiàn)代交易的基本概念 3
1.2.1 市場板塊 3
1.2.2 資產(chǎn)類別 4
1.2.3 現(xiàn)代交易市場的基本情況 5
1.3 了解算法交易概念 7
1.3.1 交換訂單簿 7
1.3.2 交換匹配算法 7
1.3.3 限價訂單簿 9
1.3.4 交換市場數(shù)據(jù)協(xié)議 9
1.3.5 市場數(shù)據(jù)提供處理程序 9
1.3.6 訂單類型 10
1.3.7 交換訂單輸入?yún)f(xié)議 10
1.3.8 訂單輸入網(wǎng)關(guān) 10
1.3.9 頭寸和損益管理 11
1.4 從直覺到算法交易 11
1.4.1 為什么需要自動化交易 12
1.4.2 算法交易的演變—從基于規(guī)則的交易到全自動算法交易 12
1.5 算法交易系統(tǒng)的組成部分 14
1.5.1 市場數(shù)據(jù)訂閱 15
1.5.2 限價訂單簿 15
1.5.3 信號 15
1.5.4 信號聚合器 16
1.5.5 執(zhí)行邏輯 16
1.5.6 頭寸和損益管理 17
1.5.7 風險管理 17
1.5.8 回測 17
1.6 為什么選擇 Python 18
1.6.1 選擇 IDE—PyCharm 或 Jupyter Notebook 19
1.6.2 第 一個算法交易 20
1.6.3 設(shè)置你的工作區(qū) 20
1.6.4 PyCharm 20
1.6.5 獲取數(shù)據(jù) 21
1.6.6 準備數(shù)據(jù)——信號 22
1.6.7 信號可視化 24
1.6.8 回測 25
1.7 總結(jié) 27
第 2 部分 交易信息生成與交易策略
第 2 章 通過技術(shù)分析解讀市場 30
2.1 基于趨勢和動量指標設(shè)計交易策略 31
2.2 基于基本技術(shù)分析創(chuàng)建交易信號 37
2.2.1 簡單移動平均線 37
2.2.2 指數(shù)移動平均線 39
2.2.3 絕對價格振蕩器 42
2.2.4 異同移動平均線 44
2.2.5 布林帶 47
2.2.6 相對強弱指標 49
2.2.7 標準偏差 53
2.2.8 動量 55
2.3 在交易工具中貫徹高級概念,如季節(jié)性 57
2.4 總結(jié) 63
第 3 章 通過基礎(chǔ)機器學習預(yù)測市場 65
3.1 了解術(shù)語和符號 66
3.2 使用線性回歸方法創(chuàng)建預(yù)測模型 70
3.2.1 普通最小二乘法 70
3.2.2 正規(guī)化和收縮——LASSO 和 Ridge 回歸 75
3.2.3 決策樹回歸 77
3.3 使用線性分類方法創(chuàng)建預(yù)測模型 77
3.3.1 K 近鄰 77
3.3.2 支持向量機 79
3.3.3 邏輯回歸 81
3.4 總結(jié) 81
第 3 部分 算法交易策略
第 4 章 人類直覺驅(qū)動的經(jīng)典交易策略 84
4.1 創(chuàng)建基于動量和趨勢跟蹤的交易策略 84
4.2 創(chuàng)建適用于具有回歸行為的交易策略 91
4.3 創(chuàng)建在線性相關(guān)的交易工具組上操作的交易策略 92
4.4 總結(jié) 107
第 5 章 復(fù)雜的算法策略 108
5.1 創(chuàng)建根據(jù)交易工具的波動性進行調(diào)整的交易策略 108
5.1.1 調(diào)整技術(shù)指標中交易工具的波動率 109
5.1.2 調(diào)整交易策略中交易工具的波動率 109
5.1.3 波動率調(diào)整后的均值回歸交易策略 110
5.2 制定經(jīng)濟事件的交易策略 127
5.2.1 經(jīng)濟發(fā)布 127
5.2.2 經(jīng)濟發(fā)布格式 128
5.2.3 電子化經(jīng)濟發(fā)布服務(wù) 129
5.2.4 交易中的經(jīng)濟發(fā)布 129
5.3 實施基本的統(tǒng)計套利交易策略 131
5.3.1 StatArb 的基礎(chǔ) 131
5.3.2 StatArb 中的領(lǐng)先滯后 132
5.3.3 調(diào)整投資組合的構(gòu)成和關(guān)系 132
5.3.4 StatArb 的基礎(chǔ)設(shè)施費用 133
5.3.5 Python 中的 StatArb 133
5.4 總結(jié) 148
第 6 章 管理算法策略中的風險 149
6.1 區(qū)分風險類型和風險因素 149
6.1.1 交易損失的風險 150
6.1.2 違反法規(guī)的風險 150
6.1.3 欺騙 151
6.1.4 報價填充 151
6.1.5 操縱收盤價 152
6.1.6 風險來源 152
6.1.7 量化風險 154
6.2 區(qū)分風險措施 155
6.2.1 止損 156
6.2.2 最大跌幅 158
6.2.3 頭寸限制 160
6.2.4 持倉時間 161
6.2.5 PnL 的差異 162
6.2.6 夏普比率 163
6.2.7 每周期最大執(zhí)行量 165
6.2.8 最大交易規(guī)模 167
6.2.9 數(shù)量限制 167
6.3 制定風險管理算法 168
6.4 總結(jié) 180
第 4 部分 建立交易系統(tǒng)
第 7 章 用 Python 構(gòu)建交易系統(tǒng) 182
7.1 了解交易系統(tǒng) 182
7.1.1 網(wǎng)關(guān) 183
7.1.2 訂單簿管理 185
7.1.3 策略 186
7.1.4 訂單管理系統(tǒng) 187
7.1.5 關(guān)鍵組件 188
7.1.6 非關(guān)鍵組件 188
7.2 構(gòu)建交易系統(tǒng) 190
7.2.1 流動性提供者類 191
7.2.2 策略類 193
7.2.3 訂單管理器類 198
7.2.4 市場模擬器類 202
7.2.5 測試交易模擬類 205
7.3 設(shè)計限價訂單簿 207
7.4 總結(jié) 214
第 8 章 連接到交易所 215
8.1 使交易系統(tǒng)可與交易所進行交易 215
8.2 審查通信 API 217
8.2.1 網(wǎng)絡(luò)基礎(chǔ)知識 217
8.2.2 交易協(xié)議 218
8.2.3 FIX 協(xié)議 219
8.3 接收價格更新 221
8.4 發(fā)送訂單和接收市場響應(yīng) 226
8.4.1 接收器代碼示例 228
8.4.2 其他交易 API 232
8.5 總結(jié) 233
第 9 章 在 Python 中創(chuàng)建回測器 234
9.1 學習如何構(gòu)建回測器 235
9.1.1 樣本內(nèi)數(shù)據(jù)與樣本外數(shù)據(jù)的比較 235
9.1.2 模擬交易 236
9.1.3 單純的數(shù)據(jù)存儲 236
9.1.4 HDF5 文件 236
9.1.5 數(shù)據(jù)庫 238
9.2 學習如何選擇正確的假設(shè) 241
9.2.1 for 循環(huán)回測系統(tǒng) 243
9.2.2 事件驅(qū)動的回測系統(tǒng) 244
9.3 評估時間價值 246
9.4 回測雙移動平均線交易策略 250
9.4.1 for 循環(huán)回測器 250
9.4.2 基于事件的回測器 253
9.5 總結(jié) 260
第 5 部分 算法交易的挑戰(zhàn)
第 10 章 適應(yīng)市場參與者和環(huán)境 262
10.1 回測器與實際市場的策略表現(xiàn) 263
10.1.1 回測器失調(diào)的影響 264
10.1.2 仿真失調(diào)的原因 266
10.1.3 根據(jù)實時交易調(diào)整回測和策略 268
10.2 算法交易的持續(xù)贏利能力 272
10.2.1 算法交易策略中的利潤衰減 272
10.2.2 適應(yīng)市場條件和不斷變化的市場參與者 276
10.3 總結(jié) 286
后記 287