Considera el modelo común de precios de acciones dado por un movimiento Browniano geométrico (GBM), que sigue la EDS $$ dS(t) = \mu S(t) dt + \sigma S(t) dW(t). $$
A continuación se muestra un gráfico de una simulación de dicho GBM utilizando $N = 1000$ puntos comenzando en $S(0) = 100$ y volatilidad $\sigma = 0.2$. ¿Qué crees que se estableció como deriva $\mu$?
Si hicieras una estimación MLE de $\mu$ y $\sigma$ en esta serie temporal, obtendrías $\mu = 0.5054$ y $\sigma = 0.1966$. De hecho, esta simulación se realizó con $\mu = 0$.
Está claro para mí que no tengo una buena intuición para $\mu$, ya que estaría tentado a estar de acuerdo con las estimaciones MLE. ¿Cómo debería pensar en $\mu$?
Creo que esto tiene importantes implicaciones para entender la calibración en la práctica. He realizado una estimación MLE para un GBM porque creo que el proceso que estoy intentando modelar sigue un GBM en cierta medida, en este caso, ES un GBM, por lo que no hay "error de modelado". Mi "mejor conjetura" de sus parámetros es $\mu = 0.5054$ y $\sigma = 0.1966$. Pero, de hecho, $\mu = 0$. Es decir, mi modelo GBM para un GBM con deriva $0$ tiene una deriva de $0.5054$. ¿Qué?
Algunos detalles solicitados: Establece $R_i = \log \left( \frac{S(t_i)}{S(t_{i-1})} \right)$, $i = 1,\ldots,N$. La función de verosimilitud $L$ para los datos $\{R_i\}$ es \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*} donde $\phi(x; m,s)$ es la pdf de una variable aleatoria distribuida $\mathcal{N}(m, s^2)$.
El código de MATLAB que estoy utilizando:
% Simula un GBM(mu, sigma) y traza la ruta.
% Aquí, GBM(mu, sigma) ~ log N((mu - sigma^2/2)*t, sigma^2*t)
% ----------------- Simulación (Generación de Datos) ---------------------
%------------ configurar parámetros ----------------
N=1000; % número de puntos en la ruta
mu=0; % deriva
sigma=0.2; % vol
S0=100; % valor inicial del proceso
T=1; % tiempo final
dt=T/N; % paso de tiempo
%------------ asignación e inicialización ----------------
t=linspace(0,T,N+1); % valores del eje del tiempo
S=zeros(1,N+1); % asigna vector de valores del proceso
S(1)=S0; % asigna el valor inicial al primer valor del proceso
Z=normrnd(0,1,1,N); % normales estándar
%------------ calcular las rutas ----------------
for i=2:N+1
S(i)=S(i-1)*exp((mu - sigma^2/2)*dt + sigma*sqrt(dt)*Z(i-1));
end
% crea gráfico del proceso
plot(t,S);
% ----------------- Estimación de Parámetros ----------------------
% crear vector de log retornos
R=zeros(1,N);
for i=2:N+1
R(i-1) = log(S(i)/S(i-1));
end
%------------ Estimaciones MLE ----------------
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('Estimaciones MLE:')
disp(sprintf('mu = %f, sigma = %g',theta(1), theta(2)));