精明管家-「隱含波動率」自己算,超多量化指標的「選擇權」

更新 發佈閱讀 16 分鐘

久仰黑先生 (Black-Scholes) 的神奇公式,從來沒有搞懂過,但在金融數學裡到處出現,這次下決心來好好研究一下。以我的駑鈍資質,要了解的多深入是不可能的,只能依公式照樣計算而已。感謝數學前輩的貢獻,原來是有兩位:Black (1938~1995) and Scholes (1941~) 偉大的經濟學家,我們致敬之後,就直接使用他們的發明吧。

選擇權理論價格

這就是大名鼎鼎的原始公式:

raw-image

其中一堆變數各自意義如下:

raw-image

但這裡面有一個麻煩的東西,就是 q,股利因子。一個指數,包涵眾多股票,每個時期各自除權息金額大小不一,根本無法固定,若只用一個簡單的數字去假設,顯然是會產生誤差,偏離事實,因此就有了修正版的公式:

raw-image

這裡面 q 不見了,而 S 變成 F (期貨) 了。聰明的期貨市場參與者,會自動把配息因素考慮進去,計算起來方便多了。正想著如何寫程式,chatGPT 已經服務到家了:

from scipy.stats import norm
def black_76_option_price(F, K, T, r, sigma, option_type='call'):
"""
計算期貨標的選擇權的理論價(Black-76)
F: 期貨價格(標的)
K: 履約價
T: 剩餘時間(以年為單位)
r: 無風險利率(年化)
sigma: 年化波動率
option_type: 'call' 或 'put'
"""

d1 = (np.log(F / K) + 0.5 * sigma**2 * T) / (sigma * np.sqrt(T))
d2 = d1 - sigma * np.sqrt(T)
discount_factor = np.exp(-r * T)
if option_type == 'call':
price = discount_factor * (F * norm.cdf(d1) - K * norm.cdf(d2))
elif option_type == 'put':
price = discount_factor * (K * norm.cdf(-d2) - F * norm.cdf(-d1))
else:
raise ValueError("option_type 必須是 'call' 或 'put'")
return price

關鍵技術的門檻,已經被 ai 弭平了,剩下的只是修修補補的雜事。依序取得公式所需要的參數:

F:近期期貨最新報價,透過券商 api 取得。

K:履約價,透過券商 api 取得選擇權所有的 ticker,找到最近到期的月選,從該契約再篩選期貨最新報價正負 1000 點之內的 ticker list 取出備用。取得報價和下單都需要指定正確的 ticker。

T:剩餘時間 (以年為單位)。計算「當時」與「到期日之結算時間 13:30」 的精確秒數,除以 86400,再除以 365 得之。

r:無風險利率,設定為 0.015

sigma:使用近月期貨的「歷史波動率」,從 期交所 網站可爬得 30 天收盤資料,計算標準差再年化而得。記住了,只要是關於「波動」的,在選擇權領域都是重要的。

以上資料已經足夠,計算所有的買賣權理論價格了。

市價倒推「隱含波動率」

理論價格既已得出,實際價格應該與之接近,但是不可能一模一樣,有時候市價偏高,有時候偏低,這就產生了解讀空間,有可能挖掘出市場隱藏的秘密嗎?選擇權的意義在於為未來的風險,也就是波動,埋單;所付出的代價,用來規避,或對沖可能的損失,也就等同於「保險費」的概念。當「所願意付出」的保險費更高,代表交易者對未來的不確定性更爲擔憂,心中所認定的風險,比已發生的歷史事實更高,反之亦然。這個「心中所認知的風險」 就是「隱含波動率」。

在此開始體驗到此公式厲害的地方,可以正的用,也可以倒過來用。當我們把波動率 sigma 留空,公式結果帶入「市價」,用「最佳化」的方法中最簡單的「暴力窮舉法」,就可以反推出公式中的 sigma 的值,這正是電腦所擅長的工作。所以沒有新公式,只有新的程式,chatGPT 秒給出答案,注意有用到 scipy.optimize 套件:

from scipy.stats import norm
from scipy.optimize import brentq

def implied_volatility(option_quote, option_type, F, K, T, r):
try:
# 定義方程式:理論價 - 市場價 = 0
f = lambda sigma: black_76_option_price(F, K, T, r, sigma, option_type) - option_quote
# 在 0.01 到 3 之間搜尋解(即 1% ~ 300% 年化波動率)
result = brentq(f, 1e-4, 3.0)
if np.isnan(result):
return 0
else:
return result
except:
return 0

以上,觀察隱含波動率 (Implied Volatility,後續簡稱 IV),對比歷史波動率 (Historical Volatility,後續簡稱 HV),可知目前的「市場氛圍」是否朝向更大或更小的不確定性發展。因為有選擇權商品,讓這種虛無飄渺的東西可以量化,變大可以說「市場覺得恐慌」,變小可以說「情緒歸於穩定」。而這種恐慌或穩定,理論上是沒有方向性的,向上或向下震盪,都是震盪,與一般純做多投資人所思考的「上漲或下跌」很不一樣,選擇權所打開的,好像是另一個世界,數字遊戲進到新的境界。

計算市場整體 IV,引出 Vega and Delta...

以上所計算的 IV,區分買權與賣權,且每一個履約價都有,那如何用「單一數字」去呈現出全市場狀態?顯然「價平」選擇權的 IV 是最具參考性的。舉例假設說,正 1000 點的選擇權,雖然有人交易,但那些「極端樂觀」與極端悲觀的人,相對較少,要反映出「整體市場」狀態,顯然有權重大小之分,以各履約價的「波動率對選擇權價格」的影響力為權重,就是合理的設定,這就是奧秘的 Vega。Vega 定義就是,選擇權價格,對波動率,的偏微分。這再度表現出 Black-Scholes 模型的威力,他可以正的用,倒著用,現在就來「側著用」,或切入一塊結構,取出關鍵意義指標,這模型真是全身都是寶!

因此,Vega-weighted IV 可以用來代表整體 IV。若要得到更精確的值,還有 CBOE 的 VIX 算法,但實在太複雜了,就不再折磨自己了。 Vega 的推導過程當然是交給偉大的數學家了,我們恭敬的套用他們所產生的美麗公式,再重述其意義加強記憶,「波動率變動 1%,相對的選擇權價格會變動多少錢」:

raw-image

至於 Delta,意義很容易理解,就是標的物變動一點時,對應的選擇權會變動幾點,或說「選擇權相對於標的物價格的敏感度」,通常價平的 Delta 大約是 0.5 左右。算法都是出自於 Black-Schole 原始公式的變形,非常強大:

raw-image

從 Delta 意義來解讀,可說是「選擇權對標的物價格」的敏感度,就是一階微分,或說「選擇權隨標的價變化的速度」。Vega and Delta 程式備妥如下:

def black76_vega(F, K, T, r, sigma):
d1 = (np.log(F / K) + 0.5 * sigma ** 2 * T) / (sigma * np.sqrt(T))
vega = F * np.exp(-r * T) * norm.pdf(d1) * np.sqrt(T)
return vega/100 # 每變動 0.01 (1%) 的 σ 對應多少價格點變化

def black76_delta(F, K, T, r, sigma, option_type):
d1 = (np.log(F / K) + 0.5 * sigma**2 * T) / (sigma * np.sqrt(T))
if option_type.lower() == 'call':
delta = np.exp(-r * T) * norm.cdf(d1)
elif option_type.lower() == 'put':
delta = -np.exp(-r * T) * norm.cdf(-d1)
else:
raise ValueError("option_type must be 'call' or 'put'")
return delta

Gamma and Theta

理解了一階微分,當然也可以二次微分,因此又誕生了一個指標 Gamma,就是「選擇權隨標的變化的加速度」,或說「delta 隨標的價變化的速度」真是有趣。

raw-image

還有一個 Theta,就是對到期時間 T 的微分,代表時間價值,每天會衰減多少。這對於賣方有一定重要性,所以也算一下。

raw-image
def black76_theta(option_type, F, K, T, r, sigma):
"""
option_type: 'call' or 'put'
F: 期貨價格
K: 履約價
T: 到期時間(以年為單位,例如 10= 10/365
r: 無風險利率
sigma: 年化波動率
回傳:每日 Theta
"""
d1 = (np.log(F / K) + 0.5 * sigma**2 * T) / (sigma * np.sqrt(T))
d2 = d1 - sigma * np.sqrt(T)

Nd1_prime = norm.pdf(d1)

first_term = - (F * np.exp(-r * T) * Nd1_prime * sigma) / (2 * np.sqrt(T))

if option_type.lower() == 'call':
second_term = r * K * np.exp(-r * T) * norm.cdf(d2)
elif option_type.lower() == 'put':
second_term = - r * K * np.exp(-r * T) * norm.cdf(-d2)
else:
raise ValueError("option_type must be 'call' or 'put'")

theta_annual = first_term + second_term
theta_daily = theta_annual / 365 # 每日衰減

return theta_daily

def black76_gamma(self, F, K, T, r, sigma):
"""
Black-76 Gamma (d^2 Option Price / dF^2)

Parameters
----------
F : float
Forward price
K : float
Strike
T : float
Time to maturity (in years)
r : float
Risk-free rate
sigma : float
Volatility

Returns
-------
gamma : float
"""
if T <= 0 or sigma <= 0 or F <= 0:
return 0.0

d1 = (np.log(F / K) + 0.5 * sigma ** 2 * T) / (sigma * np.sqrt(T))
gamma = (
np.exp(-r * T)
* norm.pdf(d1)
/ (F * sigma * np.sqrt(T))
)
return gamma

以上修修補補,勤能補拙,不知不覺我已經擁有一個大表了,一堆資訊巨細彌遺,應有盡有:

raw-image

初步觀察以上表格,現在是 5/23 下午盤,五月份期貨剛剛結算不久,進到新的月份,到期日還遠,觀察 Theta,權利金一天會衰減 7 點多,偏大;IV 21.6 % 也稍微大於 HV 18.3 %。自己掌握所有數據的好處,就是下午盤可以繼續跳動,而證交所提供的波動率指數只有上午盤有,且只有一個數字,看不到「內部結構」。

IV 結構,微笑或歪斜...

IV 作為解讀市場氛圍的重要數據,如何榨出更多資訊?既然每一個履約價都有一組 IV,代表價外 (OTM,Out of The Money),價內 (ITM,In The Money),價平 (ATM,At The Money),的市場參與者,對風險的期望有些微不同,一般而言,價外的 IV 較高,所以連起來會呈現一個微笑,在此領域已經成為標準術語了,觀察 IV Smile Chart 兩端翹得多高,若很高適合做賣方;或是歪斜 (Skew),通常空方翹得比較高,若非常斜,可能是相當強的看空訊號。把所有 OTM IV 串起來,計算一次回歸直線,其「斜率」就成為好用的指標 skew index,越斜越偏空。

另一個指標也會微笑,只是它是倒著笑,哈哈,就是 Vega,在 ATM 通常較高,兩側遞減。若 Vega Smile 非常扁平,表示市場預期市況穩定;反之若非常集中突起,表示預期有重大風險。所有的圖,都畫出來如下:

raw-image

從上圖可見 IV Smile 明顯左傾,表示市場的偏空情緒,Vega Smile 只是正常的鐘型,各項數據需要觀察一陣子才會比較有感。雖然算出一堆數據,下單程序也都已經準備好了,但要組成有用的交易策略,還是非常不容易,賺錢難啊!但至少在開發過程,對模型的各種邏輯結構,了解更多一些,日後思考時可以有更多的素材。

Newman 2025/5/21

導覽頁:精明管家

















留言
avatar-img
newman的沙龍
31會員
150內容數
漫步是一種境界。
newman的沙龍的其他內容
2025/05/02
專業交易人,不會只有一個帳戶。 專業交易人,不會只用現貨交易,股期權只是基本配備。 專業交易人,控制「整體風險」,不會見樹不見林;而「每一棵樹」也很重要。 專業交易人,專注「閱讀,思考,決策」,眾多畫面切來切去,就是最浪費時間的事。 專業交易人,從不逃避「槓桿」的使用,小孩開大車,才叫專業,
Thumbnail
2025/05/02
專業交易人,不會只有一個帳戶。 專業交易人,不會只用現貨交易,股期權只是基本配備。 專業交易人,控制「整體風險」,不會見樹不見林;而「每一棵樹」也很重要。 專業交易人,專注「閱讀,思考,決策」,眾多畫面切來切去,就是最浪費時間的事。 專業交易人,從不逃避「槓桿」的使用,小孩開大車,才叫專業,
Thumbnail
2024/12/12
交易軟體還不夠多嗎?實在太多了,但永遠還缺一套。交易之所以有趣,就在於參與者無限,客製需求無限,策略發想無限!且在似乎出現既定模式之後,它還隨著時間緩慢質變,或者也有醞釀之後的突然巨變!總之,自己打造可以最大化客製的精細度,並且保持與時俱進。 首先是庫存。誰不在意自己的錢放在哪些地方?
Thumbnail
2024/12/12
交易軟體還不夠多嗎?實在太多了,但永遠還缺一套。交易之所以有趣,就在於參與者無限,客製需求無限,策略發想無限!且在似乎出現既定模式之後,它還隨著時間緩慢質變,或者也有醞釀之後的突然巨變!總之,自己打造可以最大化客製的精細度,並且保持與時俱進。 首先是庫存。誰不在意自己的錢放在哪些地方?
Thumbnail
2024/07/29
精明管家系統是一款專注於投資風險管理的工具。它可以分析投資部位,顯示年化報酬率、風險和夏普指標等關鍵數據。系統每日更新庫存,提供歷史持有數和操作記錄,幫助用戶檢討和優化投資策略。此外,它還管理曝險市值和槓桿倍數,適合希望簡單而高效管理投資風險的人士。
Thumbnail
2024/07/29
精明管家系統是一款專注於投資風險管理的工具。它可以分析投資部位,顯示年化報酬率、風險和夏普指標等關鍵數據。系統每日更新庫存,提供歷史持有數和操作記錄,幫助用戶檢討和優化投資策略。此外,它還管理曝險市值和槓桿倍數,適合希望簡單而高效管理投資風險的人士。
Thumbnail
看更多
你可能也想看
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
本策略採用台指期五分K的成交量進行判斷是否當日為弱勢盤,當成交量能達到當日一定的量能時,當日順勢向下的盤面機率就會增加,適合空方的順勢盤面。 此策略主要是針對看盤的經驗,將策略轉化為程式進行自動化交易,減少人為的操作,即使沒看盤也能自動化的完成交易。
Thumbnail
本策略採用台指期五分K的成交量進行判斷是否當日為弱勢盤,當成交量能達到當日一定的量能時,當日順勢向下的盤面機率就會增加,適合空方的順勢盤面。 此策略主要是針對看盤的經驗,將策略轉化為程式進行自動化交易,減少人為的操作,即使沒看盤也能自動化的完成交易。
Thumbnail
本文深入探討均線的應用技巧,包括均線排列、斜率變化和交叉信號的解讀,強調了均線在判斷市場趨勢中的重要性,並提醒投資者需要結合其他因素做出全面的投資決策。
Thumbnail
本文深入探討均線的應用技巧,包括均線排列、斜率變化和交叉信號的解讀,強調了均線在判斷市場趨勢中的重要性,並提醒投資者需要結合其他因素做出全面的投資決策。
Thumbnail
在投資策略中,長線操作和短線操作需關注的變量大相徑庭。短線操作需考慮的因素繁多,使得市場不可預測。而長線策略則聚焦於公司的管理層及其風格,回報更具確定性。儘管短期交易的指標眾多,量化策略則強調多指標的互補及回測的重要性。本文探討不同投資時間框架下的思考,對於投資者制定策略有重要參考價值。
Thumbnail
在投資策略中,長線操作和短線操作需關注的變量大相徑庭。短線操作需考慮的因素繁多,使得市場不可預測。而長線策略則聚焦於公司的管理層及其風格,回報更具確定性。儘管短期交易的指標眾多,量化策略則強調多指標的互補及回測的重要性。本文探討不同投資時間框架下的思考,對於投資者制定策略有重要參考價值。
Thumbnail
本文介紹了一種名為「時間轉折」的股票投資技術,利用時間來預測股票價格的轉折點。作者分享了從股價波段高點或相對高尾爆大量起算,第8、13、21根k棒的走勢可能出現轉折的方法。同時,作者解釋了時間轉折與黃金分割率以及費波那契數列的關係。如果你對股票投資感興趣,這篇文章絕對值得一讀。
Thumbnail
本文介紹了一種名為「時間轉折」的股票投資技術,利用時間來預測股票價格的轉折點。作者分享了從股價波段高點或相對高尾爆大量起算,第8、13、21根k棒的走勢可能出現轉折的方法。同時,作者解釋了時間轉折與黃金分割率以及費波那契數列的關係。如果你對股票投資感興趣,這篇文章絕對值得一讀。
Thumbnail
用多空趨勢線串聯股市金脈簡單來說內建一套投資邏輯,這套系統基於經濟學中的「適應性預期理論」發展而來,主要依賴過去的觀察和經驗來進行投資。這本書橫跨了產業面、基本面、技術面與籌碼面,我覺得下面的重點,你可以思考一下對你的投資有沒有幫助。
Thumbnail
用多空趨勢線串聯股市金脈簡單來說內建一套投資邏輯,這套系統基於經濟學中的「適應性預期理論」發展而來,主要依賴過去的觀察和經驗來進行投資。這本書橫跨了產業面、基本面、技術面與籌碼面,我覺得下面的重點,你可以思考一下對你的投資有沒有幫助。
Thumbnail
這篇文章談論股匯市的關係和適性趨勢軌道的寬窄意義,以及超級趨勢布林趨勢指標的設定和彩虹ATI+日ATI複習。觀看影片可以幫助吸收裡面的邏輯。
Thumbnail
這篇文章談論股匯市的關係和適性趨勢軌道的寬窄意義,以及超級趨勢布林趨勢指標的設定和彩虹ATI+日ATI複習。觀看影片可以幫助吸收裡面的邏輯。
Thumbnail
本文章介紹了股市中常用的技術指標,如相對強弱指標(RSI)、隨機指標(KD)、移動平均線(MA)、動力指標(MTM)、指數平滑異同移動平均線(MACD)、寶塔線。透過這些指標,讓投資者能夠更好地瞭解股票的買賣力道、價格趨勢以及逆勢操作的時機。
Thumbnail
本文章介紹了股市中常用的技術指標,如相對強弱指標(RSI)、隨機指標(KD)、移動平均線(MA)、動力指標(MTM)、指數平滑異同移動平均線(MACD)、寶塔線。透過這些指標,讓投資者能夠更好地瞭解股票的買賣力道、價格趨勢以及逆勢操作的時機。
Thumbnail
本文為技術分析進階,適合有技術分析基礎者閱讀,不建議未學過基礎技術分析者閱讀
Thumbnail
本文為技術分析進階,適合有技術分析基礎者閱讀,不建議未學過基礎技術分析者閱讀
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News