- 中國期貨市場量化交易(R與C++版)
- 李尉
- 3391字
- 2019-12-06 13:58:50
前言
期貨市場是一個有著悠久歷史的金融市場,早在幾百年前,芝加哥一帶的農民聚集在一起,商量一個有中央結算性質的交易場所,最終成立了芝加哥期貨交易所。后來隨著電子計算機技術的發展,期貨交易所日益電子化,交易更為便捷,交易大廳的交易員也逐漸演變成計算機前的量化交易員和程序員。
相比期貨交易,量化交易是一個更新鮮的概念。傳統的期貨交易有很多技術分析的書籍,如經典的《日本蠟燭圖技術》《期貨市場技術分析》等,一般更著重于使用技術圖表分析K線形態,從而給交易員提升買賣點位,輔助交易員主觀交易。
然而,量化交易不大一樣,或者說是期貨交易的升華。量化交易更多是運用現代統計學模型,包括機器學習、深度學習等模型來預測市場的價格變化,從而編寫計算機程序,實現自動交易。更廣泛地說,投資的整個過程,包括品種的選擇、價格變化的預測、投資組合權重的分配、最小化交易成本地下單等,都可以使用相應的量化模型來分析,并且提供一套系統性、科學性的測試方法。因此,量化交易跟傳統意義上輔助交易員下單的技術分析還是很不一樣的。
對于一些基本面信息,本質上也可以融入量化模型中,因此,量化分析和基本面分析并不矛盾。并且現在市場上也有很多期貨和股票方面的基本面量化的書籍供讀者參考翻閱。
目前,國內期貨市場蓬勃發展,量化交易方興未艾。然而,目前國內很多私募量化基金交易的期貨策略都是傳統的程序化交易方法,與國外基于統計分析、機器學習模型的方法相比存在較大差距。然而國內卻沒有有關方面的書籍,即使有也是在股票投資方面,期貨方面仍屬空白。因考慮到廣大理工科學生和科研人員對金融量化交易有著極大的熱情,且本人有國內外期貨量化交易多年的經驗,于是寫作了本書。
本書特色
1.國內率先系統性運用統計和機器學習模型研究中國期貨市場的書
國外用機器學習模型研究股票與期貨市場的書確實存在,但比較新,如《Machine Trading: Deploying Computer Algorithms to Conquer the Markets》,主要運用Matlab,分析的主要是美國股票市場日線數據。本書分析的是國內期貨市場,使用的是分筆數據和5分鐘K線數據,頻率上要比市場上同類書籍高出不少。另外本書的模型都是本人實戰多年的成果,有著良好的實盤交易記錄,并且還給出了研究用的R代碼和實盤用的C++代碼,方便讀者學習。能做到這點的,市面上無論中國還是美國,以本人的經驗看,尚不存在。
2.理論結合實際,由淺入深,娓娓道來
本書從最基本的分筆數據出發,如從如何獲得數據、如何合成K線等,到最后的C++實盤交易程序,應該說量化交易的內容都有所涵蓋。從最基本的基于買賣規則的策略,到最后基于深度學習、增強學習的策略都有所涉及,而且有詳細的R和C++代碼,方便大家自主學習。本人也有著豐富的國內外量化交易經驗,不僅在美國對沖基金公司全職工作過,而且也在國內多家期貨公司和私募基金工作過。本書里面的代碼經歷過多年實盤交易的檢驗,另外也會穿插介紹本人的職場經歷,可以供各位參考。
3.覆蓋高頻與中低頻交易
絕大多數的量化交易書籍都不會涉及高頻交易,本書卻給出了研究高頻交易模型的框架,同時檢驗了多種經典的機器學習預測模型。一般來說,相對于中低頻交易,高頻交易數據量更大,就可以訓練更復雜的模型,因此本書也探討了很多非線性的模型。但對于中低頻交易的訓練,還是以傳統線性模型為主。
本書內容及體系結構
第1章 期貨基本策略概要。簡單介紹了目前國內流行的股票對沖、商品CTA、高頻交易等策略,以及常見的程序化交易平臺,對比了R、Python、Matlab等常見的分析語言,并且對全書進行了概括性的介紹,結合本人的經歷發表了對國內量化交易市場的看法。
第2章 數據處理。詳細介紹了國內商品期貨分筆數據的數據結構、獲取的方式、處理的方法等,以及如何從分筆數據合成K線數據,如何提取主力合約,如何編寫更高效率的處理程序等。其中包括R與C++相結合的編程方式,如何在R里面編譯及調用C++程序,如何使用多核并行計算等,而且有詳細的R與C++代碼,為以后的建模做準備。
第3章 預測因子。任何模型本質上都是因子的組合方式。機器學習模型又被稱為統計預測模型,因此里面用到的因子自然被稱為預測因子,當然也有人稱為特征因子。本章介紹了構造因子的方法,給出了一些常用的因子,并且還給出了測試因子的基本方法。這里的因子既有基于K線信息的因子,也有基于分筆數據的高頻因子,方便各種策略使用。
第4章 基礎統計模型。本章在第3章的基礎上,運用一些經典的統計模型進行預測分析,并且使用了訓練集、驗證集和測試集的概念,嚴謹建模。本章使用的模型以線性模型為主,因為對于絕大多數情況,采用線性模型已經足夠了。在模型測評方面,采用樣本外的R2作為主要依據,這種方法跟樣本內的R2和調整后的平方都不一樣。
第5章 復雜統計模型與機器學習。本章討論了更為復雜的統計模型,一般也被稱為機器學習模型,包括決策樹、隨機森林、神經網絡、深度學習等,并且對比了不同模型之間的表現。由于金融數據的高噪聲、高維度特征,因此復雜的模型很多時候未必會比簡單的模型更好。在中低頻交易中,如果條件允許,花更多精力收集信息或許更為有效。
第6章 從預測到交易。有了預測模型之后,還要落實到交易才有意義。把預測結果轉成交易信號有很多方法,本章會進行比較。當然還要結合品種的買賣價差和手續費,以及交易的頻率等。對于股票配置型的策略和期貨擇時型的策略,會有不一樣的處理方法。
第7章 策略模型深化。本章是對前面幾章的總結和提煉,主要是在結果一致的情況下探討一些提高計算速度的方法,從而提高研究效率。很多時候,量化研究過程需要很多次的搜索、迭代等運算,這會消耗大量時間。如果能提高計算速度,那么就可以大大提高研究的效率。事實上,最近神經網絡、深度學習等方法重新流行起來,更多是依靠GPU等計算技術的發展。
第8章 投資組合優化。有了交易信號和資金曲線之后,下一步就是對各個策略、各個品種的投資組合進行優化工作。事實上,這部分工作也可以用量化模型來完成。與之前的統計預測、機器學習不同,這部分更多是傳統的運籌優化方面的模型,如均值-方差模型、Black-Litterman模型等。本章對比不同的投資組合優化的方法,并給出測評的結果及相關的程序。
第9章 投資組合優化深入研究。本章主要介紹了風險評價策略和增強學習(近似動態規劃)等在投資組合里面的應用。其中近似動態規劃屬于動態投資組合優化的內容。另外,本章也介紹了策略的滾動優化和動態調整,對比了滾動優化和全局最優化的結果。事實上,如果處理得當,滾動優化可以取得比全局最優更好的效果。
第10章 C++實現策略。本章主要介紹了如何把R語言轉換成C++,從而實現自動交易。本章還介紹了CTP接口的基本原理,以及轉換策略的基本步驟,包括處理行情數據、K線數據、計算指標、計算倉位、合并策略等。本章主要是基于Linux的C++編程,系統默認是Ubuntu 16.04 LTS,讀者掌握后就能自主編寫全自動交易程序了。
第11章 實盤交易管理。上一章介紹了用C++實現實盤交易的程序。事實上交易過程中其實會遇到各種各樣的問題,特別是自己用C++寫程序,各類錯誤都要自己調試改正。本章系統介紹實盤交易會遇到的各種問題,并給出相應的解決方案。
第12章 套利交易。前面介紹的都是關于投機型趨勢策略。因為沒有做空的限制,所以商品期貨從本質上都可以交易。本章就專門討論套利類的策略,先從最基本的跨期套利開始,然后再簡單介紹一些跨品種套利。
第13章 求職與工作。前面章節講的都是量化交易研究與技術方面的問題?,F實中,我們技術人員還要去工作,無論是擔任期貨的資管還是從事私募證券投資基金。因此,在學習了前面的知識之后,本章有關求職與工作相關的話題,作者有些經驗可以和讀者們分享。
本書讀者對象
- 數學、統計、信息與計算科學、計算機、金融工程等專業本科生、研究生
- 高校數理類和經管類教師和科研人員
- 證券、期貨、私募證券、公募基金等量化交易相關從業人員
- 對量化交易感興趣的各行各業人士
- 對機器學習在金融方面運用的相關人士
- 人工智能方面想從事量化交易的相關人士
- 學習R語言或C++的相關人士
- 其他對中國期貨市場量化交易感興趣的人
感謝
本書寫作過程中,本人的妻子張妮潔女士正處于懷孕中,還要不斷給本人寫作提供各種各樣的幫助。在此,本人表示對妻子衷心的祝愿。希望我的妻子能一切順利,同時希望我們的寶寶能平安出生,成為新一代的“baby quant”。對于本書的更新和未來進展,本人會在知乎“baby quant談量化金融”專欄里發布,敬請各位讀者留意。
2018年1月
baby quant
特別說明:購買此電子書,暫無附贈二維碼資源,敬請諒解。