本書本著能讓新手快速上手量化交易的原則,循序漸進(jìn)地講解了量化交易入門所需要的知識(shí),以及大量的開發(fā)技巧與交易技巧,具有很強(qiáng)的實(shí)用性。vn.py是機(jī)構(gòu)級(jí)別的量化交易軟件,掌握vn.py框架原理并且熟練運(yùn)用,有利于新手快速搭建屬于自己的量化交易系統(tǒng)。Python語言有非常強(qiáng)大的數(shù)據(jù)分析庫,對(duì)于交易策略的研發(fā)具有天然優(yōu)勢,且其易學(xué)性也深受初學(xué)者喜愛。本書即以Python+vn.py這一流行組合寫作,從量化交易的起源及其發(fā)展進(jìn)程入手,在簡單介紹Python量化編程基礎(chǔ),以及詳細(xì)解析vn.py架構(gòu)之后,深入且全面地介紹了CTA策略、海龜策略,以及新策略的開發(fā)流程。
知乎專欄《Python量化之路》作者,受困于早期Python量化交易的學(xué)習(xí)資料過于零散,把自己在量化交易從入門到應(yīng)用的踩“坑”經(jīng)歷整理成學(xué)習(xí)筆記發(fā)布到網(wǎng)上,以最簡單的CTA策略為著力點(diǎn),力求拉近學(xué)習(xí)與實(shí)踐(即實(shí)盤交易)的距離,由淺入深,比較系統(tǒng)而全面地介紹量化交易相關(guān)知識(shí),收獲了很多初學(xué)者的肯定和共鳴。目前就職于上海某金融科技公司,負(fù)責(zé)策略的研發(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套利時(shí)代(2010年以前) 20
1.4.2 多因子Alpha和高頻交易稱雄時(shí)代(2010—2015年) 21
1.4.3 多元化投資時(shí)代(2016年至今) 23
1.5 國內(nèi)常用的量化交易策略 24
1.5.1 期貨CTA策略 24
1.5.2 股票Alpha策略 32
1.5.3 期權(quán)波動(dòng)率套利策略 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量化編程基礎(chǔ) 59
2.1 Python運(yùn)行環(huán)境搭建 60
2.1.1 安裝Anaconda2-5.0.0(32位) 61
2.1.2 設(shè)置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 類和實(shí)例 79
2.6.1 定義學(xué)生父類 79
2.6.2 定義父類實(shí)例 81
2.6.3 定義團(tuán)體子類 82
2.6.4 定義子類實(shí)例 83
2.7 NumPy與Pandas 84
2.7.1 一維數(shù)組 84
2.7.2 二維數(shù)組 88
2.8 scikit-learn機(jī)器學(xué)習(xí)庫 92
2.8.1 機(jī)器學(xué)習(xí)的步驟 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 多個(gè)圖的繪制 108
第3章 vn.py入門 109
3.1 vn.py介紹 109
3.2 搭建vn.py運(yùn)行環(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架構(gòu) 124
3.4.1 底層接口 125
3.4.2 中層引擎 126
3.4.3 上層應(yīng)用 127
3.5 底層接口 128
3.5.1 CTP API的工作原理 128
3.5.2 CTP API的Python封裝設(shè)計(jì) 133
3.5.3 CTP API對(duì)接中層引擎原理 135
3.6 事件引擎 138
3.6.1 時(shí)間驅(qū)動(dòng) 138
3.6.2 事件驅(qū)動(dòng) 139
3.6.3 事件引擎工作流程 140
3.6.4 事件引擎結(jié)構(gòu) 141
3.7 上層應(yīng)用 143
3.7.1 PyQt介紹 143
3.7.2 GUI組件構(gòu)成 144
第4章 在vn.py中實(shí)現(xiàn)CTA策略 147
4.1 數(shù)據(jù)解決方案 147
4.1.1 CSV加載模塊 147
4.1.2 開發(fā)新的CSV導(dǎo)入模塊 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 生成時(shí)間序列 163
4.3.3 定義屬性函數(shù) 164
4.3.4 生成計(jì)算指標(biāo) 165
4.4 CTA策略模塊 167
4.4.1 定義成員變量 168
4.4.2 構(gòu)建函數(shù) 169
4.4.3 回調(diào)函數(shù) 170
4.4.4 主動(dòng)函數(shù) 171
4.5 策略回測模塊 174
4.5.1 CTA回測引擎 174
4.5.2 參數(shù)優(yōu)化設(shè)置 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 滾動(dòng)回測 211
5.3 AtrRsi策略 212
5.3.1 ATR指標(biāo) 213
5.3.2 RSI指標(biāo) 215
5.3.3 策略原理 216
5.3.4 策略代碼解析 217
5.3.5 策略回測 220
5.3.6 滾動(dòng)回測 221
5.4 金肯特納通道策略 223
5.4.1 策略原理 223
5.4.2 策略代碼解析 224
5.4.3 策略回測 229
5.4.4 滾動(dòng)回測 229
5.5 布林帶通道策略 231
5.5.1 策略原理 231
5.5.2 CCI指標(biāo) 232
5.5.3 ATR指標(biāo) 234
5.5.4 策略回測 235
5.5.5 滾動(dòng)回測 236
5.6 跨時(shí)間周期策略 238
5.6.1 策略原理 239
5.6.2 策略代碼解析 239
5.6.3 策略回測 243
5.6.4 滾動(dòng)回測 244
5.7 多信號(hào)組合策略 245
5.7.1 策略原理 246
5.7.2 信號(hào)生成部分 246
5.7.3 交易管理部分 251
5.7.4 多信號(hào)策略的重構(gòu) 256
第6章 海龜策略本地化實(shí)證 259
6.1 海龜策略速覽 259
6.1.1 海龜策略的故事 259
6.1.2 海龜策略的局限性 260
6.1.3 原版海龜策略 261
6.1.4 策略回測效果 266
6.2 本地化實(shí)現(xiàn)困境與解決方案 268
6.2.1 本地化實(shí)現(xiàn)困境 268
6.2.2 理想解決方案 270
6.3 vn.py實(shí)現(xiàn)的海龜策略 271
6.3.1 工具準(zhǔn)備 271
6.3.2 數(shù)據(jù)準(zhǔn)備 272
6.3.3 海龜策略代碼結(jié)構(gòu) 275
6.3.4 海龜策略6大要素代碼解析 278
6.3.5 海龜策略的回測 284
6.4 品種選擇驗(yàn)證 285
6.4.1 原版投資組合測試 285
6.4.2 篩選品種的傳統(tǒng)方法 287
6.4.3 構(gòu)建海龜組合的難點(diǎn) 295
6.4.4 海龜組合篩選的解決方案 296
6.4.5 重新構(gòu)建投資組合 300
6.5 長短周期信號(hào)檢驗(yàn) 320
6.6 上一筆贏利過濾檢驗(yàn) 322
6.7 手續(xù)費(fèi)、滑點(diǎn)測試 324
6.8 單位頭寸限制檢驗(yàn) 325
6.9 關(guān)于海龜策略的其他研究方向 329
第7章 新策略實(shí)戰(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 預(yù)測表現(xiàn) 341
7.2.3 回測的注意事項(xiàng) 341
7.3 模擬測試 348
7.3.1 策略文件目錄 348
7.3.2 實(shí)盤/模擬盤配置文件 349
7.4 真實(shí)交易環(huán)境 352
7.4.1 交易環(huán)境的3套系統(tǒng) 352
7.4.2 交易環(huán)境的數(shù)據(jù)流 353
7.5 實(shí)際操作注意事項(xiàng) 354
7.5.1 計(jì)算錯(cuò)誤 354
7.5.2 數(shù)據(jù)使用誤差 355
7.5.3 過擬合 356
7.5.4 幸存者偏差 357
7.5.5 策略周期 358
7.5.6 動(dòng)態(tài)變化的現(xiàn)實(shí)環(huán)境 359
7.5.7 人為干預(yù) 360
附錄A 主流交易品種 361
A.1 股票 361
A.1.1 股票的定義 361
A.1.2 股票交易所 362
A.1.3 股票競價(jià)規(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 期權(quán) 376
A.3.1 期權(quán)的定義 376
A.3.2 期權(quán)的分類 379
A.3.3 期權(quán)的影響因素 381
A.3.4 期權(quán)投資組合 383
A.3.5 期權(quán)波動(dòng)率套利策略 386
A.4 外匯 387
A.4.1 外匯的定義 387
A.4.2 外匯市場的結(jié)構(gòu) 389
A.4.3 外匯市場的組織形式 392
A.4.4 主要外匯交易中心 393
A.4.5 外匯交易策略 395
參考文獻(xiàn) 398