期權定價
QuantLib 中單個產品的多執行緒 Monte-Carlo 定價
我一直在積極使用 QuantLib 使用 Monte Carlo 進行結構化產品定價。由於經常需要大量路徑並且需要加快計算速度以及所有這些,我發現自己不得不考慮多執行緒定價的方法。通過分析程式碼,我明顯注意到最大的瓶頸不是產品構造,而是執行蒙特卡羅模擬。
因此,假設如果我需要 300k 路徑來稍微準確地為產品定價,我可以只生成 10 個執行緒,在每個執行緒中建構產品,並讓每個執行緒計算具有 30k 路徑的產品的 NPV,同時使用不同的種子和然後將 10 個不同的 NPV 平均在一起?
是的,它可以工作。但是,請記住:
- 如果你不在執行緒之間共享任何對象,你會更安全;在這裡看到我的回答,特別是最後一點;
- 即使您使用不同的種子,也不能保證生成的序列不會重疊。如果您願意更改引擎程式碼以便可以傳遞相關參數,則更安全的選擇是使用諸如 Sobol 之類的低差異生成器,它能夠在序列中向前跳過。這樣,您可以告訴每個生成器從順序中的正確位置開始 $ 2^N-1 $ 您將使用的範例。