Obtenir les meilleurs ratios de Sharpe
Nous devons trouver les portefeuilles « idéaux » pour chaque date afin de pouvoir les utiliser comme cibles en Machine Learning. Nous allons parcourir chaque date dans portfolio_returns, puis parcourir les portefeuilles générés avec portfolio_returns[date]. Nous calculerons ensuite le ratio de Sharpe, soit le rendement divisé par la volatilité (en supposant un rendement sans risque de 0).
Nous utilisons enumerate() pour parcourir les rendements de la date courante (portfolio_returns[date]) et conserver l'indice avec i. Nous utilisons ensuite la date courante et l'indice courant pour obtenir la volatilité de chaque portefeuille avec portfolio_volatility[date][i]. Enfin, nous obtenons l'indice du meilleur ratio de Sharpe pour chaque date à l'aide de np.argmax(). Nous utiliserons bientôt cet indice pour obtenir les pondérations du portefeuille idéal.
Cette activité fait partie du cours
Machine Learning pour la finance en Python
Instructions de l’exercice
- En utilisant
enumerate(), énumérez lesportfolio_returnspour chaquedatedans la boucle. - Pour la
datecourante dans la boucle, ajoutez à l'entrée du dictionnairesharpe_ratiola valeur du rendement (ret) divisé parportfolio_volatilitypour la date courante et la valeur courante deidans les boucles. - Attribuez à
max_sharpe_idxspour ladatecourante la valeur correspondant à l'index du ratio de Sharpe maximal à l'aide denp.argmax().
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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]])