Lý thuyết danh mục hiện đại

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

Charlotte Werger

Data Scientist

Tạo danh mục tối ưu

Biểu tượng cho chiến lược đầu tư

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

Tối ưu hóa danh mục là gì?

Gặp Harry Markowitz

Harry Markowitz

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

Bài toán tối ưu: tìm trọng số tối ưu

$$ Bài toán tối ưu của Markowitz

Diễn giải:

  • Tối thiểu hóa phương sai danh mục, với ràng buộc:
  • Lợi nhuận kỳ vọng ít nhất bằng mức mục tiêu
  • Tổng trọng số bằng 100%
  • Ít nhất một số trọng số dương
Nhập môn Phân tích Danh mục đầu tư với Python

Thay đổi lợi nhuận mục tiêu tạo ra Biên hiệu quả

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

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

PyPortfolioOpt để tối ưu hóa danh mục

from pypfopt.efficient_frontier import EfficientFrontier
from pypfopt import risk_models
from pypfopt import expected_returns
df=pd.read_csv('portfolio.csv')
df.head(2)
                XOM        RRC        BBY         MA        PFE       
date
2010-01-04  54.068794  51.300568  32.524055  22.062426  13.940202 
2010-01-05  54.279907  51.993038  33.349487  21.997149  13.741367
# Tính lợi nhuận kỳ vọng hằng năm và ma trận hiệp phương sai mẫu
mu = expected_returns.mean_historical_return(df)
Sigma = risk_models.sample_cov(df)
Nhập môn Phân tích Danh mục đầu tư với Python

Lấy Efficient Frontier và trọng số danh mục

# Tính lợi nhuận kỳ vọng hằng năm và rủi ro
mu = expected_returns.mean_historical_return(df)
Sigma = risk_models.sample_cov(df)
# Lấy EfficientFrontier
ef = EfficientFrontier(mu, Sigma)
# Chọn danh mục tối ưu
ef.max_sharpe()
Nhập môn Phân tích Danh mục đầu tư với Python

Các cách tối ưu khác nhau

# Chọn danh mục Sharpe tối đa
ef.max_sharpe()
# Chọn lợi nhuận tối ưu cho mức rủi ro mục tiêu 
ef.efficient_risk(2.3)
# Chọn rủi ro tối thiểu cho mức lợi nhuận mục tiêu
ef.efficient_return(1.5)
Nhập môn Phân tích Danh mục đầu tư với Python

Tính rủi ro và hiệu quả danh mục

# Lấy các chỉ số hiệu quả
ef.portfolio_performance(verbose=True, risk_free_rate = 0.01)
Lợi nhuận kỳ vọng hằng năm: 21.3%
Độ biến động hằng năm: 19.5%
Tỷ lệ Sharpe: 0.98
Nhập môn Phân tích Danh mục đầu tư với Python

Hãy tối ưu hóa một danh mục!

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

Preparing Video For Download...