漂移的解釋
考慮由幾何布朗運動 (GBM) 給出的股票價格通用模型,它遵循 SDE
$$ dS(t) = \mu S(t) dt + \sigma S(t) dW(t). $$ 下面是使用這種 GBM 的模擬圖 $ N = 1000 $ 點開始於 $ S(0) = 100 $ 和波動性 $ \sigma = 0.2 $ . 你覺得漂移怎麼樣 $ \mu $ 設置為?
如果您要進行 MLE 估計 $ \mu $ 和 $ \sigma $ 在這個時間序列上,你會得到 $ \mu = 0.5054 $ 和 $ \sigma = 0.1966 $ . 事實上,這個模擬是用 $ \mu = 0 $ .
我很清楚我沒有很好的直覺 $ \mu $ ,因為我很想同意 MLE 的估計。我應該怎麼想 $ \mu $ ?
我認為這對於理解實踐中的校準具有重要意義。我對 GBM 進行了 MLE 估計,因為我相信我嘗試建模的過程在某種程度上遵循 GBM - 在這種情況下,它是 GBM,因此不存在“建模錯誤”。我對其參數的“最佳猜測”是 $ \mu = 0.5054 $ 和 $ \sigma = 0.1966 $ . 但實際上, $ \mu = 0 $ . 也就是說,我的 GBM 模型用於帶漂移的 GBM $ 0 $ 有漂移 $ 0.5054 $ . 什麼。
一些要求的細節:設置 $ R_i = \log \left( \frac{S(t_i)}{S(t_{i-1})} \right) $ , $ i = 1,\ldots,N $ . 概似函式 $ L $ 對於數據 $ {R_i} $ 是
$$ \begin{align*} L(\mu, \sigma) = \prod_{i=1}^N \phi(R_i; \left(\mu - \frac{\sigma^2}{2}\right)\Delta t, \sigma \sqrt{\Delta t}) \end{align*} $$ 在哪裡 $ \phi(x; m,s) $ 是 pdf 的 $ \mathcal{N}(m,s^2) $ - 分佈隨機變數。 我正在使用的 MATLAB 程式碼:
% Simulates a GBM(mu,sigma) and plots the path. % Here, GBM(mu,sigma) ~ log N((mu - sigma^2/2)*t, sigma^2*t) % ----------------- Simulation (Generation of Data) --------------------- %------------ set up parameters ---------------- N=1000; % number of points in path mu=0; % drift sigma=0.2; % vol S0=100; % initial value of process T=1; % final time dt=T/N; % time step %------------ allocation & initialization ---------------- t=linspace(0,T,N+1); % time axis values S=zeros(1,N+1); % allocate vector of process values S(1)=S0; % assign initial value to process' first value Z=normrnd(0,1,1,N); % std normals %------------ compute paths ---------------- for i=2:N+1 S(i)=S(i-1)*exp((mu - sigma^2/2)*dt + sigma*sqrt(dt)*Z(i-1)); end % create plot of process plot(t,S); % ----------------- Parameter Estimation ---------------------- % create vector of log returns R=zeros(1,N); for i=2:N+1 R(i-1) = log(S(i)/S(i-1)); end %------------ MLE Estimates ---------------- mle_est = mle(R,'distribution','normal'); theta(2) = sqrt(mle_est(2)^2/dt); % sigma theta(1) = mle_est(1)/dt + 0.5*theta(2)^2; % mu disp('MLE Estimates:') disp(sprintf('mu = %f, sigma = %g',theta(1), theta(2)));
您只生成了 GBM 的一個實現。GBM 的變異數隨著時間的推移而增加,因此您必須生成更多的實現來獲得準確的估計。
在這裡查看布朗模擬的範例: https ://tex.stackexchange.com/questions/59926/how-to-draw-brownian-motions-in-tikz-pgf
這與一種常見的誤解有關,即時間多樣化謬誤。回報不會在更長的時間內平均。相反,正如 emcor 所指出的,變異數會增加。
您可能會發現John Norstad 的這篇名為Risk and Time的文章很有趣。