添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
旧文:历史波动率的计算 (Python)

旧文:历史波动率的计算 (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