Trong hơn nửa thế kỷ qua, lý thuyết tối ưu hóa danh mục đầu tư phần lớn vẫn giam mình trong khuôn khổ của bài toán Mean-Variance cổ điển của Harry Markowitz (1952). Nhưng trên các bàn giao dịch định lượng của BlackRock, Bridgewater Associates hay AQR Capital Management, phương sai (Variance) từ lâu đã bị xem là một thước đo lỗi thời và nguy hiểm.
Được phát triển bởi tiến sĩ định lượng Dany Cajas, Riskfolio-Lib đã trở thành thư viện mã nguồn mở tiêu chuẩn công nghiệp mạnh mẽ nhất hành tinh về phân bổ tài sản chiến lược. Nhờ xây dựng trên nền tảng Tối ưu hóa Lồi (Convex Optimization) với bộ giải CVXPY, Riskfolio-Lib cho phép các kỹ sư tài chính tối ưu hóa danh mục theo 24 thước đo rủi ro phi phân phối chuẩn, khắc phục hoàn toàn hiện tượng phân phối đuôi béo và rủi ro rút vốn nghiêm trọng.
1. Bản Chất Hình Học Của Tối Ưu Hóa Lồi (Convex Optimization)
Bài toán được gọi là Lồi (Convex) khi hàm mục tiêu $f_0$ và tất cả các ràng buộc bất đẳng thức $f_i$ đều là các hàm lồi, đồng thời các ràng buộc đẳng thức $h_j$ là tuyến tính (Affine). Ý nghĩa thực chiến vô giá của bài toán lồi trong tài chính bao gồm:
Cực tiểu cục bộ là Cực tiểu toàn cục: Mọi điểm tối ưu tìm được đều được chứng minh bằng toán học là cấu hình tỷ trọng hoàn hảo nhất của danh mục, không bao giờ bị mắc kẹt tại các đáy giả (Local Minima) như trong các mạng nơ-ron phi tuyến.
Hội tụ đa thức cực nhanh: Các bộ giải hiện đại (như CLARABEL, OSQP, SCS, MOSEK) có thể giải quyết bài toán phân bổ cho 1.000 cổ phiếu chỉ trong vài trăm mili-giây.
Miễn nhiễm trước sai số nghịch đảo ma trận: Không yêu cầu đảo ngược ma trận hiệp phương sai trực tiếp, ngăn chặn tình trạng suy biến số điều kiện (Ill-conditioned Matrix).
2. Bốn Hàm Mục Tiêu Chiến Lược (Objective Functions)
HÀM MỤC TIÊU 1
MinRisk
Tối thiểu hóa rủi ro tuyệt đối của danh mục mà không yêu cầu ràng buộc lợi nhuận kỳ vọng. Phù hợp cho giai đoạn thị trường gấu hoặc bảo toàn vốn.
HÀM MỤC TIÊU 2
Sharpe / Ratio
Tối đa hóa tỷ số giữa Lợi nhuận kỳ vọng trên Thước đo rủi ro tương ứng (ví dụ: Tỷ số Lợi nhuận/CVaR, Calmar Ratio, Omega Ratio).
HÀM MỤC TIÊU 3
MaxRet
Tối đa hóa tỷ suất sinh lợi kỳ vọng với mức rủi ro chịu đựng tối đa cho trước (Risk Budget Constraint).
3. Mổ Xẻ 24 Thước Đo Rủi Ro Định Lượng Phi Chuẩn Trong Riskfolio-Lib
Riskfolio-Lib phân loại 24 thước đo rủi ro thành 4 nhóm chính tùy theo cấu trúc dữ liệu và mục tiêu quản trị:
Nhóm Rủi Ro
Ký Hiệu / Tên Thước Đo
Bản Chất Toán Học & Ứng Dụng Thực Tế
1. Rủi Ro Lệch Chuẩn (Moment & Deviation)
MV (Mean-Variance) MAD (Mean Absolute Deviation) GMD (Gini Mean Difference)
Đo lường độ phân tán quanh giá trị trung bình. MAD và GMD ít bị bóp méo bởi các điểm dị biệt (Outliers) hơn so với Variance truyền thống.
Chỉ đo lường biến động của các ngày thua lỗ dưới một ngưỡng tham chiếu (MAR). Tuyệt đối không phạt các ngày tăng giá mạnh.
3. Rủi Ro Đuôi Rớt (Tail Risk / VaR)
VaR (Value at Risk) CVaR (Conditional Value at Risk / ES) EVaR (Entropic Value at Risk) Worst Case (Max Loss)
CVaR (Expected Shortfall) đo mức lỗ trung bình trong 5% kịch bản xấu nhất. EVaR là cận trên chặt nhất của VaR và CVaR, cực kỳ hữu dụng trong quản trị rủi ro thiên nga đen.
4. Rủi Ro Rút Vốn (Drawdown Risk)
MDD (Maximum Drawdown) ADD (Average Drawdown) CDaR (Conditional Drawdown at Risk) EDaR (Entropic Drawdown at Risk) UCI (Ulcer Index)
Đo lường mức sụt giảm tích lũy từ đỉnh cao nhất của đường cong vốn. CDaR tối ưu hóa mức sụt giảm vốn sâu nhất, bảo vệ tài khoản khỏi nguy cơ bị thanh lý ký quỹ.
4. Sơ Đồ Kiến Trúc: Bộ Lọc Tối Ưu Hóa Riskfolio-Lib
5. Triển Khai Code Python Thực Chiến
Dưới đây là mã nguồn Python hoàn chỉnh xây dựng danh mục tối ưu hóa theo rủi ro đuôi Mean-CVaR và so sánh trực tiếp với Mean-CDaR bằng thư viện riskfolio-lib:
import numpy as np
import pandas as pd
import riskfolio as rp
defoptimize_portfolio_convex_cvar_cdar(returns_df: pd.DataFrame):
"""
Xây dựng danh mục tối ưu hóa lồi với Riskfolio-Lib:
- port_cvar: Tối ưu theo Conditional Value at Risk (CVaR 95%)
- port_cdar: Tối ưu theo Conditional Drawdown at Risk (CDaR 95%)
"""# 1. Khởi tạo đối tượng Portfolio
port = rp.Portfolio(returns=returns_df)
# Ước lượng kỳ vọng lợi nhuận lịch sử và ma trận hiệp phương sai
port.assets_stats(method_mu='hist', method_cov='hist')
# 2. Tối ưu hóa tối đa tỷ số Sharpe theo thước đo CVaR
w_cvar = port.optimization(
model='Classic', # Mô hình tối ưu hóa truyền thống
rm='CVaR', # Thước đo rủi ro Conditional Value at Risk
obj='Sharpe', # Tối đa hóa tỷ số Lợi nhuận / Rủi ro
rf=0.04 / 252, # Lãi suất phi rủi ro theo ngày
l=0# Hệ số ngại rủi ro (l=0 khi dùng obj='Sharpe')
)
# 3. Tối ưu hóa tối thiểu hóa Drawdown theo thước đo CDaR
w_cdar = port.optimization(
model='Classic',
rm='CDaR', # Thước đo rủi ro Conditional Drawdown at Risk
obj='MinRisk', # Tối thiểu hóa rủi ro rút vốn sâu nhất
rf=0.04 / 252
)
print("=== TRỌNG SỐ TỐI ƯU MEAN-CVaR (TOP 5 TÀI SẢN) ===")
print((w_cvar * 100).sort_values(by='weights', ascending=False).head(5).round(2))
return w_cvar, w_cdar
💡
TỔNG KẾT BÀI HỌC: Làm chủ bài toán tối ưu hóa lồi và 24 thước đo rủi ro trong Riskfolio-Lib giúp bạn kiểm soát hoàn toàn rủi ro đuôi rớt và mức độ sụt giảm vốn. Tuy nhiên, khi số lượng cổ phiếu trong vũ trụ đầu tư lên đến hàng trăm mã, làm thế nào để bóc tách các nhóm tài sản có mối tương quan chéo phức tạp? Hãy cùng đến với Phần 2: Đột phá phân cụm Machine Learning với Hierarchical Risk Parity (HRP), HERC và Nested Clustered Optimization (NCO)!
⚖️
Biên Soạn: Học Viện Giao Dịch — Hàng Hóa Plus
Chuỗi bài giảng Riskfolio-Lib được nghiên cứu và phát triển dựa trên công trình tối ưu hóa danh mục của Dany Cajas và tiêu chuẩn thể chế Phố Wall.