bsopt.py 文件源码

python
阅读 44 收藏 0 点赞 0 评论 0

项目:pyktrader2 作者: harveywwu 项目源码 文件源码
def AsianFwdVega(Fwd, strike, RlzAvg, Vol, Texp, AvgPeriod, Rd):
    Fwd = float(Fwd)
    strike = float(strike)
    RlzAvg = float(RlzAvg)

    if AvgPeriod > Texp:
        x = strike * (AvgPeriod / Texp) - RlzAvg * (AvgPeriod - Texp) / Texp
    else:
        x = strike
    tau = numpy.max([0, Texp - AvgPeriod])

    if AvgPeriod > 0:
        M = (2.0 * exp(Vol * Vol * Texp) - 2.0 * exp(Vol * Vol * tau) * (1.0 + Vol * Vol * (Texp - tau))) / \
            ((Vol ** 4) * ((Texp - tau) ** 2))
        volA = sqrt(log(M) / Texp)
    else:
        volA = Vol

    if x < 0:
        return 0
    else:
        if Texp < AvgPeriod:
            multi = Texp / AvgPeriod
        else:
            multi = 1.0
        if AvgPeriod > 0:
            dM = 4.0 * (exp(Vol * Vol * Texp) * Texp * Vol - exp(Vol * Vol * tau) \
                        * ((Vol ** 3) * tau * (Texp - tau) + Vol * Texp)) / \
                 ((Vol ** 4) * (Texp - tau) * (Texp - tau)) - \
                 8.0 * (exp(Vol * Vol * Texp) - exp(Vol * Vol * tau) * (1.0 + Vol * Vol * (Texp - tau))) / \
                 ((Vol ** 5) * (Texp - tau) * (Texp - tau))

            dvA = 1.0 / (2.0 * volA) / Texp / M * dM
        else:
            dvA = 1.0
        Asiand1 = (log(Fwd / x) + volA * volA * 0.5 * Texp) / (volA * sqrt(Texp))
        ND = exp(-(Asiand1 * Asiand1 * 0.5)) / sqrt(2 * pi)
        return multi * Fwd * exp(-Rd * Texp) * ND * sqrt(Texp) * dvA * 0.01
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号