Python量化交易實戰入門與技巧

王征;李曉波

買這商品的人也買了...

商品描述

本書首先講解量化交易的基礎知識,即量化交易的定義、特點、作用、主要內容、歷史、與傳統交易的區別、
注意事項、JoinQuant(聚寬)量化交易平台;然後講解量化交易開發語言Python ,
即講解Python語言的開發環境、基本語法、基本流程控制、特徵數據類型、函數及應用、面向對象程序設計;
接著講解如何利用Python語言編寫量化策略、Python量化策略的常用庫和模塊、獲取數據函數、回測、因子分析;
後講解Python量化策略的技術指標實例和Python量化交易策略實例。

在講解過程中既考慮讀者的學習習慣,又通過具體實例剖析講解量化交易過程中的熱點問題、
關鍵問題及各種難題。

本書適用於各種不同的投資者,如股民、期民、中小散戶、職業操盤手和專業金融評論人士,
更適用於那些有志於在這個充滿風險、充滿寂寞的征程上默默前行的征戰者和屢敗屢戰、
愈挫愈勇並終戰勝失敗、戰勝自我的投資者。

作者簡介

李曉波

從事金融衍生品市場交易及管理近20年,有著豐富的經驗和體會,對國內外貴金屬、外匯、郵幣卡、
大宗商品及股市等主流交易方式有著深刻的了解,擅長股票、期貨、黃金、白銀、郵幣卡、外彙的培訓指導。

經常活躍在各大金融講壇,深為投資者喜愛。可為個人投資者及機構提供分析、投資諮詢,
交易指導,理財培訓等多方位的專業服務。

目錄大綱

第1章初識量化交易/ 1
1.1量化交易的基本概念/ 2
1.1.1什麼是量化交易/ 2
1.1.2量化交易的特點/ 2
1.1.3為什麼要學習量化交易/ 4
1.1.4量化交易與其他交易/ 6
1.2量化交易的主要內容/ 7
1.2.1量化選股/ 7
1.2.2量化擇時/ 8
1.2.3算法交易/ 8
1.2.4各種套利交易/ 8
1.3量化交易的歷史/ 10
1.3.1國外量化交易的歷史/ 10
1.3.2國內量化交易的歷史/ 10
1.4量化交易的故事/ 11
1.4.1朱爾斯·雷格納特的故事/ 11
1.4.2愛德華·索普的故事/ 13
1.4.3詹姆斯·西蒙斯的故事/ 14
1.5量化交易的潛在風險及應對策略/ 16
1.6量化交易與人工交易的比較/ 16
1.7量化交易的注意事項/ 17

第2章JoinQuant(聚寬)量化交易平台/ 19
2.1 JoinQuant(聚寬)量化交易平台的功能/ 20
2.2 JoinQuant(聚寬)量化交易平台的賬戶註冊與登錄/ 20
2.2.1賬戶註冊/ 21
2.2.2賬戶登錄/ 22
2.3創建量化交易策略/ 23
2.3.1嚮導式策略生成器/ 25
2.3.2新建策略/ 35
2.4量化交易策略的回測詳情/ 36
2.5模擬交易/ 38
2.5.1新建模擬交易並運行/ 38
2.5.2查看模擬交易/ 39
2.5.3綁定微信/ 42

第3章Python語言及其開發環境/ 45
3.1 Python語言概述/ 46
3.1.1 Python的發展歷程/ 46
3.1.2 Python的特點/ 47
3.2搭建Python開發環境/ 48
3.2.1 Python的下載和安裝/ 48
3.2.2 Python的環境變量配置/ 50
3.3編寫Python程序/ 53
3.4利用IPython Notebook編寫Python程序/ 57

第4章Python的基本語法/ 63
4.1 Python的基本數據類型/ 64
4.1.1數值類型/ 64
4.1.2字符串/ 66
4.2變量與賦值/ 69
4.2.1變量命名規則/ 69
4.2.2變量的賦值/ 70
4.3運算符/ 71
4.3.1算術運算符/ 71
4.3.2賦值運算符/ 73
4.3.3位運算符/ 74
4.4常見的數值函數和字符串函數/ 75
4.4. 1數學函數/ 76
4.4.2隨機數函數/ 77
4.4.3三角函數/ 79
4.4.4字符串函數/ 80
4.5 Python的代碼格式/ 85
4.5.1代碼縮進/ 85
4.5.2代碼註釋/ 86
4.5.3空行/ 86
4.5.4同一行顯示多條語句/ 86

第5章Python的基本流程控制/ 87
5.1選擇結構/ 88
5.1.1關係運算/ 88
5.1.2邏輯運算/ 90
5.1.3 if語句/ 91
5.1.4嵌套if語句/ 93
5.2循環結構/ 94
5.2.1 while循環/ 95
5.2.2 while循環使用else語句/ 95
5.2.3無限循環/ 96
5.2.4 for循環/ 97
5.2.5在for循環中使用range()函數/ 98
5.3其他語句/ 99
5.3.1 break語句/ 100
5.3.2 continue語句/ 100
5.3.3 pass語句/ 101

第6章Python的特徵數據類型/ 103
6.1列表/ 104
6.1.1創建列表/ 104
6.1.2訪問列表中的值/ 104
6.1.3更新列表中的值/ 105
6.1.4刪除列表中的值/ 106
6.1.5列表的函數/ 106
6.1 .6列表的方法/ 107
6.2元組/ 109
6.2.1創建元組/ 109
6.2.2訪問元組中的值/ 110
6.2.3連接元組/ 111
6.2.4刪除整個元組/ 112
6.2. 5元組的函數/ 112
6.3字典/ 113
6.3.1創建字典/ 114
6.3.2訪問字典中的值和鍵/ 114
6.3.3修改字典/ 115
6.3.4字典中的函數/ 116
6.4集合/ 117
6.4.1創建集合/ 117
6.4.2集合的兩個基本功能/ 118
6.4.3集合的運算符/ 119
6.4.4集合的方法/ 120

第7章Python的函數及應用/ 123
7.1函數的定義與調用/ 124
7.1.1函數的定義/ 124
7.1.2函數的調用/ 125
7.2參數傳遞/ 126
7.2.1不可更改對象/ 126
7.2.2可更改對象/ 127
7.3函數的參數類型/ 128
7.3.1必需參數/ 128
7.3.2關鍵字參數/ 129
7.3.3默認參數/ 130
7.3.4不定長參數/ 131
7.4匿名函數/ 132
7.5變量作用域及類型/ 133
7.5.1變量作用域/ 133
7.5.2全局變量和局部變量/ 135
7.5.3 global和nonlocal關鍵字/ 136

第8章Python面向對象的程序設計/ 139
8.1面向對象/ 140
8.1.1面向對象概念/ 140
8.1.2類定義與類對象/ 141
8.1.3類的繼承/ 143
8.2模塊/ 147
8.2.1自定義模塊並調用/ 147
8.2.2 import語句/ 148
8.2.3標準模塊/ 150
8.3包/ 151

第9章利用Python語言編寫量化策略/ 153
9.1股票量化策略的組成/ 154
9.1.1初始化函數(initialize) / 155
9.1.2開盤前運行函數(before_market_open) / 156
9.1.3開盤時運行函數(market_open) / 157
9.1.4收盤後運行函數(after_market_close) / 158
9.2股票量化策略的設置函數/ 158
9.2.1設置基準函數/ 159
9.2.2設置佣金/印花稅函數/ 159
9.2.3設置滑點函數/ 161
9.2.4設置動態復權(真實價格)模式函數/ 161
9.2.5設置成交量比例函數/ 162
9.2.6設置是否開啟盤口撮合模式函數/ 162
9.2.7設置要操作的股票池函數/ 163
9.3股票量化策略的定時函數/ 163
9.3.1定時函數的定義及分類/ 163
9.3. 2定時函數各項參數的意義/ 164
9.3.3定時函數的注意事項/ 164
9.3.4定時函數的實例/ 165
9.4股票量化策略的下單函數/ 166
9.4.1按股數下單函數/ 166
9.4.2目標股數下單函數/ 167
9.4.3按價值下單函數/ 168
9.4.4目標價值下單函數/ 168
9.4.5撤單函數/ 169
9.4.6獲取未完成訂單函數/ 169
9.4.7獲取訂單信息函數/ 169
9.4.8獲取成交信息函數/ 170
9.5股票量化策略的日誌log / 171
9.5.1設定log級別/ 171
9.5.2 log.info / 171
9.6股票量化策略的常用對象/ 172
9.6.1 Order對象/ 172
9.6.2全局對象g / 173
9.6.3 Trade對象/ 173
9.6.4 tick對象/ 174
9.6.5 Context對象/ 174
9.6.6 Position對象/ 176
9.6.7 SubPortfolio對象/ 176
9.6.8 Portfolio對象/ 177
9.6.9 SecurityUnitData對象/ 178

第10章Python量化策略的常用庫和模塊/ 179
10.1 Numpy庫/ 180
10.1.1 ndarray數組基礎/ 180
10.1.2矩陣/ 187
10.2 Pandas庫/ 188
10.2.1一維數組Series / 188
10.2.2二維數組DataFrame / 189
10.2.3三維數組Panel / 199
10.3 Datetime模塊和Time模塊/ 201
10.3.1利用Datetime模塊獲得當前的日期和時間/ 202
10.3.2利用Time模塊獲得當前的日期和時間/ 203
10.3.3獲得當前時間並轉換為指定日期格式/ 204
10.3.4獲得三天前的時間的方法/ 204
10.3.5獲得三天前的日期的方法/ 205
10.3.6獲得歷史交易日/ 206

第11章Python量化策略的獲取數據函數/ 207
11.1 history( )函數/ 208
11.1.1各項參數的意義/ 208
11.1.2 history()函數的應用實例/ 210
11.2 attribute_history ()函數/ 213
11.3 get_current_data ()函數/ 215
11.4 get_fundamentals ()函數/ 216
11.4.1各項參數的意義/ 216
11.4.2 get_fundamentals ()函數的應用實例/ 217
11.5 get_fundamentals_continuously ()函數/ 222
11.6 get_index_stocks ()函數/ 223
11.6.1各項參數的意義/ 224
11.6.2 get_index_stocks ()函數的應用實例/ 225
11.7 get_industry_stocks()函數/ 225
11.8 get_concept_stocks ()函數/ 227
11.9 get_all_securities()函數/ 229
11.9.1各項參數的意義/ 229
11.9.2 get_all_securities()函數的應用實例/ 230
11.10 get_security_info ()函數/ 232
11.11 get_billboard_list ()函數/ 233
11.11.1各項參數的意義/ 233
11.11.2 get_billboard_list()函數的應用實例/ 234
11.12 get_locked_shares ()函數/ 234

第12章Python量化策略的回測/ 237
12.1回測的過程/ 238
12.2編寫雙均線量化策略/ 239
12.2.1量化策略的編輯頁面/ 239
12.2.2雙均線量化策略的初始化函數/ 241
12.2.3雙均線量化策略的交易程序函數/ 242
12.3設置量化策略的回測參數/ 243
12.4雙均線量化策略的回測詳情/ 245
12.5量化策略的風險指標/ 248
12.5.1 Alpha(阿爾法) / 249
12.5.2 Beta(貝塔) / 250
12.5.3 Sharpe(夏普比率) / 251
12.5.4 Sortino(索提諾比率) / 251
12.5.5 Information Ratio(信息比率) / 252
12.5.6 Volatility(策略波動率) / 253
12.5.7 Benchmark Volatility(基準波動率) / 254
12.5.8 Max Drawdown(最大回撤) / 255

第13章Python量化策略的因子分析/ 257
13.1初識因子分析/ 258
13.1.1因子的分類/ 258
13.1.2因子分析的作用/ 258
13.2因子分析的實現代碼/ 258
13.2.1因子分析中變量的含義/ 259
13.2.2因子分析中可以使用的基礎因子/ 259
13.2.3 calc的參數及返回值/ 261
13.3因子分析的結果/ 261
13.3.1新建因子/ 261
13.3.2收益分析/ 264
13.3.3 IC分析/ 268
13.3.4換手分析/ 269
13.4因子在研究和回測中的使用/ 270
13.5基本面因子應用實例/ 273

第14章Python量化策略的技術指標實例/ 277
14.1均線型技術指標實例/ 278
14.1.1傳統平均線/ 278
14.1.2高價平均線/ 280
14.1.3低價平均線/ 281
14.1.4變異平均線/ 282
14.1.5成本價均線/ 283
14.2超買超賣型技術指標實例/ 285
14.2.1隨機指標KD / 285
14.2.2資金流量指標MFI / 286
14.2.3相對強弱指標RSI / 288
14.2.4變動速率線OSC / 289
14.2.5威廉指標WR / 290
14.2.6順勢指標CCI / 291
14.3趨勢型技術指標實例/ 292
14.3.1平滑異同平均線MACD / 293
14.3.2趨向指標DMI / 294
14.3.3簡易波動指標EMV / 295
14.3.4終極指標UOS / 296
14.4能量型技術指標實例/ 298
14.4.1情緒指標BRAR / 298
14.4.2帶狀能量線CR / 299
14.4.3成交量變異率VR / 300
14.4.4梅斯線MASS / 301
14.4.5累積能量線OBV / 302
14.4.6相對強弱量VRSI / 303
14.5壓力支撐型技術指標實例/ 305
14.5.1布林通道線BOLL / 305
14.5.2麥克支撐壓力線MIKE / 306
14.5.3薛斯通道線XS / 307

第15章Python量化交易策略實例/ 311
15.1 MACD指標量化交易策略/ 312
15.1.1編寫初始化函數/ 312
15.1.2編寫單位時間調用的函數/ 313
15.1.3 MACD指標量化交易策略的回測/ 315
15.2能量型指標量化交易策略/ 316
15.2.1編寫初始化函數/ 316
15.2.2編寫單位時間調用的函數/ 317
15.2.3能量型指標量化交易策略的回測/ 318
15.3 KD指標量化交易策略/ 320
15.3.1編寫初始化函數/ 320
15.3.2編寫開盤前運行函數/ 321
15.3.3編寫開盤時運行函數/ 321
15.3.4編寫收盤後運行函數/ 322
15.3.5 KD指標量化交易策略的回測/ 322
15.4多股票持倉量化交易策略/ 324
15.4.1編寫初始化函數/ 324
15.4.2編寫單位時間調用的函數/ 324
15.4.3多股票持倉量化交易策略的回測/ 325
15.5多股票追漲量化交易策略/ 327
15.5.1編寫初始化函數/ 327
15.5.2編寫每天早上開盤時執行函數/ 327
15.5.3編寫開始交易前被調用函數/ 328
15.5.4編寫單位時間調用的函數/ 328
15.5.5多股票追漲量化交易策略的回測/ 329
15.6銀行股輪動量化交易策略/ 331
15.6.1編寫初始化函數/ 331
15.6.2編寫選股函數/ 332
15.6.3編寫交易函數/ 332
15.6.4銀行股輪動量化交易策略的回測/ 333
15.7小市值股票量化交易策略/ 334
15.7.1編寫初始化函數/ 334
15.7.2編寫選股函數/ 335
15.7.3編寫過濾停牌股票函數/ 336
15.7.4編寫交易函數/ 336
15.7.5小市值股票量化交易策略的回測/ 337