En iyi Sharpe oranlarını bul
Machine Learning için hedef olarak kullanabilmek adına her tarih için "ideal" portföyleri bulmamız gerekiyor. portfolio_returns içindeki her tarihi dolaşacağız, sonra portfolio_returns[date] ile ürettiğimiz portföyleri döngüyle gezeceğiz. Ardından, risksiz getiri 0 varsayımıyla, getiriyi volatiliteye bölerek Sharpe oranını hesaplayacağız.
Geçerli tarih (portfolio_returns[date]) için getiriler üzerinde dolaşmak ve indeksi i ile takip etmek için enumerate() kullanıyoruz. Sonra, her portföyün volatilitesini almak için geçerli tarih ve indeksi kullanarak portfolio_volatility[date][i] ifadesinden yararlanıyoruz. Son olarak, her tarih için en iyi Sharpe oranının indeksini np.argmax() ile buluyoruz. Birazdan bu indeksi ideal portföy ağırlıklarını almak için kullanacağız.
Bu egzersiz, kursun bir parçasıdır
Python ile Finans için Machine Learning
Egzersiz talimatları
- Döngüdeki her
dateiçinenumerate()kullanarakportfolio_returnsüzerinde numaralandırma yap. - Döngüdeki geçerli
dateiçin, döngülerdeki geçerliive geçerli tarih içinportfolio_volatilityileretdeğerini bölerek elde ettiğin Sharpe oranınısharpe_ratiosözlüğüne ekle. - Geçerli
dateiçinmax_sharpe_idxsdeğerini,np.argmax()kullanarak maksimum Sharpe oranının indeksi olacak şekilde ayarla.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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]])