Tối ưu hóa danh mục thay thế

Nhập môn Phân tích Danh mục đầu tư với Python

Charlotte Werger

Data Scientist

Rủi ro và lợi nhuận kỳ vọng dựa trên dữ liệu lịch sử

$$

  • Lợi nhuận bình quân lịch sử hoặc phương sai danh mục lịch sử không ước lượng hoàn hảo cho mu và Sigma
  • Trọng số từ tối ưu hóa danh mục không đảm bảo hoạt động tốt trên dữ liệu tương lai

$$ Câu đùa “nếu lịch sử lặp lại”

Nhập môn Phân tích Danh mục đầu tư với Python

Dữ liệu lịch sử

Dữ liệu chuỗi thời gian thay đổi theo thời gian

Nhập môn Phân tích Danh mục đầu tư với Python

Lợi nhuận có trọng số mũ

$$

  • Cần thước đo tốt hơn cho rủi ro và lợi nhuận
  • Trọng số mũ cho rủi ro và lợi nhuận ưu tiên dữ liệu gần đây hơn
  • Đường trung bình động mũ trong đồ thị: trọng số lớn nhất ở quan sát t-1

Trọng số trong tính lợi nhuận có trọng số mũ

Nhập môn Phân tích Danh mục đầu tư với Python

Hiệp phương sai có trọng số mũ

$$

  • Ma trận hiệp phương sai mũ: cho trọng số cao hơn cho dữ liệu gần đây
  • Trên đồ thị: độ biến động mũ (đen) bám sát biến động thực hơn so với độ biến động chuẩn (xanh)

$$ So sánh hiệp phương sai có trọng số mũ và thường với thực tế

1 Nguồn: https://systematicinvestor.github.io/Exponentially-Weighted-Volatility-RCPP
Nhập môn Phân tích Danh mục đầu tư với Python

Lợi nhuận có trọng số mũ

from pypfopt import expected_returns
# Trung bình trượt có trọng số mũ
mu_ema = expected_returns.ema_historical_return(df, 
                         span=252, frequency=252)
print(mu_ema)
symbol
XOM     0.103030
BBY     0.394629
PFE     0.186058
Nhập môn Phân tích Danh mục đầu tư với Python

Hiệp phương sai có trọng số mũ

from pypfopt import risk_models
# Hiệp phương sai có trọng số mũ
Sigma_ew = risk_models.exp_cov(df, span=180, frequency=252)
Nhập môn Phân tích Danh mục đầu tư với Python

Dùng rủi ro suy giảm trong tối ưu hóa

$ $

  • Nhớ tỷ số Sortino: chỉ dùng phương sai của lợi nhuận âm
  • PyPortfolioOpt cho phép dùng bán hiệp phương sai trong tối ưu hóa, đo rủi ro suy giảm:

$ $ Tính rủi ro suy giảm

Nhập môn Phân tích Danh mục đầu tư với Python

Bán hiệp phương sai trong PyPortfolioOpt

Sigma_semi = risk_models.semicovariance(df,     
                        benchmark=0, frequency=252)

print(Sigma_semi)
         XOM         BBY          MA         PFE
XOM     0.018939    0.008505    0.006568    0.004058
BBY     0.008505    0.016797    0.009133    0.004404
MA      0.006568    0.009133    0.018711    0.005373
PFE     0.004058    0.004404    0.005373    0.008349
Nhập môn Phân tích Danh mục đầu tư với Python

Ayo berlatih!

Nhập môn Phân tích Danh mục đầu tư với Python

Preparing Video For Download...