From the paper we have equation (22): $${\textstyle{{{S_c}} \over X}} = {e^{ - (r + (1/2){\sigma ^2})\tau - g\sigma \sqrt \tau }}$$
where (23): $$g = \pm \sqrt {2\log {{{\sigma ^2}} \over {{{2r} \over {\sqrt a }}x\log x{e^{ - a{{(r + (1/2){\sigma ^2})}^2}\tau /(2{\sigma ^2})}}}}} $$
here $$a = 1 - {A \over {1 + {{{{(1 + \gamma )}^2}} \over 4}{\gamma ^2}\tau }},A = {1 \over 2}{\left( {{\gamma \over {1 + \gamma }}} \right)^2}$$ and $$x = {X \over {{S_c}}},\gamma = {{2r} \over {{\sigma ^2}}}$$
NOW, to the question, Here is the Python code:
Code: Select all
def func_23(gamma,S,K,r,t,vol,tau):
alpha = 1.0 - ( .5 * gamma * gamma / (1.0 + gamma)**2 ) / ( 1.0 + (1.0 + gamma)**2 * vol * vol * (tau - t) / 4.0 )
val1 = (r+.5*vol*vol)*(tau-t)
val2 = exp(-alpha*(tau-t)*(r-.5*vol*vol)*(r-.5*vol*vol)/(2*vol*vol))
val3 = vol*vol*sqrt(alpha)/r/2.0
func = lambda g: exp(g*g/2) - val3 / (val1+g*vol*sqrt(tau-t)) / exp(val1+g*vol*sqrt(tau-t)) / val2
g = fsolve(func,1.5)
exer_price = K * exp( -(r + .5 * vol * vol)*(tau-t) - g * vol * sqrt(tau-t))
Code: Select all
g: exp(g*g/2) - val3 / (val1+g*vol*sqrt(tau-t)) / exp(val1+g*vol*sqrt(tau-t)) / val2
note: where exer_price is Sc, vol is sigma, a is alpha, K is X, (tau-t) is $\tau$.