技術交流

R 語言高效能運算 讓你贏得 FinTech 市場先機

陳正暉 陳正暉
更新於

市場上的衍生性金融商品種類眾多。如欲將所有商品透過封閉解(Closed - Form)評價幾乎不可行,相較一般評價採用「蒙地卡羅模擬法」,資通電腦投資組合管理系統(ARES Portfolio System)選擇使用高效能運算的 R 語言,確保提供最快速風險評價結果,協助銀行迅速了解商品全貌。讓評價結果之誤差是在可接受範圍內,並縮短評價所需時間。

一般蒙地卡羅模擬法產生之誤差(error)與模擬次數開根號成反比,雖使標準誤差(standard error)減半,但需原先四倍的模擬量,實務應用上將會造成計算速度與評價誤差之取捨的問題。

更好的解決方法

R 語言提供許多高效能套件,並分別針對演算法、多核 CPU 平行運算、GPU 運算等方法提升運算速度。其中,透過演算法增進速度之套件,有 RcppZiggurat;多核 CPU 平行運算之套件,如:Parallel、RcppParallel;使用GPU運算之套件,包含:gputools、OpenCL、cudaBayesreg、RViennaCL、gpuR、Rth、gmatrix 等套件。各套件提供各式函數使操作上更為便利。另外,在 R 編程環境下,將更容易相互運用各個高效能運算套件。

Heston 隨機波動度模型(1993)在各式 R 的高效能套件使用下之亂數產生與產生模擬路徑之時間比較,以 Milstein 法為範例:

Milstein法
亂數模擬速度在各高效能套件下比較圖
亂數產生使用之套件與對應函數
使用套件 函數名稱
R Default: rnorn
RcppZiggurate: zrnormLZLLV
gmatrix: grnorm
Heston module
Heston 模型之路徑在各高效能套件下之模擬速度比較圖
註:D 為 R Default 之縮寫、Z 為 RcppZiggurat 之縮寫、A 為 RcppArmadillo 之縮寫、G 為 gmatrix 之縮寫、P 為 RcppParallel 之縮寫。以 GP_abs 為例:透過 gmatrix 套件產生亂數、透過 RcppParallel 展出各期路徑走勢,當波動度模擬為負值時取絕對值。

綠色虛線(GG_abs)走勢較為特殊,主要是因為透過迴圈運算時,均要取出特定時間點之波動度帶入標的資產之動態過程。而取出特定位置之值的動作,不論路徑數多少 GPU 處理上需要花費一定之時間,使得此方法下 GPU 運算之速度明顯略遜一籌。其中速度最快之方法為黑色虛線(GP_abs);速度最慢之方法為藍色實線(DD_abs)。最後,比較最快和最慢方法之收斂結果,並以 TRF 商品為評價範例:

註:僅考量當比價匯率 < 履約價時,槓桿比率為 2 的賣出賣權;當比價匯率 >= 履約價時,槓桿比率為 1 的買入買權,每 30 步作為一次比價日以進行比價。
TRF 評價收斂結果
DD GP
路徑數目 平均數 標準差 平均數 標準差
50000 -68.7305 1.0016 -68.7528 1.0256
100000 -69.0272 0.8635 -68.7712 0.7157
150000 -68.7138 0.5840 -68.6506 0.5927

可以發現衍生性商品之評價透過平行運算之方式,可以在相似的評價結果下,有效地縮短其評價時間。

複雜的衍生性金融商品評價需要龐大計算量。而在平行運算的處理下,不但將計算速度大幅提升,更進一步將複雜模型與演算法納入評價過程考量。資通電腦投資組合管理系統與視覺化圖型工具使用 R 高效能套件,將使金融計算領域之模型應用在實用性上得到跳躍性的拓展。