哪裡可以取得歷史隱含波動率資料?
比較免費與付費的歷史IV資料來源,解析兩組30天IV序列為何不同,並提供可自行執行的查詢格式與選擇資料時的判斷方法。
歷史隱含波動率資料是推導而來,而非直接記錄。這一點正是其來源比價格歷史資料更困難的原因。IV 是將選擇權的市場價格代入定價模型反推,直到模型計算出的價值與螢幕上的價格相符後得到的數值。交易所不會在交易紀錄中發布 IV,因此每一份已發布的 IV 歷史資料,都涉及模型、報價、契約選擇與插值方法等判斷。兩組都宣稱衡量同一件事的資料序列,差異正是由這些選擇造成。
如果你想先了解定義,什麼是隱含波動率 和 隱含波動率如何計算 將說明其運作原理。以下內容將介紹歷史資料的來源,以及如何辨別兩個版本之間的差異。
為什麼歷史隱含波動率資料比價格資料更難取得?
每日收盤價是可觀察值:市場會實際成交,所有資料供應商回報的數字也相同。IV 水準則是計算結果,而計算所用的四項輸入值,會因資料來源不同而變動。
- 模型:歐式 Black-Scholes 求解、納入離散股息的美式二項樹模型,或採用自身利率與借券假設的資料供應商變體。
- 帶入的價格:買價、賣價、中間價、最後成交價,或交易所結算價。
- 納入哪些契約:一個價平履約價、某個價內外程度區間,或設定成交量及未平倉量篩選條件。
- 如何換算至固定到期期間:在涵蓋30天的兩個到期日之間插值,或將到期日落在某個剩餘天數區間內的數值取平均。
只要改變一項輸入值,水準就會變動。若四項全部改變,即使兩個嚴謹的資料來源分析同一交易日,得出的波動率也可能相差數個百分點,但兩者都沒有錯。
這種分散情況會先出現在單一標的內。下圖以 AAPL 在2026年6月的資料為例,只保留履約價在現貨價格上下5%以內的契約,並依距離到期的剩餘時間分組。
每個數據背後的精確 SQL 語法
SELECT
dte_band,
round(100 * quantileDeterministic(0.25)(iv, contract_hash), 1) AS iv_p25_pct,
round(100 * quantileDeterministic(0.50)(iv, contract_hash), 1) AS iv_median_pct,
round(100 * quantileDeterministic(0.75)(iv, contract_hash), 1) AS iv_p75_pct,
count() AS contract_day_count
FROM
(
SELECT
multiIf(days_to_expiry <= 7, '01-07d',
days_to_expiry <= 21, '08-21d',
days_to_expiry <= 45, '22-45d',
days_to_expiry <= 90, '46-90d',
days_to_expiry <= 180, '91-180d',
'181d+') AS dte_band,
toFloat64(implied_volatility) AS iv,
cityHash64(ticker) AS contract_hash,
days_to_expiry AS dte
FROM global_markets.options_greeks
WHERE underlying_symbol = 'AAPL'
AND date >= '2026-06-01'
AND date < '2026-07-01'
AND iv_converged = 1
AND volume > 0
AND days_to_expiry > 0
AND underlying_close > 0
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
)
GROUP BY dte_band
ORDER BY min(dte)相同標的、相同月份,且僅納入接近平價的履約價。圖中最短的區間 01-07d,IV 中位數為 29.6%。最長的區間 181d+,則為 28.1%。僅在第一個區間內,第25百分位數與第75百分位數就分別為 24.9% 與 35.8%。不同到期日之間的形狀稱為期限結構;不同履約價之間則有其對應概念 波動率偏斜。這裡不存在單一的 IV。實際上是一個波動率曲面,而任何公布的 AAPL IV 數值,都只是該曲面的一項摘要;我們的 AAPL 隱含波動率頁面追蹤的正是這項資料。
為什麼兩張30日 IV 圖表顯示的數字不同?
選取一個流動性高的標的、涵蓋一年的交易日,並使用相同資料列,以三種方式建立30日 IV。第一欄僅保留履約價距離現貨價格1%以內、到期日介於25至35日的合約,代表可取得的最窄範圍。第二欄將範圍擴大至現貨價格的5%,到期日則延伸至20至45日。當每個交易日都必須產生數值時,這是實務上常用的預設範圍。第三欄再依合約成交量為這組較寬的資料加權,使平均值更接近實際有成交的履約價。
每個數據背後的精確 SQL 語法
WITH
near_money AS
(
SELECT
toMonday(date) AS week_start,
toFloat64(implied_volatility) AS iv,
days_to_expiry AS dte,
volume AS vol,
abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) AS moneyness
FROM global_markets.options_greeks
WHERE underlying_symbol = 'SPY'
AND date >= '2025-08-01'
AND date < '2026-08-01'
AND iv_converged = 1
AND volume > 0
AND underlying_close > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
),
weekly AS
(
SELECT
week_start,
avgIf(iv, dte BETWEEN 25 AND 35 AND moneyness < 0.01) AS tight_atm,
avg(iv) AS wide_atm,
sum(iv * vol) / sum(vol) AS volume_weighted
FROM near_money
GROUP BY week_start
HAVING countIf(dte BETWEEN 25 AND 35 AND moneyness < 0.01) > 0
)
SELECT
toString(week_start) AS week,
concat(monthName(week_start), ' ', toString(toDayOfMonth(week_start)), ', ', toString(toYear(week_start))) AS week_label,
round(100 * tight_atm, 1) AS tight_atm_pct,
round(100 * wide_atm, 1) AS wide_atm_pct,
round(100 * volume_weighted, 1) AS volume_weighted_pct,
round(100 * (greatest(tight_atm, wide_atm, volume_weighted)
- least(tight_atm, wide_atm, volume_weighted)), 1) AS spread_pp
FROM weekly
ORDER BY week_start在圖表涵蓋的第一週,即July 28, 2025,三種計算方式分別得到16.6%、16.4%及16.7%。其中最高值與最低值相差0.2個百分點;spread 欄則追蹤這項差距在全部53週期間的變化。三者都不是該基金真正的30日 IV。它們各自回答略有不同的問題,而供應商圖表只是採用其中一種方式,卻未在標籤中說明計算方法。
每份合約的隱含波動率歷史資料可追溯多久?
這些面板背後的資料集是 global_markets.options_greeks:每一列代表某份合約在某一交易日的資料,將隱含波動率與 delta、gamma、vega、theta 及 rho 並列,另含履約價格、到期日、距到期天數、標的代號及標的收盤價。這是每日收市資料,不是即時選擇權鏈快照。下方面板統計每季至少有一列收斂 IV 資料的不同標的名稱數量。
每個數據背後的精確 SQL 語法
SELECT
concat(toString(toYear(date)), '-Q', toString(toQuarter(date))) AS quarter,
uniqExact(underlying_symbol) AS underlyings_covered
FROM global_markets.options_greeks
WHERE iv_converged = 1
AND volume > 0
AND underlying_symbol NOT IN ('SPCX')
AND date < '2026-07-01'
GROUP BY quarter
ORDER BY min(date)資料涵蓋 2014-Q2 至 2026-Q2,共 49 季;在顯示的最後一個完整季度中,有 5799 個標的名稱具備已收斂的每日 IV 資料。
查詢這類資料集時,四個篩選條件最為重要。
- 保留
iv_converged = 1。求解器不一定能得到收斂結果;未收斂的資料列代表配適失敗,而不是隱含波動率偏低。 - 保留
volume > 0。從未成交的合約,其 IV 是根據過時報價求解而來。 - 依
underlying_symbol分組。ticker欄位存放 OCC 合約代碼,因此依此分組會針對每個履約價格與到期日回傳一列,而不是每家公司一列。 - 有意識地選擇合約,挑選接近平值且位於特定距到期天數區間內的合約。略過這一步,會把波動率偏斜與期限結構平均成單一數值。
是否有免費的 implied volatility API?
免費來源確實存在,但各自都有特定限制。
- 券商平台會根據自家選擇權鏈計算 IV,並即時顯示。可下載的歷史資料通常很短,或根本沒有提供;而且數值是該券商模型的結果,不是標準化數據。
- 交易所發布的波動率指數可追溯數十年,且免費提供。每個指數都是針對一籃子標的計算的單一綜合數值,因此回答的是整體市場問題,而非個別股票的波動率。
- 一般市場資料 API 多半只提供價格。幾乎所有服務都將逐契約 greeks 視為獨立產品;免費方案即使包含這些資料,通常也只回傳即時快照,不提供歷史存檔。我們的 免費股票市場資料 API 整理了開放方案實際提供的內容。
- 逐契約歷史資料通常由資料供應商定價。長期的個股歷史資料多以按月或按年計價的日終檔案形式銷售;即時選擇權鏈的價格則遠高於歷史資料集。即時市場資料的成本 說明了這類價目表的架構。
即時快照與日終資料的差異,和價格本身同樣重要。下午4:00(ET)取得的快照,使用的是該時點的報價。以結算價建立的檔案,採用的輸入資料完全不同;在波動最快的交易日,兩者的差異最為明顯。
綜合指數波動率與個股波動率也不能互換。指數選擇權反映一籃子標的的變動,成分股之間的相互抵銷走勢會降低整體波動。個股選擇權反映的是單一公司的價格路徑。下方面板在相同篩選條件下,將市場熟知的個股放在一起比較一個月的表現。
每個數據背後的精確 SQL 語法
SELECT
underlying_symbol AS symbol,
round(100 * quantileDeterministic(0.50)(iv, contract_hash), 1) AS median_iv_pct,
count() AS contract_day_count
FROM
(
SELECT
underlying_symbol,
toFloat64(implied_volatility) AS iv,
cityHash64(ticker) AS contract_hash
FROM global_markets.options_greeks
WHERE underlying_symbol IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'AMZN', 'KO', 'XOM', 'TLT')
AND date >= '2026-06-01'
AND date < '2026-07-01'
AND iv_converged = 1
AND volume > 0
AND underlying_close > 0
AND days_to_expiry BETWEEN 20 AND 45
AND abs(toFloat64(strike_price) / toFloat64(underlying_close) - 1) < 0.05
)
GROUP BY symbol
ORDER BY median_iv_pct DESC2026年6月期間,在20至45天的區間內,接近平值的 IV 中位數介於 38.5% 的 NVDA 與 10.4% 的 TLT 之間,共涵蓋 8 檔個股。區間相同、篩選條件相同,計算方法也相同。這類排名只有在每檔個股都維持相同計算規則時才成立。
IV rank 與 IV percentile 的資料來源重要嗎?
這會直接決定答案。IV rank 是將今日的 IV 與回溯期間的最高值和最低值比較,回溯期間通常為一年;IV percentile 則計算該期間內低於今日 IV 的交易日占比。兩者都會從頭到尾讀取同一條時間序列,因此即使市場完全沒有變化,只要序列改變,評分就會跟著變動。若將券商的中間報價 IV 接到資料供應商以結算價為基礎的歷史資料上,回溯期間中間就會出現永久性的跳變;凡是跨越該位置計算的 rank,都會承接這個跳變。IV rank 與 IV percentile將逐步說明這兩種計算方式。比較 implied movement 與 realized movement 時,也有相同要求:historical volatility 與 implied volatility涵蓋這組比較。
實務上的標準是遵循資料來源追溯原則。選定一個資料來源、一個模型、一套合約選擇方式,以及一種到期期間定義,並在整個回溯期間固定這四項。內部一致、即使與其他來源略有不同的序列,價值高於分段拼接、只在不同區段分別符合各家資料供應商的序列。
常見問題
哪裡可以取得歷史隱含波動率資料?
較長期間的單一股票歷史資料,通常來自銷售逐契約日終 Greeks 的選擇權資料供應商,檔案多以月度或年度形式提供。交易所則會免費發布指數層級的波動率歷史資料。券商平台會在選擇權鏈上顯示即時 IV,但可下載的歷史資料通常很少。上述面板是根據逐契約的每日資料集運算,涵蓋所有已掛牌契約,並採用收斂後的估計結果。
是否有免費的隱含波動率 API?
包含逐契約 Greeks 的免費方案相當少見。現有方案通常只提供即時快照,而非歷史資料庫。指數波動率歷史資料是主要真正免費的長期序列。深入的單一股票歷史資料通常屬於付費產品。
為什麼兩個來源對同一檔股票顯示不同的隱含波動率?
原因可能包括定價模型不同、輸入報價不同、契約選取方式不同,以及到期日插值方式不同。上述面板從同一組資料列建立三條30日序列,光是在第一週,三者就相差 0.2 個百分點。因此,兩家供應商之間出現差距屬於預期情況,不代表資料有誤。
隱含波動率資料可以追溯多久?
這取決於資料來源。各地的逐契約資料庫存檔期間都比價格資料庫短。此頁面所使用的資料集始於 2014-Q2,此後涵蓋每一個已收斂契約的每日資料列。
本頁的每個面板都附有產出結果的 SQL。展開面板即可查看哪些契約被納入計算。若要針對另一檔標的、另一個期間或另一種計算方式建立相同序列,請在 Strasmore terminal 以自然語言提出需求。