Volatility (Biến động) là gì? Cách tính annualized cho cổ phiếu VN
Volatility (biến động) đo độ phân tán returns — đầu vào cho Sharpe, Black-Scholes, position sizing. Công thức historical và realized vol, annualization √252, áp dụng VN30.
Volatility ($\sigma$) là độ lệch chuẩn của returns — thước đo cổ điển nhất về rủi ro tài chính. Nó là input của hầu hết mọi mô hình định lượng: Sharpe Ratio, Black-Scholes pricing, Markowitz mean-variance, position sizing theo vol-target, Kelly fraction.
Có 3 biến thể quan trọng: (1) historical volatility từ returns quá khứ; (2) realized volatility tính từ intraday returns; (3) implied volatility suy ngược từ giá option. Trên VN cơ sở chỉ có (1) và (2) — implied vol chỉ áp dụng cho thị trường phái sinh option khi mở.
1. Định nghĩa & công thức
Historical volatility từ daily log returns: $$ \sigma_d = \sqrt{\frac{1}{N-1}\sum_{t=1}^{N}(r_t - \bar{r})^2}, \quad r_t = \ln\frac{P_t}{P_{t-1}} $$
Annualization (giả định returns iid): $$ \sigma_{annual} = \sigma_d \cdot \sqrt{252} $$
Quy tắc √T này vỡ khi returns có auto-correlation hoặc volatility clustering (GARCH effect).
2. Cách tính bằng Python
import numpy as np
def historical_vol(prices, periods_per_year=252):
"""Annualized historical volatility từ giá đóng cửa."""
log_ret = np.log(prices / prices.shift(1)).dropna()
return log_ret.std(ddof=1) * np.sqrt(periods_per_year)
def realized_vol_intraday(prices_5min, periods_per_year=252, bars_per_day=48):
"""Realized vol từ 5-minute returns (Andersen-Bollerslev)."""
log_ret = np.log(prices_5min / prices_5min.shift(1)).dropna()
daily_rv = (log_ret ** 2).resample('D').sum()
return np.sqrt(daily_rv.mean() * periods_per_year)
Code mẫu trên là khung tham khảo cho việc tự tính Biến động. Khi tích hợp vào hệ thống production, cần thêm: validate input (NaN, length), handle edge cases (zero variance, empty series), unit test cho từng nhánh, và caching khi gọi nhiều lần trên cùng dataset.
3. Khoảng giá trị & cách diễn giải
| Volatility annual | Đánh giá |
|---|---|
| < 10% | Thấp (trái phiếu, currency stable) |
| 10 – 20% | Trung bình (large cap blue chip) |
| 20 – 35% | Cao (cổ phiếu thường) |
| 35 – 60% | Rất cao (small cap, emerging market) |
| > 60% | Cực đoan (crypto, distressed) |
4. Giá trị điển hình theo loại tài sản / chiến lược
| Tài sản | Volatility annual điển hình |
|---|---|
| VN-Index 2010-2024 trung bình | 18% – 25% |
| VN30 large cap (VCB, VNM, FPT) | 20% – 30% |
| VN30 mid cap | 30% – 45% |
| Penny stock VN | 50% – 100%+ |
| XAUUSD | 12% – 18% |
Lưu ý: bảng giá trị điển hình mang tính tham khảo, dựa trên quy ước cộng đồng quant và sample lịch sử công khai. Giá trị thực tế phụ thuộc dataset, period, và phương pháp tính cụ thể.
5. Bốn cạm bẫy phổ biến khi sử dụng
-
√T annualization sai khi có auto-correlation: returns trending có vol thật cao hơn √T. Returns mean-reverting có vol thật thấp hơn.
-
Vol clustering (GARCH): volatility hiện tại phụ thuộc volatility quá khứ → moving window 30 phiên có thể miss spike.
-
Outlier sensitivity: 1 phiên crash -7% (limit down VN) làm tăng vol đáng kể; nên dùng winsorization hoặc EWMA.
-
Non-trading day: cuối tuần, lễ Tết — không tính vào N. Dùng business days, không calendar days.
6. Khi nào chỉ số này gây hiểu lầm
Volatility misleading khi: (1) returns phân phối có fat tail — vol underestimates extreme risk; (2) sample window không phủ regime change — vol 2021 không phản ánh vol 2022; (3) so sánh vol giữa các market có quy ước khác nhau (252 vs 250 vs 365 days).
7. Đặc thù khi áp dụng cho TTCK Việt Nam
Tại VN, 252 phiên/năm là chuẩn. Vol VN30 thường dao động 18-30%/năm với spike 40%+ vào Q1-Q3/2022. Vol penny stock dễ vượt 80% — không nên trade với position sizing vol-targeting cố định trên penny. EWMA với λ=0.94 (RiskMetrics chuẩn) tracking vol VN30 tốt hơn rolling 30-day std.
8. Các chỉ số liên quan trong cùng hệ thống
Biến động (σ) không nên đọc đơn lẻ. Trong báo cáo rủi ro chuyên nghiệp, nó luôn được trình bày cùng các chỉ số bổ sung để cross-check và tránh blindspot. Các chỉ số liên quan đã trình bày trong chuỗi bài này:
9. Tham khảo học thuật
-
Andersen, T., Bollerslev, T. (1998). Answering the skeptics: Yes, standard volatility models do provide accurate forecasts. International Economic Review.
-
Engle, R. F. (1982). Autoregressive Conditional Heteroscedasticity. Econometrica.
10. Câu hỏi thường gặp
Biến động bao nhiêu là tốt? Tham khảo bảng diễn giải ở mục 3. Không có ngưỡng “tốt tuyệt đối” — phụ thuộc loại chiến lược, sample size, và benchmark tham chiếu.
Làm sao tự tính Biến động trên danh mục cá nhân? Sử dụng code Python mẫu ở mục 2. Input cần thiết: chuỗi returns hàng phiên (daily) của danh mục, tối thiểu 252 phiên (1 năm) để có ý nghĩa thống kê.
Biến động có khác giữa thị trường VN và quốc tế không? Có. Đặc thù VN (biên độ ±7% HOSE, T+2.5, cấm short cơ sở) ảnh hưởng đến cách tính và diễn giải. Chi tiết ở mục 7.
Ghi chú phương pháp: Bài viết tổng hợp định nghĩa, công thức, và quy ước cộng đồng quant cho chỉ số Biến động (σ). Các giá trị điển hình mang tính tham khảo, không phải khuyến nghị đầu tư. Người đọc tự kiểm chứng trên dữ liệu của mình trước khi sử dụng cho quyết định vốn thật.
Miễn trừ trách nhiệm: Nội dung mang tính phân tích định lượng, không phải khuyến nghị đầu tư. Nhà đầu tư tự chịu trách nhiệm với quyết định của mình.
Áp dụng vào tài khoản thật?
Mở tài khoản chứng khoán qua mã giới thiệu — nhận tư vấn 1-1, DIAMOND signal VN30 miễn phí 6 tháng, ưu đãi phí giao dịch.
CTCK VPS Securities
- Mã IB: 9836 (mở online 15 phút)
- Phí 0.15% · margin 13%/năm
- + DIAMOND signal VN30 — 6 tháng
- + Tư vấn cơ cấu danh mục 1-1
Gói VIP / DIAMOND
- Tín hiệu VN30 + Midcap hằng phiên
- Backtest 5-15 năm minh bạch
- Báo cáo NAV hằng tháng
- Workshop định lượng hằng tháng
⚠️ Giao dịch chứng khoán có rủi ro mất vốn. Chỉ đầu tư số tiền bạn có thể chịu mất. P.Thai Capital không khuyến nghị mua/bán cụ thể và không bảo lãnh lợi nhuận.
Lý thuyết bài này có thể test trên dữ liệu của bạn:
P.Thai Capital