Code covered by the BSD License  

Highlights from
Valuation of stock option with discrete dividend

Valuation of stock option with discrete dividend

by

 

Compare different pricing models for stock option with discrete dividend.

DiscreteDividend(s,k,r,t,vol,d,dt)
function callprice = DiscreteDividend(s,k,r,t,vol,d,dt)
%compare different methods for a single discrete dividend adjustments,
%writen by abiao at www.mathfinance.cn for illustration only, read paper...
%Back to Basics: a new approach to the discrete dividend problem by Haug for detail;
%s: current stock price;
%k: strike price;
%r: risk-free interest rate;
%t: time to maturity of option;
%vol: volatility;
%d: discrete dividend amount, dt: dividend time
BSprice = blsprice(s,k,r,t,vol,0);
AdjS = s-exp(-r*dt)*d;
Escrowed = blsprice(AdjS,k,r,t,vol,0);
%%%%%%%%%Chriss, 1997%%%%%%%%%%
vol1 = vol*s/(s-d*exp(-r*dt));
Chriss = blsprice(AdjS,k,r,t,vol1,0);
%%%%%%%%%Haug, 1998%%%%%%%%%%
vol2 = sqrt(vol^2*dt+vol1^2*(t-dt)/t);
OldHaug = blsprice(AdjS,k,r,t,vol2,0);
%%%%%%%%Bos et al. (2003)%%%%%%%%%%
lns = log(s);
lnk = log((k+d*exp(-r*dt))*exp(-r*t));
z1 = (lns-lnk)/(vol*sqrt(t))+vol*sqrt(t)/2;
z2 = z1+vol*sqrt(t)/2;
vol3 = sqrt(vol^2+vol*sqrt(pi/(2*t))*(4*exp(z1^2/2-lns)*d*exp(-r*dt)*...
    (normcdf(z1)-normcdf(z1-vol*dt/sqrt(t)))+exp(z2^2/2-2*lns)*d^2*...
    exp(-r*2*dt)*(normcdf(z2)-normcdf(z2-2*vol*dt/sqrt(t)))));
Bos = blsprice(AdjS,k,r,t,vol3,0);
%%%%%%%%%Haug, 2003%%%%%%%%%%%%%%%
NewHaug = exp(-r*dt)*(quad(@(x)blsprice(x-d,k,r,t-dt,vol,0).*lognpdf(x,lns+(r-0.5*vol^2)*dt,vol*sqrt(dt)), d, k+d)...
    +quad(@(x)blsprice(x-d,k,r,t-dt,vol,0).*lognpdf(x,lns+(r-0.5*vol^2)*dt,vol*sqrt(dt)), k+d, 20*s));
callprice = [BSprice, Escrowed, Chriss, OldHaug, Bos, NewHaug];

Contact us