本書本著能讓新手快速上手量化交易的原則,循序漸進地講解了量化交易入門所需要的知識,以及大量的開發(fā)技巧與交易技巧,具有很強的實用性。vn.py是機構級別的量化交易軟件,掌握vn.py框架原理并且熟練運用,有利于新手快速搭建屬于自己的量化交易系統(tǒng)。Python語言有非常強大的數(shù)據(jù)分析庫,對于交易策略的研發(fā)具有天然優(yōu)勢,且其易學性也深受初學者喜愛。本書即以Python+vn.py這一流行組合寫作,從量化交易的起源及其發(fā)展進程入手,在簡單介紹Python量化編程基礎,以及詳細解析vn.py架構之后,深入且全面地介紹了CTA策略、海龜策略,以及新策略的開發(fā)流程。
知乎專欄《Python量化之路》作者,受困于早期Python量化交易的學習資料過于零散,把自己在量化交易從入門到應用的踩“坑”經(jīng)歷整理成學習筆記發(fā)布到網(wǎng)上,以最簡單的CTA策略為著力點,力求拉近學習與實踐(即實盤交易)的距離,由淺入深,比較系統(tǒng)而全面地介紹量化交易相關知識,收獲了很多初學者的肯定和共鳴。目前就職于上海某金融科技公司,負責策略的研發(fā)與API接口的開發(fā)。
目 錄
第1章 量化交易速覽 1
1.1 為何選擇量化交易 1
1.1.1 量化交易的概念 1
1.1.2 主觀交易與量化交易 2
1.2 量化交易的先驅(qū)們 5
1.2.1 朱爾斯·雷格納特 5
1.2.2 愛德華·索普 6
1.2.3 托馬斯·彼得菲 9
1.2.4 詹姆斯·西蒙斯 14
1.3 美國量化投資的發(fā)展歷史 17
1.3.1 興起階段(1970—1990年) 17
1.3.2 快速發(fā)展階段(1990—2000年) 18
1.3.3 穩(wěn)步增長階段(2000年至今) 19
1.4 中國量化投資的發(fā)展歷史 20
1.4.1 ETF套利時代(2010年以前) 20
1.4.2 多因子Alpha和高頻交易稱雄時代(2010—2015年) 21
1.4.3 多元化投資時代(2016年至今) 23
1.5 國內(nèi)常用的量化交易策略 24
1.5.1 期貨CTA策略 24
1.5.2 股票Alpha策略 32
1.5.3 期權波動率套利策略 41
1.5.4 高頻交易策略 45
1.6 寬客 48
1.7 寬客的兩大陣形:P宗與Q宗 51
1.8 寬客的3種職能分類 52
1.8.1 量化IT工程師 52
1.8.2 量化研究員 53
1.8.3 量化交易員 54
1.9 寬客的四大派系 55
1.9.1 券商資管 56
1.9.2 公募基金 56
1.9.3 私募基金 57
1.9.4 期貨市場 57
第2章 Python量化編程基礎 59
2.1 Python運行環(huán)境搭建 60
2.1.1 安裝Anaconda2-5.0.0(32位) 61
2.1.2 設置Anancoda環(huán)境 62
2.1.3 創(chuàng)建共享環(huán)境 64
2.1.4 列出共享環(huán)境 64
2.1.5 安裝Jupyter Notebook 65
2.2 數(shù)據(jù) 66
2.2.1 字符串 66
2.2.2 數(shù)字 67
2.2.3 容器 68
2.2.4 布爾值 73
2.2.5 空值 73
2.3 函數(shù) 74
2.3.1 自定義函數(shù) 74
2.3.2 第三方庫的函數(shù) 75
2.4 條件判斷 75
2.5 循環(huán) 76
2.6 類和實例 79
2.6.1 定義學生父類 79
2.6.2 定義父類實例 81
2.6.3 定義團體子類 82
2.6.4 定義子類實例 83
2.7 NumPy與Pandas 84
2.7.1 一維數(shù)組 84
2.7.2 二維數(shù)組 88
2.8 scikit-learn機器學習庫 92
2.8.1 機器學習的步驟 93
2.8.2 線性回歸 94
2.8.3 邏輯回歸 100
2.9 Matplotlib繪圖庫 103
2.9.1 用列表繪制線條 103
2.9.2 用數(shù)組繪圖 105
2.9.3 多個圖的繪制 108
第3章 vn.py入門 109
3.1 vn.py介紹 109
3.2 搭建vn.py運行環(huán)境 113
3.2.1 安裝Visual Studio 2013社區(qū)版(特定版本) 113
3.2.2 安裝代碼編輯器工具:Sublime Text 114
3.2.3 安裝Wing IDE 115
3.2.4 安裝MongoDB數(shù)據(jù)庫 115
3.2.5 安裝Robo 3T 118
3.2.6 安裝vn.py 119
3.2.7 更新vn.py 121
3.3 VnTrader界面功能介紹 122
3.3.1 連接CTP 122
3.3.2 界面說明 123
3.4 vn.py架構 124
3.4.1 底層接口 125
3.4.2 中層引擎 126
3.4.3 上層應用 127
3.5 底層接口 128
3.5.1 CTP API的工作原理 128
3.5.2 CTP API的Python封裝設計 133
3.5.3 CTP API對接中層引擎原理 135
3.6 事件引擎 138
3.6.1 時間驅(qū)動 138
3.6.2 事件驅(qū)動 139
3.6.3 事件引擎工作流程 140
3.6.4 事件引擎結構 141
3.7 上層應用 143
3.7.1 PyQt介紹 143
3.7.2 GUI組件構成 144
第4章 在vn.py中實現(xiàn)CTA策略 147
4.1 數(shù)據(jù)解決方案 147
4.1.1 CSV加載模塊 147
4.1.2 開發(fā)新的CSV導入模塊 152
4.1.3 數(shù)據(jù)下載模塊 155
4.2 K線生成模塊 157
4.2.1 1分鐘K線合成 158
4.2.2 X分鐘K線合成 161
4.3 K線管理模塊 162
4.3.1 初始化參數(shù) 162
4.3.2 生成時間序列 163
4.3.3 定義屬性函數(shù) 164
4.3.4 生成計算指標 165
4.4 CTA策略模塊 167
4.4.1 定義成員變量 168
4.4.2 構建函數(shù) 169
4.4.3 回調(diào)函數(shù) 170
4.4.4 主動函數(shù) 171
4.5 策略回測模塊 174
4.5.1 CTA回測引擎 174
4.5.2 參數(shù)優(yōu)化設置 178
4.5.3 調(diào)用回測和優(yōu)化模塊 178
第5章 經(jīng)典CTA策略 185
5.1 雙均線策略 185
5.1.1 策略原理 185
5.1.2 向量回測 186
5.1.3 vn.py回測 191
5.2 Dual Thrust策略 200
5.2.1 策略原理 200
5.2.2 策略代碼解析 201
5.2.3 策略回測 206
5.2.4 策略優(yōu)化 208
5.2.5 滾動回測 211
5.3 AtrRsi策略 212
5.3.1 ATR指標 213
5.3.2 RSI指標 215
5.3.3 策略原理 216
5.3.4 策略代碼解析 217
5.3.5 策略回測 220
5.3.6 滾動回測 221
5.4 金肯特納通道策略 223
5.4.1 策略原理 223
5.4.2 策略代碼解析 224
5.4.3 策略回測 229
5.4.4 滾動回測 229
5.5 布林帶通道策略 231
5.5.1 策略原理 231
5.5.2 CCI指標 232
5.5.3 ATR指標 234
5.5.4 策略回測 235
5.5.5 滾動回測 236
5.6 跨時間周期策略 238
5.6.1 策略原理 239
5.6.2 策略代碼解析 239
5.6.3 策略回測 243
5.6.4 滾動回測 244
5.7 多信號組合策略 245
5.7.1 策略原理 246
5.7.2 信號生成部分 246
5.7.3 交易管理部分 251
5.7.4 多信號策略的重構 256
第6章 海龜策略本地化實證 259
6.1 海龜策略速覽 259
6.1.1 海龜策略的故事 259
6.1.2 海龜策略的局限性 260
6.1.3 原版海龜策略 261
6.1.4 策略回測效果 266
6.2 本地化實現(xiàn)困境與解決方案 268
6.2.1 本地化實現(xiàn)困境 268
6.2.2 理想解決方案 270
6.3 vn.py實現(xiàn)的海龜策略 271
6.3.1 工具準備 271
6.3.2 數(shù)據(jù)準備 272
6.3.3 海龜策略代碼結構 275
6.3.4 海龜策略6大要素代碼解析 278
6.3.5 海龜策略的回測 284
6.4 品種選擇驗證 285
6.4.1 原版投資組合測試 285
6.4.2 篩選品種的傳統(tǒng)方法 287
6.4.3 構建海龜組合的難點 295
6.4.4 海龜組合篩選的解決方案 296
6.4.5 重新構建投資組合 300
6.5 長短周期信號檢驗 320
6.6 上一筆贏利過濾檢驗 322
6.7 手續(xù)費、滑點測試 324
6.8 單位頭寸限制檢驗 325
6.9 關于海龜策略的其他研究方向 329
第7章 新策略實戰(zhàn) 330
7.1 開發(fā)新的策略 330
7.1.1 策略思路 330
7.1.2 增加AROON函數(shù) 332
7.1.3 策略代碼解析 333
7.1.4 策略回測 335
7.2 多策略的組合回測 337
7.2.1 歷史表現(xiàn) 338
7.2.2 預測表現(xiàn) 341
7.2.3 回測的注意事項 341
7.3 模擬測試 348
7.3.1 策略文件目錄 348
7.3.2 實盤/模擬盤配置文件 349
7.4 真實交易環(huán)境 352
7.4.1 交易環(huán)境的3套系統(tǒng) 352
7.4.2 交易環(huán)境的數(shù)據(jù)流 353
7.5 實際操作注意事項 354
7.5.1 計算錯誤 354
7.5.2 數(shù)據(jù)使用誤差 355
7.5.3 過擬合 356
7.5.4 幸存者偏差 357
7.5.5 策略周期 358
7.5.6 動態(tài)變化的現(xiàn)實環(huán)境 359
7.5.7 人為干預 360
附錄A 主流交易品種 361
A.1 股票 361
A.1.1 股票的定義 361
A.1.2 股票交易所 362
A.1.3 股票競價規(guī)則 363
A.1.4 T+1制度 367
A.1.5 股票交易策略 369
A.2 期貨 371
A.2.1 期貨的定義 371
A.2.2 期貨交易所 371
A.2.3 期貨交易策略 374
A.3 期權 376
A.3.1 期權的定義 376
A.3.2 期權的分類 379
A.3.3 期權的影響因素 381
A.3.4 期權投資組合 383
A.3.5 期權波動率套利策略 386
A.4 外匯 387
A.4.1 外匯的定義 387
A.4.2 外匯市場的結構 389
A.4.3 外匯市場的組織形式 392
A.4.4 主要外匯交易中心 393
A.4.5 外匯交易策略 395
參考文獻 398