蒙特卡羅

如何在蒙特卡羅模擬中使用 Halton 序列

  • January 21, 2017

有誰知道如何在蒙特卡羅模擬中使用 Halton 偽隨機技術。我能夠生成序列並且我知道它們是正確的。我檢查了幾個來自不同序列的數字。但是當我想生成路徑時如何使用這些數字呢?我是否只使用一個基數並使用此向量生成資產路徑?對於不同的路徑,我不會使用相同的數字,但我不會更改基數,還是需要更改基數?

希望有人可以向我解釋這一點。

首先,我簡要介紹一下 Halton 序列。Halton序列是一個確定性的數字序列,它提供間隔良好的“抽獎”,並在個體的模擬機率之間提供負相關。

  • 生成基於素數
  • 序列是基於對單位區間的子區間越來越精細的基於素數的劃分建構的

例子

  • 素數 = 3

  • 0, 1/3, 2/3,3/3

    • 1/3、2 /3 (長度為 3^1 - 1)
  • 0, 1/9, 2/9, 3/9, 4/9, 5/9, 6/9, 7/9, 8/9,9/9

    • 3/9、6/9、1/9、4/ 9、7 /9、2/9、5/9、8/9(長度為 3^2 - 1)
  • 0, 1/27, 2/27, 3/27, 4/27, 5/27, 6/27, 7/27, 8/27, 9/27, 10/27, 11/27, 12/27, 13/27, 14/27, 15/27, 16/27, 17/27, 18/27, 19/27, 20/27, 21/27, 22/27, 23/27, 24/27, 25/27, 26/27,27/27

    • 3 / 9、6/9、1/9、4/9、7/9、2/9、5/9、8/9、1/27、10/27、19/27、4/27、13/ 27、22/27、2/27、7/27、16/27、25/27、2/27、11/27、20/27、5/27、14/27、23/27、8/27、 17/27、26/27(長度為 3^3 - 1)

這個長序列的快速解釋。

  • 0, 1/27$$ 9 $$, 2/27$$ 18 $$
  • 9/27$$ 1 $$, 10/27$$ 10 $$, 11/24$$ 19 $$
  • 18/27$$ 2 $$, 19/27$$ 11 $$, 20/27$$ 20 $$
  • 3/27$$ 3 $$, 4/27$$ 12 $$, 5/27$$ 21 $$
  • 12/27$$ 4 $$, 13/24$$ 13 $$, 14/27$$ 22 $$
  • 21/27$$ 5 $$, 22/27$$ 14 $$, 23/27$$ 23 $$
  • 6/27$$ 6 $$, 7/27$$ 15 $$, 8/27$$ 24 $$
  • 15/27$$ 7 $$, 16/27$$ 16 $$, 17/27$$ 25 $$
  • 24/27$$ 8 $$, 25/27$$ 17 $$, 26/27$$ 26 $$

希望模式很清楚。現在,假設我採用長度為 8 的序列,

3/9, 6/9, 1/9, 4/9, 7/9, 2/9, 5/9, 8/9 .

我想找到一個有回報的歐式看漲期權的價值 $ t $ 的 $ max(0, S(t) - K) $ 在哪裡 $ K $ 是執行價格和 $ S(t) $ 是股票價格 $ t $ . 假設股票的風險中性過程是

$$ dS(t)/S(t) = (r-\delta)dt + \sigma \tilde{dZ}(t) $$ 在哪裡 $ dZ(t) = \phi dt + dZ(t) $ . 然後 $ d\ln(S(t)) = (r - \delta - 0.5\sigma^2) dt + \sigma \tilde{dZ(t)} $ 以便 $ \ln(S(t)/S(0)) \sim N(m = (r-\delta - 0.5\sigma^2)t, v = \sigma \sqrt{t}) $ 在哪裡 $ \delta $ 是股票的連續複合股息率, $ r $ 是無風險利率和 $ \sigma $ 是波動率。

首先,我們可以使用反演方法將均勻數轉換為隨機正常數。第一個數字是 $ N^{-1}(1/3) $ = -0.43。這是標準正態分佈的分位數函式 $ N(-0.43) = 1/3 $ . 轉換後的標準正態數為**-0.43, 0.43, -1.22, -0.139, 0.765, -0.765, 0.139, 1.22**。用 $ z_j $ . 然後是來自我們分佈的正常隨機數, $ n_j = v z_j + m_j $ .

讓我們假設 $ \sigma = 0.3 $ , $ r = 0.05 $ , $ \delta = 0 $ 和 $ t=1 $ 是到期的時間。然後 $ m = (0.05 - 0 - 0.5*0.3^2) = 0.005 $ 和 $ v = 0.30 $ . 第一個變換的法線數是 $ 0.30 (-0.43) + 0.005 = -0.124 $ . 數字列表是

  • -0.124, 0.134, -0.361, -0.0369, 0.234, -0.2244, 0.0469, 0.3712

然後我們取 $ x_j = exp(n_j) $ 得到對數正態隨機數。第一個對數正態隨機數是 $ exp(-0.124) = 0.883 $ . 我的數字列表

  • 0.883, 1.14, 0.697, 0.964, 1.264, 0.80, 1.048, 1.45 .

假設初始股票價格為 $ S(0) = 40 $ . 那麼到期時的股票價格, $ S(1) = S(0) x_j $ . 第一個股票價格是 40 * 0.883 = 35.33。顯示股票價格列表,然後是收益 $ K=40 $ 用於歐洲通話。

  • S(1):35.33、45.75、27.87、38.55、50.57、31.96、41.92、57.98
  • 收益(1):0、5.75、0、0、10.57、0、1.92、17.98

平均收益為 3.286。期權的時間 0 估計價格為 $ C = exp(-0.05) 3.286 = 4.53 $ . 期權的 Black-Scholes 價格為 5.692502。如果我們使用 26 個數字,我們的價格變為 4.89。

編輯 1

我將提供一個範例來說明我所說的中間價格 - 我將使用上面的 Halton 序列來估計幾何平均價格呼叫的價格 $ K=40 $ . 請注意,此處顯示的此選項有一個封閉形式的 Black Scholes 公式。

$ u $ = 3/9, 6/9, 1/9, 4/9, 7/9, 2/9, 5/9, 8/9

$ z $ = -0.43, 0.43, -1.22, -0.1397, 0.765, -0.765, 0.1397, 1.22

$ n $ = 0.089, 0.094, -0.2564, -0.027, 0.165, -0.160, 0.032, 0.2614

$ x $ = 0.915, 1.10, 0.774, 0.973, 1.18, 0.852, 1.03, 1.30

$ S_{1/2} $ = 36.60, 43.94, 30.95, 38.93, 47.16, 34.09, 41.31, 51.95

現在讓我們使用一組不同的 Halton 數(素數 = 2)。順序是 1/2, 1/4, 3/4, 1/8, 5/8, 3/8, 7/8, 1/16, 9/16, 5/16, … 但我們只想要前 8 個數字。注意股票價格 $ 36.69 = 36.60 * 1.0025 $

$ u $ = 1/2, 1/4, 3/4, 1/8, 5/8, 3/8, 7/8, 1/16

$ z $ = 0.00, -0.674, 0.674, -0.115, 0.3189, -0.3189, 1.15, -1.534

$ n $ = 0.0025, -0.1405, 0.1455, -0.2415, 0.070, -0.0651, 0.2465, -0.3229

$ x $ = 1.0025, 0.8689, 1.16, 0.785, 1.072, 0.9370, 1.28, 0.724

[Math Processing Error] $ S_{1} $ = 36.69, 38.17, 35.80, 30.58, 50.59, 31.95, 52.86, 37.61

幾何平均值是[數學處理錯誤] $ ( S_{1/2} S_{1} )^{1/2} $ . 例如, $ 36.64 = (36.60 * 36.69)^{0.5} $

$ G $ = 36.64, 40.95, 33.289, 34.50, 48.845, 33.00, 46.73, 44.21

每個平均值的期權價值如下所示。注意 $ max(0, 36.64 - 40) = 0 $ 和 $ max(0, 40.954 - 40) = 0.95433 $ .

[Math Processing Error] $ V $ = 0.00, 0.954, 0.00, 0.00, 8.85, 0.00, 6.73, 4.21

期權價格估計為[Math Processing Error] $ \overline{V} e^{-r (1)} = 2.59 e^{-0.05} = 2.47 $ .

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