python 隐含波动率_【BSM模型】用实际市场数据计算隐含波动率并验证波动率微笑...
在Black-Scholes期權(quán)定價(jià)模型中,不能直接觀察到的參數(shù)只有股票價(jià)格的波動(dòng)率。波動(dòng)率可以由歷史數(shù)據(jù)進(jìn)行估計(jì),這是歷史波動(dòng)率。隱含波動(dòng)率也是交易員非常關(guān)心的,隱含波動(dòng)率是期權(quán)的市場(chǎng)價(jià)格中所包含的波動(dòng)率,即由期權(quán)價(jià)格和期權(quán)定價(jià)公式反推的波動(dòng)率。隱含波動(dòng)率和歷史波動(dòng)率作比較,可以指導(dǎo)投資者的操作。投資者可以直接買賣波動(dòng)率,或者參考波動(dòng)率確定買賣時(shí)機(jī)。
我們可以通過期權(quán)定價(jià)公式寫出隱含波動(dòng)率的方程,但是直接解方程非常困難,因?yàn)檫@個(gè)方程不存在閉合解。既然是用程序求解,當(dāng)然可以用計(jì)算機(jī)求方程解的神器-數(shù)值計(jì)算。牛頓迭代法和二分法是求隱含波動(dòng)率常用的兩個(gè)方法。相比二分法,牛頓迭代法是更通用的近似求解方程的方法。
由于國內(nèi)沒有場(chǎng)內(nèi)個(gè)股期權(quán),曲曲菜用上證50ETF期權(quán)做分析。首先從新浪財(cái)經(jīng)的網(wǎng)站獲得期權(quán)的行情信息,并存入csv文件。到期時(shí)間我選了16天,51天,76天三種,分別存成三個(gè)文件。
新浪財(cái)經(jīng)的期權(quán)行情數(shù)據(jù)(16天到期)
期權(quán)數(shù)據(jù)文件(16天到期)
然后就可以計(jì)算隱含波動(dòng)率了,計(jì)算隱含波動(dòng)率的python程序如下。
一.BSM模型
1.引入所用到的庫
2. 定價(jià)公式的程序?qū)崿F(xiàn)
二.牛頓迭代法
1.介紹
設(shè)r是f(x)=0的根,選取x0作為r的初始近似值,過點(diǎn)(x0,f(x0))做曲線y=f(x)
的切線L ,
,則L與x軸交點(diǎn)的橫坐標(biāo)
,稱x1為r的一次近似值。過點(diǎn)(x1,f(x1))做曲線y=f(x)的切線,并求該切線與x軸交點(diǎn)的橫坐標(biāo)
,稱x2為r的二次近似值。重復(fù)以上程,得r的近似值序列,其中,
稱為r的n+1次近似值,上式稱為牛頓迭代公式。
隱含波動(dòng)率的計(jì)算中,f(x)是BSM定價(jià)公式得到的價(jià)格和實(shí)際價(jià)格的差,x是隱含波動(dòng)率,f(x)中只有隱含波動(dòng)率是未知數(shù),其他是已知數(shù)。由定義可知,x的導(dǎo)數(shù)是vega。
2.程序?qū)崿F(xiàn)
三.二分法
1.介紹
二分法求根的思想和二分查找相同,只不過二分查找比較的是未知數(shù)和目標(biāo),而二分法比較的是未知數(shù)的函數(shù)和目標(biāo)函數(shù)值。二分法求根需要知道根所在的區(qū)間,將上下限分別設(shè)為區(qū)間的上下邊界點(diǎn),初始值設(shè)為上下限的均值。通過迭代不斷更新并逼近方程的解。
2.程序?qū)崿F(xiàn)
四.讀取行情數(shù)據(jù)并初始化參數(shù)
1.程序?qū)崿F(xiàn)
五.計(jì)算隱含波動(dòng)率
1.程序?qū)崿F(xiàn)
2.隱含波動(dòng)率打印結(jié)果
imp_vol_newton_16:[0.3638689603157307, 0.3647065048442553, 0.33796965226626546, 0.3087508280418194, 0.29010352112059345, 0.27704783086782625, 0.2678504434116786, 0.27958298121452063, 0.2815159982582914, 0.2892477867510613, 0.2948778490238011, 0.3001603015476018, 0.3079952199130588]
imp_vol_dichotomy_16:[0.3638690114021301, 0.3647065758705139, 0.33796969056129456, 0.3087505102157593, 0.290103480219841, 0.2770475149154663, 0.2678511142730713, 0.2795829623937607, 0.28151603043079376, 0.2892477214336395, 0.29487812519073486, 0.3001604676246643, 0.30799537897109985]
-------------------------------------------------------------------------------------------------------------------------------------
imp_vol_newton_51:[0.2663830055838, 0.2623349770104388, 0.25886692974504383, 0.25514765329363565, 0.25388257585478174, 0.25112748137747243, 0.25311127192458244, 0.25282431711916714, 0.25334527303228827]
imp_vol_dichotomy_51:[0.26638298481702805, 0.26233501732349396, 0.25886694341897964, 0.2551477253437042, 0.25388259440660477, 0.2511274963617325, 0.25311121344566345, 0.2528250217437744, 0.25334523618221283]
-------------------------------------------------------------------------------------------------------------------------------------imp_vol_newton_79:[0.30525607059637466, 0.2900199629942286, 0.29426758619557364, 0.26917014044939297, 0.2708636644397624, 0.25993171220348904, 0.2610946078237793, 0.2527101923035752, 0.2523987108427234, 0.24752459839396573, 0.2483057133362068, 0.24353321749378323, 0.24308705976680656, 0.23851008170784155, 0.2406859629151288, 0.24016117575185575]
imp_vol_dichotomy_79:[0.30525608360767365, 0.29002001881599426, 0.29426760971546173, 0.2691701799631119, 0.2708636373281479, 0.25993166863918304, 0.261094618588686, 0.2527102008461952, 0.25239837169647217, 0.2475244402885437, 0.24830570071935654, 0.2435331791639328, 0.243087038397789, 0.2385101616382599, 0.24068592488765717, 0.24016119539737701]
-------------------------------------------------------------------------------------------------------------------------------------
六.繪制波動(dòng)率曲線
1.繪制牛頓法曲線的程序?qū)崿F(xiàn)
2.上一步繪制出的圖形
3.繪制二分法曲線的程序?qū)崿F(xiàn)
4.上一步繪制出的圖形
從圖形可以看出,51天到期和79天到期的隱含波動(dòng)率隨執(zhí)行價(jià)格的遞增,呈現(xiàn)遞減趨勢(shì),這就是股票期權(quán)的波動(dòng)率微笑(volatility smile)。16天到期的隱含波動(dòng)率是隨執(zhí)行價(jià)格遞增先是遞減,至標(biāo)的價(jià)格附近后,開始緩慢遞增,這也是波動(dòng)率微笑,雖然對(duì)股票期權(quán)來說,這個(gè)微笑不是很標(biāo)準(zhǔn)。從圖形還可以看出,距離到期時(shí)間越近,隱含波動(dòng)率越大。
波動(dòng)率微笑反映了隱含波動(dòng)率和執(zhí)行價(jià)格的關(guān)系。外匯期權(quán)的波動(dòng)率是對(duì)稱的微笑, 股票期權(quán)的波動(dòng)率微笑是不對(duì)稱的,更準(zhǔn)確的叫法是volatility skew(波動(dòng)率傾斜),或者volatility smirk(波動(dòng)率假笑)。反映到圖形上,就是左高有低,隱含波動(dòng)率隨執(zhí)行價(jià)格的遞增而遞減。
股票期權(quán)波動(dòng)率微笑的原因,常見的解釋是杠桿效應(yīng)和恐慌情緒,但是也有人認(rèn)為這就是一個(gè)市場(chǎng)的反應(yīng),沒有特別的原因。(如需要本文的源代碼和數(shù)據(jù)文件可以聯(lián)系我)
代碼在我的GitHub:https://github.com/ququcai/volatility_smile
參考資料
[1]?約翰 赫爾.期權(quán)、期貨及其他衍生品
[2]?Yves Hilpsch.?Python for Finance: Analyze Big Financial Data
本文作者:曲曲菜(微信公眾號(hào):曲曲菜)
原創(chuàng)作品,未標(biāo)明作者不得轉(zhuǎn)載。
作者公眾號(hào)
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python 隐含波动率_【BSM模型】用实际市场数据计算隐含波动率并验证波动率微笑...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五月份哪里有有计算机考试,2021年5月
- 下一篇: python中空字符串的布尔值是什么_P