CommencerCommencez gratuitement

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>
Voir le cours

Instructions de l’exercice

  • À l'aide de enumerate(), énumérez les portfolio_returns pour chaque date dans la boucle.
  • Pour la date courante dans la boucle, ajoutez à l'entrée du dictionnaire sharpe_ratio le rendement (ret) divisé par portfolio_volatility pour la date courante et la valeur courante de i dans les boucles.
  • Définissez la valeur de max_sharpe_idxs pour la date courante sur l'index du ratio de Sharpe maximal en utilisant np.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]])
Modifier et exécuter le code