1. 程式人生 > >R語言量化投資常用包總結

R語言量化投資常用包總結

640?wx_fmt=png

天善雙十一 倒計時

點選上圖,檢視詳情

作者:張丹,R語言中文社群專欄特邀作者,《R的極客理想》系列圖書作者,民生銀行大資料中心資料分析師,前況客創始人兼CTO。
個人部落格 http://fens.me, Alexa全球排名70k。


前言

總是被很多的人問,為什麼用R語言做量化投資,R、Python、Matlab比起來哪個更好?其實,答案很簡單,你哪個用的熟就用哪個,工具是用來提升效率的,結果才是你會得到的。認準一門語言,堅持把它做好你就會成長。

每個領域,每種程式語言都用推動它前進的人,跟上牛人的腳步,你慢慢地也會變牛。

目錄

  1. 為什麼用R語言做量化投資?

  2. 常用量化投資工具包

1. 為什麼用R語言做量化投資?

R做量化投資到底有哪些優勢呢?最主要的一點,就是R語言有很多第三方包的支援。通常程式語言的設計,都是為了解決軟體開發和程式實現的問題。但R語言在開始時,就被設計為主要解決資料的問題。量化投資就是對資料進行各種資料處理、資料分析,從而找到資料的規律。所以,有很多從事量化投資的人,把R語言用來構建量化交易的模型,進行回測,風險管理等,最後把研究成果開源並貢獻給R語言的社群,為後面的人提供了非常大的幫助。

相比Python來說也有很多的第三方包的支援,這些第三方大部分提供是Web開發,資料爬蟲,系統管理,資料庫呼叫,數學計算等,這些都是屬於通用的軟體需求,而非某個行業的資料需求。當某個Python大神,開始關注量化投資領域,並用Python實現了一套量化的程式庫,後面的人就會進入這個領域,只是沿著大神的路線走,等待下一個大神的出現。所以本質上,Python是面向程式設計的語言,而R是面向資料的語言。

R語言在量化投資領域,已經有很多年的積累,很多的演算法已經成型。從投資研究到交易分析,再到風險管理,有著完整的體系結構。我們同樣可以沿著前人走出來的路,快速學習,快速搭建出量化投資的系統來。對於有IT但背景缺乏金融知識的人來說,有很多的部分知識上手比較困難,同時看不太懂各種統計指標,對學習造成了很大的阻力。這其實是你深入到具體地某個行業後,都會面臨的問題。行業知識和數學知識才是最難的,只有突破了,你才能開啟認知新領域的方法。

R語言讓我們更接近資料,同時提供了各種數學統計的工具,又有大量由第三方貢獻的行業知識庫,所以我會選擇R語言,我會把R語言作為最好的工具,進行量化投資的分析。

2. 常用量化投資工具包

R語言在金融領域提供了很多的金融計算框架和工具,當你具備金融理論知識和市場經驗,你可以利用這些第三方提供的技術框架來構建自己的金融模型。我們可以從CRAN上找到各種的金融專案,訪問R的官方網站 (https://cran.r-project.org/),找到Task Views 選單裡的 Finance標籤。

640?wx_fmt=png

金融領域涉及範圍是非常廣的,包括銀行業、保險業、信託業、證券業、租賃業等。金融行業都具有指標性、壟斷性、高風險性、效益依賴性和高負債經營性的特點。量化投資是證券投資的一個很細分的專業領域,涉及到的金融工具包其實並不是太多。我們其實能把這些工具包研究好了,就可以方便地做量化的模型和交易了。

如果我們想用R構建自己的量化交易系統,你需要用到5方面的R語言工具包:資料管理、指標計算、回測交易、投資組合、風險管理。

640?wx_fmt=png

  • 資料管理:包括資料集抓取、儲存、讀取、時間序列、資料處理等,涉及R包有 zoo(時間序列物件), xts(時間序列處理), timeSeries(Rmetrics系時間序列物件) timeDate(Rmetrics系時間序列處理), data.table(資料處理), quantmod(資料下載和圖形視覺化), RQuantLib(QuantLib資料介面), WindR(Wind資料介面), RJDBC(資料庫訪問介面), rhadoop(Hadoop訪問介面), rhive(Hive訪問介面), rredis(Redis訪問介面), rmongodb(MongoDB訪問介面), SparkR(Spark訪問介面),fImport(Rmetrics係數據訪問介面)等。

  • 指標計算:包括金融市場的技術指標的各種計算方法,涉及R包有 TTR(技術指標), TSA(時間序列計算), urca(單位根檢驗), fArma(Rmetrics系ARMA計算), fAsianOptions(Rmetrics系亞洲期權定價), fBasics(Rmetrics系計算工具), fCopulae(Rmetrics系財務分析), fExoticOptions(Rmetrics系期權計算), fGarch(Rmetrics系Garch模型), fNonlinear(Rmetrics系非線模型), fOptions(Rmetrics系期權定價), fRegression(Rmetrics系迴歸分析), fUnitRoots(Rmetrics系單位根檢驗) 等。

  • 回測交易:包括金融資料建模,並驗證用歷史資料驗證模型的可靠性,涉及R包有 FinancialInstrument(金融產品), quantstrat(策略模型和回測), blotter(賬戶管理), fTrading(Rmetrics系交易分析)等。

  • 投資組合:對多策略或多模型進行管理和優化,涉及R包有 PortfolioAnalytics(組合分析和優化), stockPortfolio(股票組合管理), fAssets(Rmetrics系組合管理)等

  • 風險管理:對持倉進行風險指標的計算和風險提示,涉及R包有 PerformanceAnalytics(風險分析),fPortfolio(Rmetrics系組合優化), fExtremes(Rmetrics係數據處理)等。

基於上文中列出的R包,我們可以選擇使用獨立地第三方R包來構建我們的量化交易的系統,也可以選用完整的Rmetrics體系來構建量化交易的系統。這兩類R包也可以混合使用,如果在混用時,由於他們基於的時間序列的底層物件是不一樣的,那麼型別轉換的時候,可以你需要花點功夫處理一下。

上文中列出的R語言,並不是所有的R語言量化投資的R包,僅僅我關注的一些包。還有很多其他的,比如用於配對交易的包PairTrading;在Github上釋出的,我並沒有發現的R包等。

對於我自己來說,傾向於用獨立地第三方R包來做量化交易系統,會用到其中的幾個獨立的R包。這樣選擇的主要原因有2個,一是中國市場比較特別,很多規則並不完全符合世界的標準。比如,股票T+1交易就是全球唯一的。另外一點是第三方的開源包,有一些可能有錯誤,所以你不應該把程式完全依賴於第三方包,要有獨立的思考和判斷,第三方包只是給我們提供了便利性。

那麼常用的第三方R包的組合為:zoo, xts, TTR, quantmod, FinancialInstrument, quantstrat, blotter, PortfolioAnalytics, PerformanceAnalytics。這其中的任何一個包,都可以被替換或自己實現,從而保證自己量化交易系統的獨特性。引用國外量化的教材上的一張圖,國外用R來研究量化交易已經體系。

640?wx_fmt=png

圖片摘自Introduction to Trading Systems,作者Guy Yollin。

本系列文章,稍後將對整個量化體系的金融R包進行全面的介紹,並加上我自己的理解。量化相關R包介紹的相關文章列表,持續更新中。。。


本文所有連結請點選“閱讀原文獲取


推薦閱讀:

用R語言把資料玩出花樣

用R語言解讀凱利公式

R語言高效的管道操作magrittr

用R解析Mahout使用者推薦協同過濾演算法(UserCF)


640?wx_fmt=gif

R的極客理想:量化投資篇

金融投資學理論

R語言資料處理

量化投資策略

三個維度

教你如何將R語言技術應用於金融市場


640?wx_fmt=png