lballabio / QuantLib

The QuantLib C++ library
http://quantlib.org
Other
5.38k stars 1.79k forks source link

Escrowed dividend discount factor #750

Closed fcocquemas closed 4 years ago

fcocquemas commented 4 years ago

Hello,

Looking at the new Escrowed dividend model in FdBlackScholesVanillaEngine, it appears that the discount factor used is the risk-free rate factor divided by the dividend yield factor.

That seems unusual. Even assuming there's an income rate on the stock, on top of the discrete dividends, if the dividends are known with certainty they should earn the risk-free rate.

Am I missing something? Thank you!

klausspanderen commented 4 years ago

Hi,

The new implementation in FdBlackScholesVanillaEngine is supposed to supersede FDDividendEngineMerton73 and shares this behaviour. With this choice the expectation value of the escrowed dividend process d\ln \bar{S_t} = ( r_t - q_t - 0.5 \sigma^2)dt + \sigma dW_t is matching the expectation value of the spot process at option maturity.

best regards

fcocquemas commented 4 years ago

Hi Klaus,

Apologies for the slow answer. I agree with your dynamics for the price, the question is what price you use at time 0. Simplifying notations to assume one dividend paid at \tau, and no term structure, the code is currently doing S(0) = S_0 - D exp[-(r-q) \tau] where S_0 is the spot price at 0, and q the dividend yield. I'm arguing it should be S(0) = S_0 - D exp[-r \tau].

I think the easiest argument is through no-arbitrage. I'm taking here the argument from Whaley (1981), without discrete dividends, and also Whaley (2006, p. 122-124) on cost of carry for forwards and futures.

Construct a self-financing portfolio:

S*_T + D exp[-qT] exp[r(T-\tau)] - S_0 exp[(r-q)T] = 0.

So S_T = S_0 exp[(r-q)T] - D exp[r(T-\tau)-qT], or S_T exp[-(r-q)T] = S_0 - D exp[-r \tau].

So, given the drift of (r-q) of the stock process under the Q measure, I think the correct starting point of the diffusion should be S(0) = S_0 - D exp[-r \tau].

Hopefully that makes sense! I wish GitHub had MathJax...

klausspanderen commented 4 years ago

I agree, MathJax would be of great help;-).

The idea behind the original implementation in QL - if I'm not mistaken - is to preserve the call-put parity and to match the expectation values of the processes at maturity. IMHO S^* and \bar{S} aren't following the same SDE. Following your example with a constant dividend rate and one discrete dividend payment D at time \tau, the stock price in the escrowed model is given by (see e.g. Haug 2003)

dS_t= {S_t(r-q) - \delta(t-\tau) D} dt + S_t \sigma dW_t

The forward value S_T at maturity T>tau is

dS_T = (S_0e^{(r-q)\tau} -D)e^{(r-q)(T-\tau)} = S_0e^{(r-q)T} - De^{(r-q)(T-\tau)}

The escrowed process

d\bar{S}_t = \bar{S}_t(r - q)dt + \bar{S}_t\bar{\sigma} dW_t

has the forward value

\bar{S}_T = \bar{S}_0*e^{(r-q)T}

Setting \bar{S}_T = S_T yields \bar{S}_0 = S_0 - D*e^{-(r-q)\tau}

IMO we need call-put parity to get to similar vols for both models for deep OTM/ITM options.

Happy to discuss.

fcocquemas commented 4 years ago

Thanks, give me a little time to think through this and read the article (not a month, I promise!). You're talking about Haug, Haug, and Lewis (2003): “Back to Basics: a new approach to the discrete dividend problem” I presume?

stale[bot] commented 4 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

stale[bot] commented 4 years ago

This issue has been automatically closed as stale.