Chào mừng!

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

Dr. Jamsheed Shorish

Computational Economist

Giới thiệu

  • Nhà kinh tế tính toán
  • Chuyên về:
    • định giá tài sản
    • công nghệ tài chính ("FinTech")
    • ứng dụng máy tính cho kinh tế và tài chính
  • Đồng giảng viên, "Economic Analysis of the Digital Economy" tại ANU
  • Shorish Research (Bỉ): ứng dụng tính toán cho doanh nghiệp
Quản trị Rủi ro Định lượng với Python

Quản trị rủi ro định lượng là gì?

  • Quản trị rủi ro định lượng: Nghiên cứu bất định có thể đo lường
  • Bất định:
    • Kết quả tương lai không biết trước
    • Kết quả ảnh hưởng quyết định lập kế hoạch
  • Quản trị rủi ro: giảm thiểu tác động của kết quả bất lợi
  • Bất định có thể đo lường: xác định yếu tố để đo rủi ro
    • Ví dụ: Bảo hiểm cháy. Yếu tố nào làm tăng nguy cơ cháy?
  • Khoá học này: tập trung rủi ro của danh mục đầu tư tài chính
Quản trị Rủi ro Định lượng với Python

Quản trị rủi ro và Khủng hoảng tài chính toàn cầu

  • Đại suy thoái (2007 - 2010)
    • Toàn cầu: mất tăng trưởng hơn 2 nghìn tỷ USD
    • Hoa Kỳ: hộ gia đình mất gần 10 nghìn tỷ USD tài sản
    • Thị trường chứng khoán Mỹ mất khoảng 8 nghìn tỷ USD giá trị
  • Khủng hoảng tài chính toàn cầu (2007-2009)
    • Thay đổi lớn trong giá trị cơ bản của tài sản
    • Bất định lớn về lợi nhuận tương lai
    • Biến động lợi nhuận cao
    • Quản trị rủi ro quyết định thành bại
Quản trị Rủi ro Định lượng với Python

Ôn nhanh: danh mục đầu tư tài chính

  • Danh mục đầu tư tài chính
    • Tập hợp tài sản có lợi nhuận tương lai bất định
    • Cổ phiếu
    • Trái phiếu
    • Ngoại hối ('forex')
    • Quyền chọn cổ phiếu
  • Thách thức: định lượng rủi ro để quản trị bất định
    • Ra quyết định đầu tư tối ưu
    • Tối đa hóa lợi nhuận theo khẩu vị rủi ro
Quản trị Rủi ro Định lượng với Python

Định lượng lợi nhuận

  • Lợi nhuận danh mục: tổng có trọng số của lợi nhuận từng tài sản
    • Thư viện phân tích dữ liệu Pandas
    • DataFrame prices
    • Phương thức .pct_change()
    • Phương thức .dot() của returns
prices = pandas.read_csv("portfolio.csv")

returns = prices.pct_change()
weights = (weight_1, weight_2, ...)
portfolio_returns = returns.dot(weights)
Quản trị Rủi ro Định lượng với Python

Định lượng rủi ro

  • Độ biến động lợi nhuận danh mục = rủi ro
  • Tính biến động qua ma trận hiệp phương sai
  • Dùng phương thức .cov() của DataFrame returns và quy đổi theo năm

 

 

covariance = returns.cov()*252

print(covariance)

Ví dụ ma trận hiệp phương sai giữa 4 tài sản

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

Định lượng rủi ro

  • Độ biến động lợi nhuận danh mục = rủi ro
  • Tính biến động qua ma trận hiệp phương sai
  • Dùng phương thức .cov() của DataFrame returns và quy đổi theo năm
  • Đường chéo của covariance là phương sai từng tài sản  

   

covariance = returns.cov()*252

print(covariance)

Ví dụ ma trận hiệp phương sai với phương sai được tô đậm trên đường chéo

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

Định lượng rủi ro

  • Độ biến động lợi nhuận danh mục = rủi ro
  • Tính biến động qua ma trận hiệp phương sai
  • Dùng phương thức .cov() của DataFrame returns và quy đổi theo năm
  • Đường chéo của covariance là phương sai từng tài sản
  • Ngoài đường chéo là hiệp phương sai giữa các tài sản
covariance = returns.cov()*252

print(covariance)

Ví dụ ma trận hiệp phương sai với các hiệp phương sai ở ngoài đường chéo

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

Rủi ro danh mục

  • Phụ thuộc vào weights của tài sản trong danh mục
  • Phương sai danh mục $\sigma_p^2$ là $$ \sigma_p^2 := w^T \cdot \textnormal{Cov}_p \cdot w $$
  • Nhân ma trận trong Python dùng toán tử @
  • Thường dùng độ lệch chuẩn thay cho phương sai
weights = [0.25, 0.25, 0.25, 0.25] # Giả sử có bốn tài sản trong danh mục

portfolio_variance = np.transpose(weights) @ covariance @ weights
portfolio_volatility = np.sqrt(portfolio_variance)
Quản trị Rủi ro Định lượng với Python

Chuỗi thời gian biến động

  • Cũng có thể tính biến động danh mục theo thời gian
  • Dùng 'cửa sổ' để tính trong một giai đoạn cố định (vd. tuần, 'tháng' 30 ngày)
  • Series.rolling() tạo cửa sổ
  • Quan sát xu hướng biến động và các sự kiện cực đoan
windowed = portfolio_returns.rolling(30)

volatility = windowed.std()*np.sqrt(252) volatility.plot() .set_ylabel("Standard Deviation...")

Biểu đồ cửa sổ 30 ngày của độ biến động lợi nhuận quy đổi theo năm

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...