def MinOptionOnSpdCall(F1, F2, dv1, dv2, rho, K1, K2, T):
' min(max(F1-K1),max(F2-K2)) assuming F1 F2 are spread of two assets'
v1 = dv1 * numpy.sqrt(T)
v2 = dv2 * numpy.sqrt(T)
def int_func1(x):
return scipy.stats.norm.cdf(((F1-K1)-(F2-K2) + (v1 * rho - v2) * x)/(v1 * numpy.sqrt(1-rho**2))) \
* (v2 * x + F2- K2) * scipy.stats.norm.pdf(x)
def int_func2(x):
return scipy.stats.norm.cdf(((F2-K2)-(F1-K1) + (v2 * rho - v1) * x)/(v2 * numpy.sqrt(1-rho**2))) \
* (v1 * x + F1- K1) * scipy.stats.norm.pdf(x)
res1 = quad(int_func1, (K2-F2)/v2, numpy.inf)
res2 = quad(int_func2, (K1-F1)/v1, numpy.inf)
return res1[0] + res2[0]
评论列表
文章目录