校準

漂移的解釋

  • June 20, 2015

考慮由幾何布朗運動 (GBM) 給出的股票價格通用模型,它遵循 SDE

$$ dS(t) = \mu S(t) dt + \sigma S(t) dW(t). $$ 下面是使用這種 GBM 的模擬圖 $ N = 1000 $ 點開始於 $ S(0) = 100 $ 和波動性 $ \sigma = 0.2 $ . 你覺得漂移怎麼樣 $ \mu $ 設置為? 漂移0

如果您要進行 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的文章很有趣。

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