Bắt đầu ngayBắt đầu miễn phí

Lấy Sharpe ratio tốt nhất

Chúng ta cần tìm các danh mục "lý tưởng" cho từng ngày để dùng làm mục tiêu cho Machine Learning. Bạn sẽ lặp qua từng ngày trong portfolio_returns, rồi lặp qua các danh mục đã tạo với portfolio_returns[date]. Sau đó, bạn tính Sharpe ratio, tức là lợi nhuận chia cho độ biến động (giả định lãi suất phi rủi ro bằng 0).

Ta dùng enumerate() để lặp qua các mức lợi nhuận cho ngày hiện tại (portfolio_returns[date]) và theo dõi chỉ số bằng i. Tiếp đó, dùng ngày hiện tại và chỉ số hiện tại để lấy độ biến động của từng danh mục với portfolio_volatility[date][i]. Cuối cùng, lấy chỉ số của Sharpe ratio tốt nhất cho mỗi ngày bằng np.argmax(). Chúng ta sẽ sớm dùng chỉ số này để lấy các trọng số danh mục lý tưởng.

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

Xem khóa học

Hướng dẫn bài tập

  • Dùng enumerate() để liệt kê portfolio_returns cho mỗi date trong vòng lặp.
  • Với date hiện tại trong vòng lặp, thêm vào mục từ điển sharpe_ratio giá trị bằng lợi nhuận (ret) chia cho portfolio_volatility của ngày hiện tại và i hiện tại trong các vòng lặp.
  • Gán giá trị cho max_sharpe_idxs của date hiện tại là chỉ số của Sharpe ratio lớn nhất bằng cách dùng np.argmax().

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.

# Empty dictionaries for sharpe ratios and best sharpe indexes by date
sharpe_ratio, max_sharpe_idxs = {}, {}

# Loop through dates and get sharpe ratio for each portfolio
for date in portfolio_returns.keys():
    for i, ret in enumerate(portfolio_returns[____]):
    
        # Divide returns by the volatility for the date and index, i
        sharpe_ratio.setdefault(date, []).append(____ / portfolio_volatility[date][____])

    # Get the index of the best sharpe ratio for each date
    max_sharpe_idxs[date] = np.argmax(sharpe_ratio[____])

print(portfolio_returns[date][max_sharpe_idxs[date]])
Chỉnh sửa và Chạy Mã