Quantitative finance collector
C++ Matlab VBA/Excel Java Mathematica R/Splus Net Code Site Other
Feb 3

Valuation of stock option with discrete dividend

Posted by abiao at 14:41 | Code » Matlab | Comments(3) | Reads(17030)
When asked how to value a stock option without dividend or with continuous dividend, many people would refer to Black Scholes formula, but how to price an option with discrete dividend then? certainly Black Scholes model can't be used directly since one of its assumptions is continuous payout. Paper Back to Basics: a new approach to the discrete dividend problem by Haug, Haug and Lewis summarizes the following ways:
1, Escrowed dividend model, which is the simplist and the least accurate way as a result. The basic idea of Escrowed dividend model is to adjust the current stock price by deducting the present value of future dividends, and plug in the replaced stock price to Black Scholes formula;
2, Chriss volatility adjustment model, besides replacing current stock price, this model adjusts volatility as well because the Escrowed dividend model alone decreases the absolute price standard deviation, hence underestimates an option's value. However, Chriss model yields too high volatility if the dividend is paid out early in the option’s lifetime, which generally overprices call options;
3, Haug & Haug volatility adjustment model; which is more sophisticated than Chriss model and takes into account the timing of the dividend, unfortunately, the authors show this method performs particularly poorly for multiple dividends stock option;
4, Bos volatility adjustment model, a even more sophiscated model than Haug & Haug, but still, it performs poorly for large dividends or long term options;
5, Lattice method, for example, non-recombining binomial tree introduced in the bible book Options, Futures, and Other Derivatives with Derivagem CD (7th Edition), we all know it is time-consuming;
6, Haug, Haug and Lewis method introduced in the above-mentioned paper, the basic idea is to calculate first the ex-dividend option price by Black Scholes model, then discount back the ex-dividend value under equivalent martingale measure. The authors demonstrate the high accuracy of their model with several examples afterwards.

Below is sample Matlab codes I wrote for comparision, a single dividend is used for simplicity, results similar to the table listed in the paper

function callprice = DiscreteDividend(s,k,r,t,vol,d,dt)
%compare different methods for a single discrete dividend adjustments,
%read paper by Haug for detail;
%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];


For example, the results of a $7 dividend after 0.5 year are (DiscreteDividend(100, 100,0.06,1,0.3,7,0.5)): 14.7171   10.6932   11.5001   11.1039   11.0781   11.1062, respectively.

Reading the original paper Back to Basics: a new approach to the discrete dividend problem if interested, http://www.nccr-finrisk.uzh.ch/media/pdf/ODD.pdf, or the book The Complete Guide to Option Pricing Formulas by Haug for more detail.


Tags: ,
Thank you for posting this code.  Do you have it in any other programming language?  Also, do you know how the Haug,Haug,Lewis code would look in the case of multiple dividends?
No, I wrote at the moment only in M file, changing to other language is straightforward then. Other things being equal except multi-dimentional integrals have to be numerically solved for multiple dividends, from t(i-1) to t(i), here i is 2 to N, N is number of dividends.
Alan Lewis
I know this is an old post, but treating multiple dividends is handled comprehensively in
my chapter updating the HHL article in "Option Valuation under Stochastic Volatility II" (just published)
Pages: 1/1 First page 1 Final page
Add a comment
Emots
Enable HTML
Enable UBB
Enable Emots
Hidden
Remember
Nickname   Password   Optional
Site URI   Email   [Register]