無法獲得正確的有限差分結果
關於我在此 PDE 的隱式 FD 方法的 Matlab 實現中面臨的特定問題的一個相當普遍的問題:
$$ \begin{equation} \frac{\sigma_s^2}{2}\frac{\partial^2 V}{\partial S^2} + \rho(t) \sigma_S \sigma_\alpha\frac{\partial^2 V}{\partial S \partial \alpha} + \frac{\sigma_\alpha^2}{2}\frac{\partial^2 V}{\partial \alpha^2} + \mu_s \frac{\partial V}{\partial S} + \mu_\alpha \frac{\partial V}{\partial \alpha} + \frac{\partial V}{\partial t} - r(t)V \end{equation} $$ 執行我的程式碼時,我獲得了負數和非單調遞增的值。但是,它們在整個網格的二維中都應該是正的且單調遞增的( $ F $ 和 $ \alpha $ )。我一次又一次地檢查我的邊界條件,但它們對我來說似乎很好。PDE 的 FD 離散化也是如此。
我的問題是,我的問題可能是什麼原因?
例如,
- 是否有可能 FD 公式和邊界條件是正確的,但是步長的特定選擇會破壞該方法?
- 我如何知道問題是否與編碼有關,或者例如我的 FD 矩陣 (A) 指定錯誤?
- 我是否正確認為 FD 矩陣 A 不依賴於時間,因此可以在 FD 循環之外計算?
此處給出了我的問題的更詳細版本
6 月 7 日編輯:擴展程式碼以處理更大的網格。對 F 和 vol (alpha) 應用變數變換,類似於此處的公式 (2.16)。(顯然,F/x 的上限相應改變,以說明從 F 到 x 的轉換)。我現在獲得了“更好”的結果,因為值是正數並且大部分網格單調遞增。然而,當 $ \beta=1 $ 和 $ \nu=0 $ ,我沒有得到與 BS 相似的結果。此外,對於下半部分 $ V $ 矩陣(上部 F/x 域),值不再單調遞增(沿 $ \alpha $ /column-dimension),見左下角 V 矩陣(近 $ F_{max} $ 和 $ \alpha_{min} $ )和右下角V矩陣(近 $ F_{max} $ 和 $ \alpha_{max} $ ). $ A $ 似乎確實滿足穩定性約束: $ ||A^{−1}||_{\infty} = 1 \leq 1 $ . 我注意到對角線 $ A $ 傾向於突然迅速增加(達到 +04 的數量級),然後在再次增加之後減少,等等(範例)。這是怎麼回事 $ A $ 通常會表現(在變數轉換之後)?
幾點建議:
- 您是否使用了適當的邊界條件?
- 你是如何截斷空間域的?特別是首先更改變數以獲得更好的行為是很常見的 $ A $ 所有項的大小大致相同的矩陣。例如在“日誌正常”SABR 案例中( $ \beta=1 $ ) 適合在 $ (x, y) \in ]-\infty, +\infty[ \times ]-\infty, +\infty[ $ 空間與 $ x = \ln(F/F_0) $ 和 $ y = \ln(\alpha/\alpha_0) $ , 並將空間域截斷為 $ [-b_x, +b_x] \times [-b_y, +b_y] $ 有適當的界限 $ b_x $ 和 $ b_y $ .
- 您在每個方向上使用了多少個網格點?出於實際目的 $ 50 \times 50 $ 離散化將是最低限度的。
同樣從實際的角度來看,由於狀態空間是二維矩陣 $ A $ 不是三對角線,因此反轉成本非常高。這就是為什麼首選 ADI(隱含的替代方向,您會找到很多參考資料)的原因。