Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
Parameter Estimation for Black-Scholes/Jump Diffusion Model

Subject: Parameter Estimation for Black-Scholes/Jump Diffusion Model

From: Neil

Date: 22 Jul, 2009 15:12:02

Message: 1 of 3

Hi,

Could anyone help with parameter estimation for the afore mentioned models? I have data from the S&P 500 index for a month with all contributing data required - strike, maturity, underlying etc. I would like a way to estimate the jump and volatility parameters for the Heston/Camara model and the BS implied volatility using the data.

Many Thanks,

Neil.

Subject: Parameter Estimation for Black-Scholes/Jump Diffusion Model

From: Neil

Date: 11 Aug, 2009 14:20:07

Message: 2 of 3

Further to my original message, I have a m.file with the explicit code for the BS model:
function Call = Trial(x,S,T,r,K)

Call = exp(-r.*T).*((S.*exp(r.*T)).*normcdf(log((S.*exp(r.*T))./K)./(x(1).*sqrt(T))...
    + x(1).*sqrt(T)/2) - K.*normcdf(log((S.*exp(r.*T))./K)./(x(1).*sqrt(T))...
    - x(1).*sqrt(T)/2));

where x(1) is the BS volatility I'm looking to obtain by minimising the difference between C, the actual market price and Call, the BS prices. When I use lsqcurvefit i get:

[xhat,resnorm,residual,exitflag,output,lambda,jacobian]=...
   lsqcurvefit(predicted,x0,K,S,T,r,C);
Warning: Length of lower bounds is > length(x);
ignoring extra bounds.}
> In checkbounds at 27
  In optim\private\lsqncommon at 46
  In lsqcurvefit at 186
Warning: Length of upper bounds is > length(x);
ignoring extra bounds.
> In checkbounds at 37
  In optim\private\lsqncommon at 46
  In lsqcurvefit at 186
Exiting due to infeasibility: 1 lower bound exceeds the corresponding upper bound.

%predicted = @(x,K,S,T,r) exp(-r.*T).*((S.*exp(r.*T)).*normcdf(log((S.*exp(r.*T))./K)./(x(1).*sqrt(T))...
    + x(1).*sqrt(T)/2) - K.*normcdf(log((S.*exp(r.*T))./K)./(x(1).*sqrt(T))...
    - x(1).*sqrt(T)/2));

%Call = exp(-r.*T).*((S.*exp(r.*T)).*normcdf(log((S.*exp(r.*T))./K)./(x.*sqrt(T))...
    + x.*sqrt(T)/2) - K.*normcdf(log((S.*exp(r.*T))./K)./(x.*sqrt(T))...
    - x.*sqrt(T)/2));

Can someone tell me what I'm doing wrong? Possibly by an example? Also sometimes matlab will give errors like r or T etc is not defined - however they are all defined as variables in the workspace.

Subject: Parameter Estimation for Black-Scholes/Jump Diffusion Model

From: Anne Mei Poppe

Date: 4 Jul, 2011 08:25:13

Message: 3 of 3

Hi Neil,

Do you know how to estimate the parameters of the JD model in Matlab?

Best,

Anne

Tags for this Thread

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us