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