更多精彩內容,歡迎關注公眾號:數量技術宅,也可添加技術宅個人微信號:sljsz01,與我交流。
Black-Scholes 將期權價格描述為標的價格、行權價、無風險利率、到期時間和波動性的函數。
在本文中,我們使用的波動率值是對未來已實現價格波動率的估計。
鑒於股票價格、行權價、無風險利率和到期時間都是已知且容易找到的,我們實際上可以將市場上的期權價格視為 σ 的函數。
期權的價格在 σ 中單調增加,這意味着隨着波動性的增加,期權的價值也會增加,如下圖所示。
當價格等於期權行權價時,其結果是線性的(中間圖)。而當行權價高於或低於當前價格時(左右圖),波動性的增加也會對期權價格產生積極影響。
尋找市場隱含波動率
以下是 GOOG 的看漲期權報價,其行使價為 585.00,到期日為 2014 年 10 月 18 日。最后交易價格為 17.50 美元。
從目前收集到的數據中,我們可以看到:
V=BS(S,K,r,T,σ)
$17.50=BS(586.08,585.00,0.0002,0.10958....,σ)
雖然上述方法可行,但它相當不精確。 我們可以做的是使用求根方法,如二分法或牛頓法。
牛頓法
牛頓法是一種尋找函數根的提高近似值的方法。通過隱含波動率,我們試圖找出使我們的期權價格盡可能接近 8.50 美元的 σ 值。
這里,我們的 f(x) 函數是期權定價的 Black-Scholes 方程:
Vmodel=f(x)=BS(σ)
那么讓我們在python中實現牛頓的方法:
def find_vol(target_value, call_put, S, K, T, r):
MAX_ITERATIONS = 100
PRECISION = 1.0e-5
sigma = 0.5
for i in xrange(0, MAX_ITERATIONS):
price = bs_price(call_put, S, K, T, r, sigma)
vega = bs_vega(call_put, S, K, T, r, sigma)
price = price
diff = target_value - price # 我們的根
print i, sigma, diff
if (abs(diff) < PRECISION):
return sigma
sigma = sigma + diff/vega # f(x) / f'(x)
# 未找到值,返回迄今為止的最佳猜測
return sigma
這里,我們將精度設置為 1e-5 (0.00001),並且我們不會執行超過 100 次的猜測。
我們還需要兩個計算Black-Scholes公式的函數,bs_price 和 bs_vega:
n = norm.pdf
N = norm.cdf
def bs_price(cp_flag,S,K,T,r,v,q=0.0):
d1 = (log(S/K)+(r+v*v/2.)*T)/(v*sqrt(T))
d2 = d1-v*sqrt(T)
if cp_flag == 'c':
price = S*exp(-q*T)*N(d1)-K*exp(-r*T)*N(d2)
else:
price = K*exp(-r*T)*N(-d2)-S*exp(-q*T)*N(-d1)
return price
def bs_vega(cp_flag,S,K,T,r,v,q=0.0):
d1 = (log(S/K)+(r+v*v/2.)*T)/(v*sqrt(T))
return S * sqrt(T)*n(d1)
讓我們嘗試找出上面報價的隱含波動率:
V_market = 17.5
K = 585
T = (datetime.date(2014,10,18) - datetime.date(2014,9,8)).days / 365.
S = 586.08
r = 0.0002
cp = 'c' # 看漲期權
implied_vol = find_vol(V_market, cp, S, K, T, r)
print 'Implied vol: %.2f%%' % (implied_vol * 100)
print 'Market price = %.2f' % V_market
print 'Model price = %.2f' % bs_price(cp, S, K, T, r, implied_vol)
運行Python代碼,得到結果:
Implied vol: 21.92%
Market price = 17.50
Model price = 17.50
到這里,我們已經成功計算了上述期權的隱含波動率。 2014 年 10 月 18 日到期的 585 美元看漲期權的隱含波動率為 21.92%。
往期干貨分享推薦閱讀
Omega System Trading and Development Club內部分享策略Easylanguage源碼
【數量技術宅|量化投資策略系列分享】基於指數移動平均的股指期貨交易策略
AMA指標原作者Perry Kaufman 100+套交易策略源碼分享
【數量技術宅|金融數據系列分享】套利策略的價差序列計算,恐怕沒有你想的那么簡單
【數量技術宅|量化投資策略系列分享】成熟交易者期貨持倉跟隨策略
【數量技術宅|金融數據分析系列分享】為什么中證500(IC)是最適合長期做多的指數
商品現貨數據不好拿?商品季節性難跟蹤?一鍵解決沒煩惱的Python爬蟲分享
【數量技術宅|金融數據分析系列分享】如何正確抄底商品期貨、大宗商品