Ước lượng volatility từ OHLC: so sánh Parkinson, Garman–Klass, Rogers–Satchell và Yang–Zhang
So sánh công thức ước lượng variance từ OHLC, giả định về drift và gap qua đêm, cùng một ví dụ tính toán giả định trên ba phiên
Trong hướng dẫn nàyOHLC estimator đo điều gì
Tóm tắt ngắn
Các estimator OHLC dùng giá cao nhất, thấp nhất, mở cửa và đóng cửa để đo variance lịch sử trong một phiên. Parkinson, Garman–Klass, Rogers–Satchell và Yang–Zhang dựa trên các giả định khác nhau; đây là phép đo giá đã quan sát, không phải dự báo hướng đi hay volatility tương lai
OHLC estimator đo điều gì
OHLC là open, high, low và close của cùng một bar. Khi ranh giới phiên được định nghĩa nhất quán, giá cao nhất và thấp nhất bổ sung thông tin về đường đi của giá mà chỉ hai mức đóng cửa liên tiếp không cho thấy
Các công thức dưới đây ước lượng variance của log return trên mỗi bar hoặc mỗi phiên. Lấy căn bậc hai của variance để có độ lệch chuẩn cho kỳ đó. Muốn annualize thì cần chọn số kỳ phù hợp và nêu giả định của quá trình; annualize không biến phép đo quá khứ thành forecast. Xem cách tính realized volatility để đối chiếu với cách close-to-close
Đồng nhất dữ liệu và ranh giới phiên trước
Với bar i, gọi giá mở cửa là Oᵢ, cao nhất là Hᵢ, thấp nhất là Lᵢ và đóng cửa là Cᵢ. Cả bốn giá phải thuộc cùng một phiên và cùng định nghĩa chuỗi giá; thông thường Hᵢ ≥ max(Oᵢ,Cᵢ) và Lᵢ ≤ min(Oᵢ,Cᵢ)
Hãy cố định múi giờ, giờ giao dịch, tần suất bar, nguồn giá, cách điều chỉnh split và cổ tức, cũng như quy tắc xử lý giao dịch lỗi hay dữ liệu thiếu. Nếu các nhà cung cấp đặt ranh giới bar hằng ngày khác nhau, high và low sẽ bao phủ những khoảng thời gian khác nhau
Các công thức dùng log tự nhiên của tỷ lệ giá dương. Ghép close đã điều chỉnh với high và low chưa điều chỉnh có thể tạo biến động giả; một giao dịch lỗi cũng có thể làm range rộng bất thường

Ba estimator dùng đường đi bên trong phiên
Trong các công thức sau, mean là trung bình trên n bar. Parkinson chỉ dùng high và low:
σ²P = mean[(ln(Hᵢ/Lᵢ))²] ÷ (4 ln 2)
Estimator này dựa trên mô hình đường giá liên tục với drift bằng không. Nó không cộng riêng gap từ close trước đó đến open hiện tại. Xem [bài nghiên cứu của Parkinson]({source:parkinson1980ExtremeValueVariance})
Garman–Klass dùng high, low, open và close trong phiên:
σ²GK = mean[0.5(ln(Hᵢ/Lᵢ))² − (2 ln 2 − 1)(ln(Cᵢ/Oᵢ))²]
Phần hiệu chỉnh open-to-close bổ sung thông tin trong phiên nhưng không khiến công thức luôn tốt hơn. Hiệu quả tùy thuộc mô hình giá và chất lượng bar; công thức không có hạng riêng cho return từ close hôm trước đến open hôm nay. Mô hình gốc cũng giả định đường giá liên tục và drift bằng không. Xem [bài của Garman và Klass]({source:garmanKlass1980OhlcVolatility})
Rogers–Satchell cũng dùng cả bốn mức giá:
σ²RS = mean[ln(Hᵢ/Oᵢ)ln(Hᵢ/Cᵢ) + ln(Lᵢ/Oᵢ)ln(Lᵢ/Cᵢ)]
Theo giả định mô hình riêng, estimator này không yêu cầu đặt drift bằng không. Dù vậy, nó vẫn đo phần bên trong phiên và không đưa chuyển động từ close trước đó đến open thành một hạng riêng. Xem [bài của Rogers và Satchell]({source:rogersSatchell1991VarianceEstimator})
Yang–Zhang thêm gap qua đêm
Trước tiên tính return qua gap uᵢ = ln(Oᵢ/Cᵢ₋₁) và return trong phiên cᵢ = ln(Cᵢ/Oᵢ). Yang–Zhang kết hợp sample variance của hai chuỗi này với mean của thành phần RS:
σ²YZ = s²overnight + k s²open-close + (1 − k) mean(RS)
Trong đó s²overnight là sample variance của uᵢ, s²open-close là sample variance của cᵢ và mean(RS) là trung bình các hạng Rogers–Satchell. Với n quan sát, hệ số trong cách viết này là k = 0.34 ÷ [1.34 + (n + 1)/(n − 1)]
Trong thị trường giao dịch 24/7, “overnight return” là biến động từ close của bar trước đến open của bar hiện tại theo ranh giới bar đã chọn, chứ không hàm ý thị trường đóng cửa qua đêm. Hãy định nghĩa ranh giới bar nhất quán.
Khác với ba công thức chỉ đo trong phiên ở trên, Yang–Zhang có tính chuyển động từ close trước đó đến open hiện tại. Điều đó vẫn đòi hỏi ranh giới thời gian nhất quán và dữ liệu đáng tin; công thức không sửa được dữ liệu thiếu hoặc quote sai. Xem [bài của Yang và Zhang]({source:yangZhang2000DriftIndependentOhlcVolatility})
Ví dụ giả định trên ba phiên
Giả sử close trước đó là 100 và ba bar ngày liên tiếp tiếp theo có (O,H,L,C) = (100,104,98,103), (105,108,102,103) và (101,106,99,105). Các mức giá đều là giả định để minh họa phép tính, không phải dữ liệu thị trường
Thay ba bar vào công thức rồi lấy trung bình sẽ cho các ước lượng variance và độ lệch chuẩn gần đúng trên mỗi phiên:
| Estimator | Variance mỗi phiên | Độ lệch chuẩn hằng ngày |
|---|---|---|
| Parkinson | 0.0013785 | 3.71% |
| Garman–Klass | 0.0015566 | 3.95% |
| Rogers–Satchell | 0.0015458 | 3.93% |
| Yang–Zhang | 0.0018646 | 4.32% |
Với Yang–Zhang, n = 3 và k ≈ 0.1018. Return giữa các phiên lần lượt xấp xỉ 0, ln(105/103) = 0.01923 và ln(101/103) = −0.01961, có sample variance với mẫu số n−1 khoảng 0.0003771. Return open-to-close là 0.02956, −0.01923 và 0.03884, có sample variance với cùng mẫu số n−1 là 0.0009731; mean RS bằng 0.0015458. Thay các thành phần này vào công thức cho variance Yang–Zhang 0.0018646 và độ lệch chuẩn hằng ngày 4.32%. Mẫu nhỏ và giả định không chứng minh estimator nào chính xác hơn
Kết quả khác nhau không tạo thành bảng xếp hạng
Các con số khác nhau vì công thức dùng thông tin khác nhau và xử lý drift cùng gap theo cách khác nhau. Ước lượng cao hơn không có nghĩa là đã tìm thấy volatility “thật”; ước lượng thấp hơn cũng không chứng minh thị trường yên ắng hơn. Chỉ so sánh khi chuỗi giá, bar, phiên và quy ước variance khớp nhau
Để annualize variance theo kỳ, thông thường nhân với số kỳ trong năm rồi lấy căn bậc hai. Số kỳ, tính ổn định của quá trình, autocorrelation và giờ giao dịch được đưa vào đều ảnh hưởng cách đọc kết quả. Bài về volatility clustering và GARCH nói về một câu hỏi khác: conditional variance tương lai theo mô hình
Khi range có thể gây hiểu nhầm
Bar OHLC hằng ngày che mất thứ tự sự kiện bên trong phiên; high và low nhạy với giao dịch lỗi hoặc thưa. Ranh giới phiên khác nhau có thể xếp cùng một cú nhảy thị trường vào những bar khác nhau. Không công thức nào trong bốn công thức cho biết hướng giá hoặc tự nó là tín hiệu giao dịch
Hãy lưu định nghĩa phiên, tần suất bar, quy tắc điều chỉnh, độ dài window, cách annualize và dữ liệu bị thiếu cùng kết quả. Sau đó kiểm tra mô hình giá và giả định có phù hợp với công cụ và câu hỏi không; variance lịch sử không đảm bảo range giá tương lai
Câu hỏi thường gặp
Q1Công thức OHLC volatility nào chính xác nhất?
Không có một công thức tốt nhất cho mọi trường hợp. Parkinson, Garman–Klass, Rogers–Satchell và Yang–Zhang dựa trên giả định khác nhau về mô hình giá và overnight gap; hãy đối chiếu giả định với dữ liệu
Q2Yang–Zhang có tính biến động qua đêm không?
Có. Công thức dùng sample variance của log return từ close trước đó đến open hiện tại, cùng với các thành phần trong phiên
Q3OHLC estimator có dự báo volatility tương lai không?
Không. Chúng ước lượng variance của giá đã quan sát. Volatility tương lai chưa biết và cần một mô hình dự báo riêng được kiểm định
Nguồn và tài liệu đọc thêm
Báo lỗi
Chúng tôi sẽ soạn email kèm liên kết bài viết này. Mark chỉ nhận được báo cáo sau khi bạn gửi email
Kiểm tra nhanh
Đọc xong hướng dẫn? Hãy kiểm tra với 3 câu hỏi
Câu hỏi 01
Estimator Parkinson dùng những mức giá nào?
Chọn một đáp án để xem giải thích
Bảng thuật ngữ quyền chọn
Volatility calculated from price changes that occurred under a stated return, sampling-window, and annualization rule; different conventions can produce different values.
Đọc hướng dẫn chuyên sâuGARCHA time-series model that updates conditional variance from past squared shocks and prior variance; it models volatility persistence, not return direction.
Đọc hướng dẫn chuyên sâuVarianceThe average squared deviation of returns from their mean; its square root is standard deviation, so variance aggregates differently from volatility percentages.
Đọc hướng dẫn chuyên sâu