Wykres efektywnej granicy z najlepszym wskaźnikiem Sharpe'a
Narysujmy teraz ponownie efektywną granicę, tym razem dodając znacznik dla portfela z najlepszym wskaźnikiem Sharpe'a. Wizualizacja danych to zawsze dobry pomysł – pozwala lepiej je zrozumieć.
Przypomnij sobie, że efektywna granica jest przedstawiana na wykresie punktowym: zmienność portfela na osi x, a stopy zwrotu portfela na osi y. Pobierzemy najnowszą datę z danych za pomocą covariances.keys() – choć równie dobrze można by użyć słowników portfolio_returns lub podobnych. Następnie pobierzemy zmienności i stopy zwrotu dla tej daty ze słowników portfolio_volatility i portfolio_returns. Na koniec pobierzemy indeks portfela z najlepszym wskaźnikiem Sharpe'a z max_sharpe_idxs[date] i zwizualizujemy wszystko za pomocą plt.scatter().
To ćwiczenie jest częścią kursu
Uczenie maszynowe w finansach z Pythonem
Instrukcje do ćwiczenia
- Ustaw
cur_volatilityjako zmienności portfela dla najnowszej wartościdate. - Zbuduj wykres „efektywnej granicy", umieszczając zmienność na osi x, a stopy zwrotu na osi y.
- Pobierz indeks najlepszego portfela dla najnowszej wartości
dateze słownikamax_sharpe_idxs.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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()