Obtenir les meilleurs ratios de Sharpe
Nous devons trouver les portefeuilles « idéaux » pour chaque date afin de les utiliser comme cibles pour le Machine Learning. Nous allons parcourir chaque date dans portfolio_returns, puis parcourir les portefeuilles que nous avons générés avec portfolio_returns[date]. Nous calculerons ensuite le ratio de Sharpe, qui correspond au rendement divisé par la volatilité (en supposant un taux sans risque de 0).
Nous utilisons enumerate() pour itérer sur les rendements de la date courante (portfolio_returns[date]) et conserver l'index avec i. Ensuite, nous utilisons la date courante et l'index courant pour obtenir la volatilité de chaque portefeuille avec portfolio_volatility[date][i]. Enfin, nous récupérons l'index du meilleur ratio de Sharpe pour chaque date en utilisant np.argmax(). Nous utiliserons bientôt cet index pour obtenir les pondérations du portefeuille idéal.
Cet exercice fait partie du cours
<cours>Machine Learning pour la finance en Python</cours>Instructions de l’exercice
- À l'aide de
enumerate(), énumérez lesportfolio_returnspour chaquedatedans la boucle. - Pour la
datecourante dans la boucle, ajoutez à l'entrée du dictionnairesharpe_ratiole rendement (ret) divisé parportfolio_volatilitypour la date courante et la valeur courante deidans les boucles. - Définissez la valeur de
max_sharpe_idxspour ladatecourante sur l'index du ratio de Sharpe maximal en utilisantnp.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]])