從 GBM 的對數正態分佈中提取值
我正在查看帶有參數的 GBM
$$ r=0.05 \ \sigma=0.2 \ K=130\ T=0.25\ S_0 = 100 $$
這是一個對數正態分佈的過程,均值和變異數由下式給出
$ \mu = S_0e^{r T+0.5\sigma^2 T}\ Var = S_0^2e^{2r T + \sigma^2T}(e^{\sigma^2 T}-1) $
我正在嘗試從此分佈中生成值。但是,我得到的值相當:
r = 0.05 sigma = 0.2 K = 130 T = 0.25 S0 = 100 import numpy as np mean = S0*np.exp(r*T) var = np.sqrt((S0**2)*np.exp(2*r*T)*(np.exp((sigma**2)*T)-1)) np.random.lognormal(mean, np.sqrt(var))
從中提取值 $ f(x) $ 給了我一些東西 $ 10^{45} $ (!)有人能在上面發現我的錯誤嗎?
假設您的 GBM 由
$$ S_{T}=S_{0}e^{(r -{\frac {\sigma ^{2}}{2}})T+\sigma W_{T}} $$
那麼它的均值和變異數是: $$ {Mean=S_{0}e^{r T},} $$ $$ {Variance=S_{0}^{2}e^{2r T}\left(e^{\sigma ^{2}T}-1\right)}{\displaystyle} $$
您不能將這些值直接粘貼到 np.random.lognormal 中,因為在這種情況下,參數 $ \mu $ 和 $ \sigma^2 $ 不代表隨機變數的均值和變異數。你實際上需要模擬 $ W_T\sim N(0,T) $ 並將這些值插入 $ S_T $ .
對於正態分佈,僅巧合的是, $ \mu $ 和 $ \sigma $ 是均值和變異數;同樣不適用於對數正態分佈https://docs.scipy.org/doc/numpy-1.14.1/reference/generated/numpy.random.lognormal.html:
“從具有指定均值、標準差和數組形狀的對數正態分佈中抽取樣本。請注意,均值和標準差不是分佈本身的值,而是其衍生的基礎正態分佈的值。”
從對數正態分佈模擬 $ S_T $ , 注意 $ \ln S_T $ 正態分佈: $$ \ln S_{T}=\ln S_{0}+(r -{\frac {\sigma ^{2}}{2}})T+\sigma W_{T}\sim N(\ln S_{0}+(r -{\frac {\sigma ^{2}}{2}})T,\sigma T) $$
因此,您需要致電:
np.random.lognormal(ln S_0+(r-sigma^2/2)*T, sigma*T)