Star-P 可以快速實現蒙地卡羅模擬分析的平行計算,使用任務平行計算 (task parallel computation) 的功能,只需小幅度改寫現有MATLAB® 程式碼,而不需再利用C/C++或FORTRAN來重新撰寫MPI的程式碼。 

蒙地卡羅模擬法 

  蒙地卡羅模擬法 (Monte Carlo Simulation) 假設投資組合的價格變動服從某種隨機過程的型態,因此可以藉由電腦模擬,產生幾百次、幾千次、甚至幾萬次可能價格的路徑,並依此建構投資組合的報酬分配,進而推估其風險值。基本上蒙地卡羅模擬法,是一種基於大數法則的實證方法,當實驗的次數越多,它的平均值也就會越趨近於理論值。
  蒙地卡羅模擬法最能涵蓋投資組合的各種風險因子,特別是一些難以進行估算的非線性投資組合,例如含有凸性的選擇權等,只要假設合理,此模擬能將分配精確的呈現出來。另外也可處理具時間變異的變異數、厚尾、不對稱等非常態分配和極端狀況等特殊情形,甚至也可用來計算信用風險。 蒙地卡羅模擬法最主要的缺點就是需要繁雜的電腦技術和大量重複的抽樣,因此計算成本較高且耗費時間較長。而對於代表價格變動的隨機模型,若是選擇不當,則會有導致模型風險的可能。 不過,由於蒙地卡羅模擬法能處理非線性及非常態分配的投資組合,以及在實際應用中的靈活性,目前有許多的研究正致力於改善傳統的蒙地卡羅模擬法,以加速其運算的速度和準確性。

Star-P Solution
  我們可以使用 dao 函式來簡化 MATLAB Loop 迴圈的程式碼,如下所示:

for i=1:length(sigma)
[price(i), vega(i)] = dao(T, Num_Sum, Num_Traj, sigma(i));
end

  在 MATLAB 執行環境裡,分析者只要使用 ppeaval 命令,就可以達到任務平行化之計算效能。下列程式碼為改寫 MATLAB 程式碼的作法,經由使用 ppeval 命令可使原先序列型程式轉變成可平行計算的程式運算。

[price vega] = ppeval(‘dao’,T, Num_Sum,Num_Traj, sigma);

SUMMARY
* 無須利用C/C++方式重新改寫MPI程式碼,以達到平行運算效能。
* 高效能平行運算,效能與CPU 處理器的數量成正比。
* 以改寫最少Matlab程式碼,即能達到平能計算的效果呈現。
* 任務型平行運算適合用於需執行大量LOOP 迴圈運算。

詳細內容及程式碼範例請見: Star-P在蒙地卡羅模式的應用