求期权隐含波动率的几种方法

最近实习开始算期权隐含波动率。期权隐含波动率的算法写的人不多,分享几种计算方法。

1. 根据BS公式用二分法计算

从WIND里面取数之后算会出现的实际问题是有些价格的期权并没有价格(没人买),所以显示p=0。

def BSM(F0,k,T,r,sigma):
    d1=(np.log(F0/k)+(r+0.5*sigma**2)*T)/sigma/np.sqrt(T)
    d2=d1-sigma*np.sqrt(T)
    c=F0*norm.cdf(d1)-k*np.exp(-r*T)*norm.cdf(d2)
    p=k*np.exp(-r*T)*norm.cdf(-d2)-F0*norm.cdf(-d1)
    return c,p

#二分法求隐含波动率
def bisection(P,F0,k,r,T,c):  #c=0,call;c=1,put.
    value0=0#迭代初始值
    top=100
    floor=0
    sigma=(floor+top)/2
    i=0
    while abs(P-value0)>1e-2:
        
        value0=BSM(F0,k,T,r,sigma)[c]
        if (P-value0)>0:
            floor=sigma
            sigma=(sigma+top)/2
        else:
            top=sigma
            sigma=(sigma+floor)/2
        #print(sigma)
        i+=1
        if i>100:
            sigma=''
            print('Too many iterations')
 
  • 2
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值