用 OHLC 估計波動率:比較 Parkinson、Garman–Klass、Rogers–Satchell 與 Yang–Zhang
比較 OHLC 變異數估計公式、漂移與隔夜跳空假設,並用三個交易時段的假設資料示範計算
本指南內容OHLC估計量衡量什麼
簡短摘要
OHLC估計量使用最高價、最低價、開盤價與收盤價,衡量每期已發生的變異數。Parkinson、Garman–Klass、Rogers–Satchell與Yang–Zhang依據不同假設;它們衡量的是已觀察到的價格,不預測方向或未來波動率
OHLC估計量衡量什麼
OHLC代表同一根K線或價格柱的開盤價、最高價、最低價與收盤價。只要交易時段邊界定義一致,最高價與最低價就能補充兩個相鄰收盤價看不到的價格路徑資訊
以下公式估計每根價格柱或每個交易時段的對數報酬變異數。變異數開平方後就是該期間的標準差。年化需要搭配適當的期間數並說明過程假設;年化不會把過去的衡量變成預測。想與收盤到收盤估計比較,可參閱已實現波動率計算
先統一價格與交易時段
第 i 根價格柱的開盤價記為 Oᵢ、最高價為 Hᵢ、最低價為 Lᵢ、收盤價為 Cᵢ。四個價格必須屬於相同時段與價格序列定義;通常 Hᵢ ≥ max(Oᵢ,Cᵢ),且 Lᵢ ≤ min(Oᵢ,Cᵢ)
先確認時區、交易時段、價格柱頻率、價格來源、拆股與股利的調整方式,以及缺漏資料或錯誤成交的處理規則。不同資料商的日線邊界若不一致,最高價與最低價涵蓋的時間也會不同
公式使用正價格比值的自然對數。將已調整收盤價與未調整高低價混用會產生假性變動;一筆異常成交也可能讓區間明顯擴大

三種使用時段內價格路徑的估計量
以下公式中的 mean 代表對 n 根價格柱取平均。Parkinson估計量只使用最高價與最低價:
σ²P = mean[(ln(Hᵢ/Lᵢ))²] ÷ (4 ln 2)
此公式是以零漂移的連續價格路徑模型推導而來,不會另外計入前一收盤到當日開盤的跳空。參閱[Parkinson論文]({source:parkinson1980ExtremeValueVariance})
Garman–Klass使用時段內的最高價、最低價、開盤價與收盤價:
σ²GK = mean[0.5(ln(Hᵢ/Lᵢ))² − (2 ln 2 − 1)(ln(Cᵢ/Oᵢ))²]
開盤到收盤的修正加入時段內資訊,但不表示公式在所有情況都比較好;效率取決於價格模型及價格柱資料品質。公式沒有另外納入前一收盤到當日開盤的報酬項。原始模型也假設價格路徑連續且漂移為零。參閱[Garman與Klass論文]({source:garmanKlass1980OhlcVolatility})
Rogers–Satchell估計量也使用四個價格:
σ²RS = mean[ln(Hᵢ/Oᵢ)ln(Hᵢ/Cᵢ) + ln(Lᵢ/Oᵢ)ln(Lᵢ/Cᵢ)]
在該估計量的模型假設下,不必將漂移設為零。不過它仍只衡量時段內價格路徑,沒有另外加入前一收盤到當日開盤的變動。參閱[Rogers與Satchell論文]({source:rogersSatchell1991VarianceEstimator})
Yang–Zhang納入隔夜跳空
先計算跳空報酬 uᵢ = ln(Oᵢ/Cᵢ₋₁),以及時段內報酬 cᵢ = ln(Cᵢ/Oᵢ)。Yang–Zhang將兩者的樣本變異數與RS項的平均值結合:
σ²YZ = s²overnight + k s²open-close + (1 − k) mean(RS)
其中 s²overnight 是 uᵢ 的樣本變異數,s²open-close 是 cᵢ 的樣本變異數,而 mean(RS) 是Rogers–Satchell項的平均值。此處 n 代表觀察數,係數為 k = 0.34 ÷ [1.34 + (n + 1)/(n − 1)]
對於 24/7 交易的市場,「隔夜」報酬是依所選價格柱邊界計算的前一根價格柱收盤到當前開盤的變動,不代表市場夜間休市。應一致定義價格柱邊界。
與上面三種只衡量時段內路徑的公式不同,Yang–Zhang也納入前一收盤到當日開盤的變動。但計算仍需要一致的時間邊界與可靠價格資料;公式無法補足缺漏資料或修正錯誤報價。參閱[Yang與Zhang論文]({source:yangZhang2000DriftIndependentOhlcVolatility})
三個交易時段的假設範例
假設前一收盤價為100,接下來三根連續日線價格柱的 (O,H,L,C) 分別是 (100,104,98,103)、(105,108,102,103) 和 (101,106,99,105)。這些價格都是為了說明計算而假設的數字,不是市場資料
將三根價格柱代入公式並取平均,每個時段的變異數與標準差估計約為:
| 估計量 | 每期變異數 | 日標準差 |
|---|---|---|
| Parkinson | 0.0013785 | 3.71% |
| Garman–Klass | 0.0015566 | 3.95% |
| Rogers–Satchell | 0.0015458 | 3.93% |
| Yang–Zhang | 0.0018646 | 4.32% |
Yang–Zhang使用 n = 3,因此 k ≈ 0.1018。期間間報酬約為 0、ln(105/103) = 0.01923 與 ln(101/103) = −0.01961,以 n−1 為分母計算的樣本變異數約為 0.0003771。開盤到收盤報酬為 0.02956、−0.01923 與 0.03884,以相同 n−1 分母計算的樣本變異數約為 0.0009731,mean RS為 0.0015458。代入後,Yang–Zhang變異數為 0.0018646,日標準差為 4.32%。這個小型假設範例無法證明哪種方法比較準確
結果不同不代表方法排名
公式使用的資訊不同,處理漂移與跳空的方式也不同,因此結果會有差異。估計值較高不代表找到「真正」的波動率,較低也不能證明市場比較平靜。只有在價格序列、價格柱、交易時段與變異數口徑一致時,比較才有意義
將期間變異數年化時,通常會先乘以每年的期間數,再開平方。期間數、過程穩定性、報酬自相關,以及納入哪些交易時段都會影響解讀。波動率群聚與GARCH說明處理的是另一個問題:模型條件下的未來變異數
價格區間何時可能誤導
日線OHLC隱藏了時段內事件發生的順序;最高價與最低價容易受到錯誤或稀疏成交影響。交易時段邊界不同,也可能將同一個市場跳空分配到不同價格柱。四種公式都不提供價格方向,本身也不是交易訊號
請一併記錄交易時段定義、價格柱頻率、調整規則、視窗長度、年化方法與缺漏觀察值,再檢查價格模型及假設是否適用於該標的與問題。歷史變異數不保證未來價格區間
常見問題
Q1哪一種OHLC波動率公式最準確?
沒有一種公式在所有情況都最好。Parkinson、Garman–Klass、Rogers–Satchell與Yang–Zhang使用不同價格模型,處理隔夜跳空的方式也不同;應先確認假設是否符合資料
Q2Yang–Zhang會納入隔夜變動嗎?
會。它使用前一收盤到當日開盤對數報酬的樣本變異數,以及時段內的估計項
Q3OHLC估計量能預測未來波動率嗎?
不能。它們估計已觀察價格的變異數。未來波動率尚未發生,預測需要另外建立並檢驗模型
資料來源與延伸閱讀
回報問題
我們會準備一封包含本文連結的電子郵件。寄出後,Mark 才會收到你的回報
快速檢查
讀完指南後,用 3 道題檢查一下
問題 01
Parkinson估計量使用哪些價格?
選擇答案即可查看解釋