用 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估算量使用哪些價格?
選擇答案即可查看解釋