Backtest VaR: Đánh giá mô hình quản trị rủi ro
Sử dụng kiểm định Kupiec POF và cơ chế Cửa sổ trượt (Rolling Window)
Trong quản trị rủi ro tài chính, Value at Risk (VaR) là một con số ước lượng mức tổn thất tối đa có thể xảy ra trong một khoảng thời gian nhất định, với một độ tin cậy cho trước. Tuy nhiên, làm sao để biết mô hình VaR mà ngân hàng đang sử dụng có thực sự chính xác hay không? Đây là lúc quá trình Backtesting (kiểm định ngược) và đặc biệt là Kiểm định Kupiec POF (Proportion of Failures) phát huy tác dụng.
[!NOTE] Bối cảnh dữ liệu minh họa trong bài: Các ví dụ và con số backtest trong bài viết này được trích xuất trực tiếp từ đồ án đánh giá rủi ro danh mục mô phỏng (gồm 3 mã cổ phiếu FPT, VNM, VCB với tỷ trọng phân bổ 40% - 30% - 30%).
- Tổng thể dữ liệu: Kéo dài hơn 14 năm, từ ngày 20/03/2012 đến 30/06/2026.
- Giai đoạn Backtest (Ngoài mẫu): Quá trình dự báo và đếm số ngày thất bại được thực hiện trên tập dữ liệu ngoài mẫu từ 02/01/2025 đến 30/06/2026 (chính xác 368 ngày giao dịch). Thuật toán Backtest được thực hiện bằng phương pháp Cửa sổ trượt (Rolling Window) cực kỳ nghiêm ngặt để tránh rò rỉ dữ liệu.
Bối cảnh dữ liệu minh họa
Bài viết sử dụng ví dụ từ đồ án đánh giá rủi ro danh mục mô phỏng với tỷ trọng phân bổ:
1. Logic của quá trình Backtesting VaR
Nếu bạn thiết lập VaR ở độ tin cậy 95% cho 100 ngày giao dịch, bạn kỳ vọng sẽ có khoảng 5 ngày (5%) mà mức lỗ thực tế vượt quá ngưỡng dự báo của VaR. Những ngày vượt ngưỡng này được gọi là các ngoại lệ (exceptions) hay thất bại (failures).
Để kiểm chứng độ chính xác (Out-of-sample backtesting), chúng ta sử dụng cơ chế Cửa sổ trượt (Rolling Window). Lấy ví dụ với bộ dữ liệu 868 ngày, ta dùng cửa sổ 500 ngày (tương đương ~2 năm giao dịch):
- Khởi tạo: Để dự báo VaR cho ngày $t$, mô hình chỉ được phép nhìn vào 500 ngày giao dịch ngay trước đó (từ ngày $t-500$ đến $t-1$).
- Ước lượng tham số (MLE): Thuật toán tự động chạy Maximum Likelihood Estimation để tìm ra các tham số phân phối (ví dụ: $\mu, \sigma, \nu$) mới tinh, chỉ dựa trên 500 ngày này.
- Dự báo: Dựa trên các tham số vừa học được, mô hình tính ra một ngưỡng VaR dự báo cho ngày $t$.
- Đối chiếu (Test P&L): Cuối cùng, mô hình mở “đáp án” của ngày $t$ ra xem mức lỗ thực tế có đâm thủng VaR dự báo hay không (nếu đâm thủng, ghi nhận 1 thất bại).
- Trượt cửa sổ (+1): Sang ngày $t+1$, cửa sổ lại trượt đi 1 bước: vứt bỏ ngày cũ nhất ở đuôi ($t-500$) và nạp thêm ngày $t$ vào đầu để tiếp tục dự báo cho $t+1$. Quá trình lặp lại vòng lặp này cho đến hết 368 ngày test.
Bạn có thể tự tay chạy mô phỏng quá trình này (phiên bản thu nhỏ 20 ngày) thông qua UI tương tác dưới đây để hiểu tường tận cơ chế trước khi đi sâu vào Toán học:
2. Kiểm định Kupiec POF là gì?
Kiểm định Tỷ lệ thất bại của Kupiec (1995) thực chất là một ứng dụng trực tiếp của Kiểm định tỷ số hợp lý (Likelihood Ratio Test for Proportions).
Trong ngữ cảnh của VaR:
- Giả thiết null ($H_0$): Xác suất xảy ra một thất bại ($p$) đúng bằng xác suất kỳ vọng của mô hình ($p_0 = 1 - c$, với $c$ là độ tin cậy của VaR).
- Dựa trên dữ liệu thực tế gồm $N$ ngày quan sát và $x$ ngày thất bại, ta tính được tỷ lệ thất bại thực tế $\hat{p} = \frac{x}{N}$.
Kupiec sử dụng thống kê tỷ số hợp lý (Likelihood Ratio - LR) để kiểm tra mức độ khác biệt giữa $\hat{p}$ và $p_0$. Chi tiết về cách thiết lập hàm hợp lý và công thức $LR$ tổng quát, bạn có thể xem thêm tại bài viết Kiểm định Tỷ lệ bằng Likelihood Ratio.
Dưới giả thiết $H_0$, thống kê $LR_{POF}$ tuân theo phân phối Chi-bình phương với 1 bậc tự do ($\chi^2_1$). Nếu $LR_{POF}$ lớn hơn giá trị tới hạn (ví dụ $3.841$ ở mức ý nghĩa $5%$), ta bác bỏ $H_0$, kết luận mô hình VaR dự báo sai. Sự sai lệch này có thể đến từ việc mô hình đánh giá quá thấp rủi ro (quá nhiều thất bại) hoặc đánh giá quá cao rủi ro (quá ít thất bại).
x ngày Fail trên tổng N ngày
theo công thức Kupiec POF
($\chi^2_1$) ?
(Không bác bỏ $H_0$)
(Bác bỏ $H_0$)
3. Trực quan hóa Bài toán POF trên Danh mục FPT-VNM-VCB
Giả sử ta thực hiện backtest mô hình VaR 95% ($p_0 = 5%$) trên tập dữ liệu ngoài mẫu gồm $N = 368$ ngày (tương ứng với giai đoạn 2025-2026 trong nghiên cứu). Mức vượt ngưỡng kỳ vọng là khoảng $18.4$ ngày. Dưới đây là kết quả của 3 mô hình giả định phân phối khác nhau:
- Phân phối Chuẩn (Normal): Ghi nhận 27 ngày vượt ngưỡng.
- Phân phối Student-t: Ghi nhận 34 ngày vượt ngưỡng.
- Phân phối Laplace: Ghi nhận 26 ngày vượt ngưỡng.
4. Giải mã: Nghịch lý “Vai mỏng” của phân phối Student-t
Nhìn vào kết quả mô phỏng ở phần 3, một câu hỏi lớn được đặt ra: Tại sao Student-t, một phân phối “đuôi dày” vốn được kỳ vọng sẽ bảo vệ danh mục tốt hơn trong khủng hoảng, lại có tỷ lệ thất bại (34 ngày) cao hơn hẳn phân phối Chuẩn (27 ngày) và bị bác bỏ thảm hại ở VaR 95%?
Lý do hoàn toàn nằm ở đặc tính toán học của phân phối Student-t:
- Để duy trì cùng một mức độ biến động (phương sai) như phân phối Chuẩn, nếu Student-t muốn đẩy một lượng khối lượng xác suất ra xa để tạo “đuôi cực dày” (xử lý vùng cực đoan < 1%) và một “đỉnh cực nhọn”, nó bắt buộc phải bòn rút xác suất từ phần “vai” (vùng trung gian xoay quanh phân vị 5%).
- Do phần “vai bị mỏng đi”, ngưỡng rủi ro VaR 95% của Student-t thực chất lại nằm thấp hơn (gần giá trị trung bình hơn) so với phân phối Chuẩn.
- Hệ quả là: Ngưỡng bảo vệ VaR 95% của Student-t quá dễ dãi, liên tục bị các mức lỗ trung bình đâm xuyên qua, dẫn đến thất bại trong kiểm định Kupiec.
(Lưu ý: Nghịch lý này biến mất khi ta đánh giá ở độ tin cậy 99%. Lúc này phần đuôi dày mới thực sự phát huy tác dụng, đẩy VaR của Student-t vươn xa hơn và an toàn hơn Normal).
Hình ảnh so sánh sự phân bổ xác suất giữa phân phối Chuẩn và Student-t (đã chuẩn hóa cùng phương sai). Lưu ý vùng màu đỏ là "phần vai" bị bòn rút.
Công cụ Tương tác: Kiểm chứng Nghịch lý
Dưới đây là một mô phỏng tương tác Scatter Plot. Hãy thử chuyển đổi giữa ngưỡng VaR 95% và 99% để quan sát vị thế giữa hai đường ranh giới của mô hình Chuẩn (Xanh dương) và Student-t (Cam). Tại mốc 95%, đường màu Cam nằm thấp hơn và bị các chấm đỏ đâm thủng nhiều hơn rất nhiều!
Số lần vi phạm: --
Kupiec Test: --
Số lần vi phạm: --
Kupiec Test: --
5. Hạn chế của POF và Điều kiện Đủ của Backtesting
Kiểm định Kupiec POF là điều kiện CẦN nhưng chưa đủ để đánh giá toàn diện một mô hình rủi ro.
- Phạt cả hai phía: Kupiec POF là một kiểm định hai đuôi (two-tailed). Nó bác bỏ mô hình khi số thất bại quá nhiều (đánh giá thấp rủi ro), và cũng bác bỏ khi số thất bại quá ít (mô hình quá bảo thủ, bắt ngân hàng đọng quá nhiều vốn dự trữ).
- Mù tịt trước “độ sâu” của cú sập: Kupiec chỉ đếm “tần suất” vi phạm. Nếu danh mục lỗ vượt ngưỡng 1 triệu hay 100 tỷ thì Kupiec cũng chỉ ghi nhận là “1 lần vi phạm”. Để đo lường độ sâu, ta phải Backtest Expected Shortfall (ES). Tuy nhiên, ES không có tính chất Elicitability trực tiếp như VaR, khiến việc backtest nó phức tạp hơn nhiều.
- Bỏ qua Tính độc lập (Hiện tượng Volatility Clustering): Điểm mù lớn nhất của Kupiec POF là không quan tâm đến thời điểm xảy ra thất bại. Nếu 5 thất bại xảy ra liên tiếp trong 5 ngày, rủi ro sụp đổ hệ thống cao hơn rất nhiều so với việc 5 thất bại rải đều trong 100 ngày. Để khắc phục, Christoffersen (1998) đã đề xuất thêm kiểm định Tính độc lập (Independence test) (đóng vai trò là Điều kiện Cần thứ 2) để đảm bảo các vi phạm không bị co cụm.