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個月的天數。
總結
以上是生活随笔為你收集整理的python 波动率_旧文:历史波动率的计算 (Python)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java给你的初步印象_Java之初印象
- 下一篇: matlab 设计带阻型陷波滤波器_Q值