MF01
Member
Posts: 42
Joined: Aug 2005

Mon Feb 12, 07 10:17 PM


Hi,
I am trying to estimate the parameters of Mean Reverting Jump Diffusion model to a certain dataset.
When I run the MLE program in MATLAB to estimate these, the results of parameter values I get seem absurd ( Mean reversion level of 1000 :() . I am minimizing the negative log likelihood function and the initial values I provided in the program were estimated from ordinary least squares for MR GBM model ( long term mean, MR rate, diffusion vol ) and the initial parameter values for jump parameters are from Recursive filter method.
In this program, I tried to minimize the log likelihood function with constraints on parameters like lower bound on long term mean, lower and upper bound on diffusion variance and mean reversion rate, and all other parameters being positive.
I would appreciate suggestions to solve this problem , are there are any mistakes in program set up ??
Thanks.
MF
....Main Program................
clear all; clc; % intial values
%PP = [ mu(long term mean value) , sigma^2 ( diffusion variance), alpha( mean rev rate) , lambda(jump intensity), mu_jump( average jump size )] PP = [3.59,0.00633966,0.088,0.068493151,0.010678] ; % options = optimset('LargeScale','off','MaxFunEval',10000,'MaxIter',10000,'TolFun',1e12); warning off;
[P, fval] = fmincon('mrjdlike',PP,[],[],[],[],[],[],'confun',options);
......Constraints.........................................
function [cin, ceq] = confun(P)
cin = [ P(1); P(2) ; P(2)  0.15; P(3); P(4); P(4)  1; P(5)]; %cin = [ P(1); P(2) ; P(3); P(4); P(4)  1; P(5)]; ceq = [];
.........Function Files.............................
function logLikelihood = mrjdlike(P);
load returnsdata.txt; X= returnsdata(:,1);
N = max(size(X)); logLikelihood = 0;
for t=2:N logLikelihood = logLikelihood  log(mrjd(X(t),X(t1),P)+1); end
function pdf = mrjd(x,x_,P); % mu = (P(1)  P(2)/(2*P(3)))*(1exp(P(3))) + exp(P(3))*x_; sigma2 = (P(2)/(2*P(3))*(1  exp(2*P(3)))); % pdf = (1P(4))*normpdf(x,mu,sqrt(sigma2)) + P(4)*normpdf(x,mu +P(5),sqrt(sigma2+ 0.05*sigma2)) ;

