蒙地卡羅

一旦達到某個收斂水平,就停止蒙特卡羅模擬

  • March 15, 2016

我正在創建一個蒙特卡羅模擬模型,我用它來為具有各種支付條件的歐式期權定價,因此我不能使用 Black Scholes。

一旦我 95% 確定我在真實值的 1% 以內,我想停止模擬。

為此,我使用以下方法計算每 10 000 個模擬人生的相對誤差(正確命名?):

$$ Relative Error = \frac{(\sigma/\sqrt{n}) Z_{\delta/2}}{\mu} $$ 在哪裡

$$ \sigma/\sqrt{n} $$ 代表標準誤差和 $$ Z_{\delta/2} $$ 我的置信水平,所以 1.96 表示 95%。 μ 是模擬的平均值(公允值)。

如果相對誤差小於 1%,那麼我停止模擬。

這是解決我的問題的正確方法嗎?

是的,這是一個很好的方法。唯一可能出錯的情況是,例如,如果您在不使用重要性採樣的情況下對某個極端尾部事件進行積分。

例如,假設您正在模擬由美國、德國、挪威、瑞典和荷蘭發行的五種債券的投資組合的預期損失。在 10,000 次模擬之後,您可能仍然沒有生成任何具有預設值的路徑,在這種情況下 $ \sigma=0 $ 你的算法會停止。

你有正確的想法,但似乎你不知道 $ \mu $ ,因此在錯誤檢查中使用它似乎不正確。此外,每 10,000 次迭代檢查一次結果可能不是決定何時停止的最佳選擇。

為了清楚起見,讓 $ E(X) = \mu $ 和 $ Var(X) = \sigma $ . 我們在編寫時呼叫了 CLT

$$ P\left( \left|\frac{\bar{X}_n - \mu}{\sigma/\sqrt{n}}\right| > 1.96 \right) \approx P(|Z| > 1.96) = 0.05. $$ 換句話說,樣本均值的機率約為 95% $ \bar{X}_n $ 是在 $ 1.96\frac{\sigma}{\sqrt{n}} $ 真實均值的單位 $ \mu $ . 我們如何在模擬中使用它?首先,注意

$$ S_n^2 := \frac{1}{n-1}\sum_{i=1}^n (X_i - \bar{X})^2 $$ 是一個無偏估計量 $ \sigma^2 $ . 因此,如果我們想要大約 95% 的機率 $ \bar{X}_n $ 是在 $ 0.01 $ 單位 $ \mu $ , 我們繼續模擬直到 $$ 1.96\frac{S_n}{\sqrt{n}} < 0.01. $$ 有兩個重要事項需要注意:

  1. 我們本應該 $ n \geq 30 $ 使用此錯誤檢查,因為這是 CLT 的結果,並且
  2. 線上實現 $ \bar{X}_n $ 和 $ S_n^2 $ 會更有效率,所以我們不會每次都重新計算它們。

對於第 2 項,我們可以使用

$$ \begin{align} \bar{X}{n+1} & = \bar{X}n + \frac{X{n+1} - \bar{X}n}{n+1}, \ S^2{n+1} & = \left(1 - \frac{1}{n}\right)S_n^2 + (n+1)(\bar{X}{n+1} - \bar{X}_n)^2 \end{align} $$ 現在我們可以簡單地使用while( $ 1.96\frac{S_n}{\sqrt{n}} > 0.01 $ ) 循環,恰好在遇到此錯誤的迭代處停止。

引用自:https://quant.stackexchange.com/questions/21764