模擬

幾何布朗運動的模擬

  • March 7, 2021

我為價格從 S(0) = 10 到 S(t) 的股票生成 10000 條隨機二項式路徑,其中 t = 1 年。假設股票價格的幾何布朗運動每年漂移 15%,波動率為 20%。我在每條路徑上使用 10000 個等距的時間步長,並且 $ \Delta S = \mu S \Delta t \pm \sigma S \sqrt{\Delta t} $ ,其中每個時間步的 + 或 - 移動是隨機生成的,機率相等。

S = 10
S1 = []
mean = 0.15
sd = 0.2

for i in range(10000):
   S = 10

   for j in range(10000):
       roll = np.random.rand()
   
       if roll < 0.5:
           S = S + mean*S/10000 + sd*S/100
       else:
           S = S + mean*S/10000 - sd*S/100

   S1.append(S)

我使用上面的程式碼來模擬GBM,我的結果與理論值相同。平均值應該是 $ S(0)e^{\mu t} $ 變異數應該是 $ S^2(0)e^{2\mu t}(e^{\sigma^2 t} - 1) $ . 但是有一個問題要我計算倒數,即 $ G(t) = 1/S(t) $ . 我認為這意味著應該是 $ \frac{1}{S(0)}e^{\mu t} $ 和變異數應該是 $ \frac{1}{S^2(0)}e^{2\mu t}(e^{\sigma^2 t} - 1) $ . 我對麼?但我不確定如何更改我的程式碼。我試圖寫下以下程式碼。但結果與理論值的平均值 = 0.116 和變異數 = 0.00055 相差甚遠。有人可以解釋我在哪裡做錯了嗎?非常感謝。

S = 10
G1 = [1/10]
mean = 0.15
sd = 0.2

for i in range(10000):
   S = 10

   for j in range(10000):
       roll = np.random.rand()
   
       if roll < 0.5:
           G = 1/S
           S = S + mean*S/10000 + sd*S/100
           G = G + mean*(1/S)/10000 + sd*(1/S)/100
       else:
           G = 1/S
           S = S + mean*S/10000 - sd*S/100
           G = G + mean*(1/S)/10000 - sd*(1/S)/100

   G1.append(G)

只是為了解釋均值和變異數的公式!我們可以從 GBM SDE 的解決方案開始:

$ S_t=S_0,e^{\left(\mu-\frac{1}{2}\sigma^2\right)t+\sigma W_t} $

然後,

$ \frac{1}{S_t}=\frac{1}{S_0},e^{-\left(\mu-\frac{1}{2}\sigma^2\right)t-\sigma W_t} $

對於高斯隨機變數 Y,通過這個恆等式很容易獲得均值(和變異數):

$ E\left[e^Y\right]=e^{E\left[Y\right]+\frac{1}{2}V\left[Y\right]} $

將此應用於 S,並註意:

$ E\left[\left(\mu-\frac{1}{2}\sigma^2\right)t+\sigma W_t\right]=\left(\mu-\frac{1}{2}\sigma^2\right)t $

$ V\left[\left(\mu-\frac{1}{2}\sigma^2\right)t+\sigma W_t\right]=\sigma^2t $

我們得到了 S 均值的熟悉表達式:

$ E\left[S_t\right]=S_0,e^{\left(\mu-\frac{1}{2}\sigma^2\right)t+\frac{1}{2}\sigma^2 t}=S_0,e^{\mu t} $

並將恆等式應用於 1/S 的表達式,我們得到它的平均值如下:

$ E\left[\frac{1}{S_t}\right]=\frac{1}{S_0},e^{-\left(\mu-\frac{1}{2}\sigma^2\right)t+\frac{1}{2}\sigma^2 t}=\frac{1}{S_0},e^{-\mu t+\sigma^2t} $

可以使用相同的身份確定變異數。

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