CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • En utilisant 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 la valeur du rendement (ret) divisé par portfolio_volatility pour la date courante et la valeur courante de i dans les boucles.
  • Attribuez à max_sharpe_idxs pour la date courante la valeur correspondant à l'index du ratio de Sharpe maximal à l'aide de 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