在 quant 辦公桌上,R 會被 Python 取代嗎?
我知道這個標題聽起來有點極端,但我想知道 R 是否被賣方銀行的許多量化櫃檯以及對沖基金淘汰,轉而使用 Python。我的印像是,隨著 Pandas、Numpy 和其他 Python 包的改進,Python 中的功能正在大幅改進,以便有意義地探勘數據和建模時間序列。我還通過 Python 看到了令人印象深刻的實現,以並行化程式碼並將計算扇出到多個伺服器/機器。我知道 R 中的一些包也可以做到這一點,但我只是感覺到目前的勢頭有利於 Python。
我需要自己對我的建模框架子集的架構做出決定,並且需要一些輸入其他量化人員目前的情緒是什麼。
我還必須承認,我最初對 Python 性能的保留大多已經過時,因為一些包在底層大量使用了 C 實現,而且我看到的實現明顯優於甚至高效編寫、編譯的 OOP 語言程式碼。
你能評論一下你正在使用什麼嗎?我不是在徵求意見,您認為以下任務是更好還是更差,而是具體為什麼您使用 R 或 Python,以及您是否將它們歸入同一類別以完成以下任務:
- 獲取、儲存、維護、讀取、清理時間序列
- 執行時間序列的基本統計,高級統計模型,如多元回歸分析,…
- 執行數學計算(傅立葉變換、PDE 求解器、PCA 等)
- 數據視覺化(靜態和動態)
- 衍生品定價(利率模型等定價模型的應用)
- 互連性(與 Excel、伺服器、UI 等)
- (2016 年 1 月添加):設計、實施和訓練深度學習網路的能力。
編輯 我認為以下連結可能會增加更多價值,儘管它有點過時
$$ 2013 $$(由於某些晦澀的原因,討論也被關閉了……):https ://softwareengineering.stackexchange.com/questions/181342/r-vs-python-for-data-analysis 您還可以在 r-bloggers 網站上搜尋幾篇關於 R 和 Python 包之間計算效率的文章。正如一些答案中所提到的,一個方面是數據修剪,輸入數據的準備和設置。等式的另一部分是實際執行統計和數學計算時的計算效率。
更新(2016 年 1 月)
既然銀行和對沖基金非常積極地追求人工智慧/深度學習網路,我想提供這個問題的更新。我花了很多時間研究深度學習並進行了實驗,並使用了 Theano、Torch 和 Caffe 等庫。從我自己的工作和與其他人的對話中脫穎而出的是,其中很多庫都是通過 Python 使用的,而且該領域的大多數研究人員並未在該特定領域使用 R。現在,這仍然只佔金融服務領域量化工作的一小部分,但我仍然想指出這一點,因為它直接涉及我提出的問題。我添加了量化研究的這一方面來反映目前的趨勢。
我的交易是高頻交易所以我關心的是
- 從記憶體中的文件或數據庫中快速讀取/載入數據
- 執行非常有效的數據處理操作(組、轉換)
- 輕鬆視覺化數據
我認為很清楚 3. 轉到 R、圖形和ggplot2和其他允許您從頭開始繪製任何東西,而無需付出任何努力。
關於 1. 和 2. 我很驚訝地閱讀了之前的文章,看到人們提倡基於pandas的 python,並且沒有人引用data.table data.table 是一個很棒的包,它允許對 10 秒的表格進行快速分組/轉換萬行。從這個 bench你可以看到 data.table 比 pandas 快好幾倍並且更穩定(pandas 往往會在大量表上崩潰)
例子
R) library(data.table) R) DT = data.table(x=rnorm(2e7),y=rnorm(2e7),z=sample(letters,2e7,replace=T)) R) tables() NAME NROW NCOL MB COLS KEY [1,] DT 20,000,000 3 458 x,y,z Total: 458MB R) system.time(DT[,.(sum(x),mean(y)),.(z)]) user system elapsed 0.226 0.037 0.264 R)setkey(DT,z) R)system.time(DT[,.(sum(x),mean(y)),.(z)]) user system elapsed 0.118 0.022 0.140
然後是速度,因為我在高頻交易中工作,R 和 python 都不能用於生產。但是Rcpp包允許您編寫高效的 C++ 程式碼並將其簡單地集成到 R 中(字面意思是添加 2 行)。考慮到每天創建的新包的數量以及該語言的發展勢頭,我懷疑 R 正在消退……
編輯 2018-07
幾年後,我對 R 生態系統的演變感到驚訝。對於記憶體計算,您可以獲得無與倫比的工具,從 fst 獲得超快的二進制讀/寫、fork 或集群並行性。使用 Rcpp 進行 C++ 集成非常容易。您可以獲得具有經典情節的互動式圖形,像 ggplotly 這樣的瘋狂功能(只是讓您的 ggplot2 具有互動性)。對於嘗試 python 和 pandas,老實說,我不明白怎麼可能匹配。語法笨拙,性能差,我一定太習慣 RI 猜測了。python 中真正缺少的另一件事是文盲程式,沒有什麼比 rmarkdown 更接近(我在 python 中能找到的最好的是 jupyter,但它甚至接近)。隨著圍繞 R 與 Python 語言戰爭的所有大驚小怪,我意識到絕大多數人根本不了解情況,