Quản trị rủi ro với VaR & CVaR

Quản trị Rủi ro Định lượng với Python

Jamsheed Shorish

Computational Economist

Quản trị rủi ro qua lý thuyết danh mục hiện đại

  • Danh mục hiệu quả
    • Trọng số tối đa hóa lợi nhuận với mức rủi ro cho trước
  • Biên hiệu quả: tập hợp điểm (rủi ro, lợi nhuận) từ các danh mục hiệu quả khác nhau
    • Mỗi điểm = một bài toán tối ưu trọng số
  • Hình thành danh mục/biên hiệu quả: Lý thuyết danh mục hiện đại

Đồ thị biên hiệu quả

Quản trị Rủi ro Định lượng với Python

Tích hợp VaR vào MPT

  • Lý thuyết danh mục hiện đại (MPT): tối ưu “trung bình–phương sai”
    • Lợi nhuận kỳ vọng cao nhất
    • Mức rủi ro (độ biến động) cho trước
    • Hàm mục tiêu: lợi nhuận kỳ vọng
  • VaR/CVaR: đo rủi ro trên phân phối _lỗ_
  • Điều chỉnh MPT để tối ưu theo phân phối lỗ thay vì lợi nhuận kỳ vọng
Quản trị Rủi ro Định lượng với Python

Mục tiêu mới: tối thiểu hóa CVaR

  • Thay đổi mục tiêu tối ưu danh mục
    • mục tiêu trung bình–phương sai: tối đa hóa lợi nhuận kỳ vọng
    • mục tiêu CVaR: tối thiểu hóa lỗ có điều kiện tại một mức tin cậy
  • Ví dụ: Phân phối lỗ
    • VaR: lỗ tối đa với độ tin cậy 95%
    • Tối ưu: trọng số danh mục tối thiểu hóa CVaR
    • CVaR: lỗ kỳ vọng khi lỗ ≥ VaR (5% trường hợp xấu nhất)
  • Tìm lỗ kỳ vọng thấp nhất trong 100% - 95% = 5% kết quả tệ nhất
Quản trị Rủi ro Định lượng với Python

Bài toán quản trị rủi ro

  • Chọn trọng số tối ưu $w^\star$ là nghiệm của

cvar_minimization

  • Nhắc lại: $f(x)$ = hàm mật độ xác suất của _lỗ_ danh mục

  • PyPortfolioOpt: chọn tối thiểu hóa CVaR làm mục tiêu mới

Quản trị Rủi ro Định lượng với Python

Tối thiểu hóa CVaR với PyPortfolioOpt

  • Tạo đối tượng EfficientCVaR với suất sinh lợi tài sản returns
  • Tính trọng số danh mục tối ưu bằng phương thức .min_cvar()

 

ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)

optimal_weights = ec.min_cvar()
Quản trị Rủi ro Định lượng với Python

Quản trị rủi ro: trung bình–phương sai vs. CVaR

  • Danh mục tối thiểu phương sai trung bình, tài sản ngân hàng đầu tư 2005–2010
ef = EfficientFrontier(None, e_cov)

min_vol_weights = ef.min_volatility()
print(min_vol_weights)
{'Citibank': 0.0,
 'Morgan Stanley': 5.0784330940519306e-18,
 'Goldman Sachs': 0.6280157234640608,
 'J.P. Morgan': 0.3719842765359393}
Quản trị Rủi ro Định lượng với Python

Quản trị rủi ro: trung bình–phương sai vs. CVaR

  • Danh mục tối thiểu CVaR, tài sản ngân hàng đầu tư 2005–2010
ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)
min_cvar_weights = ec.min_cvar()

print(min_cvar_weights)

 

{'Citibank': 0.0,
 'Morgan Stanley': 0.0,
 'Goldman Sachs': 0.669324359403484,
 'J.P. Morgan': 0.3306756405965026}
Quản trị Rủi ro Định lượng với Python

Ayo berlatih!

Quản trị Rủi ro Định lượng với Python

Preparing Video For Download...