Stata计算期权隐含波动率

论坛 期权论坛 期权     
Idata   2019-8-11 15:55   6807   0
我看到知乎上,有个回答,Stata对于做金融工程有哪些局限?


事实上,我认为Stata内嵌的mata函数,已经能够提供类似Matlab矩阵语言一样的体验了。众所周知,Black-Scholes期权定价模型在业界里最重要的应用不是计算理论价值,而是根据期权的交易价格反推出隐含波动率。

根据B-S公式,我们利用看涨期权的价格反推出隐含波动率,需要用到数值算法。我们常见的一个数值算法叫做两点法。这个算法很简单,就是随便取两个点,如果一个点对应的数值大于期权的价格,一个点对应的数值小于期权的价格,那么期权的真实波动率就应该在这两个点的中间,依次类推和迭代,我们就可以得到真实的隐含波动率。
在mata环境里,我们首先写出来B-S公式的函数:
real scalar bs(real scalar s0,real scalar k,real scalar t,real scalar r,real scalar d,real scalar sigma){
x=log(s0/k)+(r-d)*t
sig=sigma*sqrt(t)
d1=x/sig+sig/2
d2=d1-sig
pv=exp(-r*t)
result=s0*normal(d1)-pv*k*normal(d2)
return(result)
}

然后我们写出来两点法的程序:

real scalar hrimvol(real scalar s0,real scalar k,real scalar t,real scalar r,real scalar d,real scalar C){
sigmaL=1e-10
CL=bs(s0,k,t,r,d,sigmaL)
sigmaH=10
CH=bs(s0,k,t,r,d,sigmaH)
while (mean(sigmaH-sigmaL)>1e-10){
sigma=(sigmaL+sigmaH)/2
CM=bs(s0,k,t,r,d,sigma);
CL=CL+(CM=C)*(sigma-sigmaH)
}
return(sigma)
}
把上面两个函数在mata环境里封装到一块,我已经把上面的程序里上传到ssc上面了(ssc install hrimvol可以下载)。其实这个程序可以写的更好,但当前的版本我就把它写成一个简单的期权隐含波动率计算器。
相比于其他开源软件,Stata社区里还有很多很多的空白没有被填补,如果你想拥有一个自己命名的Stata函数,不妨把R语言\Matlab语言成熟的函数迁移到Stata世界里。
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

下载期权论坛手机APP