def KirkApprox(IsCall, F1, F2, Sigma1, Sigma2, Corr, K, Texp, r):
FA = F1/(F2+K)
Sigma = sqrt(Sigma1**2 + (Sigma2*F2/(F2+K))**2 - \
2*Corr*Sigma1*Sigma2*F2/(F2+K))
d1 = (numpy.log(FA) + 0.5* Sigma**2 * Texp)/(Sigma*sqrt(Texp))
d2 = d1 - Sigma*sqrt(Texp)
x1 = scipy.stats.norm.cdf(d1)
x2 = scipy.stats.norm.cdf(d2)
res = {}
if IsCall:
res['Price'] = (F2+K)*(FA * x1 - x2) * exp(-r*Texp)
else:
res['Price'] = (F2+K)*((1 - x2) - FA*(1 - x1)) * exp(-r*Texp)
return res
评论列表
文章目录