圖書信息
量化投資名師王小川主編、提供Python零基礎入門及量化策略建模參考及實現、提供大型回測平台、代碼直接實盤、可線上交流。
王小川 等 主編
ISBN 978-7-121-33857-1
2018年4月出版
定價:99.00元
424頁
16開
編輯推薦
量化投資界精英王小川領銜撰寫
Python基礎與量化投資策略雙管齊下
為不懂Python語言的讀者提供零基礎入門
為有Python基礎的讀者提供量化策略建模參考,為本書重點
提供大型回測平台及本書代碼
可將本書代碼直接實盤套用,進行投資。
內容提要
《Python與量化投資:從基礎到實戰》主要講解如何利用Python進行量化投資,包括對數據的獲取、整理、分析挖掘、信號構建、策略構建、回測、策略分析等。《Python與量化投資:從基礎到實戰》也是利用Python進行數據分析的指南,有大量的關於數據處理分析的套用,並將重點介紹如何高效地利用Python解決投資策略問題。本書分為Python基礎篇和量化投資篇:Python基礎篇主要講解Python軟體的基礎、各個重要模組及如何解決常見的數據分析問題;量化投資篇在Python基礎篇的基礎上,講解如何使用優礦(uqer.io)回測平台實現主流策略及高級定製策略等。
《Python與量化投資:從基礎到實戰》可作為專業金融從業者進行量化投資的工具書,也可作為金融領域的入門參考書。在本書中有大量的Python代碼、Python量化策略的實現代碼等,尤其是對於量化策略的實現代碼,讀者可直接自行修改並獲得策略的歷史回測結果,甚至可將代碼直接實盤套用,進行投資。
目錄
第1章 準備工作 1
1.1 Python的安裝與設定 1
1.2 常見的Python庫 2
第2章 Python基礎介紹 7
2.1 Python學習準備 7
2.2 Python語法基礎 11
2.2.1 常量與變數 11
2.2.2 數與字元串 11
2.2.3 數據類 15
2.2.4 標識符 18
2.2.5 對象 19
2.2.6 行與縮進 20
2.2.7 注釋 22
2.3 Python運算符與表達式 22
2.3.1 算數運算符 22
2.3.2 比較運算符 24
2.3.3 邏輯運算符 25
2.3.4 Python中的優先權 27
2.4 Python中的控制流 27
2.4.1 控制流的功能 28
2.4.2 Python的三種控制流 29
2.4.3 認識分支結構if 30
2.4.4 認識循環結構for…in 32
2.4.5 認識循環結構while 33
2.4.6 break語句與continue語句 35
2.5 Python函式 39
2.5.1 認識函式 39
2.5.2 形參與實參 40
2.5.3 全局變數與局部變數 44
2.5.4 對函式的調用與返回值 45
2.5.5 文檔字元串 46
2.6 Python模組 47
2.6.1 認識Python模組 47
2.6.2 from…import詳解 49
2.6.3 認識__name__屬性 50
2.6.4 自定義模組 50
2.6.5 dir()函式 51
2.7 Python異常處理與檔案操作 52
2.7.1 Python異常處理 52
2.7.2 異常的發生 55
2.7.3 try…finally的使用 56
2.7.4 檔案操作 57
第3章 Python進階 59
3.1 NumPy的使用 59
3.1.1 多維數組ndarray 59
3.1.2 ndarray的數據類型 60
3.1.3 數組索引、切片和賦值 61
3.1.4 基本的數組運算 62
3.1.5 隨機數 63
3.2 Pandas的使用 67
3.2.1 Pandas的數據結構 68
3.2.2 Pandas輸出設定 70
3.2.3 Pandas數據讀取與寫入 70
3.2.4 數據集快速描述性統計分析 71
3.2.5 根據已有的列建立新列 72
3.2.6 DataFrame按多列排序 73
3.2.7 DataFrame去重 73
3.2.8 刪除已有的列 74
3.2.9 Pandas替換數據 75
3.2.10 DataFrame重命名 75
3.2.11 DataFrame切片與篩選 76
3.2.12 連續型變數分組 78
3.2.13 Pandas分組技術 79
3.3 SciPy的初步使用 83
3.3.1 回歸分析 84
3.3.2 插值 87
3.3.3 正態性檢驗 89
3.3.4 凸最佳化 93
3.4 Matplotlib的使用 97
3.5 Seaborn的使用 97
3.5.1 主題管理 98
3.5.2 調色板 101
3.5.3 分布圖 102
3.5.4 回歸圖 104
3.5.5 矩陣圖 106
3.5.6 結構格線圖 108
3.6 Scikit-Learn的初步使用 109
3.6.1 Scikit-Learn學習準備 110
3.6.2 常見的機器學習模型 111
3.6.3 模型評價方法——metric模組 120
3.6.4 深度學習 124
3.7 SQLAlchemy與常用資料庫的連線 124
3.7.1 連線資料庫 125
3.7.2 讀取數據 126
3.7.3 存儲數據 126
第4章 常用數據的獲取與整理 129
4.1 金融數據類型 129
4.2 金融數據的獲取 131
4.3 數據整理 135
4.3.1 數據整合 135
4.3.2 數據過濾 137
4.3.3 數據探索與數據清洗 138
4.3.4 數據轉化 140
第5章 通聯數據回測平台介紹 143
5.1 回測平台函式與參數介紹 144
5.1.1 設定回測參數 144
5.1.2 accounts賬戶配置 154
5.1.3 initialize(策略初始化環境) 160
5.1.4 handle_data(策略運行邏輯) 160
5.1.5 context(策略運行環境) 160
5.2 股票模板實例 168
5.3 期貨模板實例 173
5.4 策略回測詳情 179
5.5 策略的風險評價指標 181
5.6 策略交易細節 184
第6章 常用的量化策略及其實現 187
6.1 量化投資概述 187
6.1.1 量化投資簡介 187
6.1.2 量化投資策略的類型 188
6.1.3 量化研究的流程 189
6.2 行業輪動理論及其投資策略 192
6.2.1 行業輪動理論簡介 192
6.2.2 行業輪動的原因 192
6.2.3 行業輪動投資策略 194
6.3 市場中性Alpha策略 199
6.3.1 市場中性Alpha策略介紹 199
6.3.2 市場中性Alpha策略的思想和方法 200
6.3.3 實例展示 201
6.4 大師策略 206
6.4.1 麥克·歐希金斯績優成分股投資法 207
6.4.2 傑拉爾丁·維斯藍籌股投資法 211
6.5 CTA策略 219
6.5.1 趨勢跟隨策略 219
6.5.2 均值回復策略 241
6.5.3 CTA策略表現分析 253
6.6 Smart Beta 258
6.6.1 基於權重最佳化的Smart Beta 258
6.6.2 基於風險因子的Smart Beta 268
6.7 技術指標類策略 281
6.7.1 AROON指標 281
6.7.2 BOLL指標 285
6.7.3 CCI指標 288
6.7.4 CMO指標 293
6.7.5 Chaikin Oscillator指標 295
6.7.6 DMI指標 299
6.7.7 優礦平台因子匯總 302
6.8 資產配置 317
6.8.1 有效邊界 318
6.8.2 Black-Litterman模型 335
6.8.3 風險平價模型 349
6.9 時間序列分析 358
6.9.1 與時間序列分析相關的基礎知識 358
6.9.2 自回歸(AR)模型 365
6.9.3 滑動平均(MA)模型 372
6.9.4 自回歸滑動平均(ARMA)模型 376
6.9.5 自回歸差分滑動平均(ARIMA)模型 379
6.10 組合最佳化器的使用 384
6.10.1 最佳化器的概念 384
6.10.2 最佳化器的API接口 386
6.10.3 最佳化器實例 388
6.11 期權策略:Greeks和隱含波動率微笑計算 392
6.11.1 數據準備 392
6.11.2 Greeks和隱含波動率計算 394
6.11.3 隱含波動率微笑 401
第7章 量化投資十問十答 405
精彩節摘
推薦序一
很榮幸收到王小川博士的邀請,為其新書《Python與量化投資:從基礎到實戰》作序。王小川博士是華創證券研究所非常出色的分析師,在日常工作中非常樂於分享他的開發經驗和心得。在本書出版之前,他已經出版了兩本關於MATLAB的暢銷書,我相信這一本介紹使用Python進行量化投資的新書,會推動相關領域的發展。
在過去的幾年中,在很多領域內基於創新類算法的套用場景和相關產品不斷湧現,IT的推動作用已經從自動化延展到了智慧型化。在開源的大氛圍下,算法的更新疊代速度不斷加快,並在各個領域滲透和融合,專業化程度越來越高。
在金融領域的量化投資、智慧型投顧、信用評級、新聞監控、輿情分析等多個方向上,目前已經大量使用了相關技術和算法,並且融合的程度在不斷加深。與其他領域相比,金融領域的算法套用有其自身的特點:一是信息的來源多、部分數據非結構化;二是在不同的套用場景甚至策略之間,所適用算法的差異較大,例如投資交易的量化策略、智慧型投顧中的用戶畫像、新聞處理中的自然語言處理和大數據,都涉及了不同大類的算法;三是投資中各個影響因素之間的邏輯關係複雜化和模糊化;此外,很多金融問題不是單目標最佳化的,也不是封閉的信息集。
展望未來,在金融科技的落地方向上,量化投資、大數據的Quantamental、精準畫像、自然語言處理等依然會是焦點,勢必吸引越來越多的關注及資源。量化投資和Python這兩個詞是當下的焦點,王小川博士平時的工作正是其交匯點。正如書名《Python與量化投資:從基礎到實戰》所表達的,本書包含了王小川博士在工作中的寶貴經驗;在案例中描述的示例,正是本研究所金融工程的很多重要研究方向,例如常用的行業輪動、市場中性策略、多因子策略、CTA策略、期權策略、時間序列等。所以,本書對於了解量化開發的運用現狀及掌握必備的開發能力而言,是非常有益的。
考慮到眾多讀者可能沒有Python基礎,本書從零開始介紹Python語言,並且由淺入深、循序漸進。值得一提的是,與目前市場上的量化投資類圖書不同,本書的最大特點是接地氣、實用性強,並開源了全部的策略代碼,讀者可以自行運行和修改。
本書還設定了讀者互動網站,對於廣大投資者提出的關於本書的疑問,可以在第一時間做出解答。本書可以幫助大家更好地了解量化、掌握方法及提升量化投資的能力,非常值得大家細讀。
華中煒
華創證券執委會委員、副總經理兼研究所所長
推薦序二
網際網路時代的量化投資:科技讓量化投資和智慧型投資更普及
科技一直是推動投資行業變革的重要力量,它的發展和套用催生了量化投資的新模式。量化投資利用科學的方法認識市場波動,通過實證方法驗證投資假設,通過組合最佳化生成Alpha交易,可有效地控制風險暴露,高效覆蓋大量的投資機會,並提高投資的效率。
自量化投資的開山之作Beat the market:A Scientific Stock Market System出版以來,量化投資便在全球範圍內快速發展,湧現出指數基金、對沖基金、SmartBeta和Fund of Funds(FOF)等量化創新產品。量化投資改變了全球資產管理格局,成為主流的投資方法,其管理規模也在快速增長。目前,全球最大的資產管理公司和對沖基金都是基於量化和指數投資的機構。
量化投資行業的蓬勃發展吸引了眾多年輕人投入其中,但因其門檻高、專業性強,只有大型投資機構才有能力提供量化研究和投資平台,普通大眾沒有機會利用專業的量化平台進行研究和投資,也缺乏系統性的量化投資培訓教材,這成為制約行業發展的主要問題。因此,在2015年,通聯數據推出開放的量化投資平台——優礦,讓普通大眾也能夠擁有華爾街專業機構的量化裝備,讓量化投資變得更加容易。藉助Python科學計算的能力和海量的金融大數據,在優礦平台上可以快速進行統計推斷、因子分析、信號研究、資產定價、事件研究、機器學習、深度學習等量化研究工作。優礦已成長為大型的專業量化平台,為行業的發展培養了很多優秀人才。
優礦的部分特色如下。
海量的金融大數據:提供各類資產和財務數據、因子、主題、巨觀行業特色大數據和量化場景PIT數據,保障在量化過程中不引入未來數據。
多資產回測框架:提供股票、期貨、指數、場內外基金等多資產多策略回測和豐富的衍生工具,保證多因子策略、事件驅動等的快速實現。
優礦的風險模型:接軌國際化風險模型算法,採用優質原始數據,提供10種風格因子和28種行業因子,全面揭示市場行業風險。
量化因子庫:提供400多種量化因子庫,除了提供了傳統的投資因子,還提供了特色Alpha因子如分析師評級、分析師贏利預測等。
《Python與量化投資:從基礎到實戰》是華創證券研究所量化團隊聯合通聯數據優礦團隊的力作,在很大程度上填補了量化投資培訓教材的空白,在本書中循序漸進地講解了量化投資的思想和策略,並藉助Python語言幫助讀者從零開始進行量化投資實戰。全書分為基礎篇及進階篇,基礎篇是Python入門與進階,進階篇是量化投資實戰。
本書適用於有一定數理及編程基礎的人員閱讀,如果讀者能夠靜下心來,踏踏實實地學習和思考,去理解量化投資的本質和邏輯,就會發現本書蘊藏的寶貴价值。
展望未來,科技的發展也將推動量化投資升級換代。在傳統的量化投資中,交易策略是被事先編程的靜態模型,其局限性在於策略在一個時期內的效果非常好,但在市場環境發生變化之後就可能效果不佳。機器學習等人工智慧技術的套用推動了量化投資進入新時代,智慧型機器會在市場的發展和變化中觀察到市場的異常,交易策略也會隨著市場的變化而變化。
量化投資的另一個新趨勢是與基本面投資相結合。我們可以用機器幫助我們學習、歸納和總結基本面投資的分析方法和經驗,最後形成一套可重複的研究模型。這就是將量化和基本面結合起來,形成“量本投資”的新範式。在未來,無論是做量化還是基本面的投資者,都應該向中間地帶去跨界,去探索。也希望本書的讀者們都能夠將投資知識和前沿科技融會貫通、學以致用,共同推動中國量化投資行業的發展。
王政
通聯數據創始人兼執行長
作者簡介
王小川,華創證券研究所金融工程高級分析師,國內知名MATLAB、Python培訓專家,MATLABSKY創始人之一,人大經濟論壇CDA課程Python金牌講師。從事量化投資相關的工作,承擔了部分高校的統計課程教學任務,長期研究機器學習在統計學中的套用,精通MATLAB、Python、SAS等統計軟體,熱衷於數據分析和數據挖掘工作,有著紮實的理論基礎和豐富的實戰經驗。著有《MATLAB神經網路30個案例分析》和《MATLAB神經網路43個案例分析》。
陳杰,華創證券研究所金融工程團隊負責人,擁有CFA、FRM資格。從2009年開始從事量化開發工作。在入職華創之前,曾擔任申萬宏源研究所金融工程首席分析師。
盧威,華創證券研究所金融工程分析師,前優礦網量化分析師,為優礦網資深用戶,在優礦網分享過多篇高質量的量化研究報告,擅長使用Python進行量化投資研究。
劉昺軼,上海交通大學工學碩士,研究方向為斷裂力學、流體力學,擅長Python編程、統計建模與Web開發,現為量化投資界新兵,正在快速成長。
秦玄晉,上海對外經貿大學會計學碩士,有兩年量化投資經驗,研究方向為公司金融。
蘇博,上海財經大學金融信息工程碩士,主要研究方向為金融大數據分析。
徐晟剛,復旦大學西方經濟學碩士,數理功底深厚,熱愛編程與策略研究,精通Python、MATLAB等程式語言,有3年金融工程策略研究經驗,擅長擇時和事件類策略。
前言
為什麼寫作本書
作為投資者,我們常聽到的一句話是“不要把雞蛋放入同一個籃子中”,可見分散投資可以降低風險,但如何選擇不同的籃子、每個籃子放多少雞蛋,便是見仁見智的事情了,量化投資就是解決這些問題的一種工具。
而Python在1991年誕生,目前已成為非常受歡迎的動態程式語言,由於擁有海量的庫,所以Python在各個領域都有廣泛套用,在量化投資界採用Python進行科學計算、量化投資的勢頭也越來越猛。目前各種線上策略編程平台都支持Python語言,例如優礦、米筐、聚寬等,這也是我們選擇Python進行量化投資的原因。
目前市場上關於Python與量化投資的圖書不少,但仔細研究後不難發現,很多圖書都是頂著量化投資的噱頭在講Python的語言基礎,其能提供的策略有限,並且大部分不提供回測平台,此類書籍中的策略往往為漲停股票可以買入、跌停股票可以賣出、停牌也可以交易,等等,這大大違背了A股市場的交易規則,難以獲得準確的回測結果。
鑒於以上情形,為了更好地推動量化投資在中國的普及與發展,我們編寫了《Python與量化投資:從基礎到實戰》一書,本書兼顧了Python語言與量化策略的編寫,既可以為不懂Python語言的讀者提供零基礎入門,也可以為有Python基礎的讀者提供量化策略建模參考。細心的讀者不難發現,本書量化投資策略部分的介紹篇幅遠大於Python語言的介紹篇幅,這也可看出我們出版本書的初心。
如何使用本書
如果您從未接觸過Python或者任何其他程式語言,則建議您從第1章開始看起,對Python基礎編程稍做了解;如果您已經是Python的忠實用戶,則可以從量化投資篇看起,直接使用優礦平台完成對策略的編寫。關於Python基礎篇的內容,您可自行安裝、運行Python進行學習;關於量化投資篇的內容,您需要用到優礦線上量化平台,不安裝Python也可以運行。
Python基礎篇的示例代碼的後綴名為.ipynb,是Jupyter Notebook檔案,可以直接用Python打開運行;量化投資篇的示例代碼的後綴名為.nb,需要上傳到優礦的Notebook運行。
本書講了什麼
本書分為兩大篇,共有7章,前3章為Python基礎篇,可以幫助讀者快速上手Python;後4章為量化投資篇,藉助通聯數據優礦平台進行數據處理與策略建立,將各種策略代碼直接開源,並且對各種策略進行了介紹與點評,可謂本書的精華部分。
第1章為準備工作,主要介紹Python的安裝與常用的庫,尤其是在量化投資領域會使用到的數據分析庫。
第2章介紹Python的基礎操作,為後續講解Python量化投資做準備,等於從零開始講解,可在短時間內快速上手Python編程。
第3章講解Python的進階內容,在第2章的基礎上詳細介紹NumPy、Pandas、SciPy、Seaborn、Scikit-Learn、SQLAlchemy等經典庫,是對前兩章的升華和套用。
第4章講解常用金融數據的獲取與整理,包括數據整合、數據過濾、數據探索與清洗、數據轉化,等等。
第5章介紹通聯數據回測平台,內容涉及回測平台函式參數介紹、股票/期貨模板實例講解、回測結果分析、風險評價指標與回測細節的注意事項。
第6章講解常見的量化策略及其實現,內容涉及行業輪動、市場中性Alpha、大師類策略、CTA策略、Smart Beta、技術指標類策略、資產配置、時間序列分析、組合最佳化器、期權策略等。代碼全部公開,您可在短時間內使用我們的策略模板編寫適合自己的策略。
第7章給出了10道自問自答題目,可便於您在短時間內更好地了解量化投資,希望對您做投資有所幫助。