Mô phỏng Monte Carlo
(Monte Carlo Simulation)
1. Giới thiệu
Đã bao giờ bạn tự hỏi làm thế nào để giải quyết một bài toán quá phức tạp để có thể tính toán bằng các công thức toán học thông thường? Câu trả lời thường là: hãy để sự ngẫu nhiên làm việc đó cho bạn. Đó chính là triết lý đằng sau Mô phỏng Monte Carlo (Monte Carlo Simulation).
Tên gọi “Monte Carlo” được nhà toán học Stanislaw Ulam và John von Neumann đặt vào những năm 1940, lấy cảm hứng từ sòng bạc nổi tiếng ở Monaco, nơi chú của Ulam thường xuyên lui tới. Ý tưởng cốt lõi rất đơn giản: sử dụng lấy mẫu ngẫu nhiên (random sampling) lặp đi lặp lại để xấp xỉ kết quả của những bài toán khó hoặc không thể giải quyết bằng phương pháp giải tích (analytic).
Từ vật lý hạt nhân, đồ họa máy tính, cho đến tài chính định lượng, Monte Carlo đã trở thành một công cụ vô giá. Trong bài viết này, chúng ta sẽ tìm hiểu cách Monte Carlo hoạt động và cách nó được ứng dụng để đánh giá rủi ro tài chính.
2. Ý tưởng cốt lõi: Luật số lớn
Sức mạnh của Monte Carlo bắt nguồn từ một định lý nền tảng trong xác suất: Luật số lớn (Law of Large Numbers).
Giả sử bạn muốn tính kỳ vọng $E[f(X)]$ của một hàm số $f$ áp dụng lên biến ngẫu nhiên $X$. Thay vì vật lộn với các tích phân phức tạp, bạn có thể làm theo cách sau:
- Sinh ra một số lượng lớn $N$ các giá trị ngẫu nhiên $X_1, X_2, \dots, X_N$ độc lập và có cùng phân phối với $X$.
- Tính trung bình cộng của $f(X_i)$.
Ví dụ kinh điển: Ước lượng số $\pi$ Hãy tưởng tượng bạn ném phi tiêu ngẫu nhiên vào một bảng vuông có cạnh bằng $2$. Bên trong bảng vuông này vẽ một hình tròn bán kính $R=1$.
- Diện tích hình vuông là $2 \times 2 = 4$.
- Diện tích hình tròn là $\pi \times 1^2 = \pi$.
Nếu bạn ném phi tiêu hoàn toàn ngẫu nhiên, xác suất một mũi phi tiêu rơi trúng vào bên trong hình tròn sẽ là tỷ lệ diện tích của hình tròn so với hình vuông: $p = \frac{\pi}{4}$. Bằng cách ném một số lượng lớn phi tiêu ($N$), đếm số phi tiêu nằm trong hình tròn ($M$), ta có thể xấp xỉ $p \approx \frac{M}{N}$, từ đó suy ra $\pi \approx 4 \times \frac{M}{N}$. Chúng ta đã tính được một hằng số toán học phức tạp chỉ bằng cách… ném phi tiêu!
(Mẹo: Trong các bài toán tính tích phân hoặc hằng số như tính $\pi$, để tăng tốc độ hội tụ thay vì dùng số giả ngẫu nhiên thuần tuý, người ta ưu tiên dùng Chuỗi Sobol (Quasi-Monte Carlo) để các điểm phi tiêu phân bố đều đặn lấp kín mặt phẳng và không bị vón cục).
Hãy thử ngay bên dưới — bấm Bắt đầu để xem phi tiêu rơi (mô phỏng mặc định sử dụng PCG / Xorshift, bạn có thể đổi sang Sobol ở menu thả xuống để thấy sự khác biệt về độ hội tụ) và $\pi$ sẽ hiện dần ra:
3. Sinh số ngẫu nhiên
Trong mô phỏng Monte Carlo, chúng ta liên tục cần sinh ra các số ngẫu nhiên (từ phân phối đều Uniform, phân phối Chuẩn Normal, đến phân phối Student-t). Để không làm gián đoạn mạch bài viết, chi tiết về cách máy tính “tung xúc xắc” và các phép biến đổi toán học như Inverse CDF hay Box-Muller đã được tách riêng.
👉 Mời bạn xem chi tiết tại bài viết: Sinh số ngẫu nhiên
4. Monte Carlo trong ước lượng rủi ro tài chính
Một trong những ứng dụng quan trọng nhất của Monte Carlo là trong quản trị rủi ro, cụ thể là để tính toán Giá trị chịu rủi ro (Value at Risk - VaR) và Thiếu hụt kỳ vọng (Expected Shortfall - ES).
Giả sử bạn đang nắm giữ một danh mục đầu tư và muốn biết: “Trong 20 ngày giao dịch tới, với độ tự tin 95%, mức lỗ tối đa của tôi là bao nhiêu?” Đó chính là VaR. Nếu tình huống tệ nhất xảy ra (vượt qua mốc VaR), mức lỗ trung bình sẽ là bao nhiêu? Đó là ES.
Để ước lượng các giá trị này, chúng ta thực hiện các bước sau:
- Mô hình hóa lợi suất: Sử dụng log-return (lợi suất logarit) vì chúng có tính chất cộng dồn. Lợi suất trong $h$ ngày ($h=20$) bằng tổng lợi suất của $h$ ngày đơn lẻ.
- Mô phỏng đường dẫn (Paths): Sinh ra $N$ kịch bản (ví dụ $N = 100,000$). Trong mỗi kịch bản, ta mô phỏng một chuỗi $h$ biến ngẫu nhiên đại diện cho lợi suất từng ngày. Chúng ta có thể dùng phân phối Chuẩn hoặc tốt hơn là phân phối Student-t (để bắt được hiện tượng đuôi dày).
- Tính toán phân phối tổn thất: Tổng hợp lại, ta được một tập hợp $N$ giá trị lợi suất giả định cho 20 ngày. Nếu nhân với giá trị danh mục, ta có phân phối của tổn thất.
- Ước lượng VaR và ES:
- VaR(95%): Chính là bách phân vị (percentile) thứ 5 từ dưới lên của phân phối lợi suất giả định.
- ES(95%): Là trung bình của tất cả các kịch bản tổn thất tồi tệ hơn mức VaR(95%).
Với cùng cách chuẩn hóa thích hợp, dùng phân phối Student-t thay cho phân phối Chuẩn thường sinh nhiều giá trị xa tâm hơn và có thể cho VaR hoặc ES lớn hơn. Điều đó không tự động làm mô hình “an toàn” hay phản ánh đúng dữ liệu thị trường: bậc tự do, động lực biến động và các giả thiết khác vẫn cần được hiệu chỉnh. Kiểm định ngược với cửa sổ cuộn và các kiểm định như Kupiec giúp đánh giá mức độ phù hợp của dự báo VaR trên dữ liệu ngoài mẫu.
5. Ví dụ minh hoạ bằng Python
Dưới đây là một đoạn mã Python ngắn gọn thể hiện việc sử dụng Box-Muller để sinh số ngẫu nhiên và áp dụng Monte Carlo để ước lượng VaR và ES cho chân trời 20 ngày.
|
|
(Lưu ý: VaR và ES thường được báo cáo dưới dạng số dương đại diện cho tỷ lệ tổn thất).
6. Hội tụ và độ chính xác
Một câu hỏi hiển nhiên là: liệu chạy $10,000$ kịch bản đã đủ chưa? Tại sao không phải là $100,000$ hay $1,000,000$?
Độ chính xác của phương pháp Monte Carlo bị chi phối bởi phương sai của kết quả ước lượng. Sai số chuẩn (standard error) của ước lượng Monte Carlo tỷ lệ thuận với $1/\sqrt{N}$. Điều này có nghĩa là, để giảm một nửa sai số, bạn phải tăng số lượng mô phỏng lên gấp 4 lần.
Tốc độ hội tụ $O(1/\sqrt{N})$ này tuy khá chậm, nhưng lợi thế lớn nhất của nó là không phụ thuộc vào số chiều của bài toán (điều mà các phương pháp tích phân số trị truyền thống rất sợ). Trong thực tế, để mô phỏng tính toán VaR và ES ổn định, người ta thường sử dụng hàng chục ngàn đến hàng trăm ngàn kịch bản ($N = 100,000$).
Để tiết kiệm chi phí tính toán, các kỹ thuật giảm phương sai (variance reduction techniques) như biến đối nghịch (antithetic variates) hay lấy mẫu phân tầng (stratified sampling) thường được kết hợp để tăng độ chính xác mà không cần tăng $N$ lên quá cao.
7. Tổng kết
Mô phỏng Monte Carlo dùng lấy mẫu ngẫu nhiên để xấp xỉ phân phối của đại lượng quan tâm khi phép tính giải tích khó thực hiện. Trong quản trị rủi ro, nó cho phép ước lượng các đại lượng như VaR hoặc ES dưới một mô hình đã chọn. Kết quả mô tả các kịch bản do mô hình sinh ra, không phải toàn bộ tương lai khả dĩ của danh mục; độ tin cậy phụ thuộc vào dữ liệu, giả thiết phân phối, động lực thời gian và sai số Monte Carlo.