給IT看的歷史波動率計算
波動率取期貨合約90天的歷史波動率
那麼問題來了,如何計算波動率呢? 學過金融的朋友可能會覺得很容易,當然的確很容易。但是如果是從計算機等學科過來的朋友,對於波動率可能不太熟悉。那麼這篇文章就是簡單地介紹了歷史波動率的計算方式。具體實現可以用你熟悉的任何語言,我這裡使用python偽代碼計算,裡面的函數僅僅是表示概念,正確的函數名還需要去查程序包說明。
我們學過統計學,知道給定一組數據,什麼叫做它均值,什麼叫做它的標準差。均值的就是平均值,當然也會被叫做期望,這就是它用E來表示的意思。E=Expectation。標準差表示這組數據偏離均值的程度,標準差的平方叫做方差(沒錯,就是標準差平方的縮寫),方差用Var表示,V=Variance。 而標準差 standard deviation 通常用希臘字母 Sigma的小寫表示。所以1個sigma的意思就是一個標準差。
均值和標準差都是標準的數學函數。在金融數學裡,價格變化的標準差就被叫做波動率。當然實際計算起來,並非直接把價格數據求標準差這麼簡單。由於B-S公式假設了價格變化是對數正態分布,所以我們計算波動率的方法實際上有點q。再次聲明,代碼只是啟發性的,借用了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) return sigma
波動率就這麼計算出來了。這裡有兩點需要注意。歷史波動率使用的是收盤價還是結算價,更多取決於交易所的規定。時間長度也是根據合約的存續期自行決策,通常可以用30,60,90這些天數。你一定看出來了,這就是表示1,2,3個月的天數。
補充一下 結果要年化。
推薦閱讀:
※布朗運動、伊藤引理——細說Black-Scholes公式的前世今生(上篇)
※認購與認沽期權
※「一籃子場外期權」客戶真實盈利分析,最高竟達到90%!
※Know Your Weapon: 從XIV的自我毀滅說起 (筆記005)
※期權怎樣利用K線看漲跌?
TAG:期權 |