python 波动率_旧文:历史波动率的计算 (Python)

按照豆粕期权的说明,挂盘基准价使用的波动率是按照波动率取期货合约90天的历史波动率

那么问题来了,如何计算波动率呢? 学过金融的朋友可能会觉得很容易,当然的确很容易。但是如果是从计算机等学科过来的朋友,对于波动率可能不太熟悉。那么这篇文章就是简单地介绍了历史波动率的计算方式。具体实现可以用你熟悉的任何语言,我这里使用python伪代码计算,里面的函数仅仅是表示概念,正确的函数名还需要去查程序包说明。

我们学过统计学,知道给定一组数据,什么叫做它均值,什么叫做它的标准差。均值的就是平均值,当然也会被叫做期望,这就是它用E来表示的意思。E=Expectation。标准差表示这组数据偏离均值的程度,标准差的平方叫做方差(没错,就是标准差平方的缩写),方差用Var表示,V=Variance。 而标准差 standard deviation 通常用希腊字母 Sigma的小写表示。所以1个sigma的意思就是一个标准差。

均值和标准差都是标准的数学函数。在金融数学里,价格变化的标准差就被叫做波动率。当然实际计算起来,并非直接把价格数据求标准差这么简单。由于B-S公式假设了价格变化是对数正态分布,所以历史波动率是对数价格差的标准差。再次声明,代码只是启发性的,借用了Python的语法罢了。实际计算请自行编程。

def ComputeVolatility (contractData):

//包含多少天的标的合约价格

nDays=contractData.length

//获取每日收盘价(或者结算价)并存入数组

priceArray=contractData.close

//对价格取自然对数 lnPriceArray=[ln(x) for x in priceArray]

//以下表示取对数价格的差,并存在diffPriceArray数组中, //我们忽略了边界条件,实际 得到数组长度为nDays-1

for i in range(nDays):

diffPriceArray[i]=lnPriceArray[i]-lnPriceArray[i-1]

//计算波动率

sigma=standard_deviation(diffPriceArray) * sqrt(250/nDays)

return sigma

波动率就这么计算出来了。这里有两点需要注意。历史波动率使用的是收盘价还是结算价,更多取决于交易所的规定。时间长度也是根据合约的存续期自行决策,通常可以用30,60,90这些天数。你一定看出来了,这就是表示1,2,3个月的天数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值