內容提要
《Python量化交易:策略、技巧與實戰》先講解量化交易的基礎知識,即量化交易的定義、特點、套用、故事、歷史及注意事項;然後講解量化交易平台,即JoinQuant聚寬量化交易平台的功能、賬戶的註冊和登錄、量化交易策略的創建、選股技巧、買賣條件模型、風險控制技巧、其他參數設定技巧、回測、模擬交易、實盤交易;接著講解量化交易開發語言Python,即講解Python開發環境及編程基礎、流程控制與特徵數據類型、函式與面向對象;又講解Python量化交易策略的常用庫、常用函式與對象、獲取數據函式運用技巧、基本面選股技巧、技術指標函式運用技巧、回測方法與技巧;接著講解Python量化交易策略的機器算法運用技巧、因子分析運用技巧;最後講解Python量化交易策略實戰案例。
《Python量化交易:策略、技巧與實戰》適用於各類投資者,如股民、期民、職業操盤手和專業金融評論人士。
《Python量化交易:策略、技巧與實戰》著眼於量化實戰套用,同時探討深層次的技巧問題。本書附有大量的例子,通過這些例子介紹知識點。每個例子都是作者精心選擇的,只要投資者反覆練習,舉一反三,就可以真正掌握量化交易技巧,從而學以致用。
目錄
第1章 量化交易概述 1
1.1 初識量化交易 2
1.1.1 什麼是量化交易 2
1.1.2 量化交易與算法交易 2
1.1.3 量化交易與程式化交易 2
1.1.4 量化交易與技術分析 3
1.1.5 量化交易與人工交易 3
1.1.6 為什麼要學習量化交易 4
1.2 量化交易的特點 5
1.3 量化交易的套用 6
1.3.1 投資品種選擇 7
1.3.2 投資時機選擇 7
1.3.3 算法交易 7
1.3.4 各種套利交易 9
1.3.5 資產配置 10
1.4 量化交易的故事 11
1.4.1 朱爾斯·雷格納特的量化交易故事 11
1.4.2 愛德華·索普的量化交易故事 12
1.4.3 詹姆斯·西蒙斯的量化交易故事 13
1.5 量化交易的歷史 14
1.5.1 國外量化交易的歷史 14
1.5.2 國內量化交易的歷史 15
1.6 量化交易的注意事項 15
第2章 量化交易平台 17
2.1 初識JoinQuant聚寬量化交易平台 18
2.2 量化交易平台的功能 18
2.2.1 高質量數據和強大的研究平台 18
2.2.2 頂級回測體驗和頂尖模擬交易 19
2.3 賬戶的註冊、登錄及量化交易策略的創建 19
2.3.1 量化交易平台賬戶的註冊 19
2.3.2 量化交易平台賬戶的登錄 20
2.3.3 量化交易策略的創建 22
2.4 量化交易策略的選股技巧 24
2.4.1 量化選股的基本設定 24
2.4.2 選股指標 27
2.5 量化交易策略的買賣條件模型 31
2.5.1 輪動模型 32
2.5.2 擇時模型 33
2.6 量化交易策略的風險控制技巧 35
2.6.1 止盈、止損指標 35
2.6.2 其他指標 36
2.7 量化交易策略的其他參數設定技巧 36
2.8 編寫Python代碼來創建量化交易策略 38
2.9 量化交易策略的回測 39
2.10 量化交易策略的模擬交易 41
2.10.1 新建模擬交易並運行 41
2.10.2 查看模擬交易 42
2.10.3 綁定微信 45
2.11 量化交易策略的實盤交易 46
第3章 Python開發環境及編程基礎 49
3.1 初識Python 50
3.1.1 Python的發展歷程 50
3.1.2 Python的特點 50
3.2 Python開發環境及配置 51
3.2.1 Python的下載和安裝 51
3.2.2 Python的環境變數配置 53
3.3 Python程式的編寫 57
3.4 利用量化交易平台編寫Python程式 61
3.4.1 初識IPython Notebook研究平台 62
3.4.2 利用IPython Notebook編寫Python程式 66
3.5 Python的基本數據類型 67
3.5.1 數值類型 67
3.5.2 字元串 69
3.6 Python的變數與賦值 73
3.6.1 變數命名規則 73
3.6.2 變數的賦值 74
3.7 Python的基本運算 74
3.7.1 算術運算 75
3.7.2 賦值運算 76
3.7.3 位運算 77
3.8 Python的代碼格式 78
3.8.1 代碼縮進 78
3.8.2 代碼注釋 79
3.8.3 空行 80
3.8.4 同一行顯示多條語句 80
第4章 Python流程控制與特徵數據類型 81
4.1 Python的選擇結構 82
4.1.1 關係運算 82
4.1.2 邏輯運算 83
4.1.3 if語句 84
4.1.4 嵌套if語句 86
4.2 Python的循環結構 87
4.2.1 while循環 87
4.2.2 while循環使用else語句 88
4.2.3 無限循環 89
4.2.4 for循環 90
4.2.5 在for循環中使用range()函式 90
4.2.6 break語句 92
4.2.7 continue語句 92
4.2.8 pass語句 93
4.3 Python的特徵數據類型 94
4.3.1 列表 94
4.3.2 元組 97
4.3.3 字典 99
4.3.4 集合 100
第5章 Python函式與面向對象 104
5.1 Python內置函式 105
5.1.1 數學函式 105
5.1.2 隨機數函式 106
5.1.3 三角函式 108
5.1.4 字元串函式 110
5.2 用戶自定義函式 113
5.2.1 自定義函式的定義 113
5.2.2 調用自定義函式 114
5.2.3 函式的參數傳遞 116
5.2.4 函式的參數類型 118
5.2.5 匿名函式 123
5.3 Python的面向對象 123
5.3.1 面向對象概念 124
5.3.2 類與實例 124
5.3.3 模組的引用 127
5.3.4 包 127
5.4 變數作用域及類型 130
5.4.1 變數作用域 130
5.4.2 全局變數和局部變數 131
5.4.3 global和nonlocal關鍵字 132
第6章 Python量化交易策略的常用庫 135
6.1 Numpy庫 136
6.1.1 ndarray數組基礎 136
6.1.2 Numpy的矩陣對象 148
6.2 Pandas庫 149
6.2.1 一維數組Series 149
6.2.2 二維數組DataFrame 150
6.2.3 三維數組Panel 160
第7章 Python量化交易策略的常用函式與對象 163
7.1 Python量化交易策略的一般結構 164
7.1.1 初始化函式 165
7.1.2 開盤前運行函式 166
7.1.3 開盤時運行函式 166
7.1.4 收盤後運行函式 167
7.2 Python量化交易策略的設定函式 167
7.2.1 設定基準函式 168
7.2.2 設定佣金/印花稅函式 168
7.2.3 設定滑點函式 169
7.2.4 設定動態復權(真實價格)模式函式 170
7.2.5 設定成交量比例函式 170
7.2.6 設定是否開啟盤口撮合模式函式 171
7.2.7 設定要操作的股票池函式 171
7.3 Python量化交易策略的定時函式 171
7.3.1 定時函式的定義及分類 172
7.3.2 定時函式各項參數的意義 172
7.3.3 定時函式的注意事項 173
7.3.4 定時函式的實例 174
7.4 Python量化交易策略的下單函式 174
7.4.1 按股數下單函式 174
7.4.2 目標股數下單函式 175
7.4.3 按價值下單函式 175
7.4.4 目標價值下單函式 176
7.4.5 撤單函式 176
7.4.6 獲取未完成訂單函式 177
7.4.7 獲取訂單信息函式 177
7.4.8 獲取成交信息函式 178
7.5 Python量化交易策略的日誌log 178
7.5.1 設定log級別 178
7.5.2 log.info 179
7.6 Python量化交易策略的常用對象 179
7.6.1 Order對象 179
7.6.2 全局對象g 180
7.6.3 Trade對象 180
7.6.4 tick對象 180
7.6.5 Context對象 181
7.6.6 Position對象 182
7.6.7 SubPortfolio對象 183
7.6.8 Portfolio對象 184
7.6.9 SecurityUnitData對象 184
第8章 Python量化交易策略的獲取數據函式運用技巧 186
8.1 history()函式的運用技巧 187
8.1.1 各項參數的意義 187
8.1.2 history()函式的套用實例 188
8.2 attribute_history ()函式的運用技巧 191
8.3 get_fundamentals ()函式的運用技巧 192
8.3.1 各項參數的意義 192
8.3.2 get_fundamentals ()函式的套用實例 193
8.4 get_fundamentals_continuously ()函式的運用技巧 198
8.5 get_current_data ()函式的運用技巧 199
8.6 get_index_stocks ()函式的運用技巧 200
8.6.1 各項參數的意義 200
8.6.2 get_index_stocks ()函式的套用實例 201
8.7 get_industry_stocks()函式的運用技巧 202
8.8 get_concept_stocks ()函式的運用技巧 203
8.9 get_all_securities()函式的運用技巧 205
8.9.1 各項參數的意義 205
8.9.2 get_all_securities()函式的套用實例 206
8.10 get_security_info ()函式的運用技巧 207
8.11 get_billboard_list ()函式的運用技巧 208
8.11.1 各項參數的意義 208
8.11.2 get_billboard_list()函式的套用實例 209
8.12 get_locked_shares ()函式的運用技巧 210
第9章 Python量化交易策略的基本面選股技巧 211
9.1 量化選股概述 212
9.2 成長類因子選股技巧 212
9.2.1 營業收入同比增長率選股技巧 212
9.2.2 營業收入環比增長率選股技巧 214
9.2.3 淨利潤同比增長率選股技巧 215
9.2.4 淨利潤環比增長率選股技巧 216
9.2.5 營業利潤率選股技巧 217
9.2.6 銷售淨利率選股技巧 217
9.2.7 銷售毛利率選股技巧 218
9.3 規模類因子選股技巧 220
9.3.1 總市值選股技巧 220
9.3.2 流通市值選股技巧 221
9.3.3 總股本選股技巧 222
9.3.4 流通股本選股技巧 222
9.4 價值類因子選股技巧 223
9.4.1 市淨率選股技巧 223
9.4.2 市銷率選股技巧 224
9.4.3 市現率選股技巧 225
9.4.4 動態市盈率選股技巧 226
9.4.5 靜態市盈率選股技巧 227
9.5 質量類因子選股技巧 228
9.5.1 淨資產收益率選股技巧 228
9.5.2 總資產淨利率選股技巧 229
9.6 基本面多因子量化選股 230
第10章 Python量化交易策略的技術指標函式運用技巧 232
10.1 量化擇時概述 233
10.2 趨向指標函式運用技巧 234
10.2.1 MACD指標函式 234
10.2.2 EMV指標函式 235
10.2.3 UOS指標函式 237
10.2.4 GDX指標函式 238
10.2.5 DMA指標函式 239
10.2.6 JS指標函式 240
10.2.7 MA指標函式 241
10.2.8 EXPMA指標函式 242
10.2.9 VMA指標函式 243
10.3 反趨向指標函式運用技巧 245
10.3.1 KD指標函式 245
10.3.2 MFI指標函式 246
10.3.3 RSI指標函式 247
10.3.4 OSC指標函式 248
10.3.5 WR指標函式 249
10.3.6 CCI指標函式 250
10.4 壓力支撐指標函式運用技巧 251
10.4.1 BOLL指標函式 251
10.4.2 MIKE指標函式 253
10.4.3 XS指標函式 254
10.5 量價指標函式運用技巧 256
10.5.1 OBV指標函式 256
10.5.2 VOL指標函式 257
10.5.3 VR指標函式 258
10.5.4 MASS指標函式 259
第11章 Python量化交易策略的回測方法與技巧 261
11.1 量化交易策略回測的流程 262
11.2 利用Python編寫MACD指標量化交易策略 262
11.2.1 量化交易策略的編輯頁面 262
11.2.2 編寫初始化函式 265
11.2.3 編寫單位時間調用的函式 265
11.3 設定MACD指標量化交易策略的回測參數 266
11.4 MACD指標量化交易策略的回測詳情 269
11.5 MACD指標量化交易策略的風險指標 272
11.5.1 Alpha(阿爾法) 272
11.5.2 Beta(貝塔) 273
11.5.3 Sharpe(夏普比率) 274
11.5.4 Sortino(索提諾比率) 275
11.5.5 Information Ratio(信息比率) 276
11.5.6 Volatility(策略波動率) 277
11.5.7 Benchmark Volatility(基準波動率) 278
11.5.8 Max Drawdown(最大回撤) 279
第12章 Python量化交易策略的機器算法運用技巧 280
12.1 隨機森林在量化交易中的運用技巧 281
12.1.1 隨機森林的構建 281
12.1.2 隨機森林的優缺點 281
12.1.3 隨機森林在量化交易中的運用實例 282
12.2 支持向量機(SVM)在量化交易中的運用技巧 284
12.2.1 什麼是支持向量機(SVM) 285
12.2.2 支持向量機(SVM)的工作原理 285
12.2.3 核函式 287
12.2.4 支持向量機(SVM)的優點 288
12.2.5 支持向量機(SVM)的缺點 288
12.2.6 支持向量機(SVM)在量化交易中的運用實例 289
12.3 樸素貝葉斯在量化交易中的運用技巧 292
12.3.1 什麼是樸素貝葉斯 292
12.3.2 樸素貝葉斯的算法思想 292
12.3.3 樸素貝葉斯的算法步驟 292
12.3.4 樸素貝葉斯的優缺點 293
12.3.5 樸素貝葉斯在量化交易中的運用實例 293
12.4 神經網路在量化交易中的運用技巧 296
12.4.1 什麼是人工神經網路 296
12.4.2 大腦中的神經元細胞和神經元細胞網路 297
12.4.3 人工神經網路的基本特徵 298
12.4.4 人工神經網路的特點 299
12.4.5 人工神經網路的算法 299
12.4.6 人工神經網路在量化交易中的運用實例 301
第13章 Python量化交易策略的因子分析運用技巧 305
13.1 因子的類型及因子分析的作用 306
13.2 因子分析的Python代碼 306
13.2.1 因子分析中的三個變數 306
13.2.2 因子分析中可以使用的基礎因子 307
13.2.3 calc的參數及返回值 308
13.3 因子的新建及常見分析 308
13.3.1 因子的新建 308
13.3.2 因子的收益分析 311
13.3.3 因子的IC分析 314
13.3.4 因子的換手分析 315
13.4 因子在研究和回測中的使用 317
13.5 基本面因子運用實例 319
第14章 Python量化交易策略實戰案例 323
14.1 MA均線量化交易策略實戰案例 324
14.1.1 編寫初始化函式 324
14.1.2 編寫單位時間調用的函式 326
14.1.3 MA均線量化交易策略的回測 327
14.2 多均線量化交易策略實戰案例 327
14.2.1 編寫初始化函式 328
14.2.2 編寫交易程式函式 328
14.2.3 多均線量化交易策略的回測 330
14.3 MACD指標量化交易策略實戰案例 330
14.3.1 編寫初始化函式 331
14.3.2 編寫單位時間調用的函式 331
14.3.3 MACD指標量化交易策略的回測 332
14.4 KD指標量化交易策略實戰案例 333
14.4.1 編寫初始化函式 333
14.4.2 編寫開盤前運行函式 334
14.4.3 編寫開盤時運行函式 334
14.4.4 編寫收盤後運行函式 335
14.4.5 KD指標量化交易策略的回測 335
14.5 BOLL指標量化交易策略實戰案例 336
14.5.1 編寫初始化函式 336
14.5.2 編寫開盤前運行函式 337
14.5.3 編寫開盤時運行函式 337
14.5.4 編寫收盤後運行函式 338
14.5.5 BOLL指標量化交易策略的回測 339
14.6 多股票持倉量化交易策略實戰案例 339
14.6.1 編寫初始化函式 340
14.6.2 編寫單位時間調用的函式 340
14.6.3 多股票持倉量化交易策略的回測 341
14.7 醫藥股輪動量化交易策略實戰案例 342
14.7.1 編寫初始化函式 342
14.7.2 編寫選股函式 342
14.7.3 編寫交易函式 343
14.7.4 醫藥股輪動量化交易策略的回測 343
14.8 小市值股票量化交易策略實戰案例 344
14.8.1 編寫初始化函式 344
14.8.2 編寫選股函式 345
14.8.3 編寫過濾停牌股票函式 345
14.8.4 編寫交易函式 346
14.8.5 小市值股票量化交易策略的回測 346
14.9 機器算法多因子量化交易策略實戰案例 347
14.9.1 編寫初始化函式 347
14.9.2 編寫自定義的交易函式 348
14.9.3 機器算法多因子量化交易策略的回測 353