Как обойти функцию плоского правдоподобия при калибровке параметров GBM

Я хочу совместно откалибровать сигму дрейфа мю и волатильности геометрического броуновского движения,

log(S_t) = log(S_{t-1}) + (mu - 0.5*sigma^2)*Deltat + sigma*sqrt(Deltat)*Z_t

где Z_t является стандартной нормально распределенной случайной величиной, и я проверяю это, генерируя данные x = log(S_t) через

x(1) = 0;
for i = 2:N
  x(i) = x(i-1) + (mu-0.5*sigma^2)*Deltat + sigma*sqrt(Deltat)*randn;
end

и моя (лог-) функция правдоподобия

function LL = LL(x, pars)
mu    = pars(1);
sigma = pars(2);
Nt = size(x,2);
LL = 0;
for j = 2:Nt
  LH_j = normpdf(x(j), x(j-1)+(mu-0.5*sigma^2)*Deltat, sigma*sqrt(Deltat));
  LL = LL + log(LH_j);
end  

который я максимизирую, используя fmincon (потому что сигма ограничена, чтобы быть положительным), с начальными значениями 0,15 и 0,3, истинными значениями 0,1 и 0,2 и N = Nt = 1000 или 100000 сгенерированных точек за один год (=> Deltat = 0,0001 или 0,000001),

Одна только калибровка волатильности дает хорошую функцию правдоподобия с максимумом около истинного параметра, но для небольшого Deltat (меньше, чем, скажем, 0,1) калибровка и mu, и sigma постоянно показывает (логарифмическую) поверхность правдоподобия, очень плоскую в mu (по крайней мере, около истинный параметр); Я ожидал бы и максимум там; по какой-то причине я думаю, что должна быть возможность откалибровать модель GBM для ряда данных по 100 акциям в год, делая среднее значение Deltat = 0,01.

Любой обмен опытом или помощью очень важен (мои мысли проникают в мои мысли: функция правдоподобия неправильная / это нормальное поведение / слишком мало точек данных / генерация данных не верна / ...?).
Спасибо!

0 ответов

Другие вопросы по тегам