本書是以給廣大量化研究者建立一個一般性的量化研究流程(主要是量化策略開發(fā),也包括其他量化研究)為主旨來展開編寫的。全部章節(jié)以流程化的形式展開,從量化研究的數(shù)據(jù)開始到終以交易結(jié)束。數(shù)據(jù)庫、指標(biāo)庫、算法庫、工具庫、可視化庫、報告和日常工作系統(tǒng)、交易系統(tǒng)這7個核心庫/系統(tǒng)分別解決了量化研究中某一個環(huán)節(jié)的問題。量化研究是以上述7個核心庫/系統(tǒng)所代表環(huán)節(jié)的一個循環(huán),在這個循環(huán)中不斷進(jìn)行的改進(jìn)和研究。它將數(shù)據(jù)和思想相結(jié)合,通過交易來檢驗研究成果是否達(dá)到預(yù)期,然后改進(jìn)思想和更換數(shù)據(jù),并投入下一次交易中。這樣的循環(huán)使得每一次量化研究都更加接近理想效果。而在循環(huán)的每一個環(huán)節(jié)上,本書給出了一系列工具、算法、技術(shù)等來支撐各個核心庫/系統(tǒng)的功能。本書在編程語言上以Matlab和Python為主,數(shù)據(jù)庫一章用到了MySQL的基本知識,交易系統(tǒng)一章用到了MongoDB的知識。本書的內(nèi)容十分豐富,通過閱讀本書,讀者可以對量化研究形成一個系統(tǒng)、全面、完整的認(rèn)識,并在今后的研究工作中逐步拓展,終形成自己的體系。
本書主要為有志于從事量化研究領(lǐng)域相關(guān)工作的讀者建立一個量化研究的一般性流程和框架,并對流程的關(guān)鍵環(huán)節(jié)適當(dāng)展開,給出程序案例。
本書是作者李一邨與電子工業(yè)出版社的資深編輯李冰老師的初次合作。李冰老師具有多年科技書籍編輯工作經(jīng)驗,在她的幫助和指導(dǎo)下,歷時一年半才完成初稿。著書期間,經(jīng)過多次商討和修改,日臻完善。我們衷心地希望本書的內(nèi)容能夠為從事量化研究領(lǐng)域工作的讀者提供一些幫助。
本書主旨
本書主要為有志于從事量化研究領(lǐng)域相關(guān)工作的讀者建立一個量化研究的一般性流程和框架,并對流程的關(guān)鍵環(huán)節(jié)適當(dāng)展開,給出程序案例。讀者通過學(xué)習(xí)本書能夠了解一般性的量化研究內(nèi)容,并在今后結(jié)合自身的工作進(jìn)一步豐富和拓展這個框架,以期終建立自己獨(dú)特的量化研究體系。
本書主要內(nèi)容
本書以7大核心庫/系統(tǒng)為核心構(gòu)建量化研究體系,每個核心庫/系統(tǒng)都在研究環(huán)節(jié)中發(fā)揮了自身的功能,具體內(nèi)容如下。
(1)數(shù)據(jù)庫以同花順和萬得兩個數(shù)據(jù)商的量化接口為例,對兩個接口的各個數(shù)據(jù)模塊編寫了數(shù)據(jù)下載腳本并作為案例,這些案例可以幫助讀者了解基于數(shù)據(jù)商的量化接口開發(fā)數(shù)據(jù)庫的編程經(jīng)驗。
(2)指標(biāo)庫給出了一套指標(biāo)庫目錄管理程序,并總結(jié)了8大類技術(shù)指標(biāo),這些技術(shù)指標(biāo)可在量化投資中發(fā)揮風(fēng)控、止損、止盈、趨勢判斷等功能。
(3)算法庫首先給出了機(jī)器學(xué)習(xí)算法的一般分類,然后重點(diǎn)介紹了幾個經(jīng)典和常用的算法并作為案例。傅里葉變換主要用于時間序列的分析,可以對時間序列進(jìn)行成分分解和去掉噪聲成分;ReliefF是一種特征選擇算法,可對研究數(shù)據(jù)相對于目標(biāo)數(shù)據(jù)的重要性進(jìn)行排序,從中選擇重要的數(shù)據(jù)作為特征因子;高斯混合聚類是一種非監(jiān)督聚類算法,用于特征數(shù)據(jù)是高斯分布的聚類;Chi-Merge算法是一種連續(xù)數(shù)值數(shù)據(jù)離散化的算法,通?捎糜趯⑦B續(xù)數(shù)值數(shù)據(jù)離散化為幾個標(biāo)簽,從而將回歸問題轉(zhuǎn)化為分類問題;粗糙集分類算法是一種基于規(guī)則推理的分類算法。上述幾個算法功能各不相同,在研究中存在互補(bǔ)性。
(4)工具庫的內(nèi)容包括:數(shù)據(jù)清洗程序,用于對時間序列數(shù)據(jù)的清洗,包括補(bǔ)全、匹配、平滑等;因子回測程序,用于對因子在研究中是否有效進(jìn)行回測的程序;先后輪動程序,一個觀察自變量和因變量是否存在先行滯后關(guān)系的程序,用于檢驗自變量和應(yīng)變量在時間上的因果性;回測平臺程序,用于量化策略的回測。
(5)可視化庫首先總結(jié)了一些Matlab畫圖編程的技巧,并總結(jié)了一些常用函數(shù),然后從形態(tài)類畫圖程序和功能類畫圖程序兩大類出發(fā)分別介紹了一些圖例。其中,形態(tài)類畫圖程序是指折線圖、柱狀圖、餅狀圖等;功能類畫圖程序主要是為了實(shí)現(xiàn)某種研究目的而使用的畫圖程序,如對異常數(shù)據(jù)點(diǎn)的可視化、兩個時間序列協(xié)整關(guān)系的觀察等,這些畫圖程序可以廣泛運(yùn)用于研究報告、論文撰寫及任何需要用到數(shù)據(jù)展示的應(yīng)用場景中。
(6)報告和日常工作系統(tǒng)首先介紹了Matlab調(diào)用Word相關(guān)COM接口的技術(shù),然后利用這些技術(shù)開發(fā)了一套自動化撰寫量化研究報告的程序,后介紹了量化團(tuán)隊的管理方法,并開發(fā)了一套量化研究員的管理考核系統(tǒng)。
(7)交易系統(tǒng)首先介紹了爬蟲的基本知識和原理,然后利用這些知識以東方財富網(wǎng)的股票交易接口、期貨交易接口、期權(quán)交易接口為例給出了開發(fā)案例,后介紹了VNPY交易接口的下載、安裝和基本功能。
本書特色
縱觀全書,可發(fā)現(xiàn)本書特點(diǎn)鮮明,主要表現(xiàn)在以下幾個方面。
(1)知識系統(tǒng)、全面、豐富:因為本書旨在為讀者建立一個全面、系統(tǒng)的量化研究流程和框架,所以撰寫本書所需的知識也必然相應(yīng)地需要全面和系統(tǒng)。比如,在編程語言方面,本書既基于有著悠久數(shù)據(jù)分析編程歷史的Matlab語言,也基于近年來被稱為膠水語言的Python,這兩門語言在數(shù)據(jù)分析領(lǐng)域被廣泛使用,應(yīng)該說本書迎合了當(dāng)下數(shù)據(jù)分析的主流語言。另外,量化研究離不開數(shù)據(jù),所以本書也用到了MySQL和MongoDB兩門數(shù)據(jù)庫語言,同時對于爬蟲這門技術(shù)也做了深入講解,為讀者今后建立自己感興趣想要抓取的特色的數(shù)據(jù)庫打下堅實(shí)基礎(chǔ)。
(2)教學(xué)與應(yīng)用并重:本書不僅是一本傳播知識的書,也是一本實(shí)戰(zhàn)和應(yīng)用的書。在每一章開頭都給出了這一章所需要的知識,然后對所講的知識進(jìn)行一次實(shí)戰(zhàn)運(yùn)用,或者給出案例,或者直接做一個工程項目,力求學(xué)以致用,為讀者建立一個落地的量化研究體系。
(3)解說翔實(shí),圖文并重:因為量化研究是數(shù)理化程度比較深的研究領(lǐng)域,所以對數(shù)學(xué)能力有一定的要求。以本書算法庫中的傅里葉變換為例,本書首先在解說中給出了全面、嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)推導(dǎo)過程,然后基于數(shù)學(xué)結(jié)論編寫程序,并代入實(shí)證數(shù)據(jù)計算結(jié)果,后對結(jié)果進(jìn)行可視化展示和說明,幫助讀者從數(shù)學(xué)推導(dǎo)和實(shí)證兩個角度綜合理解。
(4)案例實(shí)用:本書的案例和程序并不只作為知識講解的示例使用,它還是量化研究中時常需要面對的問題的一個答案。在實(shí)際的量化研究工作中,本書所給出的程序可以真正解決問題,具有實(shí)戰(zhàn)意義。
(5)系統(tǒng)可拓展:本書給出的是量化研究的一般性框架,讀者可以通過學(xué)習(xí)本書,結(jié)合自身的研究需要,對本書的程序和框架進(jìn)行拓展,終形成一套適合自身研究需要的特色化、個性化的量化研究體系。
本書讀者定位和閱讀方法
本書的讀者主要是教師、學(xué)生、專業(yè)人士及其他對量化研究技術(shù)感興趣的人士。
致教師
本書系統(tǒng)地介紹了量化研究技術(shù),可以作為數(shù)學(xué)、統(tǒng)計、金融等專業(yè)本科生或研究生的教材。書中的內(nèi)容不僅系統(tǒng),而且相對獨(dú)立,教師可以根據(jù)課程的學(xué)時和專業(yè)方向,選擇合適的內(nèi)容進(jìn)行課堂教學(xué),其他內(nèi)容則可以作為參考。授課時,建議先補(bǔ)充一定的計算機(jī)知識和編程知識,對于學(xué)術(shù)性較深的章節(jié)如算法庫,建議先補(bǔ)充高等數(shù)學(xué)、概率論、線性代數(shù)等數(shù)學(xué)知識。在進(jìn)行課程備課的過程中,如果需要書中的一些電子資料作為課件或授課支撐材料,可以直接給筆者發(fā)郵件(303984464@qq.com),筆者會根據(jù)具體情況,提供力所能及的幫助。
致學(xué)生
作為大數(shù)據(jù)時代的學(xué)生,量化研究是一項基本技能,尤其是對以后有志于做科研工作的學(xué)生來說更應(yīng)掌握。在今后的大數(shù)據(jù)時代,量化分析技術(shù)將會像今天的Office辦公軟件技術(shù)一樣,成為工作中必不可少的一部分,所以無論未來是否從事量化投資相關(guān)的工作,學(xué)習(xí)量化研究都將有助于今后的職業(yè)生涯。
致專業(yè)人士
對于從事量化研究的專業(yè)人士,盡可以關(guān)注整個量化研究體系,因為本書的知識體系應(yīng)該是當(dāng)前量化類書籍中相對完善的。此外,書中的算法案例和項目案例,也是本書的一個特色,值得借鑒。
配套資源
筆者在金融行業(yè)從業(yè)多年,有著豐富的業(yè)界積累。對于有資源需求的讀者,歡迎關(guān)注伊園科技的官方知乎號、微信公眾號、B站號。以下是三者的二維碼。
勘誤和支持
由于本書編寫時間倉促,加之作者水平有限,書中錯誤和疏漏之處在所難免。在此,誠懇地期待廣大讀者批評指正。如果有建議,可以直接發(fā)送至郵箱303984464@qq.com。在技術(shù)之路上如能與大家互勉共進(jìn),我們倍感榮幸!對于書中出現(xiàn)的問題,歡迎讀者通過杭州伊園科技有限公司的知乎號、微信公眾號、B站號、郵箱等進(jìn)行反饋。知乎號:李一邨-量化投資;微信公眾號:return量化;B站號:李一邨;郵箱:2975056631@qq.com。
致謝
感謝MathWorks官方文檔提供了全面、深入、準(zhǔn)確的參考材料,強(qiáng)大的官方文檔支持是其他資料無法企及的;同時,感謝Matlab中文論壇為本書提供的交流討論專區(qū);感謝伊園科技編委會的鼎力支持;感謝電子工業(yè)出版社李冰老師的支持和鼓勵,感謝徐萍老師在文字編輯方面的辛勤工作,使我們順利完成全部書稿。
李一邨,浙江大學(xué)量化金融博士,現(xiàn)任杭州伊園科技有限公司總經(jīng)理。兼職受聘為杭州市科促會數(shù)據(jù)科學(xué)家、杭州市科促會第二屆理事會理事、杭州師范大學(xué)校外指導(dǎo)老師、杭州市科協(xié)專家智庫成員。曾獲證券時報和期貨日報聯(lián)合評選的第八到第十二連續(xù)5屆中國金融量化策略工程師。前沿量化科學(xué)領(lǐng)域的開創(chuàng)者,多年來致力于將多元學(xué)科的前沿理論嫁接融合到金融投資領(lǐng)域。曾任某A股上市金融機(jī)構(gòu)研究所量化研究總監(jiān),獨(dú)立開發(fā)商品指數(shù)體系,并在國內(nèi)金融界的金融資訊終端萬得資訊公開發(fā)布。擁有多年Matlab和Python編程經(jīng)驗。精通量化金融領(lǐng)域,也對機(jī)器學(xué)習(xí)領(lǐng)域有較深入的研究,發(fā)表多篇金融和機(jī)器學(xué)習(xí)交叉的SCI、EI論文,撰寫過多本專著。實(shí)踐中,開發(fā)多空倉點(diǎn)價交易策略,實(shí)盤夏普比1.5 ,年化收益率100% 。在多年的量化金融研究工作中,從事復(fù)雜衍生品設(shè)計、套期保值方案設(shè)計、大宗商品點(diǎn)價交易、量化投資策略開發(fā)等多個實(shí)戰(zhàn)項目,為高凈值客戶提供資產(chǎn)管理服務(wù),獲得可觀的業(yè)績與利潤。
緒論 量化研究體系介紹 1
0.1 7大模塊 1
0.1.1 數(shù)據(jù)庫 1
0.1.2 指標(biāo)庫 2
0.1.3 算法庫 2
0.1.4 工具庫 3
0.1.5 可視化庫 5
0.1.6 報告和日常工作系統(tǒng) 5
0.1.7 交易和風(fēng)控系統(tǒng) 5
0.2 結(jié)束語 7
第1章 數(shù)據(jù)庫 9
1.1 股票日頻率行情數(shù)據(jù)下載腳本 13
1.2 期貨成交持倉排名數(shù)據(jù)下載腳本 21
1.3 EDB數(shù)據(jù)下載案例 26
1.4 高頻數(shù)據(jù)下載案例 30
1.5 同花順量化數(shù)據(jù)接口的融資標(biāo)的股數(shù)據(jù)下載案例 38
1.6 同花順十大流通股東數(shù)據(jù)下載案例 39
第2章 指標(biāo)庫 42
2.1 指標(biāo)庫的設(shè)計與分類 42
2.1.1 根據(jù)投資標(biāo)的進(jìn)行分類 42
2.1.2 根據(jù)數(shù)據(jù)性質(zhì)進(jìn)行分類 42
2.1.3 根據(jù)投資市場進(jìn)行分類 43
2.2 指標(biāo)庫目錄管理程序的說明 43
2.3 技術(shù)指標(biāo)案例 58
2.3.1 擺動指標(biāo) 58
2.3.2 波動指標(biāo) 64
2.3.3 超買超賣指標(biāo) 72
2.3.4 成交量指標(biāo) 78
2.3.5 反趨向指標(biāo) 89
2.3.6 價格指標(biāo) 105
2.3.7 量價技術(shù)指標(biāo) 111
2.3.8 能量指標(biāo) 118
第3章 算法庫 131
3.1 機(jī)器學(xué)習(xí)常見算法分類匯總 131
3.1.1 按學(xué)習(xí)方式分類 132
3.1.2 按對訓(xùn)練集的使用方法分類 134
3.1.3 按形式及功能分類 135
3.2 傅里葉變換 143
3.2.1 傅里葉變換算法理論 143
3.2.2 離散傅里葉變換代碼與去噪實(shí)例 145
3.2.3 利用快速傅里葉變換對原數(shù)據(jù)進(jìn)行降噪 151
3.3 ReliefF特征選擇 152
3.3.1 ReliefF算法理論 152
3.3.2 ReliefF算法實(shí)例分析 155
3.4 高斯混合聚類模型(GMM) 161
3.4.1 GMM算法理論 161
3.4.2 算法代碼及實(shí)例 169
3.5 Chi-Merge算法 175
3.5.1 Chi-Merge 算法簡介 175
3.5.2 Chi-Merge原理介紹 176
3.5.3 Chi-Merge實(shí)例分析 177
3.5.4 Chi-Merge算法代碼 182
3.6 粗糙集分類算法 188
3.6.1 粗糙集分類算法簡介 188
3.6.2 粗糙集分類算法原理介紹 189
3.6.3 粗糙集分類算法函數(shù) 196
3.6.4 粗糙集分類算法實(shí)例分析 197
3.6.5 粗糙集分類算法代碼 199
第4章 工具庫 208
4.1 數(shù)據(jù)清洗程序 208
4.1.1 自動數(shù)據(jù)清洗程序的功能概述 208
4.1.2 手動數(shù)據(jù)清洗程序的功能概述 211
4.1.3 自動數(shù)據(jù)清洗程序 213
4.1.4 手動輸入日期序列對數(shù)據(jù)進(jìn)行補(bǔ)全的程序 217
4.2 因子回測程序 218
4.2.1 因子回測程序整體邏輯 218
4.2.2 因子回測程序流程 218
4.2.3 輸入?yún)?shù) 219
4.2.4 模型結(jié)構(gòu)及邏輯 221
4.2.5 因子回測程序代碼 223
4.3 先后輪動關(guān)系挖掘程序 232
4.3.1 先后輪動程序介紹 232
4.3.2 先后輪動總體流程 232
4.3.3 輸入?yún)?shù) 233
4.3.4 模型結(jié)構(gòu)及邏輯 234
4.3.5 自定義折線化函數(shù)邏輯 235
4.3.6 程序代碼 235
4.4 多品種量化回測系統(tǒng) 251
4.4.1 平臺思路框架 251
4.4.2 公式介紹 251
4.5 中文變量與代碼變量對照表 275
4.6 函數(shù)介紹 276
4.7 實(shí)例分析 278
第5章 可視化庫 281
5.1 Matlab畫圖編程技巧總結(jié) 281
5.1.1 畫布設(shè)置 281
5.1.2 坐標(biāo)軸設(shè)置 282
5.1.3 label設(shè)置 283
5.1.4 legend設(shè)置 284
5.1.5 title設(shè)置 284
5.1.6 顏色、透明圖控制 284
5.1.7 plot函數(shù) 285
5.1.8 scatter函數(shù) 286
5.1.9 plotyy函數(shù) 288
5.1.10 極坐標(biāo)與笛卡兒坐標(biāo)轉(zhuǎn)換 290
5.1.11 patch函數(shù)應(yīng)用 291
5.1.12 構(gòu)建曲面 292
5.1.13 自制坐標(biāo)軸 293
5.1.14 字體 293
5.1.15 畫圖技巧 294
5.2 形態(tài)類畫圖程序 296
5.2.1 漸變彩色折線圖 296
5.2.2 餅狀圖 298
5.2.3 彩帶圖 302
5.2.4 關(guān)系圖 304
5.2.5 火柴圖 306
5.2.6 雷達(dá)圖 309
5.2.7 面積圖 311
5.2.8 柱狀圖 314
5.3 功能性圖例 318
5.3.1 沿有效前沿的資產(chǎn)權(quán)重變化面積圖 318
5.3.2 資產(chǎn)組合的有效前沿 319
5.3.3 二資產(chǎn)協(xié)整關(guān)系判斷及對沖策略測試 320
5.3.4 時間序列數(shù)據(jù)的離群點(diǎn)可視化 324
5.3.5 數(shù)據(jù)分布及統(tǒng)計性質(zhì) 325
5.3.6 數(shù)據(jù)分布的分位數(shù)觀察 327
5.3.7 二分類機(jī)器學(xué)習(xí)器的分類準(zhǔn)確率展示 329
5.3.8 品種指標(biāo)排名 334
5.3.9 時間序列與相關(guān)指標(biāo)對比圖 336
5.3.10 多個價格序列及其收益率序列對比圖 341
5.3.11 策略累計收益及回撤 344
5.3.12 逐筆交易盈虧圖 347
5.3.13 三維聚類展示 349
第6章 報告和日常工作系統(tǒng) 351
6.1 Matlab中調(diào)用Microsoft Word的技巧總結(jié) 351
6.1.1 COM對象及其接口 351
6.1.2 創(chuàng)建和編輯Microsoft Word文件 355
6.2 實(shí)例:創(chuàng)建一份股票量化日報模板 363
6.2.1 建立Word文檔 363
6.2.2 頁內(nèi)容編寫 364
6.2.3 第二頁內(nèi)容編寫 372
6.2.4 第三頁內(nèi)容編寫 375
6.3 量化團(tuán)隊工作管理系統(tǒng) 378
6.3.1 量化研究環(huán)節(jié)、評價及考核 378
6.3.2 評分管理系統(tǒng) 380
第7章 交易系統(tǒng) 391
7.1 東方財富模擬交易接口 391
7.1.1 網(wǎng)頁結(jié)構(gòu)的基礎(chǔ)知識及爬蟲技術(shù)操作 391
7.1.2 東方財富模擬股票交易接口 397
7.1.3 東方財富模擬期貨交易接口 411
7.1.4 東方財富模擬期權(quán)交易接口 421
7.2 VNPY交易接口 445
7.2.1 VNPY使用前的準(zhǔn)備工作 445
7.2.2 VNPY交易接口的使用 448