Vẽ đường biên hiệu quả với Sharpe ratio tốt nhất
Giờ hãy vẽ lại đường biên hiệu quả, nhưng thêm một điểm đánh dấu cho danh mục có chỉ số Sharpe tốt nhất. Việc trực quan hóa dữ liệu luôn là ý tưởng hay để hiểu dữ liệu rõ hơn.
Hãy nhớ rằng đường biên hiệu quả được vẽ bằng scatter plot với độ biến động danh mục trên trục x và lợi nhuận danh mục trên trục y. Chúng ta sẽ lấy ngày mới nhất trong dữ liệu từ covariances.keys(), dù bạn cũng có thể dùng bất kỳ dictionary nào như portfolio_returns, v.v. để lấy ngày. Sau đó lấy độ biến động và lợi nhuận tương ứng với ngày mới nhất từ portfolio_volatility và portfolio_returns. Cuối cùng, lấy chỉ số của danh mục có chỉ số Sharpe tốt nhất từ max_sharpe_idxs[date], và vẽ tất cả bằng plt.scatter().
Bài tập này là một phần của khóa học
Machine Learning cho Tài chính bằng Python
Hướng dẫn bài tập
- Gán
cur_volatilitylà độ biến động danh mục chodatemới nhất. - Tạo biểu đồ "đường biên hiệu quả" bằng cách vẽ độ biến động trên trục x và lợi nhuận trên trục y.
- Lấy chỉ số danh mục tốt nhất cho
datemới nhất từmax_sharpe_idxs.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Get most recent (current) returns and volatility
date = sorted(covariances.keys())[-1]
cur_returns = portfolio_returns[date]
cur_volatility = ____
# Plot efficient frontier with sharpe as point
plt.scatter(x=____, y=____, alpha=0.1, color='blue')
best_idx = max_sharpe_idxs[____]
# Place an orange "X" on the point with the best Sharpe ratio
plt.scatter(x=cur_volatility[best_idx], y=cur_returns[best_idx], marker='x', color='orange')
plt.xlabel('Volatility')
plt.ylabel('Returns')
plt.show()