技術交流

作者頭像作者|盧叡

R 語言的新里程碑 — Rcpp

關鍵字:R 語言、C++、Rcpp 套件、FKF 套件、RcppZiggurat、衍生性金融商品、金融商品評價、金融計算

隨著使用者與套件數目的增加,R 語言(R Language)已成為亦趨強大的程式語言。尤在財務、統計、人工智慧等各方面的許多的應用,眾多金融商品評價套件不斷推陳出新,如 fOptions、RQuantLib 等提供了許多衍生性商品的評價模型;RND 與 YieldCurve 則提供了許多模型參數估計的方法。除此之外,如評價所需之市場資料,Quandl 與 quantmod 亦提供了上網擷取資料的管道。近年來,國內金融業漸漸發現 R 的各項優勢,運用其進行評價模型驗證與資料處理等工作。但 R 的一大缺點 — 其效能與其他程式語言(如 java、C++ 等)相比,運算速度明顯偏慢,針對此問題,Eddelbuettel 與 Francois(2011)推出了 Rcpp 套件。

Rcpp 套件提供 R 與 C++ 之間的整合應用,讓使用者可以直接在 R 中自行定義的 C++ 函數與物件,且在需要大量計算的部分可以用 C++ 取代,讓程式效能大幅提升。除此之外,Rcpp library 提供了類似 R 的資料結構(如 matrix、list 等)以及相關統計函數供使用者在 C++ 中使用,使用者無需深入了解 C++ 複雜的語法,即可利用 Rcpp。

隨著 Rcpp 的出現 R 也越來越多套件中利用 Rcpp,如 FKF 套件大幅提升了利用 R 處理 Kalman Filter 的速度、RcppZiggurat 提供了效率更佳的常態分配亂數產生器。上述套件對衍生性金融商品評價之財務模型校準與模擬提供了更迅速、更優化的解決方案。或是其他擴充 Rcpp 的功能,如 RcppArmadillo、RcppEigen,提供了比 Rcpp 內建的向量矩陣運算更為優化的線性代數運算,甚至如想撰寫更複雜的 C++ 程式,BH 套件提供了 C++ 最廣為人知的 library — boost 供 Rcpp 使用。截至目前,Rcpp 已成為由 R 衍生用途最廣的套件之一。

Rcpp 帶給 R 效能顯著的提升,以下舉一個範例。下圖為利用 Rcpp 所撰寫的歐式賣權蒙地卡羅法評價程式與單純利用 R 進行評價的速度差異,以一千條路徑,一年期每天一步,並在給定亂數種子的情況下連續評價一百次為例,可以看出運用 Rccp 後,評價的花費時間為原來的一半,效能明顯提升:

Rcpp 使 R 同時具有資料處理與繪圖的優勢外,再增添快速運算的高效能,將 R 語言的運用進一步地拓展。對金融業來說,前台衍生性商品報價與試算等即時性的工作,以往 R 的速度被人詬病無法勝任,但在 Rcpp 將這層障蔽消除後,使 R 能與其他程式語言越立於相同立足點,相信將大大提高 R 語言在金融業的能見度。

瞭解更多關於資通視覺化圖型工具,有效掌握風險管理!
★詳細產品資訊請洽線上免費諮詢服務或免費諮詢服務窗口 - 汪小姐 Tel:02 -2522-1351 Ext. 301

Top