旧文:历史波动率的计算 (Python)
2 年前
· 来自专栏
轻读
按照豆粕期权的说明,挂盘基准价使用的波动率是按照
波动率取期货合约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