程序实现Black-Scholes解的一些注意点

论坛 期权论坛 期权     
大象咖啡   2021-5-2 14:50   17388   4
本帖最后由 大象咖啡 于 2021-5-2 14:51 编辑

期权的小伙伴,也许会使用多个软件,Wind、文华或者咏春。然后,大家伙儿会发现这些软件给出的隐含波动率以及希腊字母通常不一致。比如,Wind的计算就差的有点大。这通常由于软件商为提高实时行情效率对计算过程进行了简化。

没办法,为了基于一套一致的、且可掌控指标数据,最好自己手撸一遍。这篇笔记简单总结一下实现过程中的注意事项。

1、Black-Scholes-Merton(BSM)模型解

下面就是BSM模型的解。

上面是基于一个含漂移项的维纳过程,然后代入伊藤引理得到的解。

不管你用Python,VBA,R,实现上面的解都很简单。这里有几个针对模型的注意点:

(1)模型假设标的收益率服从正态分布,或者标的价格服从对数正态分布,这个假设不符合实际,但是够用了。我们可以通过横向纵向Skew来捕捉肥尾效应。

(2)模型假设标的价格连续变化,并且标的是不付息分红的。实际上,标的价格肯定不是连续变化,有最小单位,不过不影响模型正确性;不付息分红,这一点是需要在数据层面处理的,后面说。

(3)这个基本模型只是针对欧式期权及非奇异期权。

(4)不要诟病模型的缺陷,模型只是一个观察工具,不能苛求它完全正确。

(5)不能认为模型是完美的,市场是错的。说实话,没有什么模型可以准确描述市场!


2、隐含波动率(IV)的计算

所有的希腊字母都基于隐含波动率(式子中的σ),所以隐含波动率的计算是第一步。

通常采用区间逼近的做法,即框定一个候选IV的上下界,带入认购及认沽定价的解(上节里的c,p的求解公式),当与目前合约价格相差落到一个阈值范围内时,可以将输入的候选IV作为该合约的IV。

下面是Python写的函数:



这是一个二分法算法,当然也可以用最小二乘法。其实二分法完全够用了,它的计算复杂度是O(logn),够快了。

这个算法里有几点注意:

(1)算法里的IV区间上下限怎么选?下限简单,最低就是0;上限的选取就要看标的了,指数ETF上限选100%没问题,但是以后假如上市个股期权,超过100%的隐波就很正常。

(2)收敛的阈值怎么选?这个一般选取期权价格的最小变动单位即可。

(3)到期时间T要年化一下。

(4)无风险利率r,我采用的是10年期国债收益率(Wind代码TB10Y.WI);很多人也会采用Shibor,GC007,DR007等银行间、机构间的交易利率。这里,参与国债交易的主体更加多样,其收益率更接近市场的预期。

(5)年化系数,我选的是360。期权价值在节假日也是在变的,特别是时间价值。所以,年化的时候选择250不太适合。


3、希腊字母的计算

计算出了隐含波动率,那么就可以带入下面的公式计算各个希腊字母了。



这里的注意点如下:

(1)Vega,我们平时看的是隐含波动率每变化1%,Vega的值。用BSM求出来的Vega是隐含波动率每变化1个单位,Vega的值。所以求出的Vega要除以100,才是我们平时常用的。

(2)Theta,我们需要的是每过一天,期权价值的减少量。这里求出来的Theta是年化的,所以这里要除以360。

(3)Rho,和Vega,一样,Rho看的是利率每变动100BP,也就是1%时候的变化量,所以也要除以100。


4、关于数据处理

标的收盘数据,一定要将不复权和复权的数据都下载下来。



这里就涉及到分红处理的问题。标的分红后通过除权除息直接调整价格,但是期权合约是直接改行权价(就是变成加“A”的合约),然后挂新合约。

在计算期权合约隐含波动率以及希腊字母的时候,应该用不复权的数据,因为所计算的那一天还没分红。

但是,计算标的历史波动率的时候就得用复权的数据,不然就会被除权除息产生的跳空缺口所影响。


5、实现效果

按照上面的设定,检验一下实现出来的效果。我选取50ETF合约10003008.SH,即6月购3600。观察2021年1月4日至2021年4月30日期间,基于上述方法计算出的隐含波动率及希腊字母,与Wind提供的数据的对比情况。



上图中,蓝色曲线均为程序实现的指标数据,橙色曲线为Wind提供的数据。

我们可以看到,隐含波动率、Delta、Vega、Rho基本上是一致的。但是,Gamma在3月以后差的大些。这段时间,合约10003008.SH基本上接近平值合约,它的Gamma对标的价格的波动非常敏感,Gamma波动也更加剧烈,Wind的技术部门应该是采用一种平滑手段处理了Gamma,以获得更快的计算速度。同样,可以看出来,Wind对于Theta的处理也是采用一个简单的方式来加速计算。

对于十分依赖希腊字母来检测头寸价值、风险的小伙伴,个人建议还是自己实现一套BSM算法,不能太依赖软件商提供的数据。

分享到 :
1 人收藏

4 个回复

正序浏览
5#
安安___  4级常客 | 2021-5-2 19:49:35 发帖IP地址来自 澳大利亚
不是都是随机波动率模型吗
4#
安安___  4级常客 | 2021-5-2 19:49:26 发帖IP地址来自 澳大利亚
现在bs模型还能用吗?
3#
大象咖啡  2级吧友  欢迎关注公众号:大象咖啡屋 | 2021-5-2 17:00:27 发帖IP地址来自 江苏

谢谢支持!
2#
简熙1oo  4级常客 | 2021-5-2 16:53:14 发帖IP地址来自 澳大利亚
好文章,谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:33
帖子:9
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP